From 58a45463d46c9d353baba94bb192cf159525d3e3 Mon Sep 17 00:00:00 2001 From: Sage The DM Date: Mon, 25 Nov 2024 22:25:35 +0100 Subject: [PATCH] pain.exe --- .../CO2-Daten-Projekt-V2/bin/App.class | Bin 7990 -> 7990 bytes .../CO2-Daten-Projekt-V2/bin/Co2Data.class | Bin 4432 -> 4432 bytes .../CO2-Daten-Projekt-V2/bin/Date.class | Bin 1568 -> 1568 bytes .../CO2-Daten-Projekt-V2/bin/FillTable.class | Bin 6598 -> 6598 bytes .../CO2-Daten-Projekt-V2/bin/Lesson.class | Bin 1013 -> 1013 bytes .../CO2-Daten-Projekt-V2/bin/Points.class | Bin 969 -> 969 bytes .../CO2-Daten-Projekt-V2/bin/Teacher.class | Bin 1710 -> 1710 bytes .../bin/ThingSpeakURLGenerator.class | Bin 0 -> 3912 bytes .../src/ThingSpeakURLGenerator.java | 87 +++++++++++++ .../CO2-Daten-Projekt-V3/bin/App.class | Bin 7216 -> 7494 bytes .../CO2-Daten-Projekt-V3/bin/Break.class | Bin 1176 -> 2424 bytes .../bin/BreakSchedule.class | Bin 0 -> 1754 bytes .../CO2-Daten-Projekt-V3/bin/Co2Data.class | Bin 4432 -> 3726 bytes .../CO2-Daten-Projekt-V3/bin/Date.class | Bin 1568 -> 1836 bytes .../CO2-Daten-Projekt-V3/bin/Points.class | Bin 2206 -> 2206 bytes .../CO2-Daten-Projekt-V3/bin/Teacher.class | Bin 2945 -> 2945 bytes .../CO2-Daten-Projekt-V3/bin/Time.class | Bin 922 -> 1347 bytes .../CO2-Daten-Projekt-V3/bin/TimeTable.class | Bin 0 -> 2706 bytes .../CO2-Daten-Projekt-V3/src/App.class | Bin 0 -> 6042 bytes .../Steiner/CO2-Daten-Projekt-V3/src/App.java | 114 +++++++++--------- .../CO2-Daten-Projekt-V3/src/Break.java | 41 ++++--- .../src/BreakSchedule.java | 47 ++++++++ .../CO2-Daten-Projekt-V3/src/Co2Data.class | Bin 0 -> 2967 bytes .../CO2-Daten-Projekt-V3/src/Co2Data.java | 73 ++++------- .../CO2-Daten-Projekt-V3/src/Date.class | Bin 0 -> 1420 bytes .../CO2-Daten-Projekt-V3/src/Date.java | 93 +++++++------- .../CO2-Daten-Projekt-V3/src/Points.class | Bin 0 -> 1806 bytes .../CO2-Daten-Projekt-V3/src/Teacher.class | Bin 0 -> 2623 bytes .../CO2-Daten-Projekt-V3/src/Time.java | 8 ++ .../CO2-Daten-Projekt-V3/src/TimeTable.java | 79 ++++++++++++ Code/Steiner/testAAAAA/.vscode/settings.json | 7 ++ Code/Steiner/testAAAAA/README.md | 18 +++ .../bin/ThingSpeakURLGenerator.class | Bin 0 -> 3465 bytes Code/Steiner/testAAAAA/src/App.java | 22 ++++ .../src/ThingSpeakURLGenerator.class | Bin 0 -> 1777 bytes .../testAAAAA/src/ThingSpeakURLGenerator.java | 87 +++++++++++++ Code/ost/JAVA-FX-PROJECT/Auftrag JavaFX.docx | Bin 0 -> 18818 bytes .../JAVA-FX-PROJECT/Notizen zum Auftrag.txt | 9 ++ 38 files changed, 512 insertions(+), 173 deletions(-) create mode 100644 Code/Steiner/CO2-Daten-Projekt-V2/bin/ThingSpeakURLGenerator.class create mode 100644 Code/Steiner/CO2-Daten-Projekt-V2/src/ThingSpeakURLGenerator.java create mode 100644 Code/Steiner/CO2-Daten-Projekt-V3/bin/BreakSchedule.class create mode 100644 Code/Steiner/CO2-Daten-Projekt-V3/bin/TimeTable.class create mode 100644 Code/Steiner/CO2-Daten-Projekt-V3/src/App.class create mode 100644 Code/Steiner/CO2-Daten-Projekt-V3/src/BreakSchedule.java create mode 100644 Code/Steiner/CO2-Daten-Projekt-V3/src/Co2Data.class create mode 100644 Code/Steiner/CO2-Daten-Projekt-V3/src/Date.class create mode 100644 Code/Steiner/CO2-Daten-Projekt-V3/src/Points.class create mode 100644 Code/Steiner/CO2-Daten-Projekt-V3/src/Teacher.class create mode 100644 Code/Steiner/CO2-Daten-Projekt-V3/src/TimeTable.java create mode 100644 Code/Steiner/testAAAAA/.vscode/settings.json create mode 100644 Code/Steiner/testAAAAA/README.md create mode 100644 Code/Steiner/testAAAAA/bin/ThingSpeakURLGenerator.class create mode 100644 Code/Steiner/testAAAAA/src/App.java create mode 100644 Code/Steiner/testAAAAA/src/ThingSpeakURLGenerator.class create mode 100644 Code/Steiner/testAAAAA/src/ThingSpeakURLGenerator.java create mode 100644 Code/ost/JAVA-FX-PROJECT/Auftrag JavaFX.docx create mode 100644 Code/ost/JAVA-FX-PROJECT/Notizen zum Auftrag.txt diff --git a/Code/Steiner/CO2-Daten-Projekt-V2/bin/App.class b/Code/Steiner/CO2-Daten-Projekt-V2/bin/App.class index e4f2b71bc58134c90266d8e3b7eea420474ef5da..0a9368122d5073bc2221a7aadea787ba03bf8a23 100644 GIT binary patch delta 17 ZcmdmHx6O{@)W2Q(7#J9AH*)C70{}%?26O-b delta 17 ZcmdmHx6O{@)W2Q({{Lri-pHXR4**nX2zUSh diff --git a/Code/Steiner/CO2-Daten-Projekt-V2/bin/Co2Data.class b/Code/Steiner/CO2-Daten-Projekt-V2/bin/Co2Data.class index 16088b71ef0c85f40d249a499009d4958cb8dd1a..2fbf11af4036dea7277f4d3493b56279942e6ee7 100644 GIT binary patch delta 17 ZcmcbhbU}&Z)W2Q(7#J9AH*$Cg0suvK27CYj delta 17 ZcmcbhbU}&Z)W2Q({{Lri-pJu02mn-u2!H?p diff --git a/Code/Steiner/CO2-Daten-Projekt-V2/bin/Date.class b/Code/Steiner/CO2-Daten-Projekt-V2/bin/Date.class index f7892e52a39ec976f2fd7f23a59610063e876c82..1e88c103ff87d1e8cc8bdadc6794cbac3365478d 100644 GIT binary patch delta 17 ZcmZ3$vw(-=)W2Q(7#J9AH*!d@0RTLB1+@SG delta 17 ZcmZ3$vw(-=)W2Q({{Lri-pC=r1^`Qk2e|+M diff --git a/Code/Steiner/CO2-Daten-Projekt-V2/bin/FillTable.class b/Code/Steiner/CO2-Daten-Projekt-V2/bin/FillTable.class index 967eda14075744b5ba54d2722669f1496b632e87..3285ee6fa1cb23ac4ca6acbdf58ebaf44887736a 100644 GIT binary patch delta 17 ZcmX?Re9V~R)W2Q(7#J9AH*)Ng1OP`V2M7QF delta 17 ZcmX?Re9V~R)W2Q({{Lri-pH{}5&%{>2@C)L diff --git a/Code/Steiner/CO2-Daten-Projekt-V2/bin/Lesson.class b/Code/Steiner/CO2-Daten-Projekt-V2/bin/Lesson.class index 44b19f700eaa307e1ae7f9fccfce7d068d54caef..51ac342989c807a4a4e34719f634e8d23c622dc0 100644 GIT binary patch delta 17 Zcmey${*|5M)W2Q(7#J9AH*&mX1^`GY2PXgk delta 17 Zcmey${*|5M)W2Q({{Lri-pKKm830!}2`c~q diff --git a/Code/Steiner/CO2-Daten-Projekt-V2/bin/Points.class b/Code/Steiner/CO2-Daten-Projekt-V2/bin/Points.class index c9f8daa3cd34430c38abe69d4ba21e1f97b05aa0..7bdc7b645e1e76c29d2b1297432f0c8b21ac9598 100644 GIT binary patch delta 17 ZcmX@fev+Nz)W2Q(7#J9AH*y?g1^_})2BQD~ delta 17 ZcmX@fev+Nz)W2Q({{Lri-pFx~830jW2&Vu5 diff --git a/Code/Steiner/CO2-Daten-Projekt-V2/bin/Teacher.class b/Code/Steiner/CO2-Daten-Projekt-V2/bin/Teacher.class index f01531c910fa21376cb6da66b2244da88ebcf19e..7db2754722218fe6a88a5599cf809dfa0b8d435e 100644 GIT binary patch delta 17 ZcmZ3-yN;LR)W2Q(7#J9AH*zdv0{}mA24MgI delta 17 ZcmZ3-yN;LR)W2Q({{Lri-pH|x4FFDo2xR~O diff --git a/Code/Steiner/CO2-Daten-Projekt-V2/bin/ThingSpeakURLGenerator.class b/Code/Steiner/CO2-Daten-Projekt-V2/bin/ThingSpeakURLGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..cfd4c91ece97c10871045705daf4b5265d903ca3 GIT binary patch literal 3912 zcmds3X?GOI6}_bysYjy*B!MIZ7#fUL5R-t-B7toX0x20ugpnY!laOYnkQ&W&Pr7>) z zo}Zi?zjWx>rHSeBQzPdE#F)T_Vb2Xh+YK++<(f>PKATLZ_S? zx2tq)EI6~S9oBp)aCq(8eCmkuuf8q5ZGyA12(FEmWfT+Xkd>(i;k{y z8nuHt=9R^6>^0GaHi3rY8kw5YW1<-?S@dC_f&S%*$^1<0$AEybpz1S8RPDXXh>~tY zSw_p5cn{u728+HV@zZ`;plz*tOi>dK;YkBePynk?3Dd-393f@Z8U=H-H^FVBq9og~ zC8j4KHPXK+@3?ZJR=F(wDf@Dnm2A~|xM2H^8f#+~DePrs!Z{}p*qUEo&O;fnh?^Jr z85kcQD3z?y(ZNb(FbJ}E2B!?16xg#`%`2W?vBTW5@XqLAD18&dI8AE2E9dNxW6FF@ zelao0Vm~Ytx!#I1CeC7%#f-dGqiLNybZU~Vcu7^c_nCM<^4w$6EmEhf+&SB~D+1lg z8mz^r8IMgFOb9$P7lzefFqgBd&H<9@&IYPC94LB~Tyf5JU0DutU8UR=DNDhDVzBTu zcfKE<=nA@}TjC>&b2x9{18dqxw1Uc(yY<*QaGra&O4iAeN{cZ>vS2A9l2{9Yy@@^c zQ0_QI16H+Fg3?7#vcPS^MAYjHo)f5_o;ovdG>Z@8l7Wv`J>rMLC!^ zaFtAGkbFJu2DNI{^FvwESXs`IYeiWN9nUpU2E~z`mEpJy0(+KxZ0TJGRV$AR&qP&e ztD|DiOSb!>9bR<8x#h;ss{05Ha0^BRt%YWyh6NH^RcOoHHEruiKsDHU-Jy7@5KH$; zl8?%QePTl)w2Sj>JaLz3=9y8fm07`)3p~wKUYq0fbT`dAK{(XMeZ2FX*5mnM?;uNW zv;Fs-Zo&)rtbxyPM`=D+CY$&iKF@TVV5CwF7xn4ztnz-z#20X#2ZuvJs$*1j+L%#2 zdn~pOHQ{A^*}#`5!PVHyZ%up!Uu92oA-oO6lF@xTTw&tMa-|{OO8`Pjam^T zEv@{xi&m&&j%(ZUVl`^b0^8paD9JA)Rcwb^XzxvK{^j;`!N4zg1ZZ;fJ{s|T&(GjZ zAx5WNUj|-zL6$7GrK-bHQ_oh__joE)f>}FD_GfDq>4t$7N9p^&SRsoy@N0FS;NHv@yqaH> zXB>6TZeRZtJ)o*Vd7SdRFbI9SI<6V!=Klk38o06CcyzrScfp&Nxrp_sW1O*z+!Kqc zmAobJTCxYk-ci6&+bxx4us82{^R;U7x)7@)l2vk(cU$yi) zY^HApThK;JJ1ws>y82vhG5*usluo6V&~Y1&MWg19<{>@a^#HqP?&9&==)Q&S=AI?= zwq}-a;2sX9a8a4Ml_|T%)TK=3is>z`Qir4b-KleFA-Y!nZ$mFSFvP3T1Ug|8_c84W zBILC<#+l<&&|cqv7lW&z6fqznYKj>-Fw}8ve zOBfr!gwlK6H}+FB8?= zeYn6Ke60Vb&a8p7Ih?8}Y}HHk(bCUy?jwQwHH7vk5I)XDz&93jI1z~Au7M9;t- zeEoWHRGGdd@cP^T?xEv%1+IHH7$%*l^C9Z-32N~O!5l>oVdnTe#xkj*Sz6`8)ZzCz zYQaJL06!$)9)kZ7e$2N&p*O!_PTe6}_Kx zl{m5w@WxE*FYn@4f8{8uWF(uj8i8Uyh2Q9Rzs2wP%y8Z ROOM_URLS = new HashMap<>(); + static { + ROOM_URLS.put(39, createUrl(ROOM_39_NUMBER)); + ROOM_URLS.put(38, createUrl(ROOM_38_NUMBER)); + ROOM_URLS.put(37, createUrl(ROOM_37_NUMBER)); + } + + // Method to create the ThingSpeak API URL dynamically + public static String createUrl(int channelNumber) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String startDate = encodeUrlParam(START_DATE.format(formatter)); + String endDate = encodeUrlParam(END_DATE.format(formatter)); + + return String.format("https://api.thingspeak.com/channels/%d/feeds.csv?start=%s&end=%s", + channelNumber, startDate, endDate); + } + + // Helper method to URL encode the date strings + private static String encodeUrlParam(String value) { + try { + return URLEncoder.encode(value, "UTF-8"); + } catch (UnsupportedEncodingException e) { + System.err.println("Error encoding URL parameter: " + e.getMessage()); + return value; + } + } + + // Method to calculate the average of a specific number of data points (e.g., + // CO2 levels) + public static double calculateAverage(List dataList) { + if (dataList == null || dataList.isEmpty()) { + return 0.0; + } + + double sum = 0.0; + for (Co2Data data : dataList) { + sum += data.getCo2Level(); // Assuming Co2Data has a method getCo2Level() that returns the CO2 level + } + return sum / dataList.size(); + } + + public static void main(String[] args) { + try { + // Print out the generated URLs for each room + for (Map.Entry entry : ROOM_URLS.entrySet()) { + System.out.println("Room " + entry.getKey() + " URL: " + entry.getValue()); + } + + // Example: Calculate and print the average CO2 level for each room (assuming + // Co2Data.getData() method exists) + List room39Data = Co2Data.getData(ROOM_URLS.get(39)); + List room38Data = Co2Data.getData(ROOM_URLS.get(38)); + List room37Data = Co2Data.getData(ROOM_URLS.get(37)); + + double avgRoom39 = calculateAverage(room39Data); + double avgRoom38 = calculateAverage(room38Data); + double avgRoom37 = calculateAverage(room37Data); + + System.out.println("Average CO2 Level in Room 39: " + avgRoom39); + System.out.println("Average CO2 Level in Room 38: " + avgRoom38); + System.out.println("Average CO2 Level in Room 37: " + avgRoom37); + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/bin/App.class b/Code/Steiner/CO2-Daten-Projekt-V3/bin/App.class index ec7ad96280acddda5c1083c6966e6cafda0973f9..3301222019553f48b4afc96eac28d4d58100ce4b 100644 GIT binary patch literal 7494 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 literal 7216 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 diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/bin/Break.class b/Code/Steiner/CO2-Daten-Projekt-V3/bin/Break.class index c6344e1fa3183b7aa96175fbcfc2f5027b49b8df..19e6ad020d3d025c29ed51a05f0f652ec24e06f4 100644 GIT binary patch literal 2424 zcmaJ@X;%|h7=CWH32{^!Ho?}S1x;8Iz&&wkMXl6`wjkEp?UG!Qk;zP)8R+q!^gr}V z7e$Xfr$3+{`-6J=+?i2AllH*5bML!8?+SnZ{pJqTfTU2fV+AYXIq(%z7srQb0z6|^j0z^H{ti6Prm z!CHhXTPVIomi6CJ2VztjPlm#`Ld@ic7qh7x<;g(N{kA}Ud>)gAM+a2tceMX<#{`kMM*$R zX0gCRO)o9vu!M64&K_un2(O9rxWF=as$Ub!*WY{YwFpKa_Xwuh2#Le51u>{ zxTM3qEO58mU|fimE?aMF)04A4b_EW{g@_uAQLeB#8!WqSvmO%yhc@*fJW!tHvcru{ z>8ppHEik&}dTkj5suA|wO~$uuutqbNCc1 z2JR4j@7WZgq>1^fvW&Y~2-q!;+kj3W$xuu1rbMuRf z^NSag82+oF+3P0W#|H!0z?TLd9W3y3KTvHGkMR}Tz}?}%k3`@txBP$u!Es}9+SMGs z#m4DzCYyMuPlm{}!?Db*xjSB6-L~{z$c3X{ z(mo0NhU*4?;K|NC6|~%jpF;~z4OpDZ{kmGtuDh+uQO`s(bX(Q~*L$wJjdTBFH@H|j zGI&Qi4O{tBHP_wV>2!B!_>d_3ESulM` zF)6a>unmMLZzbiHAai zW+V_B6gY-)QZ&YElul^r5Z^wuTu9Z92SW>^k<>d#nHUla(ih0!zkv+(1#-MUkggm> zK*s3q*na@g84=7MCpr%5CsK4ds`(SEvvYfx+{39iI1N-%`Z*Im=lD#|PmHJX^ZD`~ z7RS@^Cqlp%NVyooz7siu#3to4 zn2if+GR&yQMsYk0AQ_fe2bH3gp)k-igC9Vhv<$;)&_V(VTl^05Z8My9*XiOJIePJW J2(XLse*jNg14;k@ literal 1176 zcmZ{i&2G~`6ot>^$4*?+lq5}?q|ibOO`NpZumg2L1yZF5BwA(fq*m*aAIWi9^FS;> zB0^%p1MpCkbH{FIgCk2b*E47C{qC9h{paVen;RVC&_qfh`#SL4k0vq-Ygg_kw=;Cd z7oGS0D{l~TcN)3@XQO-OkGz)(X>WY4V1}MMxby;reD^F0xt9qhlaYctq5hRW_QNBE zY9l&%JI3OZW{>*g$+>4CjWruK9x{2O*~>$rWFrehqIDZ)6m8hZAunrH8x~d+3SEEf zy}KUuz2MC44?TrqcQSB?JvZ>>KVHm)m;RK4{8njki8-sxSLglkO4hHODk! zOogY3Amv4njYN>$WRUVANS)=jmVk&$;=mrBag?U+I#O8#*-iv`j{W%XJx3~wAiD(F uTLL1NBp?km6F@e?eXaX#EFLzxSe|t7#FWy#z$wh=8@a|e%ak`chBygKmPe`55R5IOf)H+ zn5+fu-=I5Da4mtT^8fD9J+~NyjU((O7*-# zB-QswA$qsE%BoKusX8nsj#IRcIz#C=+7)7%w3E%naaLf)$q;r3%sOep^8$yoZ@0i< zCrjEzfg?_a@RGorPMWYMgt>Gx6s}l^!HDDCFc(Ahi8-x9T@#qmp{@(e>QI9MnTx&| zfy_lXB#^lXa{`%*@MZ{eImva)f+@M!mgp@V^|qLEj4I|k7UE)_(B@%QdN(v@HGA4Z zGmHcs?^}2uA1GKw&b}V#RzFinr;eHEF{-}CbR_9R3kkFcnz3M^g&W|OD#7gb)=E%Y z@K?%#g6&p|e)*AKE6M+Tr7^AtnLq^d7CuBPtFEt?SVvnp{Kig>nc$#fy2=DT#wR8U z^j#=z1s0a@se-xVm$!qtCkmaZw|BD771yx@7V)_xT4sh+s0&Zoqr|hiU#p8F3y24m z)qQBJ$n&61mH1=NP9HcvF4fn)pjfS}(rmw-m&*M(M?7OXfPxVw=OWXK@6fCJ#myQ2 zscw%cjci>D>fV-LE;k00NFB7E1X|r{W$nP|Rkv%!;9g00Tx%O0ydm!tmpG#cU%r7( zSy`e^Stl*IH(GK*wB$&&h)uR4M>)z1-{HS4 z%BS4q9bWh=%CC9dZ|VCT<@Y#)A8-~w;T+~Pn_ZBN4I6?%N=1FF|0O;;Ol4@L(iAIn zfQJP-Cgk~1Bc=Ss#Bs{;{=L^&oQdS0W1zn~>qM{dh;>9?;jv?M#6*|_-M?e8&|!3# zFY%f8O+rOSVxKeJ#57Wk%>*lNucR(w3sNX s6sy@nW&ftVx(7gX7Z0T3a3Eoq`VJb~jOuX=_y3IR2Moo*NwhEj1B@0u!2kdN literal 0 HcmV?d00001 diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/bin/Co2Data.class b/Code/Steiner/CO2-Daten-Projekt-V3/bin/Co2Data.class index 49ab58984e217aaa8a5fc6121955de8178d337d5..a6440506dede5debbab1d3ef2df49739a2a02192 100644 GIT binary patch delta 1832 zcmZuy>r+%^82`O{JBPy&WFcft5JeH#T~-kl7tsLG1$UJIwN=YD_JFI)?z-oIk|vqm zFQ&a^c2ToZx@VTV$X3#2s%fUiJ~q>*`q+QaOxp7v#zAM=5AXXv&v~xD=d#xq9xqpZ zzA^bVfEIjzQt_y>gL@+*5#O*8i~CMC&7W0Lb30?lsK;4TdmCqc#L$`;;MJ($N(I4ErBsboUe+LKXDLL0YP7dY0d=)eZB zAhvR5DVdZ?$Wi)vLm_W8 zS{VrVhlc#RuHX!6#qo}ccX5HiZWe%HrfcKoCrGj6{ zJ7l{o<0@}d7WCv8Tpj6jGF=%Lu zy^(H@M|54&B}_3a7Cw|k!DMpZF!jQ>{1>HzNxV3}aaJL0m`!OHp#VFuYtKju&i+v&Ss))C2>^!|BS}dn?s0wGXIG96qxGsyDkS7E86nvY# z&Se=a_c~WPn=0S=G5Q?#+kd?I7imSuQ5?FALC*w+CZPivjJPjRIb|Hf zlQ={P7E`EQaMHPixOJ4Q8!mV-pZ3oZ+8WES6m3|JZD^!fT}8v#M5DHvCddzi=rP)$ z$FL4h(LOmvfsd7tsa=E`A%I74gl-upNbFH^TZA-@;xXzX7xt3cjV;ErqVbG3VNeEj_gsV+JIw`F#N@x?x zumx4r(FyaMG|w*~{t(5qU&A-}4zB+I D?QE#% literal 4432 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 P>(-sC*E;X0Q@j5H{1`EB literal 1568 zcmZuxOHUI~7(LT>>mV()JOnKAkTQw|d{cY{Bs9DdONfMx107(Hwx&)sxN+^$l^Zu2 z5?HvP9RFP)X;Jm8d`Mt5fF4rN6|%{rQDQr%=Jg}=Hr@j$SLKVvR&L{ zTB)JAzr}RfOb8d4z`)4m{P4iYn7i}{8kZ%4ix>$ats(Z;Gh1}5O{=V96k{5KPtBc* zwYZ_7HI=Qupk|hd;4-cTapj*@y0`1NhU?6Bqf{=KZ0wEH{{gPnQSJa_>Tju~p&^oE zE!M4RTZ$Z(I$o5Jah8qp0_?3v`b*@I?y8-=RXaPYcJ`Hfh#n`Pb8X`34ef>PH$LN} z(OE^z=&B-abXSou622yt8zlu>)NTT#8Byma({W62p6eO|w8DlTC+(^^h#nW#bBKDrZ0|_Od$ToGI zBqgPAuhS^g$T@!8xwE13Ktt!mapz=1=W`96+m1W;HFO?q=-hGKd9Z=AM?P6rfvwes zSyZXVfw6LkHs3?(B|)_PEoK!JZO;qGw=sDelfp)md)PJD_n7c;;p61vQGE}l@NwZ2 z!YB5zD1vV=QReo=Ga0OYS1%6-;Fpf23P{0J9;U->i=w9MBUeW3`?&2+fy8D=}tJOhm zK2p3R4DU~@{=_|*wILX8>9C<@5142OT diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/bin/Points.class b/Code/Steiner/CO2-Daten-Projekt-V3/bin/Points.class index 0e69398476ef294336f2bc77093875ef3b6893e6..e3767140b12e52221eb613b84f31bfcd54cd43c2 100644 GIT binary patch delta 17 ZcmbOyI8Tt{)W2Q(7#J9AH*!ql002GA20H)% delta 17 ZcmbOyI8Tt{)W2Q({{Lri-pDbH0{~3h2tNP- diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/bin/Teacher.class b/Code/Steiner/CO2-Daten-Projekt-V3/bin/Teacher.class index 89a5abbd042f1689b07bd4210f6b01c4b64b0810..1317d820e21437978b12513614eed9b56cacafd6 100644 GIT binary patch delta 17 YcmZn^ZxrV^^>5cc1_lP(jU1KS06M7!^8f$< delta 17 ZcmZn^ZxrV^^>5d{|Nj}BH*!>R0{}_52loH~ diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/bin/Time.class b/Code/Steiner/CO2-Daten-Projekt-V3/bin/Time.class index 4dac3b4d912dd1750f023473f7c2c4fed498d1a0..912c5a56acdc3d3e4c0595b89ffba33eebb04e02 100644 GIT binary patch delta 466 zcmZvZ%Syvg5QhJ0(w_8KidG^hEnd3t617@eFRiWDO`+gI5yVv%F+^f0N!o2!K7ku? z<0~kFii#U|?tL9`R7A1eoSFad&o^`CT!SY-{f1S(0)Auljb=>6|ZU;za}G-$X^NEq+NI_%`jHWslg zutezlMb^B~vMoP>6_f~C!}J4-?+AJ~Y)yi&nt+BlK@E9cLaMVB567S|AoTwkME`jy zp~ttvrtj_ZKF%(wNU@tYdZKn52Bx`#tE5at0K>ar_%qRsw0PVV#>L*%d{M2^pP*;8fuv P1shzbvSE|$5o~<`dt+tZ delta 40 ycmV+@0N4M+3YrHB%Ko~(|Nj6(04=c!m;sZx0x|&wv+Dx90SN&BD*ylh0st&exD3Dm diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/bin/TimeTable.class b/Code/Steiner/CO2-Daten-Projekt-V3/bin/TimeTable.class new file mode 100644 index 0000000000000000000000000000000000000000..6e876b1e3913130541c0ef66cd9550fcd60dc8e3 GIT binary patch literal 2706 zcmbuB-*XdH6vw|eO|rLXTH?~8k|MESX#=!SK%kTYEu{@j0lTFdKy;ff=|Y;+G^xm6 z;Q!$Gpf5N+>5RgR4*KMS&iIe`M>u}ZW_Lp&g$LW2d-mRQ?m6e4&;60V{{7`Q0O#@0 zKt!Q)$z6Ar?3J=(AgYkMZ*SS7WxG-uy}okaDb^K|n`_lteaW$lYfep}_xA04%gCzN z+)C-3LVUulxb;be=umEWnPR%S>Lk#Ct|Sa36*`87mkq=_p|C577~%hRW+ab{D~Tj9fJ0J^A%(u7my0N6>$d84@xg+<;UhWB z+O(;+fuq}4H8E(6Dn#biHI7p*ZEBpL%r`VnQO>#=rzz(*G|q~=p}|5$<~V+ya>~}Y zKzY5Uafx!dt}#uScQj@wr%M{M3bA~nQe4x>acF8)W1iBY$pYmSj$fy|%#a^Y<{xQT z3edR8-V}QuQqI#+L9D78w<+gn{W0YXXMaLD%LHtZ^jf4`q;y2j1(hhLXzxQ%2xVXPDH7RKm;M9Yk)P3% zO+P{EM=B!N&DKPeZIu5p?4pZay6EM|p5|oq@k{>t@Fw2!g7N71A-?uQOr*c}Y>s)Y zcm_8;xbcAD>=V5G7-@?B$LOWl{}|oBVxV9ie2T%}C6f*>lR+=-1p1Lg2HiNod=4Rn zEOQ*8#c}3vj#;#_n+UU;@Ut7HHv_T$c$`N*A}6nzs`}eY8mh`lJVUn7p`YPMp~D=p z3Q_ZzRfw5mRv~Vlvrrk@uh6(EngSb@948f`e*- z*VzN?RTb_5Aub?^&nF&{+w(POmn7}wu(TifS%qlZ>2I+x0a{OgC!Bv*=6_0kPi$}^?F{bGK`Mx_CM&!jW^gZv5Tf-A%54k+w44$(Jp)3E zn-%dua)nfY*7HDJjKef|1==jp9wyo&M0=EIM~HTmXpa%?aiSd~+7m>3l4ws6ZI)Cb|-yM_?Dgp^wCQE|Ap2& z)Os=H3$s58j#|2CfVn>4j?T!Wk+7}EKefDim?Ksh%Biad~Jx{cgM0@z$5;YcTy4%yg>jTO|9xg6`Mf_^(4v zUWe>Y=t+V4gR~f)^#z^c21ZgQ$CN6}_XuuL$H_h$6CEeg|&x IJA%*u17z{-fdBvi literal 0 HcmV?d00001 diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/src/App.class b/Code/Steiner/CO2-Daten-Projekt-V3/src/App.class new file mode 100644 index 0000000000000000000000000000000000000000..cdc4b8e96c2869881412a181887d492d64944b5d GIT binary patch literal 6042 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 pVhoOAaAbUgKfcKy-{OyN^~bmQ " " + } - // #endregion - private static void getDataForBreak() { - // Co2Data[Wochentag][Room 37, 38 or 39] - Co2Data[][][] data = new Co2Data[5][3][11]; + private static double getDataAverageForMinute(int minute, int hour, int number, String date) { + // get the url + String startTime = ""; + if (hour < 10) { + startTime += "0"; + } + startTime += String.valueOf(hour); + startTime += ":"; + if (minute < 10) { + startTime += "0"; + } + startTime += String.valueOf(minute); + String calcStarttime = startTime + ":00"; + String calcEndTime = startTime + "59"; - // Placeholder logic: Retrieve data for CO2 during breaks - // This should be replaced with the actual logic to get the data from ThingSpeak - for (int i = 0; i < 5; i++) { - for (int j = 0; j < 3; j++) { - for (int k = 0; k < 11; k++) { - data[i][j][k] = new Co2Data(null, k); // Placeholder CO2 data + String url = generateLink(number, date, calcStarttime, calcEndTime); + + double averageCO2 = 0.0; + List co2DataList = Co2Data.getData(url); + for (Co2Data co2Data : co2DataList) { + averageCO2 += co2Data.getCo2Level(); + } + + return averageCO2 / co2DataList.size(); // Example CO2 average level + } + + private static void calculateBreakPoints(double[] minuteData, Break calcBreak) { + int duration = calcBreak.getEnd().getMinute() - calcBreak.getStart().getMinute(); + int breakPoints = minuteData.length; + if (duration == minuteData.length) { + for (int i = 0; i < duration; i++) { + if (minuteData[i] < minuteData[i + 1]) { + breakPoints--; } } - } - } - private static double getDataAverageForMinute(String time) { - // Placeholder logic to calculate average CO2 levels - return 400.0; // Example CO2 average level + } else + System.out.println("Unexpected error"); } private static void initializeTeachers() { @@ -85,7 +78,6 @@ public class App { } } - private static final Scanner scanner = new Scanner(System.in); // #region User Interaction private static int getUserInput(String textOutput) { @@ -104,7 +96,6 @@ public class App { System.out.println("1. Up to 5 points for keeping the window open during a small pause."); System.out.println("2. Up to 10 points for long pauses, depending on window usage."); System.out.println("3. 5 bonus points for teacher switches in classrooms."); - System.out.println("4. Deduct points if CO2 levels are too high."); } // #region shutdown @@ -168,15 +159,22 @@ public class App { public static void main(String[] args) { System.out.println("Calculations in process please do not shut off..."); initializeTeachers(); - sortTeachers(); printTeachers(); + // Loop threw each day with a specific classroom and after the weekdays are over + // go to the next of the 3 classroms + // go threw every break calculate the point and give them to the teacher + // directly + // remember the point class + // breakShedule needed + while (true) { int userInput = getUserInput( "Do you want to see how the points were calculated? (Yes 1, No 0; anything is an error)"); - if (userInput == 1) { printExplanation(); + // add a more detailed listing of the teacher since points can be broken down + // further printShutDown(); break; } else if (userInput == 0) { diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/src/Break.java b/Code/Steiner/CO2-Daten-Projekt-V3/src/Break.java index 406f4be..a646d36 100644 --- a/Code/Steiner/CO2-Daten-Projekt-V3/src/Break.java +++ b/Code/Steiner/CO2-Daten-Projekt-V3/src/Break.java @@ -1,14 +1,10 @@ public class Break { private Time start; private Time end; - private Teacher teacher; - private int room; - public Break(Time start, Time end, Teacher teacher, int room) { + public Break(Time start, Time end) { this.start = start; this.end = end; - this.teacher = teacher; - this.room = room; } public Time getStart() { @@ -27,19 +23,34 @@ public class Break { this.end = end; } - public Teacher getTeacher() { - return teacher; + /** + * Generates a Thingspeak API link based on channel number, date, and break + * period. + * + * @param channelNumber The Thingspeak channel number. + * @param date The date in format "YYYY-MM-DD". + * @param breakPeriod The Break object containing start and end times. + * @return A formatted URL for fetching data from the Thingspeak API. + */ + public static String generateLink(int channelNumber, String date, Break breakPeriod) { + String baseUrl = "https://api.thingspeak.com/channels/"; + String formattedStartDateTime = date + " " + breakPeriod.getStart().toString(); + String formattedEndDateTime = date + " " + breakPeriod.getEnd().toString(); + + return baseUrl + channelNumber + "/feeds.csv?start=" + formattedStartDateTime.replace(" ", "%20") + + "&end=" + formattedEndDateTime.replace(" ", "%20"); } - public void setTeacher(Teacher teacher) { - this.teacher = teacher; - } + public static void main(String[] args) { + // Example usage + Time start = Time.valueOf("00:00:00"); + Time end = Time.valueOf("23:59:59"); + Break breakPeriod = new Break(start, end); - public int getRoom() { - return room; - } + String date = "2024-11-17"; + int channelNumber = 1364580; - public void setRoom(int room) { - this.room = room; + String link = Break.generateLink(channelNumber, date, breakPeriod); + System.out.println(link); } } diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/src/BreakSchedule.java b/Code/Steiner/CO2-Daten-Projekt-V3/src/BreakSchedule.java new file mode 100644 index 0000000..165913b --- /dev/null +++ b/Code/Steiner/CO2-Daten-Projekt-V3/src/BreakSchedule.java @@ -0,0 +1,47 @@ +public class BreakSchedule { + private static final String[] START_SMALL_BREAK = { + "8:30", "10:25", "11:15", "12:05", "13:30", "14:20", "16:10", "17:00", "17:50" + }; + + private static final String[] END_SMALL_BREAK = { + "8:35", "10:30", "11:20", "12:10", "13:35", "14:25", "16:15", "17:05", "17:55" + }; + + private static final String[] START_LONG_BREAK = { + "9:20", "15:10" + }; + + private static final String[] END_LONG_BREAK = { + "9:40", "15:25" + }; + + private static final Break[] SMALL_BREAKS; + private static final Break[] LONG_BREAKS; + + static { + SMALL_BREAKS = createBreaks(START_SMALL_BREAK, END_SMALL_BREAK); + LONG_BREAKS = createBreaks(START_LONG_BREAK, END_LONG_BREAK); + } + + private static Break[] createBreaks(String[] startTimes, String[] endTimes) { + Break[] breaks = new Break[startTimes.length]; + for (int i = 0; i < startTimes.length; i++) { + // Append ":00" to include seconds + String startTimeWithSeconds = startTimes[i]; + String endTimeWithSeconds = endTimes[i]; + + Time start = Time.valueOf(startTimeWithSeconds); + Time end = Time.valueOf(endTimeWithSeconds); + breaks[i] = new Break(start, end); + } + return breaks; + } + + public static Break[] getSmallBreaks() { + return SMALL_BREAKS; + } + + public static Break[] getLongBreaks() { + return LONG_BREAKS; + } +} \ No newline at end of file diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/src/Co2Data.class b/Code/Steiner/CO2-Daten-Projekt-V3/src/Co2Data.class new file mode 100644 index 0000000000000000000000000000000000000000..837102d59767a67cdc8f948b8803983b3a14ed1c GIT binary patch literal 2967 zcma)8`&SfY7=8xWon;&a7c>`9(NKYfwyZ3{ynrCoqQs&`+GX7R#F5>Zb!L{No0X;6 zz3hI!`%6Dqr=Z}R>L*X9zoI{+Q$63zE-aT*!8zaTyzlot@B2RQWxn74n)w;P9k{9? zj)T=`LBCuERNSqh3I|o(qalo>Tn1Gfir}z@Y79kiZv?~gXG$(3Dvm@6G^(K%Nfr02 zI4E)QwMes~4;!jRgND$>=+Kt!QnOv7oI5uDMm594ylYRJJ-VMmbH z&@7#3##t4PL~*02z?h1Hf~t(+2?e#uGsc9GD0pTzae$I81(CG9BPk|CR)I30AiUeO zOmB~Z`j*9e2U?F3sK?F_s3vJz;!q)XQaB^V$t)%6nD8W|f@n+Y;-gf%C3W2rV2Qhe z$9v{HscdPbFDrOvURKrOJ5aP^C}=JMWesaAk@6hV8tW>zoHSjJ0j^AWMtXeE$or0} zm{9SEg6fnxW*J_=p~H#)0kk_wPZ*!kwTGD1dBbsqd{wYv+0&)n3bd46aMGgBlq~5* z`AsqpI&Q`}9qs7QaT5{>>gKbv-*Jpd83E7uQcHM=Bg08~W>UwacuYaVoTA_J@>KTN zmL<}jXHc(Dk8P1qEw;4@^7JT{v}0I3hDFjEry;#7c?*D_`)K z9AV@FosMVmoQ&e4TrTN&9+!3W;DC-7@S={FaIQpz@6((!Dqhy{3SN!iHEI2I6>sRc zBI8rqb-anUbi9qrD&EoYF5WA}%+NPN4c^wO`maQ->&K8901&Lsr&5MQ{f;k?k*uIRlpcxl*3GLUg;f95qw=Gx5 zp4RXYK334!XRuH+O`T2sBO^miy^do$O=;>WQ54*eGsd~yN*mrW(>u*yu4h=DE8`p} zHeb0V#z{M6ML>vBoGhC%1%q5ybbgUSvRE1#R0U9^#BC7Bk(A1>~4kQ-*_}>6Gx&r#XXs zo?6TEFjvB*@wAYkpz9aHvkddnSeBg}a`Rb}ek_;U*5gaF%OTBSNcUII*X@Aii80xj z5r1;=brCD2`N^>x^0)l=e3kt~8X5u`VYr-BE#ep4^ zQlF9bY-du%R~%MJ+a53EIrauP%$%OA;kttL^=>(%MU0>o`VA|S6>f8IuxlwHWs(I4 zM<(-PneFA2mWpL5M30fprc5%R;%fz4m&CW6Zwfa4`#x;uXFJYILIwZ%UGRVL)4-?7 z?>`3;*ByMjmHJ9PYucuvw8eiwMO)(!sQi{9g-RgGn+eriYk7-Uja8H=xDB@#0XFcd za7U=^dsJMTI~MkZYq{>^jVG|R#rFmX`*!9{Xp{pD2w^>U-icks{pHY=-zDslRfJVk|B0B2x<9c=#lDKac>}HB4{E{YYt(sO)>1b#`GqZ#{yK{y zOnGlxv}p>Plkv(OQ`j;Xuab`+apRs@G>=BNPGg&7gv4&|49%itG#1)0jn->P1|6Sa zL^5ba1`Sr#&bgqsF=N00^K>_>?jEeeVP getData(String csvURL, int classRoomNumber) { + // Fetch and parse data from a CSV URL + public static List getData(String csvURL) { List dataList = new ArrayList<>(); - Date referenceDate = new Date(8, 11, 2024, 0, 0); // Reference date: November 8, 2024 try { URL url = new URL(csvURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); - conn.setRequestProperty("Accept", "application/csv"); + conn.setRequestProperty("Accept", "text/csv"); if (conn.getResponseCode() != 200) { throw new RuntimeException("Failed : HTTP Error code : " + conn.getResponseCode()); @@ -54,66 +53,36 @@ public class Co2Data { String output; while ((output = br.readLine()) != null) { - Co2Data data = parseData(output, classRoomNumber); - if (data != null && isNewerThanReferenceDate(data.getDate(), referenceDate)) { + Co2Data data = parseData(output); + if (data != null) { dataList.add(data); } } conn.disconnect(); } catch (Exception e) { - System.out.println("Exception in NetClientGet: " + e); + System.out.println("Error in data fetching: " + e); } return dataList; } - // #region Date Comparison - // Method to compare if the data date is newer than the reference date - private static boolean isNewerThanReferenceDate(Date dataDate, Date referenceDate) { - if (dataDate.getYear() > referenceDate.getYear()) { - return true; - } else if (dataDate.getYear() == referenceDate.getYear()) { - if (dataDate.getMonth() > referenceDate.getMonth()) { - return true; - } else if (dataDate.getMonth() == referenceDate.getMonth()) { - return dataDate.getDay() > referenceDate.getDay(); - } - } - return false; - } - - // #region Data Parsing - // Method to parse CO2 data from a CSV line - private static Co2Data parseData(String csvLine, int classRoomNumber) { - String[] fields = csvLine.split(","); - if (fields.length < 5) - return null; - + // Helper method to parse CSV data and create a Co2Data object + private static Co2Data parseData(String line) { try { - String[] dateTime = fields[0].split(" "); - String[] dateParts = dateTime[0].split("-"); - String[] timeParts = dateTime[1].split(":"); + String[] parts = line.split(","); + String dateStr = parts[0].trim(); // assuming date is in the first column + int co2Level = Integer.parseInt(parts[1].trim()); // assuming CO2 level is in the second column - int year = Integer.parseInt(dateParts[0]); - int month = Integer.parseInt(dateParts[1]); - int day = Integer.parseInt(dateParts[2]); - int hour = Integer.parseInt(timeParts[0]); - int minute = Integer.parseInt(timeParts[1]); - Date date = new Date(day, month, year, hour, minute); - - int co2Level = Integer.parseInt(fields[2]); + // Convert the date string into a Date object (assumes CSV date format is + // yyyy-MM-dd HH:mm:ss) + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = sdf.parse(dateStr); return new Co2Data(date, co2Level); - } catch (NumberFormatException e) { + } catch (Exception e) { + System.out.println("Error parsing data line: " + e); return null; } } - - // #region ToString Method - // Method to return a string representation of the CO2 data - @Override - public String toString() { - return "Date: " + date + ", CO2 Level: " + co2Level; - } } diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/src/Date.class b/Code/Steiner/CO2-Daten-Projekt-V3/src/Date.class new file mode 100644 index 0000000000000000000000000000000000000000..c1b075ca424e1e37c4fa38b40c7f372690a09597 GIT binary patch literal 1420 zcmZ`(T~8BH5IvV}yW8yowW1bLK18G}l#c=`A1Wv!B!Gz}Xyc0uU2&1Nq--(xM|?Kn z(FaXXiHZII|B{LE%(e<*P1Bik=g!=jIWz6|pI^QKxPf^SP3SXVo9M@YfwX}^6GIq| z;tWPaWJHXL7!xsWQd~E1L&r^VoRGjt9a9RSytA*M78SyUQqg~*pzXU(nd(KULKP`^ z#ft9|OnXJozpZdCwY25zIYZk{adRl^m%ZZVRNoo{?v?WNYhLn-?nK)633_tI9*&K<(ko_&PL2F-Z#EfxY(Jee08Z=-S>mGuY2M-E8 zxK^upRgAovPBa={(Uc1@vwno;Y)+FJ0u&4>KoQ!^0O>?AK}U$cXMA-fs`H!WsW&Jz F^$X+B{U!ha literal 0 HcmV?d00001 diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/src/Date.java b/Code/Steiner/CO2-Daten-Projekt-V3/src/Date.java index 4c16b0b..b3f4079 100644 --- a/Code/Steiner/CO2-Daten-Projekt-V3/src/Date.java +++ b/Code/Steiner/CO2-Daten-Projekt-V3/src/Date.java @@ -1,34 +1,62 @@ public class Date { - // #region Fields - private int day; - private int month; private int year; + private int month; + private int day; private int hour; private int minute; - // #region Constructor - public Date(int day, int month, int year, int hour, int minute) { - this.day = day; - this.month = month; - this.year = year; - this.hour = hour; - this.minute = minute; + // Constructor to parse date string + public Date(String dateStr) { + String[] dateTime = dateStr.split(" "); + String[] dateParts = dateTime[0].split("-"); + String[] timeParts = dateTime[1].split(":"); - // Automatically adjust for Switzerland time after initialization + this.year = Integer.parseInt(dateParts[0]); + this.month = Integer.parseInt(dateParts[1]); + this.day = Integer.parseInt(dateParts[2]); + this.hour = Integer.parseInt(timeParts[0]); + this.minute = Integer.parseInt(timeParts[1]); + + // Adjust for Switzerland time adjustForSwitzerlandTime(); } - // #region Getters - public int getDay() { - return day; + // Constructor to create date with fixed numeric values + public Date(int year, int month, int day, int hour, int minute) { + this.year = year; + this.month = month; + this.day = day; + this.hour = hour; + this.minute = minute; + + // Adjust for Switzerland time + adjustForSwitzerlandTime(); + } + + // Adjust time for Switzerland timezone (UTC+1 or UTC+2 during daylight saving + // time) + private void adjustForSwitzerlandTime() { + // Switzerland time adjustment logic (simplified version) + // For simplicity, this doesn't handle daylight saving time changes but adjusts + // based on UTC+1 + this.hour += 1; // Assuming fixed UTC+1 offset for simplicity + if (this.hour >= 24) { + this.hour -= 24; + this.day += 1; + } + } + + // Getter methods + public int getYear() { + return year; } public int getMonth() { return month; } - public int getYear() { - return year; + public int getDay() { + return day; } public int getHour() { @@ -39,38 +67,7 @@ public class Date { return minute; } - // #region Adjust UTC to Switzerland Time - private void adjustForSwitzerlandTime() { - hour += 1; - - // Adjust if the hour exceeds 24 or falls below 0 - if (hour >= 24) { - hour -= 24; - day++; - if (day > 31) { // Simple month/day rollover, could be more sophisticated - day = 1; - month++; - if (month > 12) { - month = 1; - year++; - } - } - } else if (hour < 0) { - hour += 24; - day--; - if (day < 1) { - month--; - if (month < 1) { - month = 12; - year--; - } - day = 31; // Simple month/day rollover, could be more sophisticated - } - } - } - - // #region toString Override - @Override + // Method to print date in a readable format public String toString() { return String.format("%04d-%02d-%02d %02d:%02d", year, month, day, hour, minute); } diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/src/Points.class b/Code/Steiner/CO2-Daten-Projekt-V3/src/Points.class new file mode 100644 index 0000000000000000000000000000000000000000..1cef4994585c2e1616700d4206ee0643f3e36cfc GIT binary patch literal 1806 zcma)+Z%-3h6vm(189Fc>rhpaEQZ24%84#3p{Re6St4XsUMvMvZ4Fe2VEmKpb#P70+ zZ+){bc9Z=>Hrf3E`=Qo-&b?C^8b~&TbMHO(oZme6oO}DvzkmJ>;2s{kaByP)1=Pe$ zi3waxW2PTB9n89z!!4K2+b-tut%ExX#ofkXwAzR}Nwn0C!uJZQu25*U;=QPydJ0>u zxO4EL)rgY=h5TY8ZX}NttlHFT1$()*6Opshh@JPdm9#S}5<;5!d@aZllUQCc;fs_Mo(tWNICRE^54M+>YPu!+$M zWvVcAtY~fPU9_DzxbNWs9(uTnF$W7C7V(JP>mJBIPFM|-w`}`<_)(#c-IX2u83rPL#<$|f|tI7d5*KH7fR7~r2v zMuC1$lS(P+Gf6h1W;Ch%Bb@SQ*qS)b#kg5mL4}KoS?Dk1GGFjXC{o)HF4Im^;dv5Q zk^e&Jwu6FFe4ZS?(A{0<#Q($pc52b1spzK^og=HFMNj{VoK%3LE&@mUlscTJ%2A&F z0!kReI4%-)fiqLl3P-7EUqISVoR|{kwNo}P;u5VC|GI7y;09&u2z~tYamih+Yl7vz z%INZ`c&isb$iuiyzl~eI{Fa9P&FQ1LiTo|MNHu3Y!x$-sVetP0!`4a|% z4OXbUnI7BR1D^rld$;*(?(cTw8Se`}M*-s~-1ok8E=TAK8d?@5y8NAk{Ja5gMSK0^Qc phAjv^llx=qSw8q312Q{;`!lo5g)-{acn@D-7HjlQaxaJL{{hBaEkFPO literal 0 HcmV?d00001 diff --git a/Code/Steiner/CO2-Daten-Projekt-V3/src/Teacher.class b/Code/Steiner/CO2-Daten-Projekt-V3/src/Teacher.class new file mode 100644 index 0000000000000000000000000000000000000000..e24047f5cc544a6b27ba31a6c48cd9aeced51656 GIT binary patch literal 2623 zcma)8X>$}+6g@qeWL}2OLPOY*VNtR{SY*+JEqlm>U=jiZ7dn$>rpZiq?CAyqD()-p zE4c3)S}GDmO5_tCtnv@|2mAwmwmfg9Ne@XZt*Ltb&b{}Ych~Ou?eCwj0@#9Yqu7Z= z1S3&|kSN6t7;-rxker1S%m|K3JQ_hdifG;<6M-dQM^T0`X>@-CP83O^QU*LlXK8)Za1z}6i7z(ub zQT>?Skk+kaL%-{oR=wJLU@nQfJKL`4TW6|4xXy3%PQsi${2NiSnqZrh23 zG3J`KrJ$Mxis{x!ERoi;StA=u=$2)>v0)=-dFgb_c49_m%pG4VU5%^wOx{0dhT28& zxr#6FrHZfcwTkm{`9?1H;9dox&J5k_^fDPEP1HO>)NEKIh9i+Dk>@0Hs3obOxFzLT ze1=+W1x2kk^A>7LF%@koCv7IU3$;twZf0dJ2|G+CzQeSg5#8dMPzQx29gd#Td2y(d z+DNCFOqv#lF4Rrxa5slu?#UDGPU*}=D1MTM;`YfrMVxMhQ&@Fvbnhm-{gNEzoJRFiy4tbU-DI$Is+*Hfn;iE=^XUc+h z$h{9_&-Xg5#u431Q@yotn(}8F3r5A46i$yXVk*Zx5>y5JEjBwNAzOi-S9n&&9x;!Y z@}-cwIp$wAIbA;MB<3rWlhJM-GkQ$RbB$)l&_|h%>imFE7q>0e)t8r3&}>^?Hs7dN z&X34WesRM5%&>#G3(3ZZg0|egotVAM{X#hllk(jt<(>`6wTIe$IR;=&?IkF+R}eaQ z2}KtXuKfYUby~?~M2c_?;v!0^j8Zx4BGm7BP{AIq^H9unHAw_2P(!zBQI9%md$HHQ zq7Oy<0juh+L#@9KQGfLu%C4a7pjLhf6~EU0h;Uu~WmFbnzhn;Om^E?&4g4mq!+dPO zN^HbklrZ2j8A2cWeg0aqhp5qVL`Az6#ZSodF~n7#D!f3QdZdL$hj6!Vx{Vjfco*^lb@2q| z$mfy?%$3ij6Q~MOo=;2%6W)nR)^-7QlZ5XIpQ_MTbprFwleRDkJv@0I4(F|vQ@PSW zsqjmG0mZDmHeXwiFNg#SwM79~tSt$^Qtg%iEYo5ESgx%Iz)EdZ0B+T83&3ivIsi3V zZ2;;tza^vxYqYh2ra@a5fc4sj0BqE555OjEa{#tzTLW;1c4q(@wWa`U)3)b9knSP& zI53NUy(-y= 11 || day < 0 || day >= 5) { + throw new IllegalArgumentException("Invalid lesson or day"); + } + return shortTeacher[lesson][day]; + } +} diff --git a/Code/Steiner/testAAAAA/.vscode/settings.json b/Code/Steiner/testAAAAA/.vscode/settings.json new file mode 100644 index 0000000..e112a70 --- /dev/null +++ b/Code/Steiner/testAAAAA/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "java.project.sourcePaths": ["src"], + "java.project.outputPath": "bin", + "java.project.referencedLibraries": [ + "lib/**/*.jar" + ] +} diff --git a/Code/Steiner/testAAAAA/README.md b/Code/Steiner/testAAAAA/README.md new file mode 100644 index 0000000..7c03a53 --- /dev/null +++ b/Code/Steiner/testAAAAA/README.md @@ -0,0 +1,18 @@ +## Getting Started + +Welcome to the VS Code Java world. Here is a guideline to help you get started to write Java code in Visual Studio Code. + +## Folder Structure + +The workspace contains two folders by default, where: + +- `src`: the folder to maintain sources +- `lib`: the folder to maintain dependencies + +Meanwhile, the compiled output files will be generated in the `bin` folder by default. + +> If you want to customize the folder structure, open `.vscode/settings.json` and update the related settings there. + +## Dependency Management + +The `JAVA PROJECTS` view allows you to manage your dependencies. More details can be found [here](https://github.com/microsoft/vscode-java-dependency#manage-dependencies). diff --git a/Code/Steiner/testAAAAA/bin/ThingSpeakURLGenerator.class b/Code/Steiner/testAAAAA/bin/ThingSpeakURLGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..c9cea3770ce0e51b1c609acc96a6e29da14c990b GIT binary patch literal 3465 zcmcguYgZfB72OvBBjm9SvH_bow(I}_Y*6boj*V~G4473Y$-?MhCY}Il$vrFsuWLXIuTV7f! z+?*SDXXOtC3{_C;wGB&^~vd?Z4s*q>7~* z%cZ+BH%hYtr}M$K%C5<5-Yr|z8B56$rJO)=c5x;$>k5z%b5Y=UxTK-%YPMk2Y1mb? zHyukgJSlLc`Ri0D24O8YN^VLo7gH6LM?!MX>)ocxRok)E^8$&H(N%%=X}2O%IE4WN zrv>^S0o243I3v*JZU|&X7W8j4+@VEKT@W~H;wX;kw~UG7IA-92Ku_R3h-u#Pw-{Fn z=P_tv2)zQGQvou)=4lh%=t*G|7Y&T zM!oKON>&1_Oy}$?Wm#9Y>zJs5#gW>Ssvv#e+9V$*M_Qmt^SE$L)OBt3*Q{;HabLF7 z9b0Yf4}NCdgEGJt3<+w6W}<-|5?j}3tL&QI7A2quY)3Gmc&ZS~@IjD|i-L3FXi-_^ zZ4RDjN_6wgC^xFi;Ef%gW;(7D(SE@+&D*}pjk1r={Mf4{(HR4;aR?n2 z$gJnNUJ^eNa8?{o`fhbcRx)giy3NhVXr}JDoJ%!-GL!0xJY~x48CPZ2W#(Xsax+#& z?bhYzv`XPsyrJhlIc%?4HVNz-iFeF?Pp>BNGl5V459mH8^2f07Kk%S04sOFM%Q;)0 z4o|e6{S!Ka?5LZrt9<2I^@3DeZiOZLOZ?ivulCy|=vLd=akphQBs8q^IjhVI(XMWQ z-w3=DuiVHwbU1H0m8$dy^RBzysK*bvC_S+e(6q3`N@!soPjHK4GIB9(RjWl?$=vZy zyp_c71kMF@nhAyx`#r-sm8t84Kype>W`uybz%lMkS1sR{zJWgq3>{W^6SU@-4E&i* z^LSH^!H@t0@3P~gF5sR8+xH1a2kYZJkE;a7N+$-;!T+?R)P^MGu9%#nd?Y5DlzCI4 z?SQ@~1yA06xLyybHk_bs5+~71O&>My(!2hx_ZXjcA8Ah{_R#-6o(!e#{_b2LpZgf+ z*B;`j_c8nc!`)BsVI-a0!^DTUoWLEe8rG^*lWIt-%mdYX+@%dy`TuMXOApbd`QD2W z^drZ^ei5f(5%;yg5=6+0T!b^rr=Y%L>>(x(U1?%KLi7?dG@z@gK*viOH9E+*8Du-3 z&!(^M;f4GIJbCd0%^hOf3RVfBhgNs+ReCwY2-o$fNzi84qtuKsofk>qr2s--=m_88Cg7JI zyn{w^hQbxV8b!uRlf+Jy!2gMgti`qfOPKE|tS=^sAC>;Iq>h8=Qz`5-M__%VJG wL2q97(-!M)9jt4|&jX*oz?*y~>EXBhdmF#k`||A%_!HhCL4T#(PWdnY0V3Xzl>h($ literal 0 HcmV?d00001 diff --git a/Code/Steiner/testAAAAA/src/App.java b/Code/Steiner/testAAAAA/src/App.java new file mode 100644 index 0000000..6507ed6 --- /dev/null +++ b/Code/Steiner/testAAAAA/src/App.java @@ -0,0 +1,22 @@ +public static void main(String[] args) { + try { + // Example input for generating the URL + String channelId = "123456"; // Replace with your actual channel ID + String apiKey = "YOUR_READ_API_KEY"; // Replace with your actual API key + int results = 50; // Fetch 50 records + String start = "2024-11-01 00:00:00"; // Start date-time + String end = "2024-11-01 23:59:59"; // End date-time + String timezone = "Europe/Zurich"; // Timezone + + // Generate the dynamic URL using the method + String url = createThingSpeakURL(channelId, apiKey, results, start, end, timezone); + + // Output the generated URL + System.out.println("Generated ThingSpeak URL: "); + System.out.println(url); + + } catch (UnsupportedEncodingException e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/Code/Steiner/testAAAAA/src/ThingSpeakURLGenerator.class b/Code/Steiner/testAAAAA/src/ThingSpeakURLGenerator.class new file mode 100644 index 0000000000000000000000000000000000000000..fa72c90823a995f5d6d5dc7299267265fea1212e GIT binary patch literal 1777 zcmaJ?TT|Oc6#isvODH0Mxr$p&N*!~tWt&UE+>@Bpjky$aDNS2f*b6AwvPP0=dFub@ zbo$!YrVoT^XZlEI`kOkPo|Q>lVy0uwUe4J)`+eUzyZ-B+-~IsbF-~NRU{b`CgqRE; z;=Iu$BqSvHFePIeGZJPc%*nKVUc!QmG!`W+asM)JRwS%SSd*|W;R*LXl`)KGt;k?Q z!gCp)AS>ci8H0EsA}3-~Kyb-04R=LAOLY7|fd6T=#00eG43lluD#y&;(~rw!=_=Yx zciG;VVV>qKrl0Tc<^)*L+$;S;*UGwis^wjqoQuttY_sWqEm_lLr_5d)Z(b#!E$`~Z z^G)5l1tw>{D>BP9s-{EmE4pC{=#9Q?-pc98`D)EBvJHb%8oWd1IWw89yHz{R87cSx zVF7*bvwKoA$|YtC7&~)a%SmgRZW(cxtKx7~;>Bu3E1v15$;yt#qiiYI#tsRnoiJ8% z;zj3TmG%_Q+2yi;)`-oVTG@4$`LfSM>?+7(Pk$mX&zx_ zX<5YQ3Xbpv520TW@>Ax8c&Xq^d_{Rprlx0R=LB>fZSU_Eb~EeG3hO)B!i&riVM!%Y zGqGecmPm#ZiM03KwWg-ivkUYo_!mlXjWja+OWzhXsK zK+iqp$I~3tEsI1F5W8CSF4A2yon-Mv zWxBuZ-pIS?d$wL=7^Qb?gdR$u1p>dC)Q-|@n0kTwz{DE}uW2CQ5w$_j=tnCrTzVM! z(m!ddNd5P}!*>*Fc>{kss0Jsl5C{dSndAeJnxQL5hp`(B#;(x%1G?2}=j|bH8yQu9!yULmzZ$s0!=KPW?so2`X~&^T=XCx;5PTlU2*CqnJfPng z9zsJq*3gMfgit^)%IL!-2Jn%$s^xF2iSUi6h|t_m1P5vVV?=4h>HSEgCF)m0p<<>Q4JZJ?TKl(lvV1!O1BCtp?QKHTu%xujmh{R~VpPCDsE!L&}i^L$5vM=CDBF z>oDigMq$IG-Y6aM$kViq0Cy6wemXvaNyIUQIV5OToc?t*tRU&ZCcu{>207Ys3gW}W EzZU?gW&i*H literal 0 HcmV?d00001 diff --git a/Code/Steiner/testAAAAA/src/ThingSpeakURLGenerator.java b/Code/Steiner/testAAAAA/src/ThingSpeakURLGenerator.java new file mode 100644 index 0000000..07b5712 --- /dev/null +++ b/Code/Steiner/testAAAAA/src/ThingSpeakURLGenerator.java @@ -0,0 +1,87 @@ +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ThingSpeakURLGenerator { + + // Constants for Room channel numbers + private static final int ROOM_39_NUMBER = 1521262; + private static final int ROOM_38_NUMBER = 1364580; + private static final int ROOM_37_NUMBER = 1521263; + + // Example Dates for fetching data, dynamically generated + private static final LocalDateTime START_DATE = LocalDateTime.of(2024, 11, 1, 0, 0); + private static final LocalDateTime END_DATE = LocalDateTime.of(2024, 11, 1, 23, 59); + + // Room URLs + private static final Map ROOM_URLS = new HashMap<>(); + static { + ROOM_URLS.put(39, createUrl(ROOM_39_NUMBER)); + ROOM_URLS.put(38, createUrl(ROOM_38_NUMBER)); + ROOM_URLS.put(37, createUrl(ROOM_37_NUMBER)); + } + + // Method to create the ThingSpeak API URL dynamically + public static String createUrl(int channelNumber) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + String startDate = encodeUrlParam(START_DATE.format(formatter)); + String endDate = encodeUrlParam(END_DATE.format(formatter)); + + return String.format("https://api.thingspeak.com/channels/%d/feeds.csv?start=%s&end=%s", + channelNumber, startDate, endDate); + } + + // Helper method to URL encode the date strings + private static String encodeUrlParam(String value) { + try { + return URLEncoder.encode(value, "UTF-8"); + } catch (UnsupportedEncodingException e) { + System.err.println("Error encoding URL parameter: " + e.getMessage()); + return value; + } + } + + // Method to calculate the average of a specific number of data points (e.g., + // CO2 levels) + public static double calculateAverage(List dataList) { + if (dataList == null || dataList.isEmpty()) { + return 0.0; + } + + double sum = 0.0; + for (Co2Data data : dataList) { + sum += data.getCo2Level(); // Assuming Co2Data has a method getCo2Level() that returns the CO2 level + } + return sum / dataList.size(); + } + + public static void main(String[] args) { + try { + // Print out the generated URLs for each room + for (Map.Entry entry : ROOM_URLS.entrySet()) { + System.out.println("Room " + entry.getKey() + " URL: " + entry.getValue()); + } + + // Example: Calculate and print the average CO2 level for each room (assuming + // Co2Data.getData() method exists) + List room39Data = Co2Data.getData(ROOM_URLS.get(39)); + List room38Data = Co2Data.getData(ROOM_URLS.get(38)); + List room37Data = Co2Data.getData(ROOM_URLS.get(37)); + + double avgRoom39 = calculateAverage(room39Data); + double avgRoom38 = calculateAverage(room38Data); + double avgRoom37 = calculateAverage(room37Data); + + System.out.println("Average CO2 Level in Room 39: " + avgRoom39); + System.out.println("Average CO2 Level in Room 38: " + avgRoom38); + System.out.println("Average CO2 Level in Room 37: " + avgRoom37); + + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/Code/ost/JAVA-FX-PROJECT/Auftrag JavaFX.docx b/Code/ost/JAVA-FX-PROJECT/Auftrag JavaFX.docx new file mode 100644 index 0000000000000000000000000000000000000000..6c772dbe73ca19153b8bee305c979e60bf58e8e5 GIT binary patch literal 18818 zcmeIaWppG-k}WJ|W@ctCQHe{;%qlUnO3cj6%q*3dnVFfHnORTWyYo#?@9g=`dw+LR zN0H&-el0RG&E3q+uDh%RFbE0&7ytwS001EXQ;fBW5g-6S0Vn_fG5`dShM={TgQ1m! zj-rc=p}iKJv!w+=E(j1sHUQ99`~Q9Y5B>(~;z!MT84!Lv27LHUH!O*_P!#kH=SCS~ zo4f#qvPcWv3*@zZbnLP-7LYKq3=a@YuDMM@F#1ieq*_2C);p1&qJK~HiPJXyM!mea zN9$#PNwyu&u)#mf=54{!){ZI32FO5M-y1uw040;2m+ptE`UDV3l@O&&!a0BmFW?!5 zdG)G&=_7H8)D&N|;s*;(FB=jdwtSlE`Hch-rsk~Kw7gcFOn^Z>ROnZS!-PNRcww>pWLHae#A+~#5J$8s6Qlt z1~LaSg#OjtNE1o@<1q99lb7w1P_0g9+ZsDvi~sh^Nd4FTaUA~XkqZw1@ahZzfcW*L zI9b~n&>L9m|FZnDVSgB}Gp$j()gjdNBC5}+ev30IIS_~rWOFEYm-Hp%d5RLTaida5 zmJm2VmeN*!b)UhO*^jnH$pPM!;wkQWt_@v|-3|D#X6sT>MAdi@Y?imjiv2 zSkSo8uqUa0o<=JF{>&>EZa0PJ*Uf=>=>Q5T{j5MDBWtQfNu`eFr}xW`y0hmV31T#J zAQHWK4YG|i@$6qSW%KdqRl%jV!EW*tjPr+?!Df1#`*>xv0e9xVMjOWDhyn)VeIH>> z+OkVy<8FBp^A03h{DWeC<{f}4nmyPG_Ik3!7*%MTu8}Hw0TCYQu6Ia`xUiHc!)p8r zlHC>a&sK7xV9gRf&YY;v6fW^hl7BUgPj8Lql*w}l%E)bnp+iFJ?JtQ&oWD|9lT&wcTW@mIz%DEVWFQ>J9vva&Tym9-ubLD>L07K1LR+$}3k0*|@1zM*;-5(e@-J zSj*bvD7LSFP`pVvb)zb#FE@3x$6~f2+!6yvPpJ%=VWAuiw+U0OB@ceVW)$X~#S<#D zPPyWP|MY}LyKm0xjMJGZ+o z0bpLz;(97{?^&{*&Vfk~Iu=*Rgge|Sm-bmK4v*1_e5kMos= zGCEDiiV~c}UWL${AK=fIogY#!-#P(A#JtZ4cL6slYK?0$*O;fzbvG@W^S(>n%?4SS zSCzN=C1kALl6;u8+Bj~EusjH|=~r*Ivg+s*RY#d`2&HO-BQGjI-t$e9#8U26jr2bq zpo_VqUE1J69{D3)fRgm^A~#4T%ov0^G2_L7q7%-hQZg0V$w?HdXWuq-HQscbU2cR{nT0D{H1H!T3-&^5#3nfK^Q3VKLa`V&TI zQ(bcqU%C%e;U2tW=6Iff5(c36Qa1n;(3%Z&CgQ$;?f*sg20kPcE6&ftB<4><`n|W3%IHglU_EvnXVV%#fVh z=bM{KuO^Copptyw;$;D88x8AEa1Zl=9$0*eTgp_Z!Pxfa6AI<22Uy)aEL6=Pz|6|1 zH3?y24Epq|;w%bdSuzhXpb!_GO0*eMmKPrH)bm%kncz!=3gRbzQN|nE+foC}a=XH6&{D$!MD66}GM6GNXDm#k}uba=i)vSxRhEBm)`1c2_g@{SI*lxj?LNn0D zhA+rr*5yO?{*vG!LCbq-)WuY+#1VA1+EuTMk-T2}-UheOCOA$Rw=>9k24nO=il>%< zyJh2rgJw}H`J6q{W>J_m@4R~7iE|%1!BqF4?uE5$|NXlkpVnj;qp4geybh|FN5Jwk z?AREMx;QgN=i`xqs5exH>w_nosmFX8HyzpKv+O< z2sLXKume#Uilm*x?Jdn7z<0fHIT;fZh9G`ok}h(4Hw(!p%$%*6>1gc3APSf;qBBn) zIk(K_XCHC2$$)glb&T#sz`$bsWaCsbL^p`4YuCLG( zyW`G6SYo9xevO7HY^Ai&;TQ=G2)f00<3&s0_EJ_K%-t{63^oH>mIW%ySkv(#Ppn|) zMvE7hLT_;N2C|CF=>lNpo?h_by<=xO;@d^`9^N#c%UhdK;XyEEe7+Kd zHq;kMxZ2_aj93uC)@jSb;9%K5k+I%vO-Io65`+<{4NuZ&2TkG1;{b3n0PZjokojJ` zFXm8?Z8g1bowx;}4WWnM4h}I^ELFL7jkfks+4F5^7x!$WYB&h8O-8M z5{u5FNasF=Hjg$+PK#peHVrC)b~=KffrLwPd=Ay0%Ps!MVGkLp4uM(O^P8TkJ4q=DStJ?%UbbyPM|JtAzFCm-X9byV6H4U+T{#5DQdH(%&Cw+N~Re zt68HAtr=|YzoUa*4j*VD+5%<2anY-*b?)xn*AO8VR)cX1U=-gOz^TQCn5kkRX-TMH z67^Cfcv~H&CMDUZ(Vp-*4J55Bq!@#*1WM`COo$OE+prGT7@xh#OVW#Y-PyF7wRAdd z!nyi*YV=UOzHFGqVb2Kk*h%?*%;!f^sv!#mc(6U#1ITPZJ1Jhys1;P*rKG+G42vM0 zugX|}fJM)jw13<#&y&3yzS3Zh@4nPCEOO)@>7?qKKKLNM&zv4JZ_V;x*eu>E&^bKp z>8?oi7;X#`#_mjjiK)aZi>IuGe-$$V^lFo-DPNE%kgAzna@?)Rt4+aupu`DW&p>-< zxRi}3Trn+Oi8heUh!+(^PRHT?x%ZnaR!oqo$kqbj5<0obIB~AR1%qY@rkU%bP~Ky5 z_qki`Fo-)r1Js7AqC;VaJ&xsNM-h9gZaj6-Ynt17R}b?F$u zCM{wALu8O+ZN1v>+D_@UNfF+ylOPO$H9vu{^Yh5m`{^eHqufb%s-i6OQy=)Jm~iH( z*y!yBovpSrWm){<=tT8Ih0Aa0u1-3c*TaA=Ex>l8DRjGDa~jIMmhkXA+s*=s3~`&) zDAfM;p02>9^UXksMZXlenw{a8(5 z+Py$?Z>pamlmP8heaybvMr4OQ0`McQHt0&>^y0@HFyoMF)NPIU&baVN=*C@D53)Xk zrwZ(TD{=9>t# zYA_%PlM(-rL7xD=0eU0dX#O{aH;hX0S|CnMP5*)ItTFT^A=1(9elqakp|W|70!6Q))$+!dqO(j97D#*bnpe8(!>N8`c+LC(Rec1Z*d@YM*?uOer1~3;{Ux4TTO4 z4ue`kGPu*HisXa7;i4aX113`G35sDm>5q`x%|?#IV`iAq49hojSa3_-V!Rmgza_A> z-d0O~-hp3)&os&zqsfj^q#4=SLP?ySKi6HvisZ~dKH%WgdavYb%r3WAty1{);O%np zkhVLq;iyi5d+;VD{fu7y>v_V^sKiySt}QS2p(bcHPmYU@D^jBVt?Xj;&JbY85!VGT zxThG!fl-4k^kFL7Qd6ObaU055oRkbJ!f~-4iwkM>sA1KkEb2HkqR*4AR#RG!Yuu<^ ziC64QA?4-!eYfGwbGn(&>i%B2O~Mts(ak+4y_`R}ZO|wCgaS$z%`(ub$Ub^1o3qCG zwsfhxab^umv`E8D>>bA!^*qxDy}kKutbB# zYp8@3Y=7dO=k@fn02I>b#SoQ8U&$K&kw||TTWnGsxx8{k9=(_A8 zqGoE3#)hKj)-{Y*x)P!7o5#qvglblGUKNvJ^RL!k#*Y@ghoP3`036g&y6 z?pj_cfl%Igutz)4#3L-JhYTyP2^zMqq(hqb`ya4g#M1X>^-&)jKT4Q8 zVH>wB)NWHNBIlD=lv<_J<^xqO6}hym<3fL8-H$%#IH{1;x}*r0OBN%6(>I zve3g(!9`B4sX{p>a-TzFa1xc=7$s?*1$rxS96w2@1u94m4qw92{`d7aSoOe%*pjpj z_Cz8nX|ukM82MiFqvUHv_?gUjaVHqd66zJ^4qeo#sYm3}AefpaJx=NvnqQCG4H*;lTy1gOpzS8%~zCL2^vj0M8R21=Q>^0D_c~9aJN@&|G`Ii-W#u3ziM{j+c3IS+XS} zoVlH+!XLF7nw&-3hA@`?>JsZ)|7S5xmnhbDa7hzpgHG*#``Zt=7s-^F^38FvF+_Sa**l z%NIf5-~5Q(!xqTvCJpKlIPJcYl+6|ajo7e_97EfnrRt%Tl01m3dbEK~l-Oe4j&vyO zfO;{xlsFQa-%#WI01qgApuzJQax@)VI}V4t%3428@@U~EiB)4KS_a(nB(4G7$84xL zCs0e~DfzXzy*zKOmWO*crSZOVx;#NI_3M(**d^&ACGKm#KizN2bO3n0zx0+3ZZ2K7 zg?l~UCeeF+?rzRO`zul<|NYI8~-Q0z?HBZ6j?G_)4 zXSl$srDUH_!5|~>x@Vz1u`$ZT z#K3me5;PcY$BDWH2lhRn;4n$5sZW_ zAsEA`4df7LKzV?H%y5qmB_?9;!#4uf&z|r*E|EaDjW2uSu%o)|2S^$$_zZi^2x<22Iht5`$h-p zZ1i`&xuNvs29VqXPt9mbA+~)jG;GR-(JEF>*V`$Gb1i=e?m%S!u8K(u=Ts~oe+>)~LR*ezV*TJW-!U-rZwGo$^w79(vj7f0UtFnk{iW>v}A) zZzzbpKQY3#YA-xiVC%;B5@Yth-2;m)3I=smo=#U{`FssETJ_{9)1Np=uH_t{y8%2& z&UKhZ=NmQ0t03KQJ!J0pKMMopZ`DNqu6gl3Eb4d?h^DT^SPW*W==XxjK*cji zv=a4`s_6O-hHz3T2q!;&v`5TI<5w9VQ`F-TNoThLYGTKHJdiBPyH(Xm(vQ?3SM2c} zD2D>=MgfoU7Lsg(%|IbjrZ}N-f!yXZcUZ{w8U@|yhAI=vdkwXt-)q!2HbAmk0pR!H zF)-gSXOQ=cBt4JU6&~-{^ixM4Xh+SdD~onb{e&pjB#{aj!uPhTH#|l*`FU=^h?5h^`alT~! zoX@rwbLCCN@e^b+{+7d{ICU2fNS+*)z)GH+;M-cYquw&on0tLuw3Hj2k2oe1Z^tyb z_2TlQs19!2!9&T2OJ_{CIQ?#;=;AbBj*rsRii2;i#B>rL|00^cn(C&bn@VE+w7If< z?ANMv$RjU;_+02Pj9F-Pfcmt#JXgPOHp@B{OJfFNkq1_}NChWB;;#ZL%eIBWASc5; zc!PRQa$ob(8x?53_kHML8swu5L&s+FuJr9l`%T!E`wsj&YAb3C<&*jr4O7r{^#W`V zR%;CBi|j+*XkkRTGtlKV;%EIVnw!V_7O&k5k2ae6$p}-;f)=<+Gu`)zja%Bwvu+HSt|K<`m{-{g9z zRBM`25KTzh%CJ62yLL7@bANgoQ?r)H&&^GLc&GloNo+{SK)X2mfgg3--L$EIm4Lx0 z7i;PzqxiXdKgsK{R1j(cYgP)5QXuZacy3)+IkPQ`iro{_f`m#5s0le76DZS+XGfBC zVkQfrO(#F3MXJ1#oUd1(3u@|>9^f9aIbc8*ni?ms z5hW;w(MKR&pOau`@m660V1+aMAd*xL6pyz0wA z)OG&@h5u-Wfp_37SVA}ATheqhGZvOc{xn#L;14WeyJfIl;Pp(WXXP_i)FnQ6mLyTO z_w_`4`kB{Xlq4gV{=kMye&Q#~M`Jqd2)Fu4d&?tIcw;~{_OJ?vX$WnN64XS{Cf_mC z_?Pgp0HCzX6R}JQ#Fc(v)H0X<1o7F_YDo<4y|YC!_Zx`*U6|FIM__fO=SM=t5;F>gx>#=3NCMD;m z91$EOM@ks9Pe@2x;@v&DF-*DBCaB9ojCTq>C0Wz~L89yA5RR|TjP;&E2=Ah}!p}Oc zPkh8T3V%GWsT;#7-$OX^=6%H}_dG&!95==>wJL%^z){R>0r!6t zEG=_yBKmKadXRV46M6YEIaobG7(P1?*P*>tmTfn_-iL2)+dlXB0a7Bg$ zS^s?bZs5rdy{dMN8|(j3jw@L-10?|X%;yG0L1}zwq;eT(_}Ad7*-))~a#|L= zrV$+Sa~aC7`E0I`(!&1qQ2ZYiq_p?I`_h#s?#JcgO_Y(@Eqyu-GY2ISlXUa4HI9nk z2{c~Dvq}BVDlK8jk_yX*fs~YHai3SR9x%16>#U*Fd(i_`irQ;Y{L#LmK(mT{t#r=>*`&F|vyd#~+uBK;TbBX|&w1~`7s)6+^&Oqh}via)?S}qQx zo*y-Z)d@R3$pqxwu*h{ap1XHkjA8z&={Lmz1fE_8`cjQWJ?2W7de#xv7==m^%t6U? zWZ`y5HSP7K9;1^Le-2KPTc(rBz7jHf9@Kz3Xk#hbjBcmuSd=_XsM{@fFqR8~B$3w+ z>-yQ?1KWb*O?R^wX&H7tgcYMP*0(}0<6WD~{>BXg39C5%JIZ0Otes~Agx7DoE;#;q z!v=RUtN9n7>8D=*HZj~dv%ePf#c47W1OPz#htF>H%TmwK?rXsM(_z z;V_E_CrK`_A$lqhIuwy~RR3&U^pzzdsV3doEtt=Z@UHw{D~Eu}vjR)+~eAXh%M@lglI5nIVKQrLhzlLq7Ko#WJ|0INIm<>h9tq2TeDq$ z#T>*c=gv>@0P3(^H$MlHeuQkJVAMFRtizBWHC2eGyDMWz+Yl+AJA-w=9l&%=y7HU2 zVuHI>T^Or|WWBt4+U(;Dm(z=OIPTo_!@ye`c6DW;tyJuZbD4#AgeRLozEUS ze`hL~1uk1kKLi(MqD!WCLzq=ScNvw5LL~c%JrjJStTDA-v&G!?Q4kjS{Ym6$Y;;+( z7T&YrXHlYqL;%(j86}|h3x{A>n03~XS&?s)9vx&pRa8}v=4^!{B}pd|M5ZcoAQGuX z-9F%yigyjug{9UkNy>aSjiev%7GNMeJtNKP)l784L4`a@kYPr3$Lv`|>x6j^a2do= z9!}VxJe%^ZvZ9rhtWwi>4?>~RC-_SxWm$*Udn487I<Y-6>S$3Qf8UKUy9@1m4fr&%%1Db+1KpI^_0krF6vk-?`V{EPKB%SbP-`Vc z4mv2mkdH?baC{T@%w85#4HZTt_3fIrLQ!N9oD5&O8HVN9^$Fozg{?4{zw{uuxFrH%q@NdffD;0|oZ14eEPGYN{C|#4Mqt2=lKV2Z&il#)3cI z2qgzw<)|cs7;yh6bq98^;7S_av*89Bo-T~A-3Gs;MRNV}xIDrx`vdR5ipz5c1Oj!W zV*e55`n@|n$_{t@RAb2(-vnA+C7h=}6!RE5brzRuS!0%!Ow1|W$XeQ|INeHWF`Z~V z#Dd}O2(c)^y5hJ+A)iaW6E<@c~*<#hQ!b2~*iVfX!Qw0((c}qydKD2wcd}^U+1bzV! zNJJ8$DYsAp$HaRy{)LfWzg98d9!U#*G*|HmeftU?43H$=SS2*=vP?WaHT-k*9Op zXFEt>pN>V*N$CY!dR%EnU6?wlM@*JA{*56;xkOj~QBOTIO(Q{gC^n8v)T+s>S%KNG zB-OlrZ^Enb35>!`W1gRNy$bb5qekrFB>%0k6@c{@)$QMeT5JXHm68wu0G3Js0KRBF z{}F1jcW|*V{L{xg(^|D#6-M&dEPV$@$#TR;2_gD1TuDKxrBb;Ri99T(v=P`PD+B_h z2@qfIKKe2Ku`~gTUc*S>I;DrQm{>-$Gh+;9|8ge@Pj`F%sDl>sI5bNmxii~+mFDL& zsLu=8^Yr0x^?c!aX|QF;5eAG#%E*h$eQR;`?&S5k+9+dP`^K@8LJqKVcHYB_J9g{- z?C8aNd+6R>V;xHx)!(faOQ%Z5Hv9SxDuJ&&`khyeMh#E8mtrjI5gs0n3>Y}hkzdTH zcIq%Gq*MKhUFG4GG73Zw$@tbL1=U1GYbrCAMYS+wvQ|>_j%dai8f}1d%m&6AEhmdi zjcK$K5nbObKimKLitk-r2(=3lZVLfG()|N8$X1WxA;1uq9L9z{4v8GbjNK}s1Q3K8 zrEj~qIOvUd++0;H8r&X7vwOOu&X6Om)@{UJkECHg7JeLz_*b9nqt!HjJ@@x?x)&*k8IyI~4` zpi^#YZut+2&~}cnS{s5$o5X!%wIM9{iT$VnV$Z}y$E+ZJ_N63Jo+}o#Abd3kPWHLh z8r~7yUA@VG^0}3c;Qq({4)05?wK-}h&aLZ>Lycy0s!&ecDu>GlNldsw>%6PX{W3*= ztmXm)2O)7kXxsNUi4MIOZkJ7#@DC01O2g)Y$rTd~L=GXG=J{<&oc-Fzkk2l^RZSdr zT$~}-kc_NN5Aj|SRKin-tAmJTmr?X>DGU(q$_$LjUhhxN!|TIv@cECdN~I-6t~UeJ zu+6;PkR7fO-!gh0oe=`E$N|ZQ4-r#@;aU}4r6#6NCqOn9*fj&*LrGyf>n6yY(kNf{ zcr>+hvouB(?8V9n0aTV1CH`G4REN4UU$R!JBWD%RjI&Y#(A!wh09yi}c20aWVA;lP z)w$q->R{Li{b?kuK_XO^$RCg3p=x2>Wst(sPQo4>9foqt_Y-L<`!9d#o&Ks#(#Vv~sFmbSYX-Zr&n zL4&4A*qGTGmX0bSK^FtaBThRGcFTK~w6uOiAeDdo;7&@(NE&NXbEc1r+dw_MCXR|F zeN;t&;1=kL54#(lA)@2SxWSZhIkOiZECi0|Np`z7V>FgDUhg%l`Rd{Ktu& z>~45z2n?2-1SU%^7_*7cdEt9p>H61&)~^eW%qH)v=X7Jls5_^5k-Cq~tzi@~-$+~+ zciGya=HE=MNtlgKJoG4AWtP95_4&|f>4jB)ltaeX_%bqAhB~Hr;C|%CUb#KS@0V{! zSXc>7;@m_o3C==5)YmT(XMPxDqkt>0QatvpsRt3cN}?G;Zlk#gcvBB5*rTs*s-)hh z4C6xvQ!o-+-T3=9$}?h!&!y@Qzf}X~b(GWOLh4+>VzU$Fc6g`!x6=+uWqznXOkp2$ zhUD&rfI9>?x}=)ulu3NZ%FT$~sD$mO8|I88ED*Ff-S_9gY=AeMdGKcup$)LKX`R!m zVz@XE2dA~dU$(azP|iv&Gq89cie-{RGf6TdKSk+0-(|6&awCh`yh%FL8w31`J5jV(DH>(9N(EmFDI31vhrU^H(7T2+8pR$ZhD zG+SYpeyFG`UsSyNd!&}|9^&L!1?NxkUhi-iP~m=mpuAjuA359XE>Xy%Pk(9H@=twE z)~b)m6BCA9LO$5=kx9{3uiRE{Rt73wg`bL^gW5aEGEj>cX+A6O@8uQBQ;Pz*>6_%2xl}*ETj|^56r$Z6>FP(jm!+`Rki9Ub~TI z8^NreW(3IsO%$hk4-@$+ZJFFn>b|XrgzABqh(y6G>nPiI&6>NMX~f9Yx1zCYnhB@1 zgC7O9`qh?^it235TefNF6=MBdw;nEy05!8x%#N>CJJqZDiUuOxL&K3XYATMwY(DQ} z_=3x|`o4u!zujGd`aD>JFHktV)Ja`8JkJ9a9+O%&LVOg`ZGR&g&%F=KtH)P2>L1$Z z2OZ%!ogriZN8{!ykkq8+3B=+S*jv;HI>5<0LO9goN!7Y0Kp`u^jZ)8{|^R5C@TPZAT1C;VUi;NQ720X zqF(%>BlzE^?Cd@?If(Y)asXUJk6vE0{b)d}`2hLt%NC`1AhoL3b zNaScF6E}xC!Vv@|OBsW^+L3~#*OB5|Y0g-cVk`7~q;~-p5xX4h&$W_3*$G9#uNvK- zee$q~U$x-IT)xQj00S9j5c`s>{&sm-j)tnGgg}XA!QKTe#z7VVwnbP1915^GYsGkzVlak_FJZ=|gz?z(1QNmue+U!=`D)S~Vg|4){UxmsOQ2q^!bonR zSeQ|hc@Vb8EU*c#*(ex#f>kicqQvMtnRXrlrM%B5dr>iH&%k_0o&27@B3BwALvh|$EB)S})S-`4-QeH_f_~Hz3#ZUj=+#fC~Vn$eW-y*siV| zboJ2*}LS_BK}sCr4K&D|5m=Rwcq}SMfzDyfVFNJRpWD z<~k)rMPH6(R895Vbj`@gPnyp3C1;@*N!xto73&Y~1#(3=t#l(2^UjUiYXf(eoJsYQ zgf%>N9Z!@5+1I_mpE1T})U&^rp>9jwZjw#HriI#b`i(ebWWdRVS3^D;W?u)3X@*%! zDD!?zvp;;9QQMoXgk|!m-xb)6Mrsw<Fl@+sHCOq zH`Azq4wX2&B@JVmwh}EJW9b_z8UPd15pWe&270I^*tm{1dEx^vZLEl$Re7*noa%^T z9ZVwF3Dh{sk%f=#2RlVQc8^Z4U`f*!(PduT z{InGshOs5pB~M`ER4!m0!DUyLOl{a*i9an{{4~2u>;hY5D`DIVi%%}02bFagka6-m zY~GUY19F>nm@v*V-;t?bjj{zsK8DNm@a@XEJ&Rm6}LX%dx;6%QUh-%BlJ;pPU0#S()vrhb5lflknu$=eRbm;C(K5 zGM}PvdfVs4;&9-)MBAswEUQ!lRoVOfe&lG}5&SEwk?LeZGyVabBo9&BRx&&1L12U~C~-!`y^hv+7IXAzUqXj+`aGc= z3Liqrrr@mATKGHbnkO#RdEmZJpL&;AZ(#h5^82pWf(2hjJ5Ozx^TQp?Pii-Py@xTO zgHv7W#anmh#5+w*Y6+1(niR_Z-y-_--C>!i=KF>MV__+4uM)*Uo>U+*F`4CN1xLxr zM9hZ|;sv)@qSN-G75V81aeA)vo&HwZ&NVs6KU`;u5^}%wp9mXKFc(^}BBU5DqU z#csliMt6&pB-g~xJ@s%9FQ+iG0mX|Em1$i;LwC-2zPb1!C!88@FPm;qEZbGsQq3zH z){8Gny5!_z|3-Te!RR*b81duVy2;5@rv0QOM%%&_j2k;+8{Wt^pZ#9iOQK%Mv4b|~ zyuUk+ZuDDipfiBO@0-%y3Z&wVl3^X?<5ajk4%hkt`FXfd*2c#LIy;jX+Qur$S|b1P z6W_;a5Am-KE!H(M{u780_c~w;LZdP}#})VS%yKKRen~A36Z-ob;d;(t$H_oTMy6RO z3Ub(aDNdI#DNo6&-r}mf*?5(T&MI`C8|+LTvg33amFw?K?pMF~z>7?;;1q*e*A*O} zSk#s+)a(H?b%cysTOFYNu?rdk`eG#TYPjL&bUZp$GLj%4naW~639}&MdHrXHW%F1{ zAZ*fG=r3V9ZN%iU4@Mf=8HgI|{O0|gnB?l^zLnl5au!&3UKL6Avo*`tB9Gd0w|wX+ zaA>?e&iDJ#>ax5C6v=1`iE0QH^B9UF35IDT7GrSE|43sSMWYF&TZ%0N?WU-64xcO0 zDsw{qwpz<6FcaCYfC~#hUjFT{-+-l!=G%N|{6B zY8WATD!rqpqoW54G@gc=?_VK`|4J7LO5!H@^|f9v7a0Hm z7!U?G$-Bi`>u^H8|vDA)w!viwbx-xQzk){a{%o%8sTO8@v*MP zW&M1E-H6s{%AG%FR2dqeqqaKc*M)+rGL|mTYu?rjRFT{-(GG_)%gZ({23V@AOcQ|O zh#k!!`Hm~h8w6CAK=Fi%g57Vv+7F&8K_XyDHJ$vu!UL`XRErG@$_i#7&tOtPat>Tl zD9byZf(1i$S%JnVNiL}8isFoh6d!Py9l!-h6xx$FGUgHkP#BIQ7iUlm9!Cz2onFES zfZ|&o0?EeVHXJ(7&y<mAP+quYW-QT-h zY`b`F6V}~&{T_wO%Ql;=b6if^K+O5ycLurXB+hAGF%)*gx(A_ew>l2P15w?L(Fp(# zQ!HujAUK9BH1}>O@@%VJRiBfmwyKXdxD$zUDG5z8e>lwS>YPqT4F-u1-KfUXM2N-C zIxm>sv|Wfi^<;rKlLF>~kP}JXaAW3l&3!DI@j{vk^s-9~!hDs`EB!v!POp$Ir;iNe zQg=qp6Q!Z|X=$91)iNHkz`IYz8bDv{Vw4Xq8v7|6)!}+#b3cU zj-O(X=qY*i^1^+4_T6;R(wkDv=>zTr^C-z-)pUAhqRe@J+1JnN-pZ=K{r9XUTk23` zmoGKVhx$u~#OQ1Fx1z3|h2b9=lC^|kt5pVsz)R2p_W^h(9Rt4q)JD=WGju67!kCJ26>-?);q(eEF|ZEPct*pBaCg z?L_VZQZe@Fgtl+n{#Z-;(2M~O=kRcLcURhjqm4U0YA6~yqy4dFK4UYXvL`*C%52HX zkuv~-n#`e8jwMLX>OYdqLnboONW-NQw!LL-at#Y_^EwDhPF3LKq6k$I@e%~JFKDPp z+^cp9gAKQpplwDhS`@cQ#&C#|#ZeK}0$gf(&FG}ba4^-C9+Qyz< z-`eg^J^fk<{l7fWFGG_aD<{+Qhf$GwgOl16Y4j0JWF*4U_U{7;A84Gx%d7b%rGeq@ z)*1mD(g(hI;oAB7_|iGBE0~${-Gms5qlbTT5Q2odDf$?qleTCBSa?8w*i=~*W1AR* zTiVK6uaHRD#Cbjd$PyG|FFrpc8EZSDo{Ffi3U+Vq4u??7R_iETJ?SK#Vx)lu6zS#T z`*63sG%aaDb`j?f_t?GiI7P0Ed7yN}Ap&qySV&huj#@Mat4g-H1bhR!Gr4Z1I$FoO z?qE2Y(HfNp^SN>S=%{B4Io^5XnwwBSX}t*|Y6~zi$%&k>F{^vfF}6Xi9lb)I6#??N zjIU)(%aL*{1=Recu4**0PpVFJiu<2vk%l?Vw(969z3do;0X0@-<5KA0krTz$_KgSi z06ZKYzmBb&P8O@s=d;9mQjcby>b#9)w}vp$S=kyB9zSMp?Ly2I>?B-W3!e2F3*T&|Lf%ShC_Dfs; zP*{cTF9QS94!^{U(ecf0h6Wl)xIbF&NLK^6&vG(VlDx-2EP5_`c`>R6TSm<-RVFHm z<^E2zdt9O@jQAzHTrFu3j{107@a^3YKOPIm|xn=M!MV2Irle zE=6$whvXv|@LPc13qE+(K3_M!xon6drMggdq+Hnhj~9U@kM#3X=qy`Y=r zGG}pt8-xx@K`5gvZ`j~Em+HqJTp%41AAJxmN*1djfDI^Ige4uI3)%c_s{nDJDBE8` zm=*NCFH*Z13H>sN49g94Q9abUdK~ev{89DL)3@qB=DG%&f?U)h=ee8Ny+?a^j#v>o z6h+8QU><4LX*-A=Q^U?#VdR-Pnrm(`KONSWCLjgDY7t|)JA3@f&Mnm=Rp9A|EiPoJ z@EoN@Q-|-}IVQgmNOVW4TA1YT$_fKr96@Op0Uznq4jyRUvc))_*gF4qZ%J0XyO(e{ zFhL#&>ihiqZU4hB1_Yx0@`3;TW;1`Pz+VpkX6qSQiGLOFuiIh#1q+b%)z$v8ImX|C zf8QtIpU}=PV)vhf?!PWC_&fYxS0(%t3;+;~_MhR c3;aI^dRYn3FZBWdfcg3Z{L)Z!;Xg|M2T>eXwg3PC literal 0 HcmV?d00001 diff --git a/Code/ost/JAVA-FX-PROJECT/Notizen zum Auftrag.txt b/Code/ost/JAVA-FX-PROJECT/Notizen zum Auftrag.txt new file mode 100644 index 0000000..ae1f103 --- /dev/null +++ b/Code/ost/JAVA-FX-PROJECT/Notizen zum Auftrag.txt @@ -0,0 +1,9 @@ +Notizen zum Auftrag: + +Das Word-Dokument ist in der Webview etwa 1 1/4 Seiten lang, während es in der Desktop-App genau eine Seite umfasst, wie von mir geplant. + +Die GUI-Elemente wurden bereits erklärt. + +Die GUI weist noch einige Imperfektionen auf, die während der Entwicklung in JavaFX besser behoben werden können als in Adobe XD. + +Das Wireframe wurde in Adobe XD erstellt, da ich es bevorzuge, ohne aktives Internet an solchen Projekten zu arbeiten. Das Internet wurde nur für die Suche nach Büchern, deren Beschreibung und Bildern verwendet. \ No newline at end of file