From ab544987e5b5d51f7a722e36e703dacca7fcb417 Mon Sep 17 00:00:00 2001
From: Eilert Tunheim <emtunhei@stud.ntnu.no>
Date: Mon, 2 May 2022 09:30:48 +0200
Subject: [PATCH] Added function to graph the livedata, should be functional
 now

---
 .../java/com/application/DB/Constants.java    |  10 +++-
 src/main/java/com/application/DB/DB.java      |  11 ++--
 .../com/application/GUI/InputPopUpWindow.java |  50 ++++++++++--------
 .../GUI/LineChartFunctionality.java           |  17 ++++--
 .../application/GUI/OutputPopUpWindow.java    |   2 +-
 .../com/application/DB/Constants.class        | Bin 6466 -> 6568 bytes
 target/classes/com/application/DB/DB.class    | Bin 15155 -> 15444 bytes
 .../com/application/DB/HelpingFunctions.class | Bin 5070 -> 7006 bytes
 .../application/GUI/InputPopUpWindow.class    | Bin 7425 -> 8009 bytes
 .../application/GUI/OutputPopUpWindow.class   | Bin 3645 -> 3757 bytes
 10 files changed, 55 insertions(+), 35 deletions(-)

diff --git a/src/main/java/com/application/DB/Constants.java b/src/main/java/com/application/DB/Constants.java
index 2ea1fe0..358727e 100644
--- a/src/main/java/com/application/DB/Constants.java
+++ b/src/main/java/com/application/DB/Constants.java
@@ -16,11 +16,14 @@ public final class Constants {
     }
 
     // Today's date
-    public static final String TODAYS_DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
+    public static final String CURRENT_DATE = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
 
     // Start- & end time
     public static String START_TIME = "";
-    public static String STOP_TIME = TODAYS_DATE;
+    public static String STOP_TIME = CURRENT_DATE;
+
+    // Boolean variable to tell if the drying process is finished
+    public static boolean IS_FINISHED = false;
 
     // User inputs
     public static String TREE_SPECIES = "";
