From 66502b87630e77a3ee297e53bad6594c67fdf202 Mon Sep 17 00:00:00 2001 From: Eilert Tunheim <emtunhei@stud.ntnu.no> Date: Fri, 8 Apr 2022 13:35:32 +0200 Subject: [PATCH] Searching all drying locations before removing user parameters in the search --- src/main/java/com/application/DB/DB.java | 195 ++++++++++-------- .../com/application/GUI/InputPopUpWindow.java | 3 +- target/classes/com/application/DB/DB.class | Bin 16364 -> 16682 bytes .../application/GUI/InputPopUpWindow.class | Bin 6951 -> 6943 bytes 4 files changed, 113 insertions(+), 85 deletions(-) diff --git a/src/main/java/com/application/DB/DB.java b/src/main/java/com/application/DB/DB.java index 5c3d6d9..fd0b15a 100644 --- a/src/main/java/com/application/DB/DB.java +++ b/src/main/java/com/application/DB/DB.java @@ -60,7 +60,7 @@ public class DB { //getKwh(); //getName(); //getZeroPointDate(); - System.out.println(setInputParameters(false,false,false,false)); + System.out.println(setInputParameters()); } @@ -127,14 +127,19 @@ public class DB { } + public static void getData(){ - public static Map<Integer, Map<String, Number>> setInputParameters(boolean sawsetRemoved, - boolean treespeciesRemoved, - boolean dimensionsRemoved, - boolean moistureRemoved) throws Exception { - //public static Map<String, String> setInputParameters() throws Exception { - Map<Integer, Map<String, Number>> allDryingPeriods = null; + } + + + public static Map<Integer, Map<String, Number>> setInputParameters() throws Exception { + + Map<Integer, Map<String, Number>> allDryingPeriods = new HashMap<>(); + boolean sawsetRemoved = false; + boolean treespeciesRemoved = false; + boolean dimensionsRemoved = false; + boolean moistureRemoved = false; String extraInputParameter = ""; int locationID; @@ -161,116 +166,140 @@ public class DB { String valueIDName = ""; int valueID = 0; - for (HashMap.Entry<Integer, HashMap<String, HashMap<String, String>>> location : Constants.getSawmills().entrySet()) { - System.out.printf("\n\nLocation ID: \t%s\t\t\tRest of map: \t%s\n", location.getKey(), location.getValue()); - allDryingPeriods = new TreeMap<>(); + while(true){ - locationID = location.getKey(); + Map<Integer, Map<String, Number>> intermediateHashMap = new HashMap<>(); - //System.out.println(location.getValue()); + for (HashMap.Entry<Integer, HashMap<String, HashMap<String, String>>> location : Constants.getSawmills().entrySet()) { - if (location.getKey() == 124) { - // Valmetics - valmeticsTableName = getValasenTableNames().get("Valmetics"); - nameParameter = location.getValue().get(getValasenTableNames().get("Valmetics")).get("Name"); - startDryingTime = location.getValue().get(getValasenTableNames().get("Valmetics")).get("DryingStarted"); - stopDryingTime = location.getValue().get(getValasenTableNames().get("Valmetics")).get("DryingStopped"); - kilinName = location.getValue().get(getValasenTableNames().get("Valmetics")).get("KilnName"); - kilinID = Integer.parseInt(location.getValue().get(getValasenTableNames().get("Valmetics")).get("KilinID")); - limit = Integer.parseInt(location.getValue().get(getValasenTableNames().get("Valmetics")).get("Limit")); + System.out.printf("\nLocation ID: \t%s\t\t\tRest of map: \t%s\n", location.getKey(), location.getValue()); + System.out.println("Number of entries: "+Constants.getSawmills().size()); - // Kwh - kwhTableName = getValasenTableNames().get("Kwh"); - KwhName = location.getValue().get(getValasenTableNames().get("Kwh")).get("KwhName"); - timestamp = location.getValue().get(getValasenTableNames().get("Kwh")).get("Timestamp"); - valueIDName = location.getValue().get(getValasenTableNames().get("Kwh")).get("ValueIDName"); - valueID = Integer.parseInt(location.getValue().get(getValasenTableNames().get("Kwh")).get("ValueID")); - } - if (location.getKey() == 174) { - // Valmetics - valmeticsTableName = getArjangTableNames().get("Valmetics"); - nameParameter = location.getValue().get(getArjangTableNames().get("Valmetics")).get("Name"); - startDryingTime = location.getValue().get(getArjangTableNames().get("Valmetics")).get("DryingStarted"); - stopDryingTime = location.getValue().get(getArjangTableNames().get("Valmetics")).get("DryingStopped"); - kilinName = location.getValue().get(getArjangTableNames().get("Valmetics")).get("KilnName"); - kilinID = Integer.parseInt(location.getValue().get(getArjangTableNames().get("Valmetics")).get("KilinID")); - limit = Integer.parseInt(location.getValue().get(getArjangTableNames().get("Valmetics")).get("Limit")); - - // Kwh - kwhTableName = getArjangTableNames().get("Kwh"); - KwhName = location.getValue().get(getArjangTableNames().get("Kwh")).get("KwhName"); - timestamp = location.getValue().get(getArjangTableNames().get("Kwh")).get("Timestamp"); - valueIDName = location.getValue().get(getArjangTableNames().get("Kwh")).get("ValueIDName"); - valueID = Integer.parseInt(location.getValue().get(getArjangTableNames().get("Kwh")).get("ValueID")); - } + //allDryingPeriods = new TreeMap<>(); - // If location is Valasen, then the database stores furu as fura, swedish. - if (location.getKey() == 124 && TREE_SPECIES.equalsIgnoreCase("Furu")) { - TREE_SPECIES = "Fura"; - } + locationID = location.getKey(); + //System.out.println(location.getValue()); - System.out.printf("Tree species: \t%s\n", TREE_SPECIES); - System.out.printf("Width: \t\t\t%s\n", DIMENSIONS); - System.out.printf("Sawset: \t\t%s\n", SAWSET); - System.out.printf("Moisture: \t\t%s\n", MOISTURE_GOAL); + if (location.getKey() == 124) { + // Valmetics + valmeticsTableName = getValasenTableNames().get("Valmetics"); + nameParameter = location.getValue().get(getValasenTableNames().get("Valmetics")).get("Name"); + startDryingTime = location.getValue().get(getValasenTableNames().get("Valmetics")).get("DryingStarted"); + stopDryingTime = location.getValue().get(getValasenTableNames().get("Valmetics")).get("DryingStopped"); + kilinName = location.getValue().get(getValasenTableNames().get("Valmetics")).get("KilnName"); + kilinID = Integer.parseInt(location.getValue().get(getValasenTableNames().get("Valmetics")).get("KilinID")); + limit = Integer.parseInt(location.getValue().get(getValasenTableNames().get("Valmetics")).get("Limit")); + // Kwh + kwhTableName = getValasenTableNames().get("Kwh"); + KwhName = location.getValue().get(getValasenTableNames().get("Kwh")).get("KwhName"); + timestamp = location.getValue().get(getValasenTableNames().get("Kwh")).get("Timestamp"); + valueIDName = location.getValue().get(getValasenTableNames().get("Kwh")).get("ValueIDName"); + valueID = Integer.parseInt(location.getValue().get(getValasenTableNames().get("Kwh")).get("ValueID")); + } + if (location.getKey() == 174) { + // Valmetics + valmeticsTableName = getArjangTableNames().get("Valmetics"); + nameParameter = location.getValue().get(getArjangTableNames().get("Valmetics")).get("Name"); + startDryingTime = location.getValue().get(getArjangTableNames().get("Valmetics")).get("DryingStarted"); + stopDryingTime = location.getValue().get(getArjangTableNames().get("Valmetics")).get("DryingStopped"); + kilinName = location.getValue().get(getArjangTableNames().get("Valmetics")).get("KilnName"); + kilinID = Integer.parseInt(location.getValue().get(getArjangTableNames().get("Valmetics")).get("KilinID")); + limit = Integer.parseInt(location.getValue().get(getArjangTableNames().get("Valmetics")).get("Limit")); + + // Kwh + kwhTableName = getArjangTableNames().get("Kwh"); + KwhName = location.getValue().get(getArjangTableNames().get("Kwh")).get("KwhName"); + timestamp = location.getValue().get(getArjangTableNames().get("Kwh")).get("Timestamp"); + valueIDName = location.getValue().get(getArjangTableNames().get("Kwh")).get("ValueIDName"); + valueID = Integer.parseInt(location.getValue().get(getArjangTableNames().get("Kwh")).get("ValueID")); + } + // If location is Valasen, then the database stores furu as fura, swedish. + if (location.getKey() == 124 && TREE_SPECIES.equalsIgnoreCase("Furu")) { + TREE_SPECIES = "Fura"; + } - if (!treespeciesRemoved) treeSpecies = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + TREE_SPECIES + "%" + '"' + ") "; - if (!dimensionsRemoved) dimensions = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + DIMENSIONS + "%" + '"' + ") "; - if (!sawsetRemoved) sawset = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + SAWSET + "%" + '"' + ") "; - if (!moistureRemoved) moistureGoal = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + MOISTURE_GOAL + "%" + '"' + ") "; + System.out.printf("Tree species: \t%s\n", TREE_SPECIES); + System.out.printf("Width: \t\t\t%s\n", DIMENSIONS); + System.out.printf("Sawset: \t\t%s\n", SAWSET); + System.out.printf("Moisture: \t\t%s\n", MOISTURE_GOAL); - // Input parameters - if (!TREE_SPECIES.isEmpty()) { - extraInputParameter += treeSpecies; - } - if (!DIMENSIONS.isEmpty()) { - extraInputParameter += dimensions; - } - if (!SAWSET.isEmpty()) { - extraInputParameter += sawset; - } - if (!MOISTURE_GOAL.isEmpty()) { - extraInputParameter += moistureGoal; - } - Map<Integer, Map<String, Number>> results = new TreeMap<>(); - results = getKwh(getZeroPointDate(locationID, extraInputParameter, nameParameter, kilinName, kilinID, startDryingTime, stopDryingTime, valmeticsTableName, limit), - locationID, kwhTableName, KwhName, timestamp,valueIDName, valueID, index); + // Defining the extra sql statements for extra parameters + treeSpecies = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + TREE_SPECIES + "%" + '"' + ") "; + dimensions = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + DIMENSIONS + "%" + '"' + ") "; + sawset = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + SAWSET + "%" + '"' + ") "; + moistureGoal = "AND LOWER(" + nameParameter + ") LIKE LOWER(" + '"' + "%" + MOISTURE_GOAL + "%" + '"' + ") "; + + + // 1. Checking if user input is empty. + // 2. Checking if the extraInputParameter variable already contains the extra parameters, + // if so not adding a second time. + // 3. Checking if the while loop have previously removed the parameter, if so, not adding again. + if (!TREE_SPECIES.isEmpty() && !extraInputParameter.contains(treeSpecies) && !treespeciesRemoved) { + extraInputParameter += treeSpecies; + } + if (!DIMENSIONS.isEmpty() && !extraInputParameter.contains(dimensions) && !dimensionsRemoved) { + extraInputParameter += dimensions; + } + if (!SAWSET.isEmpty() && !extraInputParameter.contains(sawset) && !sawsetRemoved) { + extraInputParameter += sawset; + } + if (!MOISTURE_GOAL.isEmpty() && !extraInputParameter.contains(moistureGoal) && !moistureRemoved) { + extraInputParameter += moistureGoal; + } + + System.out.printf("\nExtra parameters:\n %s\n\n", extraInputParameter); + + //System.out.println("Før results"); + Map<Integer, Map<String, Number>> results = new TreeMap<>(getKwh(getZeroPointDate(locationID, extraInputParameter, nameParameter, kilinName, kilinID, startDryingTime, stopDryingTime, valmeticsTableName, limit), + locationID, kwhTableName, KwhName, timestamp, valueIDName, valueID, index)); + + //System.out.println("\n\nResults size: "+results.size()+"\n\n"); + intermediateHashMap.putAll(results); + index += results.size(); + //System.out.println("Etter results"); + } - allDryingPeriods.putAll(results); - index += results.size(); - } - while (true) { System.out.printf("\nExtra parameters:\n %s\n\n", extraInputParameter); + System.out.println("\n\nAll drying periods size: "+intermediateHashMap.size()+"\n\n"); // Retrieves the dates //results = getKwh(getZeroPointDate(locationID, extraInputParameter, nameParameter, kilinName, kilinID, startDryingTime, stopDryingTime, valmeticsTableName, limit)); // Checks if any dates where found, if not parameters are removed until dates are found - if (allDryingPeriods.size() < NUMBER_OF_PERIODS) { + if (intermediateHashMap.size() <= NUMBER_OF_PERIODS) { + //System.out.println("\nInni if, sletter parameter:\n"); if (extraInputParameter.contains(sawset) && !sawsetRemoved) { extraInputParameter = extraInputParameter.replace(sawset, ""); System.out.println("Sawset is removed"); - setInputParameters(true,false,false,false); + sawsetRemoved = true; + //setInputParameters(true,false,false,false); } else if (extraInputParameter.contains(treeSpecies) && !treespeciesRemoved) { extraInputParameter = extraInputParameter.replace(treeSpecies, ""); System.out.println("Tree species is removed"); - setInputParameters(true,true,false,false); + treespeciesRemoved = true; + //setInputParameters(true,true,false,false); } else if (extraInputParameter.contains(dimensions) && !dimensionsRemoved) { extraInputParameter = extraInputParameter.replace(dimensions, ""); System.out.println("Dimensions is removed"); - setInputParameters(true,true,true,false); + dimensionsRemoved = true; + //setInputParameters(true,true,true,false); } else if (extraInputParameter.contains(moistureGoal) && !moistureRemoved) { extraInputParameter = extraInputParameter.replace(moistureGoal, ""); System.out.println("Moisture goal is removed"); - setInputParameters(true,true,true,true); + moistureRemoved = true; + //setInputParameters(true,true,true,true); } else break; - } else break; + } else { + // Adding all periods to the hashmap to return + allDryingPeriods.putAll(intermediateHashMap); + break; + } } System.out.println(allDryingPeriods.size()); diff --git a/src/main/java/com/application/GUI/InputPopUpWindow.java b/src/main/java/com/application/GUI/InputPopUpWindow.java index b304471..6a7fdec 100644 --- a/src/main/java/com/application/GUI/InputPopUpWindow.java +++ b/src/main/java/com/application/GUI/InputPopUpWindow.java @@ -30,8 +30,7 @@ public class InputPopUpWindow { Executors.newCachedThreadPool().submit(() -> { Thread.sleep(500); - completableFuture.complete(loadSingleSeries(setInputParameters(false, - false,false,false))); + completableFuture.complete(loadSingleSeries(setInputParameters())); return null; }); diff --git a/target/classes/com/application/DB/DB.class b/target/classes/com/application/DB/DB.class index 6238fce9aa2d95d0e06960ebaa0ba4fbb8944821..00b5e6cf1bded86e7d423fbd6fc8086e98136a1c 100644 GIT binary patch delta 8399 zcmaD;zp9C`{?xx+`xqD)OqlA~8SS_jtQhUt867wn9l02o8J##7ow*oY7+paeH+DvM z4n_|y22MsNc1BMw1|CK)E=F%g9}vrzozahrL4eVplQDoXkc(j_V-Oc(Fk=W8V<=-7 zh#StuAi)^H&KSwT7!6{^fQVQw#`;jkICjQ(kdg#0#ze*>F2-cW6n4f`ZU$M#bauuJ zF2+p8EOy3h4#pfV231BU5I>iTF^@5yi?M*Qkc+X1v6zdogs~K4L>W6{IY>bzJ7X0W zg8`#G2V*rC10!P%h*QhWSjSk;&Dg-$2qK!;8Cy6Q>s#3w+qfAl7~4Ta2guQ#?2KJp z40a&R-5|OLq`4Qw>H`slAT|B$j1#yR+!!Z<OrONTI2oj73OnOe4#sI5jMF(7XK*mi z<Y1fyQZt)_aSjLLTn<K74#s&LjPp4d7l3pv<YZuETvX4&xR{H<n{f#T<5CXBWgLvl zLBcCI7*~SmRUC|~LG&69#<d)b>p<48=V08x!MG8mXA_9n%)z*YopCG3_uD|kb}oh- z#vR;@&5S!iL@x*9E)K@sAVc<ml<(zW+{eMVpM&uL2jf95#^8F!Lm*|f9E^uK7>{r; z9_3&>#=&@;gYg6h<4F$2Qyh$^IT+7yFrMXLJO?uVJQw2y#*5sHml*5W8834&bTeMz zV!X<Djf?R*<3tea1}g&?FuwpPzsbdTi}5xn`P=~o#a)nH_c$2ub2C0*+yo-(dpQ^% zf*7?NjE_LBe9Xc4goE)Z2jepi#^)T2FE|)qaxlK)V0_KN_=bb=EeGQ}4#xK!j2}1{ zKZ30L1R_4OGkyWl9ia4E$ies(<kN2)jNdsJe{eAV<Y4^8!T1{#E`Qh=|1vVL*<|Kr zme?^eFl%UT{>U_ek;|Q(@gF;*Cp)9x=57{OM#le>FS3>@vZtq(xFnV&GBOAir<Qo; z6_l0)Bo-y+rk11@6*DpjYD`XKtCSJW%qvMP%1uqlOe{(DNG#6qO)Ow!U`@>{DXN^T z&n`Oo5u5*J7xr)_872mH#;NQ~jO>gpj0~K?ndy0nC8b5Fj118lnv?r@r6$kkvEMAh zb()EXiHV)@GCLD9Bg1Wt$$h*!lM8q_H!JWeF|mGOWLTy#*?`M@avlFN=3NZCC#wsX zitS=zVPs$q4RK~?V&!3CV`ArF;$Y&OTqIB}u#1U{or#-=iHC`ohl!72_vF6<5?cIB z0_;qJJWN7N!aNL58J@8-iSRIqGKsM>iSsZ?FiG+-9A!Ah!z9HdGud7+Qb3kTj)zH} zNr8t+kx7Y>L22>=Atg~BhU*MB*qM|;8dTVsR6#1#Cf^sdWmad>m@F@($o8LyNs~!y zvYU{;hBlK9JCiOClOB^kJCgwqlOdB4JCiX;s|h=kDM+gs55rA{Ta)Js`G=Y_SuipP zW+j#->X(*e=IFx%m4S!JlF5pP$(qTAoynGm$&SgMor#f$$$`m{hslY_nVpG&kwF-t z(KoR`#T66}j0~!i^@OeJU6`DCm|Q`G8<RUDgE&}ePGVlVesD=qW?s5eX=YAJY7rxY zuwQ9zQfiSxewqR(A~REqtrU2eJeWLrn7o+0K`b9ofU&^b2{ywsuOu}+wTOqw7o^0G z$%>JIGb}MDH?<@)xtNE^pGhQukwF06&dK+M?U)0Zf+j17n1}>}ycfdon2~|St+c3= zhbfdPY;uN(UVS)7j5j#3yg0SQN`aG8wU~>CDFP(O@0*`l3`$3E;Yg4$m!qGHf{%Z= zYmf#b1FxonkEgdQln-)#6e9zpDkB4vrUDOBG${CDm|__jB)D8FN{SK{3gF4yic3MY zn2ReD=238jgcPNw`X(0eFzPbu@h}QAitsS(Vv6Hoif4*rWRT|Ka?Ht5NGYn!%u81& zNG;0DPbpR?&a6tcQeb3Y;^N|AN?>@$!<5LB#K<5B@sUDiu|iR5Zhl#6%H(WOe`Zmp z<jH$Q?IwwN2|i$W$j-#X!<535%FdL=$e=NK1FO_zJr%CW^<r!e{!HoYOc^{(nM_&i zOxZk4IZU}c3<ntwu`}iIFy%89@GuoJ6@ggAJWM4_rHl;RpbQOl4LcL_<WpiH%w-IZ zCo777;3#J@;$f;_a-1wFp}}0qR5jT}!k2j$Q}yO465`B^wVT&SzhRx+p=4>w0`d*G z`0!+8kkRne^g)kQXhO1PWZ=lmD+x=?DNUWcT=C)LgG!o{m6bIoe^wHeW-BNyam>kK zWDxWV^>uO$iuZSm4{#0g^mhrK?4=yF`LMD+6H6T<gZku&G7^*d)Jy_)GFXAjR&EAH zhFuK185kM%FfcIaGcYnRGB7Z(YHep=+Q`7bz{IeZfq{VyEGWVNs@-|OY*vQ-3<nq( z7`Q+o1kyZtlA4-6NG%@&GXn#I3<DQ~EQ2tE99$0<12@BAh9h7-M;VSWFfr_z{9J7z z<KD@g>dN&XleHLF7^D~!8ICiY0OdV~V1|<nrx=(RxESIXPBWZgU|>jNV1mk?Wnf^4 zVBq-Apvl0(&Tx*M;XFIT1$Ksu42<jy7rFj3uz`gckObY?87}^35MW?qXE+BFhij;3 z{?EX~zyvXgfq~%?0|NsK10#bf11G~}hASY)GB7Y$Fn|gL1_rK83_?2?gtsw>AcBaC zfr){E!JdJW!4d9dQ1D!3xQ1dL7pSO%n&$@A!@wZ7WAZu;CC0szFKS2&Bdq2Em0}>J zlmBZ(G47olrKxNO3MVnJHcy7z40jk97(^IM8SXONV_;+eg$XAE(;o(Hc82@XNPggA zc);)wY|w5^)p}4QL0ntSz|Bwxb}ht65r#($j~N&kxEVO1Mj{-;$?yc8N+iK4hk=0+ z<b6h@6w<=L3914Zm_dn&yOn{PL56{Wy=^yxLF9G@LvLmqW?SZZJ7zN$AtNhRW;1pn zBP$LeBP&iJBP%W;BP(tpBP$*uBP(8JGd>|BD}Es(D*+)RD?w&6At56xVId<c5g{Wh zQ6VEMF=jJysHs*GI~a_&F_`RRFlA)0l9ZI($zaCFFq8EPh-J>maDc(WN@^2>kdP(o zUIwd3=6Xq~oeb8D48f5sAeIdyL+~~R+we^cLc1C4BDXWx3ps3Ka0Hv_w2i@e8-vR> z23L?uYmixP+Zf!<*ig6vH47N4b})Ddd2VCyI>6v<B?ywX0jV~C34>(}gnYI!c-4cH z@ZeP93s&lF#g9{kA5?_^P8I%86};F~)O#IZFc1oWDA~afXvT+46<ARaLXi;2C&3WD zl`yIfkT6)rKqv%Eds~U%R1sPaRU(R0Nf=ax7)}-85EUTTi-Q!wqehTn9XK)~utx?+ zxSqiatQ!&=7?A-|0#|`GGEh`tjSLhO=#f!>fWcq~1Bwz{k%6KJH8LWEK%owDJxXLi zgrWY!8W|DwV4YAUp<vqE3MDd748a;1C@OG9hCs~%2H{N%kwQ`17@}t~a0tb0W{BKW z&mbfe%L2}dn;0Ttc~2+~CKL}BN`MI^!iADxLdjquSdLBE#^5N)vyH(~D0Lfyqkz&j zhBTq{Z48c^7$QM}ASOgGV;e)g<2D8tD-Ob1<1w^?b#fBcnTTB{7g%RKgS`-L_a<Z4 z$_@5O<}3zvNmfaYZ46nn7-VH;F-U?<WU!ZH1qA@dHU_W@SvN7nZ)1Qe=7cDgg)6Ry zs^&zfPK2xGf~b~;tA;A(LMToKE7p)?mE;C1mJ?+`SIv!3EhLl;i84u6XpGh8M2fOW zvP$wu@{00F@=FRx3W^HtV8|6^lN6Q|krb5_6BQR_-@%Z#ogv>!T2ew%dM85x6N4x_ zh*8MMkYL8X{Fer(Ku0whsQ@nmg@(jVhC)V$Z4Ayr#SrI!igAgZ4E2SK44W8A7BkG1 zWR(Q@cP4|p^ehHx5KqWx8$+oTE6DJ&Z49m~Hp>~BpaDLUL0$%;iUUbiIY^c5a)ua5 zR!LAu&t#C7g{b00QdI#`Ww)Hc3>0Yf+ZeKDGU$UsO$)?FQdbF5XU4Leflo_P0_^MM z3~bAPs&8Tt(t`S?N^2)WH6sJ0vXcO*0#$Yl#vm57vXcZkzXnp-f$BhLT_?Gd0bJMB zGuVbN|9?_z1GtH^mw|zC5km$814AbR2SYal7efyN4?`~lA44C5Aj1R(QHDtj5)4xq zWEiG0C@@T8P+^$PpusSUL5E>Bg8{=F24jY~4CV~;7_1rQGuSgMU~pns%;3hbgu#np zDT5!wGKL_A<qV+=YZ&4f)-g0PY+zW#P`{Dk0K-;>^9(x~9y07^c*n4ZQGj7DqY=YC z#t?@6jAaZ57-usaWIVudgz+rHQO5TS$Cv~ejx!lEoM4JzIK`CBaE7UZ;VjcEhI34N z7|t`@W4OS~z;KaSmEjVz7sFNNaE5Ell?>OJXEWSj-pg>4`4Pii=Kl=$SXdYyv4}G~ zX3?r=c*0`K@RTKh;U!BK!z-2}46j-KF}z{5VED}H&+vscmEjv}4a0ZVNen+(S2Fx! z-Ouoc^*X~}*0+odtp6FA+4LCM*~}R^*qj-;*xVR-*&-PE*lHMs**Y0T*`_m!u`Oa0 zXIsT6!M2`Jifu2WG}{SA8MX_IvTRow<=GxHDzMeRV^n1O#;C;hn^A?Gi&2$blu?ac zmQkHunNf#bn^Bitk5Ql9kkOFcmeGhkfzg<~k<o;`h0zSuPGgi}kYUqf5M_AI@Pa{_ zp^^0v!%K!Y3{ni|S<4yTGQ4A8V~AtB!0?{o1%m{80)ryM2ZlEck_;T|bqpUFUVxh3 z>^1capBO$fFf#D4S228H_{_k>z{g&}@Ri{+12cmldnv;=hR+Nv45I9X4Br_ZGq5s9 zu;(%SV0g#C&LG2{#qg8iF#`vK0(%<6FNVhqoD3@LNesUk9y4$;Xt2jI{9$;^z|Ek; z9>wsN;V}abg8_RO!#{?{47?1+?7<BG8QwAQG1Qy0`!g~yJZ9i$ux9sWWMp{EAi!YH z?#{@>@R&i6!HM04k(uEggAjuoy8|N&!(#?v1}}CSMplN$3?dAE>=uk{438N^8G_hN z7}*&fGl(&SvKumTFuY?BXXFG8J~FUELWq$I7D9~N3{sGAVdP?vsD}g$BM&TK7`Yf2 zz-{N(3_|}ILK!638F?8Q85!9b`4~V1J0l-5LI@#P?2LSj3=Dr6MA;d6*%|r&GrnPv zMwkLN3T{L_goV(IV1bN*n83~`z`*dEu~YFkV}g#3?tg{|21$g0q&SP6k(YttH$#T1 zs`@VmE~Y;W^%Cri{J$715&Z*3K~P7JQHX&P)c=Mw-dUD2urY`-FfdiZn%Nx4B@d@0 zC#0Fp_#DK7mONZAwcOBpNvIZ760?Bnw7P8!j=CU5eLaYj1Q89}7#yWRB{Ybk0}^S3 zt8ao;<dR(A=K28!Z<vTsGmHh212?o$<s?DXp-{^<21ijgknycByW6%gIMz#o-O~=K z6s&kQF$jU04z7|sI~Y2^T@Oj#Z48||8M+u5toSAQA^v1o17d;w*=;2t$~TKaLs9_d zOCy;1AO^U@(6f!9cN;^W86T#idQgE6s;9RxKvjwIrI-n#DulQZ*|>fYh6%amLOU2H zi3#msn7oZ)ij|0{;5-H)Np49IQNbMyQ+F~<V`d0n{yzYzCY%lmPi|=40qM)syY6Pl ziIn69Rj*+0&0u7h#h?iC-b_XY0iz`hqLLh-3V13=2xMdnJLB?yqDZFB0-4HzVk*Q? z4v?YXv@si2M{$AT2wF#R?PM@#tOxhVxREO<Zg32PI%M3?N(xd(Npiv~DTXQrIR*ws zHwI2d4+b4Z9|lv#0ER}!Acnb&!3_5pBN?7C#xT5PjA!`3n7}B+n9L~7n8Ikon8}#J zn8Vo3n8!GSv5;{tV=?2Jdd3RI^^8@F=NM}kZ!*?0zGtjs{Kr_&#K_pl#KPFjq|DgH zq{rCF6vWuYRLt1TRL0l~DtZ~NFo-gyFnBPEGQ49DWb9^8WE5i*XAokX!63pY0V<pr zg&1ZrN-|0@2r!s3o?(<`c)`HUaF0<L+^Obac*`ilD8nerP|wTofl-iA4pbO2-ek~V zlxI|6;AhZbyb3O@xtM~W<u*4c_c1Dh%WVdxN^tqk2o?jCicDY@s8nPIvp}UH3z!8e z6<NV7P^riUVnGXVPNo7zrFw=J3>-{)4Bm{&j0y~#;6l@bfgR#zMimBbsH0S2j$%|} zfI5nihXLv+Ms)@T2C#9ATyWDg7&yV@XbA)7Uj{KqLH3{FDT4s0<bsrX?2LS%@()xZ zf(lA@Mvxp>N|TYDk)MI#4}(2Bqt-8m{9g=A{}}=qxKQ+h3P?tX!3+$)7?}Ptn6oo# z<0#K`7`Q-#ijeY*^)RG7V^*k#6;j|)2WS=sH3S{Cp+y3h6sYH-f-EI82i%*O3o4`L z!Ign}n+$9%EdQZOh30Q#a0HiQ3t%O}LQqx#7e|XgEH+U8LufI`7<dUN1uCLIC7>ib zNE}oIf(uG;`NaZ~1eJG?GHnUM8B3w&ISL^Og4_o73%H8`cFHnXVJWm6%&G@<j#hv) zgPpY!&RPX3FF7DX9#)|I32NZGN^*mWMIKNQ2`v+OC3zubB4ad&1uYZd12&-Yluu|i zxO7_sYIE}m`GPrXXEC%(@(I;Lc>U&rVuIi@O&C<B2}8>?{^bnGR)Uf+J?pnIY!KQA zZZX>;1VP<iAxR;S#3n0YXy8i<GlR-Yq0Jx<3A2FMppG8@at0xU&TR}E>aF-C`GmHB zorJ>?0x(BFRG~QnDoBbW1R#z8>#S!0nP(*+$-fQMM-!J60Mq=EoS@DSv=INd5L`%e zg341~P*J%R6q39<8Q|qApClh778r~{EO0DXSn-3@ZiBY{`QgPXKT@$;|NkUN(ROIJ zjCUu)Oh$$s3{#=qvz$mt-t7!KHZU+TRx!?IoX4<^@gI{slM=%^1{Uy0-#!L?1_s8( z44jP18F(32FeovuWYAz-#o)=fh9Q7)9YZkVW=0jp{fs({M;MJ6PcViuo@R_>Ji{2v zc#bib@j7FD72|EjHpV-QeT?@QXEVNIoX7ZpaRK8~#;uIc8ILf&WIW6Gn(+<e8^-sH zZyEnF{$k={{LLi9_?JnZiJM7@@gI{46C;x)6El+s6Dw076FXA@69-c<6DLy>lOWS1 zCSj&|Okzw6nIxIkFiA6QVUlIK!6e7@lS!WG50fIZ7?Wx}s5A#Pq#4^7L>cuN#Tf({ z`xtl`4H(54gc*-8XfPTwJZ2DLJj)=@XvA=hL6~s?LmZ<qqX~l`6BkSelMn+hqbW!S zlLt%(Qy@$SlL|}+V<e+1qZz2N%NWb($Y{>+n4w;PF_h60Tv6~b-GG+${0t1t3g8l+ z0mNdoV0a7~W@lCaH>8<BV&H}}GnfTxNV9-g;C3`Cm<4J_vw>Nlb~HPf1!_lgFmN)9 zgKH5^23}@ihVS*D);gmK;~#Ln#LZ~T_!e9*@i47nC;`_Ayx=-Pfq@y~JVrGJeuyEA z>I|GvRhA6A;Ih7)f%h+iC%8!F<NU|)8d8>n+Q1BP41$QJErL}KDZn9ZYE5=Ves)GJ zur6?G+v*QP06U}AF9yD3c18r}2ZJ=YxL3ek+*>m+G1`C|vbGGb85kI>7}yys7@HYh zv2ij;ForTlF>o>{GRQJ2r!jCc=rPDLRxoffNi)?jMzL@*CNn02=@P~w#wZ3!07JED A8UO$Q delta 7980 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 diff --git a/target/classes/com/application/GUI/InputPopUpWindow.class b/target/classes/com/application/GUI/InputPopUpWindow.class index 67be2b11dadcc835d48052b6830ed4398ec413d8..ac025e16a74ffbc38b252cffa522a108424edd17 100644 GIT binary patch delta 353 zcmZ2(Hs5SRln|4k#^wYeJ0?b{$@4`5IAs|)7~~nm8B{m_5UF9R*JR*e&}QIg&|wf| z&}WcmFknz+Fk#SVFl8`hFk^6Muwn>gux5y0uwjU2uw_VPa9}84aAYWFaAMfb;Ky)? z!JpwILjc1ChCqgE3}Flp8NwM}Fhnr2GQ=?oFvK&8GbAv|F(fjoFr+Z*Go&(_F{ClZ zG2}63GUPKBFcdJB>oF8E)-sebb}*DN_A^v4E@D(-T*s))_=!=K@fV{y6E~v<lLDhA zlNzHIlNO`)W<`nJjG<KwTnyC=A`CSQatyT$8Vn5#`V5T>CJfCC)(kBS4h(G!?hNe= zJ`9}<!3<pt5e&TyaSVM7DGdD#Squ{x3K%9alrpSlsASm0P{Xi+p^jlALo>tX$%axn w0<H{942%p648kG|$vYTQwI*+rk``59U}I2Z5M)qd$YWq&;DIQZ{7}jb0G-N1%m4rY delta 361 zcmbPlw%lw(ln|S!MpRT()aDo=J0?b%$+JZQIOQ2Q7!(=A88kM35vgIS*J0pb&|~0d z&}R^3Fk+BrFlJC?FlW$buwXD{uw-y&uw@8juw#f|uxE&8a9~JfaAqiAaA7ECaAnxe z5Xf+dA&B85LomYyh7g8p43P{E8KM|oFhn!5G9)qzFeEXGGbA(0F{Ci6Fr+i;Gh{HD zF=R5vF%&XpG88cuFcdSE>oJrt)-qHub}&>j_A^v7E@D(=T*s)!_=!=2@fV{O6E~wa zlLDg-lNzHglNO`iW?6~djG?s*Tnu##A`JBmatsX&8Vt=0`V1`$CJb#1)(q_o4h)?P z?hIWFJ`6n!!3@0&5eyR;;ut0}q%cfk$YPkxP{1&ip_E}ALnXsjh8l*=40Q}!7@8Tj zP1cpl5%FYTWng4rU=SB!NZ!Gas>RIA%shFel(eW40~>=fgD8V4LmmSI0}n*e<eO4% E04)Ya5dZ)H -- GitLab