From ddeb74e286430ae9c2c79ea06c70f880366f269e Mon Sep 17 00:00:00 2001
From: Eilert Tunheim <emtunhei@stud.ntnu.no>
Date: Fri, 6 May 2022 12:23:37 +0200
Subject: [PATCH] Added notification popup for output parameter sql injection

---
 .../com/application/DB/HelpingFunctions.java  |   2 +
 .../com/application/GUI/InputPopUpWindow.java |  33 +++-------
 .../application/GUI/OutputPopUpWindow.java    |  62 +++++++++++++-----
 .../com/application/DB/HelpingFunctions.class | Bin 8880 -> 8935 bytes
 .../application/GUI/InputPopUpWindow.class    | Bin 8701 -> 8853 bytes
 .../application/GUI/OutputPopUpWindow.class   | Bin 4672 -> 5258 bytes
 6 files changed, 58 insertions(+), 39 deletions(-)

diff --git a/src/main/java/com/application/DB/HelpingFunctions.java b/src/main/java/com/application/DB/HelpingFunctions.java
index b2dcc3c..1267b4d 100644
--- a/src/main/java/com/application/DB/HelpingFunctions.java
+++ b/src/main/java/com/application/DB/HelpingFunctions.java
@@ -31,6 +31,8 @@ public class HelpingFunctions {
     // Number of manual moisture checks
     public static int NUMBER_OF_CHECKS = 1;
 
+    public static int MAX_USER_INPUT_CHARACTERS = 10;
+
     // Today's date
     public static String CURRENT_DATE = "";
     public static String TIME_LEFT = "";
diff --git a/src/main/java/com/application/GUI/InputPopUpWindow.java b/src/main/java/com/application/GUI/InputPopUpWindow.java
index 3a2f41d..4a95fe5 100644
--- a/src/main/java/com/application/GUI/InputPopUpWindow.java
+++ b/src/main/java/com/application/GUI/InputPopUpWindow.java
@@ -16,6 +16,7 @@ import java.util.Map;
 
 import static com.application.DB.Constants.*;
 import static com.application.DB.DB.getCurrentDrying;
+import static com.application.DB.HelpingFunctions.MAX_USER_INPUT_CHARACTERS;
 import static com.application.DB.HelpingFunctions.setLoadedData;
 import static com.application.GUI.LineChartFunctionality.*;
 import static com.application.Main.*;
@@ -30,8 +31,6 @@ import static com.application.DB.DB.setInputParameters;
  */
 public class InputPopUpWindow {
 
-    private static boolean err = false;
-
 
     public static void display() {
         Stage window = new Stage();
@@ -114,7 +113,6 @@ public class InputPopUpWindow {
         startButton.setId("inputButtonStart");
 
         startButton.setOnAction(e -> {
-
             // Sets the start time
             HelpingFunctions.CURRENT_DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
             HelpingFunctions.START_TIME = HelpingFunctions.CURRENT_DATE;
@@ -129,50 +127,39 @@ public class InputPopUpWindow {
                 HelpingFunctions.MOISTURE_GOAL = moistureList.getValue();
             }
 
+            boolean err = false;
 
             // If the input is null, sets the value to be empty
             if (treeSpeciesList.getValue() == null) {
                 HelpingFunctions.TREE_SPECIES = "";
-                err = false;
-            } else if (treeSpeciesList.getValue().length() > 10) {
-                NotificationPopUp.displayNotificationWindow("Maximum 10 characters is allowed for input parameters!");
+            } else if (treeSpeciesList.getValue().length() > MAX_USER_INPUT_CHARACTERS) {
+                NotificationPopUp.displayNotificationWindow("A maximum of "+MAX_USER_INPUT_CHARACTERS+" characters is allowed!");
                 treeSpeciesList.setValue("");
                 err = true;
-            } else {
-                err = false;
             }
 
             if (dimensionsList.getValue() == null) {
                 HelpingFunctions.DIMENSIONS = "";
-                err = false;
-            }  else if (dimensionsList.getValue().length() > 10) {
-                NotificationPopUp.displayNotificationWindow("Maximum 10 characters is allowed for input parameters!");
+            }  else if (dimensionsList.getValue().length() > MAX_USER_INPUT_CHARACTERS) {
+                NotificationPopUp.displayNotificationWindow("A maximum of "+MAX_USER_INPUT_CHARACTERS+" characters is allowed!");
                 dimensionsList.setValue("");
                 err = true;
-            } else {
-                err = false;
             }
 
             if (sawsetList.getValue() == null) {
                 HelpingFunctions.SAWSET = "";
-                err = false;
-            } else if (sawsetList.getValue().length() > 10) {
-                NotificationPopUp.displayNotificationWindow("Maximum 10 characters is allowed for input parameters!");
+            } else if (sawsetList.getValue().length() > MAX_USER_INPUT_CHARACTERS) {
+                NotificationPopUp.displayNotificationWindow("A maximum of "+MAX_USER_INPUT_CHARACTERS+" characters is allowed!");
                 sawsetList.setValue("");
                 err = true;
-            } else {
-                err = false;
             }
 
             if (moistureList.getValue() == null) {
                 HelpingFunctions.MOISTURE_GOAL = "";
-                err = false;
-            } else if (moistureList.getValue().length() > 10) {
-                NotificationPopUp.displayNotificationWindow("Maximum 10 characters is allowed for input parameters!");
+            } else if (moistureList.getValue().length() > MAX_USER_INPUT_CHARACTERS) {
+                NotificationPopUp.displayNotificationWindow("A maximum of "+MAX_USER_INPUT_CHARACTERS+" characters is allowed!");
                 moistureList.setValue("");
                 err = true;
-            } else {
-                err = false;
             }
 
 
diff --git a/src/main/java/com/application/GUI/OutputPopUpWindow.java b/src/main/java/com/application/GUI/OutputPopUpWindow.java
index 4131d72..7ee46dd 100644
--- a/src/main/java/com/application/GUI/OutputPopUpWindow.java
+++ b/src/main/java/com/application/GUI/OutputPopUpWindow.java
@@ -15,6 +15,7 @@ import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 
 import static com.application.DB.HelpingFunctions.IS_FINISHED;
+import static com.application.DB.HelpingFunctions.MAX_USER_INPUT_CHARACTERS;
 
 public class OutputPopUpWindow {
 
@@ -30,12 +31,10 @@ public class OutputPopUpWindow {
         moistureCheckLabelHuge.setAlignment(Pos.TOP_CENTER);
 
         // Center - Output field
-        Label moistureCheckLabelSmall = new Label("Moisture Check:");
-        moistureCheckLabelSmall.setId("inputLabel");
-        moistureCheckLabelSmall.setAlignment(Pos.CENTER);
         TextField moistureCheckTextField = new TextField();
         moistureCheckTextField.setId("inputLabel");
         moistureCheckTextField.setAlignment(Pos.CENTER);
+        moistureCheckTextField.setPromptText("Please enter a value");
 
 
 
@@ -45,16 +44,32 @@ public class OutputPopUpWindow {
         countinueButton.setAlignment(Pos.BOTTOM_CENTER);
         countinueButton.setOnAction(e -> {
                     try {
-                        if(!moistureCheckTextField.getCharacters().toString().isEmpty() &&
-                            !moistureCheckTextField.getCharacters().toString().equals("Please enter a value")) {
-                            HelpingFunctions.STOP_TIME = null;
-                            DB.pushManMoisture(moistureCheckTextField.getCharacters().toString());
-                            HelpingFunctions.NUMBER_OF_CHECKS++;
-                            window.close();
+
+                        boolean err = false;
+
+                        if(moistureCheckTextField.getCharacters().length() > MAX_USER_INPUT_CHARACTERS){
+                            err = true;
+                        }
+
+                        if(!err){
+                            if(!moistureCheckTextField.getCharacters().toString().isEmpty() &&
+                                    !moistureCheckTextField.getCharacters().toString().equals("Please enter a value")) {
+                                HelpingFunctions.STOP_TIME = null;
+                                DB.pushManMoisture(moistureCheckTextField.getCharacters().toString());
+                                HelpingFunctions.NUMBER_OF_CHECKS++;
+                                window.close();
+                            } else {
+                                NotificationPopUp.displayNotificationWindow("Please enter a value!");
+                                moistureCheckTextField.setPromptText("Please enter a value");
+                            }
                         } else {
+                            NotificationPopUp.displayNotificationWindow("A maximum of "+MAX_USER_INPUT_CHARACTERS+" characters is allowed!");
+                            moistureCheckTextField.setText("");
                             moistureCheckTextField.setPromptText("Please enter a value");
                         }
 
+
+
                     } catch (Exception ex) {
                         ex.printStackTrace();
                     }
@@ -64,13 +79,27 @@ public class OutputPopUpWindow {
         finishButton.setAlignment(Pos.BOTTOM_CENTER);
         finishButton.setOnAction(e -> {
             try {
-                if(!moistureCheckTextField.getCharacters().toString().isEmpty() &&
-                    !moistureCheckTextField.getCharacters().toString().equals("Please enter a value")) {
-                    IS_FINISHED = true;
-                    HelpingFunctions.STOP_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
-                    DB.pushManMoisture(moistureCheckTextField.getCharacters().toString());
-                    window.close();
+
+                boolean err = false;
+
+                if(moistureCheckTextField.getCharacters().length() > MAX_USER_INPUT_CHARACTERS){
+                    err = true;
+                }
+
+                if(!err) {
+                    if (!moistureCheckTextField.getCharacters().toString().isEmpty() &&
+                            !moistureCheckTextField.getCharacters().toString().equals("Please enter a value")) {
+                        IS_FINISHED = true;
+                        HelpingFunctions.STOP_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
+                        DB.pushManMoisture(moistureCheckTextField.getCharacters().toString());
+                        window.close();
+                    } else {
+                        NotificationPopUp.displayNotificationWindow("Please enter a value!");
+                        moistureCheckTextField.setPromptText("Please enter a value");
+                    }
                 } else {
+                    NotificationPopUp.displayNotificationWindow("A maximum of "+MAX_USER_INPUT_CHARACTERS+" characters is allowed!");
+                    moistureCheckTextField.setText("");
                     moistureCheckTextField.setPromptText("Please enter a value");
                 }
             } catch (Exception ex) {
@@ -81,7 +110,8 @@ public class OutputPopUpWindow {
 
         VBox layout = new VBox(10);
         layout.setAlignment(Pos.CENTER);
-        layout.getChildren().addAll(moistureCheckLabelHuge,moistureCheckLabelSmall,moistureCheckTextField,countinueButton,finishButton);
+        layout.setSpacing(10);
+        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());
diff --git a/target/classes/com/application/DB/HelpingFunctions.class b/target/classes/com/application/DB/HelpingFunctions.class
index bee6c78cab5212aeffc64187947c97e9dfe21377..3afa1d5f00f4114d87bf3a7a4b0f02d6c7240683 100644
GIT binary patch
delta 2486
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
G43Yq_OUDQR

delta 2434
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
AQvd(}

diff --git a/target/classes/com/application/GUI/InputPopUpWindow.class b/target/classes/com/application/GUI/InputPopUpWindow.class
index 41b8094813fed38f9b19edfe07460b22d908c4fb..328815abb68014e923d0313dc29d411d40da8d07 100644
GIT binary patch
delta 3510
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

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

diff --git a/target/classes/com/application/GUI/OutputPopUpWindow.class b/target/classes/com/application/GUI/OutputPopUpWindow.class
index 5e7bc108155eb578f19803068244dc324435a7a7..3b08e2cfe409dff143bb1746e22687bd63abab39 100644
GIT binary patch
delta 2634
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

delta 2049
zcmeCuJfKp4>ff$?3=9k=j2v7H9t>IR4B1=^Obl6^3^@$BAXXj+Lq3QuU}q@gV&GsX
z;$SES(IuP=r3_^tRyhYl1qVYVh+oCdP|d|4$dCmhN<c(8J3|czLoFABC`e}=hz9Gd
z2eHb980r}qT0zV<4u*Ci21bTfc7{$i2Neb|;9^i<=mHVtAflU{p@*BHm!XfHp`Xp6
z=>S*>n?t<=n8C%M!7u?tOk`)6#KAC`i(v}GR4#^T4AVh+W`Mjf6GY4cxoS2y!yJaW
zTnzIV+~;#JEC4YUaxyGpSj@q&go|M*!!j<0<qRu8td$_)Ra^|K8P<SwuLbE|$Ih^x
zi@}9q14wQoJHsY+hRu`f81G4l=jLY?my{NzI%lLNXZs{3rRD_ZCg$X9j$$%roIIP^
zk8%BE8D_c394wl4o(x`$3_@9nWr=AO`o$%Q>8bj`Ad;P73lGCqhHX3y+ZlE+GVu9A
zjZ^@e$-}UdVHYEV)MN){Q9rN+JPe*75su8fg3^+Z`~n_^-3+_f8TRln>}A-;!?2&>
z03!oGsv%a43|wI4Py-G!>|<n*o9w_W$IQqe4KjMN5UX1KA&{_uQ+|F)aY<2Pfp2O_
zMt({$KO4hg0fr;|Yz#*Q7>@BU9A`Me!*G(}6e9zhTV`HnaRxsd!)Zna37F54Q}a^w
za}q1_OH1^_oboF`?mff9aF*d5BZDA{BES5URCb2*JPa2YE;2F*$)HFEgUkWxy~M+C
znc>{z8?63DS9ln%GF)S4xX#0HgW)C*!!3r}JPdaj?(#6)WANf(xX<u_o#7!5!y|^9
z><o{27@jaZoqUf)lKUCMZFYv|JPa=wUQRAx6Zd9##l!HL;SD>(TONjY4DWduJ}`Xb
zVfe)GnVsPa55rf6T|5lmK<0f1g|jfoRr)!JdFlGD70IauC7JnoJPbcT@;@1VZFXk&
zWE67p4+-)2jdynS3vmtNV))JQXYx7@8D@8ezmv~$tmATL_{Ye=qT!+$ws{ige#Xhm
zxXmXgaH|P$dj`k5dHQ(<d$_tVGB8GMe#z~^$jMurS`tu{pIb2b46l|LBLkx+JHvk-
zMg~R}9)@&=1RjQXhJ?u+e5Q<SlkNCkvamBUs7~I<CqCJU-zdhN!2_H(SQr=?JQ=(g
z7#X}77#Q>!7#SED7#LW!wlgqpWME)mV(?*LU|<6a3N!dJFfj0d*{lqH4E_uZ44e!B
zFwKmw7}yy&7#JA&CSTy!tLKOm;@i%^>8m5ezm0)gXA^_KHU{3^41$r{8HD_FL4v}%
zU_p`H45E=jV%r(Stym;kge0~xNJ_G7VvyR#AT7zFtF?<khJj%lgDhB;97q+bBr8M}
zD^wLLNR>QPl|rNlgW`6EdSxp%Nj9(rDw1s57*sj-GN?r|YX?WN=mbZy>IO%$NwNe-
zvP-fC?_^MCVhG>Opb;s_Cc>a8!l1pKLD!01l6@P4o{+wf!8QiNZ45>`8H|}2!nHu6
zCR*DVOc9||1acvRI0FZR1Oq>VB!eh}41;_<gDit8gB*hngCc_&gA#)cgEE6Ng9?K;
zgDOKHgBn8wgEm7lgAPL$gDyi6gC0X2gB?RBgFV9p1_y>242}#-7=jo!Fa$H~U<hHj
z%Mix!jv<_pnIVFalOd9kmmvxq6+sLf3>=JX41o+m3=9nN4DT6&8A2Es8O#`NFw}=K
zgfK8McrzSk2xACmU}i{WSj`Z@5Xr#8(8<us5XBJ5z{;?JA&w!MA%=mC;T?klLo7oa
z1G@khDAhod!(9d@1{MYeh7hf73}!nS%o!QBF<8uEu!M7kEVnUO&0^4C+00-qWV3_8
zb_avqHU|663=Z{hH9Hs_wYM=iEob1=0x5T1&cNZPyN$thBRC;>Gx#yMFffCYnH~c-
z0|SFIg8+jIg93vqg9?KigAs!}gB^nhgDZm<14ykOgAap0gD*ocm}FqkVqjtLXJBDS
zWJqFQ200b%T?SC)5dsbvP;w4oNM=Z3U}8vRU|`^8VEN79%Id_<kj5gw1<EH-&t8Rk
z)(`G-uxE|oT#)OnW-%x+Zf0<R3+`ZW+{EC<lCYV<4aJxBsNQsC@IdpX0fPX8A%g;g
z5rYbYF@phv34;ZLDT6(OIfE;M4TA@R6@w>(HG?mMEjX${-t<KBrXSRs3=Dp7U-}{W
zlGC1n#UA2G24;o~a8Ax-1O*Tm10y3NBP$~lgCs)(0|SE?0~13d12aPtLo-7Ql-0q|
F0sxNWtik{Q

-- 
GitLab