@@ -31,6 +34,9 @@ public final class Constants {
     // Number of wanted drying periods
     public static int NUMBER_OF_PERIODS = 1;
 
+    // Number of seconds to wait before updating live data, in seconds
+    public static int NUMBER_OF_SECONDS_LIVE_DATA = 10;
+
     // Non linear regression
     public static final double ADJUST_REGRESSION = 5.5;
 
diff --git a/src/main/java/com/application/DB/DB.java b/src/main/java/com/application/DB/DB.java
index cb88cf9..c04f47f 100644
--- a/src/main/java/com/application/DB/DB.java
+++ b/src/main/java/com/application/DB/DB.java
@@ -158,6 +158,7 @@ public class DB {
 
 
                 // Sets the lowest number of chambers to iterate through
+                assert valmeticsChamberIDS != null;
                 numberOfChambers = Math.min(valmeticsChamberIDS.size(), kwhChamberIDS.size());
 
                 System.out.printf("\nnumberOfChambers: \t%d\n",numberOfChambers);
@@ -297,10 +298,6 @@ public class DB {
         // Defining a treemap to sort the data incrementally
         NavigableMap<Integer, Map<String, Number>> sortedFinalResults = new TreeMap<>(finalResults);
 
-        for (Map.Entry<String, String> entry : dates.entrySet()) {
-
-        }
-
         for (Map.Entry<Integer, Map<String, Number>> entry : sortedFinalResults.entrySet()) {
 
             Map<String, Number> data = entry.getValue();
@@ -357,7 +354,7 @@ public class DB {
         String extraInputParameter = "";
         extraInputParameter += extraUserInput;
         if(locationID == 124){
-            extraInputParameter += "AND CalculatedStart BETWEEN \"1990-01-01 00:00:00\" AND \"" + TODAYS_DATE + "\" ";
+            extraInputParameter += "AND CalculatedStart BETWEEN \"1990-01-01 00:00:00\" AND \"" + CURRENT_DATE + "\" ";
         }
         if(locationID == 174){
             // KILIN_ID starts at 0 not 1 in the database.
@@ -370,8 +367,8 @@ public class DB {
                         "SELECT MAX("+ nameParameter +") as DryingSchedule, MAX("+kilinName+") as Kiln_ID, " + startDryingTime + ", MAX("+stopDryingTime+") as DryingCompleted " +
                         "FROM `" + PROJECT_ID + "." + locationID + "." + valmeticsTableName + "` " +
                         "WHERE " + kilinName + " = " + kilinID + " " +
-                        "AND "+startDryingTime+" BETWEEN \"1990-01-01 00:00:00\" AND \"" + TODAYS_DATE + "\" " +
-                        "AND "+stopDryingTime+" BETWEEN \"1990-01-01 00:00:00\" AND \"" + TODAYS_DATE + "\" " +
+                        "AND "+startDryingTime+" BETWEEN \"1990-01-01 00:00:00\" AND \"" + CURRENT_DATE + "\" " +
+                        "AND "+stopDryingTime+" BETWEEN \"1990-01-01 00:00:00\" AND \"" + CURRENT_DATE + "\" " +
                                 extraInputParameter +
                         "AND LOWER(" +nameParameter+ ") NOT LIKE LOWER("+'"'+"%"+ "test" +"%"+'"'+") " +
                         "Group by "+ startDryingTime + " " +
diff --git a/src/main/java/com/application/GUI/InputPopUpWindow.java b/src/main/java/com/application/GUI/InputPopUpWindow.java
index a4071ed..3043841 100644
--- a/src/main/java/com/application/GUI/InputPopUpWindow.java
+++ b/src/main/java/com/application/GUI/InputPopUpWindow.java
@@ -9,11 +9,13 @@ import javafx.scene.control.*;
 import javafx.scene.layout.*;
 import javafx.stage.*;
 
+import java.time.LocalDateTime;
+import java.time.format.DateTimeFormatter;
 import java.util.Map;
-import java.util.concurrent.atomic.AtomicBoolean;
 
 import static com.application.DB.Constants.*;
 import static com.application.DB.DB.getCurrentDrying;
+import static com.application.GUI.LineChartFunctionality.loadLiveData;
 import static com.application.Main.*;
 import static com.application.DB.DB.setInputParameters;
 import static com.application.GUI.LineChartFunctionality.loadSingleSeries;
@@ -118,7 +120,7 @@ public class InputPopUpWindow {
 
                     // Sets the start time
 
-                    START_TIME = TODAYS_DATE;
+                    START_TIME = CURRENT_DATE;
 
                     // Retrieves the user inputs
                     TREE_SPECIES = treeSpeciesList.getValue();
@@ -249,30 +251,34 @@ public class InputPopUpWindow {
                     }
 
                     // Retrieve data for current drying period
-                    try{
-                        Thread thread = new Thread(() -> {
-                            try {
-
-                                // Henter her data fra databasen
-                                Map<String, Number> data = getCurrentDrying();
-                                Platform.runLater(() -> {
-                                    try {
-                                        //loadSingleSeries(data);
-                                    } catch (Exception ex) {
-                                        ex.printStackTrace();
+                        try{
+                            Thread thread = new Thread(() -> {
+                                try {
+                                    while(!IS_FINISHED){
+
+                                        STOP_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.now());
+                                        Map<String, Number> data = getCurrentDrying();
+                                        Platform.runLater(() -> {
+                                            try {
+                                                loadLiveData(data);
+                                            } catch (Exception ex) {
+                                                ex.printStackTrace();
+                                            }
+                                        });
+                                        Thread.sleep(1000L *NUMBER_OF_SECONDS_LIVE_DATA);
                                     }
-                                });
-                            } catch (Exception ex) {
-                                ex.printStackTrace();
+                                } catch (Exception ex) {
+                                    ex.printStackTrace();
+                                }
                             }
+                            );
+                            thread.setDaemon(true);
+                            thread.start();
+
+                        } catch (Exception ex) {
+                            ex.printStackTrace();
                         }
-                        );
-                        thread.setDaemon(true);
-                        thread.start();
 
-                    } catch (Exception ex) {
-                        ex.printStackTrace();
-                    }
 
                 }
 
diff --git a/src/main/java/com/application/GUI/LineChartFunctionality.java b/src/main/java/com/application/GUI/LineChartFunctionality.java
index b8b65b6..6803ed2 100644
--- a/src/main/java/com/application/GUI/LineChartFunctionality.java
+++ b/src/main/java/com/application/GUI/LineChartFunctionality.java
@@ -257,12 +257,23 @@ public class LineChartFunctionality {
 
         //simpleRegression.add
 
+        return getLineChart();
+    }
 
+    public static void loadLiveData(Map<String, Number> userInput) throws Exception {
 
+        clearLineChart();
+        int index = 0;
+        XYChart.Series<String, Number> newSeries = new XYChart.Series<String, Number>();
 
-
-        return getLineChart();
-    }
+        for (Map.Entry<String, Number> entryKwh : userInput.entrySet()) {
+            Double kwhValue = entryKwh.getValue().doubleValue();
+            // Connect the data to a series
+            newSeries.getData().add(new XYChart.Data<String, Number>(String.valueOf(index), kwhValue));
+            index++;
+        }
+        updateLineChart(newSeries);
+}
 
 
     public static double getNonLinearRegression(Map<Integer, ArrayList<Double>> confidenceIntervalData, double y0, double alpha, double j, int n) {
diff --git a/src/main/java/com/application/GUI/OutputPopUpWindow.java b/src/main/java/com/application/GUI/OutputPopUpWindow.java
index 15a1cd6..1e60269 100644
--- a/src/main/java/com/application/GUI/OutputPopUpWindow.java
+++ b/src/main/java/com/application/GUI/OutputPopUpWindow.java
@@ -42,7 +42,7 @@ public class OutputPopUpWindow {
         finishButton.setAlignment(Pos.BOTTOM_CENTER);
         finishButton.setOnAction(e -> {
             try {
-                STOP_TIME = TODAYS_DATE;
+                STOP_TIME = CURRENT_DATE;
                 DB.pushManMoisture(moistureCheckTextField.getCharacters().toString());
             } catch (Exception ex) {
                 ex.printStackTrace();
diff --git a/target/classes/com/application/DB/Constants.class b/target/classes/com/application/DB/Constants.class
index 86a1941d22a795754d864cc38476bcc881177aec..425d015ba2bd7ece15cdad5a9b158a717278a5fc 100644
GIT binary patch
delta 2639
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

delta 2525
zcmZ2se8{N&)W2Q(7#J8#7`}5cSTQVOXIRX|zyzX~a50!OEahTgVORzdSq@^Y01+!W
z7*>HqR)aWeI2hJ~=ye<n>p2)Ua4>A-VA#aLu$hBl3kSni4u)-94BHuYa5Atk?BrnB
z#lf(fgJBN`!(I-CeIT*@T=fhr3<p3490U=EI2aCdFdX4vILg6r45Z*V2g3;veUgLW
z6c@v3hBI6YXBp0cSm!~)7dRL$g6K;i;xdT10wS)0h-)C?I*7Qz&Tx~R;T9LeZH7Bs
z3}y^>*%|IJGH{3ZyEsNN22bW<G@TsC=sS52qaEY@$-f!37#~blV`^c1xOp|x3ns=#
zo2RhOWo52psG4lTZEEqD;Rz2zJ3}K6!&8Q5JPgx7tZs%zMh4EX#GKsJlFZ~{9){-(
zFL)UGK%&gv<rzE-lNlN(FXZmze#yh|nBf%<Lp(#mWK$k{p)`gB9)=kpBW8k#ISh@H
z+jyet3m6g@890Md6LZ26b4pWr7)n3_!j+YkmAbyZx+y6N9v)V?xmLx+><q7Y7~U|v
zWoLND!|<Nr0}sPThEF^U)(kd`3=BLBwhT5r40a&G9z-~R2uBd%1R|UnTo@UIvl7b^
z^-D`KbMzgHiV`b*GK(i?@``hR=3)54@Rf(5lHuFtZr&WGdMgG723-b8kl73j44fdd
z!L%KN4Vbov(hgAC5lTBjX=er(1_lO623H0*21W*V1_lNu1`h^F1}_F1INzH=lEH_;
z1<v<nkYw<K$k&54_%lc{1V9A9d;tbYhCn2~6oVu~5E5USL6RXDi7(3_$q<6X4`q;K
z2t%_l97&#^L6RW?%&&*I7-V52SOCHoWRPTtLgEWCNHRnt@kJOU8Dfz5q70G@u}Bui
zF-U?^0|O&NBG^Mo43Z4VNa{fzN&)ffp+N@nQ7T9P$_M!<jUfTWfOI4aG8iNoGLh6P
zF-S6GA@P+NBpI@i_#hAEAn`#S%4M)&sE5Uw3WFp=9+Co821$l|Bnv@4DnN5kA(DD^
z21$k@BtFPP#YlXRhf2`&monI-!xKdrgCs*al7$rv{0vMCl?+u3j11Kb3=GB$j0}tn
z3=FJV+Zh-)f<v{2fq?;3WHB)CF|aTQFw`=DatBxuLmdMsX>l?%Ff=kSF;q`}DP-mg
zQZK~7!oa|g$H2jm&mhWBz@W@f2-nBKAj{Ci(9FQV&;m6HBGSsh0FB2s1};!30XFfU
zsQBb&VHG4(%NaNrDi|afDj75ws*p@oV(36K6(rILH?@m_lc5{x&M(5cNG8@Xa4^&}
z2r@J<NHH`bnJ9u`B1ohMZelM37pR~DxpR`Z*5nx?O7$Sm%Q3JsFfg<-a4@tn2r{%Y
zNHKIUC^K|2=rD9MSTgh=Szyf2kLF~M2(ks73=<e8f-GQQV2}aF3<CqpCI*QO3=9m6
z3?SRsz@if%LC3=|iGd4LVuG|xb`>=PJ4lRym4Sg_3IhkjR0ctYX$(>f(;1W*W+6F5
zmSGB-LqH;^4w;J0A#&&rnFnzQ*d5at8d<;&`6p_P6x>S~I2e{PNH8p8&|p}O<On5(
z>1d7siJ(T{3}^(li6KYeY6cF5H4K6bYZ;^%)*+b)iZ0ZI1`<K`78k=zh>4TLeZXM_
ziM&k=91NQo1R1t4NHJ_>P-fW1pu@0(!IEJolHtY-v(TIi5<xbclVLWtFjGShv%Qco
zgGAmOh<heq7e|h~gA5!DhZqDI4l_tG9AQvqIELg9S%$f24gravI%FO;hiITX<P^jq
z43ii*80Irn2|x>lpA2jaAh31v90|#KA-&BEh9JTSL>Pkz6PC>krn?!;B3bt`m`5^m
z>|kIGj${#F1JOGeEVeUPZf1}`$O{;QBqCV^EI>3&fgF+oL6Afwi+~V_hAB`3D@X=g
zAs`HriDZG$Fcli05(|<oj2L(r7#M^Z_!z_(gc-ycBpIX_<QSwGlo@0gG#F$VbQu&F
b3>oYh0vX&HiWp)UCNrckFfuFvmv{>S;njay

diff --git a/target/classes/com/application/DB/DB.class b/target/classes/com/application/DB/DB.class
index 81a03bb8dbe778db793157c21df0e3c30776a0df..bf7c605220bd409ba991d7163a096e315aceca47 100644
GIT binary patch
delta 5959
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
Ta2nJXW?*FCV<=}h#l{H$RUuEz

delta 5721
zcmcaovAL}N)W2Q(7#J8#m|WQzO}H2Y7)?1D%^1zO7}haba4}jkTCp=)b1|?nnsPAO
za4|44+JZQC+>G{&4&026j7}iJnVr#vgVB|p(T$sdkI@}Oc!2bJvNL*dF^GWldV^>m
zkX~O9%MV2Ob1_=hGX}6T268dTFa~ilFfs;nFotk3XfcLzFouC_3kMMqAR-b(M1hEC
z5D~+{7z;8jj-4@{gE4`FF_D8YiGwkjgE0kUSSkl&8VAEA4#sp2#taU|Ob*5@kn!0Z
zj5#1WmxD16MCWtVGZt_#7J^(;#KBn1!C1n<SPF7L8Hgz7V65O`tYq}%Vyt4U=3uM=
z8C?q!spDX*=U{ALXKVxoR1=73=3?++Y~f~TVr&Hwz8s8g9E|NCTRK2yb#gFvaWHms
zF!pdT_JRVZ52VVDhl8=7gK+`}<3tX|Nt0_CrR%vE=P=IYVw}e~pPO+3qXRqRLN10J
z#zkC=iy4=2F)n2c0<o5{GJpZ|3y|{VT#PFiS8_3~Vq6U}bPWgNT5iU5jAbCg7o=c4
z$ORiX7&me-ZsK6v%)z*YgK;ZJ){dQV8wcZdkSlj^Fz)1F+*QxPxSNA<4+rC34#s^P
zjQcql4{$IZ<X}9+!FZU1@dyXwQ4YpqASWCL5hp-|2PoP2b1<F+*>Z}5@iYhH84kv?
z9E|5U7|(;mE^shj<Y2tS&Ul%F@d^jyRd&W}TntMXuY-siAi|%6@g@i3Ee^)p9K4Ko
zKmmD|gYh0a<Ne78m{u`9*qqH=!XmJZoza?|@gX~7JUinfc1D-U@7W(4@{}bOWhUm8
zgeB&brZO^cmSpCp2A3q}7BDg}dNDExrsWsqCYGe8guuinbMu;RzQiHS#Qm6^aUnb7
z6Gn#H8j~+@>P&XvX5Xy99mhDiiKlzA1MdSahMnw;ml+wBX?RZl$gMKjo=<49D3AN(
zdz^A0wUf{DSxye+H}hN1uz{WNDG%c_#^*c?dl>ezGrr(qe98EVkwGvku`E%)v?Mb}
z-y^X&!#A;jk%57S@ipTc9>%wf@7NjN^Dus3{K(Guh==hL<7XbmFN|L&-{cSG{l@r}
zhw(dz_`&#dvZa7gJ>xIN-#m<e82|Dx{$l*c!}y<x0c42*%#xhMymWofypq)P)FK`x
zM#jH9OiT=?85vmIN{dQ)n3$PZAnZgQCRWBbJWOm%>^w{yAc7Ob<pQy|nb;W_IKvWi
za#Kq(lZ$znc$jz@83aI{nEXn>gPD(sf3m5dyS@O(VBX-w^5WDID+NwY)nYClCP9!O
zzi)nKaY<=WDqL8I;q>Iyf^u?<znFv>85mU=8JIK`7#Ub%VpLUmm_!&q^Dv1riA{bk
zD9ibfok^UBNrFjoGOv&fhZK`E$N@5w4Ta2vL>NVR7``+7;9*$LB+J7j$0R$sQb?6U
zp5Y)5lLC|C<Yhw1%rBXgCi4g{6jA13QejeMXMD`Vq{gJq&ZNP}pfUNhoQj`MW^oC~
zNKJMoEgmLqCLMMrT^=SqCVd_z113XuCL<muDJElfCKDbeQzkPWCUYhWMh0$|#F9jX
z;>@a4D+PAOCp=7+410N)teC7P-w@uwY{PJRa<|A`6-EX=m!itdy!7DYjMS9UoKzkr
zTP6k`COgK@j0}tlJWTdX4wFxbDvCIQ;(@V(k%2uXrP{DIwStjBe)3u#`N<Yyh8*h|
zU-2+GF*#2z6!T?X&*U=spjg1>jpFNACkM&Rcj8Y^E%7VOO)bhyh9-6i4NV_V<ml%n
zmSpHVWv08NCTHd*=2$Z_h+q?+>?(hF@@3fq9_|o-7strpco)YI*U9hYA|`VvIMp*K
zGOS||0GBFk42%rx88$F5GHhgEV9;k^WME`qU|`kS&cFl`U}D(Bz`y`f#K0iHu$h5@
zfd`_1VGF}n1_lOBhHVVn8JNJDEf|=<a$K7jn0GL+Y-3<Wn83xr#K6EH!@$WP$FNxi
zZVVU04u+i!3=F#%7#LU>7#VgmaDuWG12e<M&1{M;Y>b;Wd#m>|)^BEDVDw>7WVy;9
z%CL`NKZ62GE<-cJ0fvJNLM$~5B@Blc4l+oygfq-!ILvU6L7pL&WirDNhT{x!EcOgr
z7)~%8WZ+;}&*H*xlHni&7o$D%7KT#{rx^qo7cmDioMAZ4Ajp`&JelDv!)XR##zy8M
zhI0(38AKT6n6EONXE@CuTF-clS(o7g!$Afy#!JkK3>O(rGl(;OW@ccx#BiEHf=Ptw
zKEq{((+rYKrcC=7t}vWtkYcc6UC3~iVLyWm8!v+*!!?HE46+OyY}yRh8TK<UFmSPH
zGTdOe$-v0K!=}z~i{T~%69XTcD#LAtn+(hhf^13*cNlImurP?Q$urz#sK3X+${@}r
z!*HMB0RtO@6q_W&Lxu+o><n^jq7081PBU;aD6$DLJZ3n^z|Ek_#>eo4;WPsegC-jn
z!&8RS47?1wY-|kA7)~?rF&MHjF+68D&A`v_f`Ne{h=BtdrY{*3prQ7PK@RHpmoUfI
zGrWeo{v`tg)Kzcbj(Q7s)LRC2hIb4MOyUfp{}~J!1lSqgGcqzVvNL>OXZXm@@R5O?
z;S&QRJHsb9Vqo~sAj%+zS7AL^JvhBW33i6}><phldOI29vFQcbiEIf}9|HpeL@PVP
z7X}7CCBFYm&4dkr*bj0#+}WspKr&NDNB2L21%m>*qd*!^9R)E96e187NCkuiu?gfu
zc7`vE3=H)@8D{)vU}BI(Hx#59JvdQ(%E0iOAwyMF{XYX2ago9FpFsk{o_ehDhHMcy
zDlCb!0x7qDWnf@nV)(|u2`ceHxt@W6t($?3L5zWcc`>sY$8H9;$n6a5lP~FrGck2e
zeyww{o^KmN)=q|OMg}VZNr9aVJd6x88P<SUyo?M77;>xxMfqnjXh;g~W)O+o&LAqp
zv5i4ocN>E^n6ZsPY8ylDHio=y4EbjKL?{yFPcaihR_DziF3Ey!T!9EfVXnFG4u)be
z;T;Sm+Zal%L`8+>F$hWWNQ#OI?O^cO$xz135Wf6>z$OM}n9Is1U)EJpuV7@D#c&wp
zfl5XO0iz`h+a)<g*>^B_fP_GrTG$zPFjP&J(KFSkp2?85iGf+DW*dVvh^}SX%ODWR
zEGe{;L6DIlcpHOoI7ql|a;2UuWBugmda8VXi;-+>n0!jlm$7lOguVu2(_}||1IEV5
zMf%?CpfY|RgZ|_r`a1QDqKtx!Qj9{3_Kf0;>5Nj0eT*`Uvl-<X7ceR^u4hzZ+{CEC
zc#%<y@eZRl<0nQPCPqeGCKg5mCQU{oCI?0nCJ#narg%m(rZPrzrWuSDOtTp+nHDoz
zGc9AZWm?H-&vcg2iRlKT3)62#H>Q7#9?VLNUd(!o-poOa{>-6_^?}S0jKRz`j3LZ(
z8AF*DFouI`oj(kcjOh#>3_n3dK4Tw)BEv6+-weWxvl&Df{(y>TMp1@Y41XE^F$gkg
zGE_1AXE@Fv#9+ac$H>62pMi(rA>&a-MsQL1fpHrn6C*PNAH!$H&5SGz2O0Po?=YNV
zWMyPy5Ma=+XDSC5*4)f`4C-Lbyv#}r#$YiX<{D^G&I3xHjO^f|oPl{UxL#odiGiyI
zCNK+BH86u&psIld%mP&ntY8+X#$p4rK&3W212gjiMh=F94D}ogJj~M>IT`jda5CLs
zIL*k#$i~10F09iSxFCLG<c9f;k%xf?>Uv&~>p_lZ<Ys_6o{@(E=J?kPFvq`UfI6O$
z4^$0<?Rp8fi@%<M3sitJEMXA*#~{fFDcJrqJY^6Bl|As{iJjpSxLAjlQD9}C*ck;F
z!KLya277i!!CwsdzZjVQG9<7w3b8YM{>{)2D#N&On!~{Gi-F1WFM~Bi{VxWIKMcI=
z44?lo=(96?0bB9;2ZO{f1}2F3F9u8WqJ&YHfs0XuQ4~~^OpY?j;%VN-AijyA1(ac1
zCtom<Qg7SFAg%-Aw!_MWj%^I$lB^)1P7sR?#Oj(XXlxnNjnLc!mqHS31qlj+)Z4&J
z?cK&8E}*oH!A__T&gus#16wcw&YC!RnXy(qv>+3c6oV9GOgtbKv>+4T#K0^mE;I>T
zU`^h}APwhCnZ?iy=S<zkFimLsHij8i63k|jqLPvl`xY^zNJ@xG8VSwZ#^5}Yfn8{p
z6(>YsHdJ5^SfF0gNNDahhIum?q#@GtLB>c)N--N*aY;(C7+G;c#20`Sae+BjJS~!p
z%m2@k6c^F~J8jA=hITloz+6I10$dtOfl5OuXlcl|oFUmt0<H?|=0)4;L9Vk!h#p|j
zvXYdP6j}s!2DF$2xds%((?MY;#bUILL3|s7loj7{1|fvbZ4A?__$0-J7K2@c!x8*2
zM?h3f-Dbov4P=+|Oa_o6prZI4F}dDU)C8&$WGTNSKREE2jjSYgGc1Xel-SO&6yyok
zZ4Aq{F)RmFQXo5KOg>>MBM&Ohm;e2+o53eiQgAzizm*uMxLyH@Td|!Cjgy(plo?k}
zRyR{tS_LiH#db1OGBWI7@PHNW&`=RtJvqnBvc5`E0$lWiC?Q4$SS@oIY=hW#hBX@)
zn3#;1f|<e?7BX#Py3TZqVIczxs7=pk#o))lz?jRx!kEXv!I;m$!&tx|z*xv2!dT28
z!C1l|!&u6oz*xbc$ymu?#8}H<##qPT%~;P6$k@P8#Ms18$=JeBU&GkR=*u{jF_duz
zV+`X=#(2j0jA@LE89Nx4G0tFI&bX9u1>;V}Rg6a%S2JE@T*G*kaUJ6$#`TQP7&kJ0
zX57U1pK&u2E8`X>ZpLj)5{%oK<QZ2nsWKjBGGaW=WXE`d$&K+8Q!wK#rZC1cOc9J1
znQ|E~Gu1F&Wol)-&a{N_Mm^JV#+yvr7@sj6VtmeYit#1Wb;j>Zw-{eB-C=yo^pWvB
zGXvvCW=_V>%o>ben6(+dGFvhJWp-u!#~i@;pE;U|fjN!IfVqsxh`EW$l)073f_Vay
z74r-x8|FPsw#;{#?3f=gIWYfXa%Pcaa%Hh)a$^Z$a%Tx=@&eUKjB^<3H5vai@Gv}O
z*vTNpxQ8JV-20GZ+{uu`D8{gpL4wJSL6lLP;WvW>lN$psqXffm1}UZ*1`S3@aA%>F
zL7q_xq?ajzA&ya+QHDW+=@4AUDF$9fS&$B92AB?JPPmRcARYA}EzGVAwv2M1eh6~_
zgAt=VqXL5@V+Z3eaBV2gya!rkNwC;5h=Z#!2?hq1L~xY_>UAYDDl(h~_1jny!JQ%|
zuq>!k#0+MEI$11W7N~o~3TA=2M{EoXEcJ=t{t-J^5Y#>5U|?a1WmE$9NH|y`8I>7M
zGjK8Ru!J(IFq~%KW)NTrWK;$BO+;9H8P&iQvIL7KqdK^6BE#a!r~&SqD6lv(YJz%b
z44Nz!;Cfb&!H7klQHx<egAjumi#E8|BV5nu%Paz}*F_l9n0|xnby4OC3>U$*rWm-^
zG+|(cgaIQr12hakEQrC3d<;;78TlB5pgOe~#K2YHR0gsC3`Gngh;}(Ts~*wAK&lzv
zgR81f3=Euq7#^`ReEQ2E#Lg%HuE;#u83oxHbr>ZCRD^#ruokd0>i%H}U}x0*#lV-0
z%=yLO4z4>DV0EG89|kvehR?qk^pWa3HE{cxQICO>QJ>KO+6_-*U;=lx)nG-%+R2Bl
zl)^!6JRt@a1_q`821%w61_h=t2300V>q-owfzgoRGy?;JBm*xvOc{}EVq!D`HPso7
T8IFN^uMCU~d<;ztN7*<5HTD~8

diff --git a/target/classes/com/application/DB/HelpingFunctions.class b/target/classes/com/application/DB/HelpingFunctions.class
index 54fe7ed89c186ec2dc6974e7c5a5c6011b0df055..77d4802660217db2dbb5a825bf559f40a6d64f55 100644
GIT binary patch
delta 2750
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
A*#H0l

delta 1164
zcmca-c22$i)W2Q(7#J8#7%s6hBylkqG9<Gzq;N2#axpM7q;W8$b1`HvWP&(Z><rl)
z3^`m3oD6B~47pqkJPdhU4EYQNAXXteLlGB)07EesLkUAE7lQ#q85e^nLpeJ`1qVYl
zh*<+7YC+O<><slF6%AYrjSNvuTnx<&E$j@f+ze6-?d%L4TnwEIUF;0q91J~N3`z`X
zAbu|wLmxvw7sCXGiChem7$$QuOktP`GGiJ$!*q~>nVbv;471o7W^*y<fqXEBonh`~
zYerrsu55OOdF%|i><mSlgP1uO8Rt)qX1O>yhTWgpjKO^JI(AbrGlm6>49uY+&g={e
zc^DQkEaqWY!mxDmPxfkCGlpgC49j^KRxqsOVOYgr&d4B~l~|UjpOcuEt{;+7lwY2h
zl#|NCu$o~FJHuKYhII_<c^DiSoOl>EFl?H<kt0K3Gs6}hhOG?Sco?=b>|kV2nykpB
zB+A3!&k(@QuoI+V7dyjlkcvH%6F6;H81^#ko4kNik!?N?!+wSXlaF)iX)+vSIK<9y
zn1|sA!%=pIV>}GU8BVY>oCIk;#m;aVr1=aFLm)%YWH~NBPKL7#=Xe;57>p-NbI;m*
ziu(~G6T^kg>v*5DFtamUocvHgWOAJ--{cRx9Fwy|RTB&t3>g?07#TP~S{N7^Oc)p#
zm>5hMI2afi%oxlW7#S=W7#Q>!7#SED7#LW!wlgqo1S_#*U|?Va3kon;F)%RjfZ41J
z)(kcb3=A9$whVS4&6D4Ys_BE&@-Z+oFfd3na52a*2s6mS^>8t8GuSgYFfcH1fkKXf
ziNRvBi`YU&%gN8gl<PqzYca4eNHHifI5W5~Ffs@;1T(lYxG^v>a52O&xHEV#FfgPs
zFhONK85kHM7&!hjXfm*{GkCExc(XJ3urv5FFtRiFa{Xsu0}C@C3A(d0`2J@QU|?fs
z@PdiMH7GIvXJBGrf|$g>z~INgz`(-5$e_f)1&TtjV^@jmGg?l*B`z(DEE~uW1eWEH
zh+?#yoGhVi2l9#-0}}%SgC|2ULkI%{g9w8uLnuQS10w^-*_;eae;Bmc8N#KJtl?mY
zV2A`8bVNe69u$sTU?VaaxEXT5VF)o&gdvI{nt_3Vn}HK*B*HPA3^5F`ATt;k7-Yb)
z#K6F^i9vS*IO0KOLgKLu8u@Vy91QXBs8<Ht$H2h7n;}{+ayx_mW(HkQ3SeYF=oDsP
zVn_g|ibRGg1_lNr1~vv!h7yKK22KV!1}TO%22KWT1}TOa44e!b8O}3QvT!mqGc<zf
LDGZYsDj6gJ38cSv

diff --git a/target/classes/com/application/GUI/InputPopUpWindow.class b/target/classes/com/application/GUI/InputPopUpWindow.class
index 04830397692eb383cf896d85766005d3041e3420..7dee364a79ca5923136c8f23d251a0d675b5f7fd 100644
GIT binary patch
delta 3141
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
KdT^E*qci|C`i{E*

delta 2534
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
MfU~6GEICF20G_?$0ssI2

diff --git a/target/classes/com/application/GUI/OutputPopUpWindow.class b/target/classes/com/application/GUI/OutputPopUpWindow.class
index 6667f6e6cb356173368f73e755903074a6b0274d..5daf432fccb91d11d412a7bd30eb3075dc126f34 100644
GIT binary patch
delta 1214
zcmdlhvsSkL)W2Q(7#J8#7;bYh*fPYiGsJT-Ffqh&G9)l0f>=o$49Ormg`FXli-Ch7
zje{W_L}zd^WHMxdSlJv5IUEeRAbuV@Lp~RSAVVC8$N&-9><k4Q424__q9C0`AR4T*
z7{tovU@$BZVqjpX0`aQZ8EV)ZR2aa3i$R{D7DQx&h&pzLdTxdWhDLUVrimNGe44o!
z)EQdX8Cp3Q+PE0n89KNaIvKh^D!M^#?Ew+JoD6*o{UBlj$RQKC8747I=3<z_FqNHQ
z8W)2V!*q6r8SD%*H*+wiGcit^T)?bhXUAaA$RL!JSeBSpp<i5*n4YR13?kVXX7Mo0
zW|+gnFqdH-BLkmrer9n=X;G?zb4F@%HV?ymh6RiaQj-IiME!gclTved80<hI9GQ6q
zr6nQx1w0H385XcJEaG8U%&>%qVJX8hMh1RVL#!AXxWLMx1}tY-!pI;uxqw}6ayW|}
z^9qI~lV`BVi>?%4SjErAuv&m&4G+UwhIKp)>lrpoKEoo*VaKqMhhY=L=E)yf#Mrj*
zFl=SmHkp@IoZF6JI}gJShRuu&Dw6{kMJ7A5TG;R8Vc5m6o1I|~55r!DeLM{N84mC;
z9Ar4e!*H0vo}J+c55rN0V>}GULBt7$lk5zqco<GI>|<v*!^3cvVZr3JtP*VJKw+gi
zIe<}h^9NP~My2x%7Z@4DHGH6<ms*yZSEBC<BCR#UxEO30E^c;WmtgXhNzTvJPb?_N
z$xKcx$;{8wcX85p&d)0@Nz5xLW@O-T4h;%&^$Ur2aSU-~WDo+Ir=OFUm#!aNQk0pO
zZq3NR864st5Fg^{>pD4tv!DAC55r}K>pTo0455=hahfvToUFn1lI0d7gX-iuF7e6d
zx!5Kfaq9@%FxY~V7Bd4QgB^oC10#dO<U(#Sbw>sU1~vvp1_lOx1}6pv1|Be*mBE?8
zg@J*Alff0DcJn%JA;x-;;yeav1_lOU1`Y-h27U%n22lnH26+Za22}<r1|0@j1~UdZ
z1{(%>24@BZ25$yMhCl`-h6n~#hGYgchAakkh9U+HhFS(qh86}bh8_lOhUpBZ42v1e
z7*;cwGhAS>WO&G6#qf>6n&A(F4I=}CE!a^(3>*v`3_t4`+!)*$7#QRk9x-?@crq|D
zm@%AY@M7>}U}ErQ*v8<^;KRVokjyZT!I#00frX)#p@qSp!H<EJVKGA-LjXe{0~^Cb
z1_g#7hF}JE0WMIGfx>}-fuV_kk%5_kfkAo`gXv}lGp%h5<~tcI7#VgjST1Ma@YUJI
zV7-xnv7Ui}L5M+=!HR*I0TdKc3~USx47v<#40;Sg42BG%4EhXW3<eBR3`SsQD=;uK
zh%vA*gfWCOFo8@5yATu&(hLy{kqnFsQ49<W><mny><rN?49pBM3=9lR46zK?7#JA1
e7#JC@Fx+6c${@*53W*plhB5|bhH{1qhDrcZ+VwF2

delta 1138
zcmZ20yH}?E)W2Q(7#J8#7%p)!STn@1GsJQ+Ffqh%GQ=^&gIEb142d8*iJc*ti-Ch7
zg@Yj#M5l2wq%&lISeYCQSsV=6Abt)zLoOGCAVUm@NCOd>><oDv4EbCPq9C0GAR4T*
z5X8#lU@$BaVqjpX0P!l>8LHSER2aa3i$R{D8boA*h#Gc=T5g6qhI)2}hKU=*oEo_p
z)ES!C8Jam5TDTZm8QQoQ+8H`PDmp=K?E(?qAnSX$8G0G|xET5wCa^P1<YKU3n8eO7
znVn(EW+BFOCdP@AtC%&cZ5V7B8HBPD%M#Nn^ovUp(^K_>K_olFR33(D4AXfSW-!cT
zWZ?77&nzw}ElO2z&PYwp=3$t{FnjV{W_bl0hS`h^9GQ6qr6nQx1w0IM7-q9G%;jO2
z$1tCVVFAO!$uca8%!?T2Pj+C5uV2hCpOJyhEi*5(ID?Tvz$rh!q`0IgvA{RABqKki
zn4gVdi2%b=el~_>0u0M}7*;T><Y8FFu$qxU0_MQv)Vx&voW#of(h~hJr~C>Y1{;Po
zJPd0Y)-f^&qA2pqPf2BGSkJ?-fng)mhY}z!f=vhpks!UBco;S_teb4c>hHUShhZzj
zHg<;XJPbP+cJeUnV%W{Yu!mtU55qnNTONk}3<ua54)QP@V%W*faF~bT2*~5YAS?BA
z67$maT`Q7P3raHc^LQAJGT3gu&l<tVe2n4vWGi+VW-Ephn<LpJm?j_K?Bzbm!*Gh>
z91lYfL-6DXE>p$}ll!<{vRq_jP@T-kEk1b?w^4u<gEcrIFf%YR*f7{KFf!ONFfiyd
zFfuSQFfg!cZD(NI$iTqB#9+_Bz`zC;<YRDPU|`?@vsoD&8Jrjx7&sZ6A(}Uf@CY&1
zgB0g6NHZ`n2r+Ol2s7|Ah%ksUh%?ADNHC}}NHXX!$S{~O$THY4$T2uG$TN5|C@=&v
zC^AGas4yfms4`?Rs4)~Vs58_uXfU)eXfpILXfaG@FlJcHV8XDP!Ia?wgE_-P1`CF7
z43-Rk7_1l>7_7mL3S!`3;9&S!&)~w~%D})N&+v%BjlrFPk-?1NG=m3&I|CDgH^Vjt
zPX;drW`<;jc?{kRJ`5}jwG1r`z6?GLtPG18;u!oG{2AC79x^B}1TX|LunTa3!VelS
z6%33F%nS?+qFUP+Om{MvF*596FkjBV;j6Qa!Ez%wNO&0d>lrK<n86_?#=y$Jz@Wpx
z!=TT=&!Ed7z@Wz<!e9V)tO5fwg8%~yLkL4C0~5$hu)9F9A<7WO5YE8J5W&E}z|O$r
u&(09Z!obWB1&)YlhO-O|3|tJ145t~+Gn`?NWGIG4M+pNnLn%WULpcE21l$?`

-- 
GitLab