From 0b12b65de96fbfb086362666ae14928a42d03b46 Mon Sep 17 00:00:00 2001 From: Eilert Tunheim <emtunhei@stud.ntnu.no> Date: Mon, 2 May 2022 15:31:31 +0200 Subject: [PATCH] Worked on the threads, need to stop threads if search is restarted --- .../com/application/GUI/InputPopUpWindow.java | 17 ++++++++++++----- .../GUI/LineChartFunctionality.java | 9 ++------- src/main/java/com/application/Main.java | 2 ++ .../com.application/GUI/graphStyles.css | 8 ++++---- .../application/GUI/InputPopUpWindow.class | Bin 8468 -> 8553 bytes .../GUI/LineChartFunctionality.class | Bin 12366 -> 12357 bytes .../com/application/Main$1WorkerThread.class | Bin 2633 -> 2837 bytes target/classes/com/application/Main.class | Bin 8558 -> 8603 bytes 8 files changed, 20 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/application/GUI/InputPopUpWindow.java b/src/main/java/com/application/GUI/InputPopUpWindow.java index 9948507..545e799 100644 --- a/src/main/java/com/application/GUI/InputPopUpWindow.java +++ b/src/main/java/com/application/GUI/InputPopUpWindow.java @@ -2,6 +2,7 @@ package com.application.GUI; import com.application.DB.Constants; import com.application.DB.HelpingFunctions; +import com.application.Main; import javafx.application.Platform; import javafx.collections.FXCollections; import javafx.collections.ObservableList; @@ -19,10 +20,9 @@ import static com.application.DB.Constants.*; import static com.application.DB.DB.getCurrentDrying; import static com.application.DB.HelpingFunctions.LOADED_DATA; import static com.application.DB.HelpingFunctions.setLoadedData; -import static com.application.GUI.LineChartFunctionality.loadLiveData; +import static com.application.GUI.LineChartFunctionality.*; import static com.application.Main.*; import static com.application.DB.DB.setInputParameters; -import static com.application.GUI.LineChartFunctionality.loadSingleSeries; /** @@ -187,6 +187,7 @@ public class InputPopUpWindow { Thread thread = new Thread(() -> { try { + setLoadedData(false); // Henter her data fra databasen Map<Integer, Map<String, Number>> data = setInputParameters(); Platform.runLater(() -> { @@ -203,6 +204,9 @@ public class InputPopUpWindow { } ); thread.setDaemon(true); + thread.interrupt(); + thread.join(); + //Platform.exit(); thread.start(); } catch (Exception ex) { @@ -211,7 +215,7 @@ public class InputPopUpWindow { // Retrieve data for current drying period try { - Thread thread = new Thread(() -> { + Thread liveDataThread = new Thread(() -> { try { while (!HelpingFunctions.IS_FINISHED) { @@ -231,8 +235,11 @@ public class InputPopUpWindow { } } ); - thread.setDaemon(true); - thread.start(); + liveDataThread.setDaemon(true); + liveDataThread.interrupt(); + liveDataThread.join(); + //Platform.exit(); + liveDataThread.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 8b23f2f..9883670 100644 --- a/src/main/java/com/application/GUI/LineChartFunctionality.java +++ b/src/main/java/com/application/GUI/LineChartFunctionality.java @@ -1,7 +1,6 @@ package com.application.GUI; import com.application.Main; -import javafx.collections.ObservableList; import javafx.scene.chart.CategoryAxis; import javafx.scene.chart.LineChart; import javafx.scene.chart.NumberAxis; @@ -12,12 +11,9 @@ import org.apache.commons.math3.exception.MathIllegalArgumentException; import org.apache.commons.math3.stat.descriptive.SummaryStatistics; import org.apache.commons.math3.stat.regression.SimpleRegression; -import java.lang.reflect.Array; import java.util.*; import static com.application.DB.Constants.ADJUST_REGRESSION; -import static com.application.DB.Constants.TIME_LEFT; -//import static com.application.DB.DB. public class LineChartFunctionality { @@ -31,7 +27,6 @@ public class LineChartFunctionality { public LineChartFunctionality() { - liveDataSeries = new XYChart.Series<String, Number>(); xAxis = new CategoryAxis(); yAxis = new NumberAxis(); lineChart = new LineChart<>(xAxis, yAxis); @@ -40,7 +35,6 @@ public class LineChartFunctionality { yAxis.setLabel("Kwh"); yAxis.setAnimated(false); lineChart.setTitle("Drying Processes"); - lineChart.getData().add(liveDataSeries); } @@ -204,7 +198,8 @@ public class LineChartFunctionality { dataPoints = dataPoints/endOfGraphPoints.size(); - + liveDataSeries = new XYChart.Series<String, Number>(); + updateLineChart(liveDataSeries); XYChart.Series<String, Number> regressionSeries = new XYChart.Series<String, Number>(); diff --git a/src/main/java/com/application/Main.java b/src/main/java/com/application/Main.java index 2223833..b795ec3 100644 --- a/src/main/java/com/application/Main.java +++ b/src/main/java/com/application/Main.java @@ -23,6 +23,7 @@ import java.util.logging.Logger; import static com.application.DB.Constants.*; import static com.application.DB.HelpingFunctions.*; +import static com.application.DB.HelpingFunctions.isLoadedData; import static com.application.GUI.LineChartFunctionality.getDataPoints; import static com.application.GUI.LineChartFunctionality.getLiveData; import static java.util.logging.Level.SEVERE; @@ -233,6 +234,7 @@ public class Main extends Application { while (!IS_FINISHED) { try { + ringProgressIndicator.makeIndeterminate(); Thread.sleep(500L * NUMBER_OF_SECONDS_LIVE_DATA); } catch (InterruptedException e) { e.printStackTrace(); diff --git a/src/main/resources/com.application/GUI/graphStyles.css b/src/main/resources/com.application/GUI/graphStyles.css index bbef3d5..ce64d11 100644 --- a/src/main/resources/com.application/GUI/graphStyles.css +++ b/src/main/resources/com.application/GUI/graphStyles.css @@ -4,8 +4,8 @@ -fx-effect: null; } -.default-color0.chart-series-line{-fx-stroke: green; -fx-opacity: 1.0} -.default-color1.chart-series-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} +.default-color0.chart-series-line{-fx-stroke: red; -fx-opacity: 1.0} +.default-color1.chart-series-line{-fx-stroke: green; -fx-opacity: 1.0} .default-color2.chart-series-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} .default-color3.chart-series-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} .default-color4.chart-series-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} @@ -13,8 +13,8 @@ .default-color6.chart-series-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} .default-color7.chart-series-line{-fx-stroke: rgba(0,168,355,0.3); -fx-opacity: 0.1} -.default-color0.chart-line-symbol{-fx-background-color: green,green;} -.default-color1.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),rgba(0,168,355,0.3);} +.default-color0.chart-line-symbol{-fx-background-color: red,red;} +.default-color1.chart-line-symbol{-fx-background-color: green,green;} .default-color2.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),rgba(0,168,355,0.3);} .default-color3.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),rgba(0,168,355,0.3);} .default-color4.chart-line-symbol{-fx-background-color: rgba(0,168,355,0.3),rgba(0,168,355,0.3);} diff --git a/target/classes/com/application/GUI/InputPopUpWindow.class b/target/classes/com/application/GUI/InputPopUpWindow.class index 693a41bb2cb82fe3ac72db67a1a64d3c9e0e6c67..037171ffa7925880946ed5def0d7a08388321c3e 100644 GIT binary patch delta 2719 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 E02ve}JOBUy delta 2705 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 KMgvAyMgsu9Xchke diff --git a/target/classes/com/application/GUI/LineChartFunctionality.class b/target/classes/com/application/GUI/LineChartFunctionality.class index 788df9c9e54e551c5257d324a400315d5da5957e..125b40b88613c6967a6c7d4b98232326c6796831 100644 GIT binary patch delta 3993 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 W#OT4m%;?GJ#pn%YB{3#5rT_qFBZZCt delta 3979 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 diff --git a/target/classes/com/application/Main$1WorkerThread.class b/target/classes/com/application/Main$1WorkerThread.class index e8cca2d060725d070d2d935b0729639bbfc300ef..8764a06752f05b58c77755135c22afadf0c8bbf2 100644 GIT binary patch delta 1115 zcmX>pGF7bp)W2Q(7#J8#7-n%Y$S~M|2wN@&Sq3{0%N|5Ha56YDIB_vJGq|uafC1wd zP6k&7H;^)Sb_NeF1|9}aE(S*iFQ`023KxSngAW&jFM}T!gFiz6Cqp1Z5Qr5l#K6E1 z!Nm~C5XHq1%@D&a!Vt?42V%y9EJ$EyNMvV7n%L<oC0Ul3qf(TammW}*pI($&T<n>b zl9`-Xl3z6Oj4osT<VIGp$pVZzlLZ-9@^J=drspM=loq8jGU#bc7G%_)yo=G9(PQ#I zMjM-C9)=W#R2~Lp1{EF#B?fsO22}<_9tH&lMIHt@26=XdG#-X@h75LwOdf_T219m+ zY#xRjkYp}H-sDUs<@$V(@&blJc7`GzhGK>ic7{?OhBAh7c7_TbhDwGic7|#mh8l)i z9)>!GdPW8Tr~Leq;*z4o0^ih<jQo^hel~^%0R}^Uc7{eC1_OpBc7|pih8Biac7`?{ zhIWPyc7{$KhAxI~9)=ze(aX@s$e@&*pR1o(P>_?EJeiMqHKXQaMmCX&%SA;P83c0^ zvr|3uQc_D&i*hsb5=&AyZ)e`m$kER*fr~+gVdCUE)_)4z#i=E*fMaA}(eTs^V`rGe z!!Vg)8V`dRgW=>8Y^IDeCjVo*#WItTL3MIHyX@qj>^k)_46+Oi3@i)`3~~(e;J8*` zP-I{b5CDZ7m{w*`VPIfjW?*DcWl&>aVo+ybU`S?Q0_%~~(%#CzsHMA=fk|sS1G5(M zRt6R=ovjS48yOfFm>4t|7#M`W3ZF3WF+5@rW_ZdV!SIYhlYxOjfq|KUfuUZKL5o2b zY_B9J!WbAC7#JkMZee230~?~xz{p_0V93A-vYC;OfrWvIfq@}s69d~Uh77GO3{2Y? z*hLsPHZgFuX6|6%Ue3VbqrHuRcLxLC%>Q>q82G_rQeZKyZ483j7=(5(2ybE#VbtEn zAX=}ri$RQmVF!b_)(!@VoeYwU3_BR4azNhL!oVVsvgH5n<^N}FWME=oV~}8wX5e8^ zW6)vHXW(IA2K&y9L6Cug;S~cL!&?SkhIb4S3?CV!8QwF<FnnN8VED|S#_*Lvhv6rK zKEpQ#1BUMmCJa9q+!%f__%r-th-YMAsLx<zWXNV@g$IcY0}F!@gE838Vo(+XLk={Q zOc)p#_!!t2qSzTsS^U@;OvO|Lm_X4B2^|J21}1O_@@Q>gVAa~fz_N`&8W9y-;E?;x zz|HUnY#$E;qXz>60}s@276x;0fLkzFf|G<5gEfN=I0l&*WEdD2v>6x}rZ7xrn93l@ T5CYc6$PmiF%n-&9&JYFwJzmDr delta 1021 zcmbO#c2cDN)W2Q(7#J8#7$$KtNHLgmF-S95fLN9w!itl@n!$#Z0Sp+wa5C63*nw2o zvoknwF>o<BaxqvlI6>tZQn(nL8C<v+Tp8TB7~B~=I2k+{yg)2(AqED904|0=h9EA6 zV1^KGhERqu5G$OEiy?v`lAR%nogsSSWLGY>l8nq^6$3^FvB`>zVmyotY&MyBnI(3N z3@(!u7@a2fGS*G@U~*=3nB2o;V-&-~5X%t9!=S*R$itw-pu@u;#~{zcAj2Tb&JfST zkid}0&XB~zkPH$`VMt|UkeeLEBv;SFkOoql&XB>*kjcZ4#gNU;ki)}}%aF&;kk7+V zz);A}P{hMf%uvF^P|8ro$ROa9pI=g3Qj}QWn_7~QpHj@v#!xQ6pu^A3P{G5X%}~kC zP{qSg%}~S6P|L$m$57AC(7?mc$k4>Y(9F=p&d|cc(8|!p$e@&*pR1oZc_H(L%@bMn zGIF;wbZ{|9F?2FASWQ-76q~$(nQw9}+x5wTEIJC@#i=C$MfvGPsl~;N3@jR+nqlk= zT|5lk41GKdh73BBOV~{rCrn<&ev4%yBZKPXkL==;=W`g<OEE|@FfcGPFo1#q9B*<A z@(c_D0-#U=%P=x1F(@-IGN>>xFvKx1fz^s=X>Vm<)Y{I#q{Y0IfmusuD+9|$1_lNu z22}<I1|bF(1_p-544e!P8Tc5UFbFd|Wl&>aU{HYQWl(3(0^20Qpis}C$iT?Jz#sy) zo{52xL7PDbVi_Yd0}BHa0|P_qCI;4742dEPY?~N3S~GVra4u)y@X_AJz`cWkXXgJW zA`HA>F)6T^);0$IZ43fC7z8&l2r+7JV-VKb#UR4Ku!BKVYX^haP6lyCh8+wNIUr|m zVW?*oNLliK_wxVqH!?6WurUZSh%j(5$TO%iXfSXwFoV70#2~=H!0?iRjo}T0Aj5kG z5r(%6q73gCBpE(3$TNIqP-XbepuzBkL6hMtgD%522787d3?2-B7$O+{F(fklXGmdW zhI?O>frUYrL63ovL6bp@L6@N(#AIMdg@%bf0|Nse0~<pyJA(m>A3KAAn2G=sDEc5l z!eGS!3L*vu9<415ELvL_n71)VBEp>u99%ycxEX$dE#v_QEf3Ue76v153>h<+FfcH% tFqkr!F=%Rlql<|_ih+Rv#O`6}XXs^+Wbk2NU;t_NWngCTWAJD20{{hWs2%_S diff --git a/target/classes/com/application/Main.class b/target/classes/com/application/Main.class index c789b814911ed9f3efdd6b32281a13d5263a2432..b9e38140f6b49fd482603f5b043ca7205cbe4856 100644 GIT binary patch delta 702 zcmaFoG~0Q@USY=k$@_$z7=0!S@@j7WFZ_^+QFZb|F&kDZ1{MbE$x7n2k}eD^4DJm4 z3?2+p44w?C3|<Td4BiaZ3_hE8h$}MIM=)?OL^234L@`J(L^CKb#4@NbBrs?(Br+H? zBr(`9Br~`&q%e3hWH7`tWHV$i<S-O7<TF$=6fiV16f$%$6f;a>C}UW}P|mQEp^{-g zLlwgjhH8e>3^fdw7-|`AFw`;JVQ6Hy&(Op$mw|!7j)9GVf#CteJcjuUAn;&vgyb&S zUIq?^2@FCE6B%R}CNZcpOk*%&n9g9!FoVI9VfJKwDR<6n237`c1_ma<&Gk|X7$?ih zG}JF<;9ywFAjGhYL4sj9gA&6E1}%n_3`PvA7_1pqGdMA<W$<BG#}LG@o*{-|149bK zMur@QO$?<Bn;B{twlcIcY-8wS*v>G6VF$wkhMf#67<MsiWZ2EHgJCbjVTOGSrx^A# zTwyrCaEIX_!xM%>3~w0@Gkjq<%J84z7$Y0QaYli9h7*hu3?~^C7)~*2GMr{KU^vTY z&2Wy<iQzn>55q;qaE42aaSWFkGZ?Ni7BgI9tYWy%*urp!v6ta4;}nK_j58TI7*{az zFmW*QGx0MDf<vbO;zwxca4>N)>|y9*U}O+t{LiqLVIKn%gAe0ThW!lt7?>IC+ZnqU z4lwLvU|~4S=*Mu7VIKo4!+%C0hC>Yd7}yxC8LlxLW;nvY&KS<Hi{U845e5#%VupDP z#~6+<a5DBXv`oGwyW3EfL6A|7L5We3L7P#D!IV*z!G=+d!I4p&!IM#g!Jko^A%and zA%RhkA(K&`p^(vV@-ewqRtpApM$5?o^7gDY4D5`ylc&hrvpO)aGdfPbA#cy>!obex mI$1`+p4EeaozZi0f`T>U^~rM-tQjv)zM){vcz&{oViW-Pzo`TO delta 674 zcmbR3{LX2^USUR;$@_$zHfxJKU}996%p-2YYRSODU^UrSyjIegfrY`1fuF&hL5jhH zL6yOi!GOVw!J5H)^J8&E#>{XA4u%K@0ftBh35F;J1%?;~6^3{QErtXJV}?Wq8-^qX zSB7K;Z-#V+c!n&742EomVun11YKDA<W`+WW4u&FzNerb7ix|onb~02j>}RNCIKoiH zaGIf-;Sxg)!wrU7hC2)m4EGrtC+A9DknLgMVCZKMVwk`n!!VISonb125yLbFTZZWj zo(!`lM@hMJW-_oca5FG4@o!!wwSaN5k4#<tA_fkIB@99gOBo~>mN6(XEN9SSSixY# zu#&-=VHJZD!x{!3hP4bq4C@$T7}hhSFl=DRVc5t}%CL!{hG7dsJHu9nK89@!GZ?lr zEMVBdu!3PH!$yW(3_BS1FdSys%W#TeAHx-f{S0>)4lq1nILPpp;Sj?Yh9eCB8ICft zF&twQsAo9ND8X=oQGwwkqb9>CMgxX3jMfZi8J!r;G5RoEU<_xt$QZ|Pi7|uW3S%+D zRmLiYYm6-nw;6jG?l4YaxXU<`k&ST~BNr1JBQFy#BR|7j1_p)#h#wi|G0bORVBlb4 zXV}Bg$H2%S#Q2wCFT*|tCI%nI!wmZw_AxLs*tauwFdSgm$H2mHn9+yfAj3WeR)+tK z0t|;3_A#(AS~FZ>ILvT_ft@j&VF$xeh9e9djKvId7>+R<Vc=x!WoVkrF1OoInn93J zhCzu@o<W;Yfx(nfnZbrpg~5?gmBEuyjlrK$lOcjpiy?tghar<um!XhRfAVL!R#r0x zc1H8bwet3?Rt)Tn){_s)+q2p+uru0EW>v6fbz)#=be`;~V9)Btz|QDCxmUrO@!I5* T3f7F5CbKG9GoG95s2BwRcvzt+ -- GitLab