From 58146c3f5adc457eb1879ad3b07c94379f5b6c2a Mon Sep 17 00:00:00 2001 From: Maximilian Date: Thu, 20 Jun 2024 12:23:30 +0200 Subject: [PATCH] =?UTF-8?q?Letzte=20bugfixe=20und=20=C3=A4nderungen=20an?= =?UTF-8?q?=20Namen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/controllers/AddFlightController.class | Bin 7536 -> 4143 bytes bin/controllers/DeletePilotController.class | Bin 1738 -> 1738 bytes bin/controllers/LogbookController.class | Bin 2142 -> 2146 bytes bin/models/Flight.class | Bin 7373 -> 6730 bytes bin/program/Main.class | Bin 668 -> 676 bytes bin/utils/XMLHelper.class | Bin 2408 -> 2345 bytes bin/views/AddFlightScreen.class | Bin 11965 -> 0 bytes bin/views/AddFlightView.class | Bin 0 -> 11134 bytes ...ilotScreen.class => DeletePilotView.class} | Bin 5010 -> 5004 bytes .../{HelpScreen.class => HelpView.class} | Bin 2998 -> 2994 bytes ...{HomeScreen.class => HomeScreenView.class} | Bin 7933 -> 7939 bytes ...een.class => ManagePilotProfileView.class} | Bin 10568 -> 10588 bytes bin/views/ViewLogbookScreen.class | Bin 9039 -> 0 bytes bin/views/ViewLogbookView.class | Bin 0 -> 8958 bytes flights.xml | 241 ++++++++++++++++-- pilots.xml | 36 --- src/controllers/AddFlightController.java | 46 +--- src/controllers/DeletePilotController.java | 4 - src/controllers/LogbookController.java | 11 +- src/models/Flight.java | 33 +-- src/models/Pilot.java | 2 +- src/program/Main.java | 5 +- src/utils/XMLHelper.java | 15 +- ...ddFlightScreen.java => AddFlightView.java} | 30 +-- ...ePilotScreen.java => DeletePilotView.java} | 6 +- src/views/{HelpScreen.java => HelpView.java} | 6 +- .../{HomeScreen.java => HomeScreenView.java} | 22 +- ...creen.java => ManagePilotProfileView.java} | 25 +- ...ogbookScreen.java => ViewLogbookView.java} | 22 +- 29 files changed, 287 insertions(+), 217 deletions(-) delete mode 100644 bin/views/AddFlightScreen.class create mode 100644 bin/views/AddFlightView.class rename bin/views/{DeletePilotScreen.class => DeletePilotView.class} (87%) rename bin/views/{HelpScreen.class => HelpView.class} (87%) rename bin/views/{HomeScreen.class => HomeScreenView.class} (92%) rename bin/views/{ManagePilotProfileScreen.class => ManagePilotProfileView.class} (68%) delete mode 100644 bin/views/ViewLogbookScreen.class create mode 100644 bin/views/ViewLogbookView.class rename src/views/{AddFlightScreen.java => AddFlightView.java} (88%) rename src/views/{DeletePilotScreen.java => DeletePilotView.java} (94%) rename src/views/{HelpScreen.java => HelpView.java} (90%) rename src/views/{HomeScreen.java => HomeScreenView.java} (85%) rename src/views/{ManagePilotProfileScreen.java => ManagePilotProfileView.java} (91%) rename src/views/{ViewLogbookScreen.java => ViewLogbookView.java} (85%) diff --git a/bin/controllers/AddFlightController.class b/bin/controllers/AddFlightController.class index d8dc47d12ebeceb64fcde57ded7109a7475a6b13..d757dcc11a8bd05ba1cb0a9b10bc3eac9712eecc 100644 GIT binary patch delta 2081 zcmY*a`(IOK82`TKj2#$fV;2}qWDZ1wjR~4!LK@}`bl?RA!PLMVa5k81!_cfrTA5wx z?WSg_UCbgBF9W31Zd!Kv2m16&e?gyq?DMgD-m@Y3!+H0f=kk5N&+Y8bnhPG&oqw)f z2e2H!4w>4A4%hkQvho%N!-_~yGeL$~MHWn%$YIE+udnIpF~J6h0y{$q@3XmvMzS(g zV8nYh$2Z3-8sUD(0b*{~;|YoX=qHAx@;-pgWpSg$GqE#3EiT&o(Z` z5(N+Oo$_3{2DO)u%B74ivlbLJsK|g(!8!&@+JAL8)V(_%Q_#pG*#%nzFq^Oz8$_ZT z860JSJstZxDg~3uKqwZkEpHL}W)+*Uhg`scp^L$&_4Rjz zV+?s|lDf(I&OO>LqS-F^>{b!N9zJGWP}hR6iXQY*H)Ej#8UwYqLD=k7(I?>Kj$kko z1ee{FD#=tc`c>@1lUz}&t0`zoNzDn|SHM~ZHKkfLKxHBr)=p1|o(4X{wn@UXyw~Pa za0JgQc#fa8Xt}g%Mm+F*y}xb0{9BMH#_YDy|EmnPS mI9BHV_w@n<~B*8VhMw zM0(>|Z+uGit%~pPJ+H_cPDqf%q|z=*Vu$EAlh%lKkIrm*t0y_5U%Ph5L7sXG=}w8Q7TVM8|RD zd#@x?THge^WwaWWo`ds<%!<-p6L^B*%)d8go`5YaBFhLBM7-If!!Vs34i2$}^9WuS9_8H(@?Dk}QZt*o|shwIxU-Q1id49ZFY?^1=Z2Q?7;d1vr4G zs6<7S`$0UNE{p|6*IgJHtCIdkj*Tpzp;}7hC;G%NsJHhZ-7`p1;v>G!aU5={NMC9U zewSe!FD8VaaT4#*Ddsp#HUif&MWxj++$awxbdW4E86@@eFs~%QRU}Vid{l zUJM1F;d4S^7{(WAw1dP$-n?0@&B5pQcHA256oUMinO_F qY3`@vQhKCpqYAd`*`+=Q=5%%v?vU0Y;V1k|7lAoSU#(y2T>k-{b9*-c literal 7536 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 T=N)nYkTZBjm;xl diff --git a/bin/controllers/DeletePilotController.class b/bin/controllers/DeletePilotController.class index e2997b8199cbe281cc3a864f1c4188aaad83f1f9..9a667c7816ecde889458389c3def60c8142cf20e 100644 GIT binary patch delta 33 ocmX@bdy02M7MrLXg8+j(g9L*DgDQg}gC>I#gEoW8_VGiXe%XY&RCaFhkU diff --git a/bin/controllers/LogbookController.class b/bin/controllers/LogbookController.class index bb6b17c1d5d9d847eb765d6c8f85cdccd1887675..69a9a6213782d06b45401b0b404ad898261c339e 100644 GIT binary patch delta 161 zcmca7@JL`o5UZ$2S!QZ^vA#!sZfbCHQEF;l7?3|XnRPZVKLZPc00Sq3AOkOh&}42l zKSt5XQEXA7l0Y#jpqMm+1cMBalx0w2ke_^#ZL*{i11p0vgFJ%@gEoUIgC0=ajzNRL zi9vI6DSJMr4g(K^E`tz*-sHFJ0g8qUd<;em;tUKxQAQxi4>U~@NHa2I0ZAr?YyhC8 B8c6^E delta 157 zcmaDPa8F=E5UZd-S!QZ^vA#!sZfbCHQEF=541U;xhmp z__JWFZR87)=FmrcuD~b0AIVl=l`y%Zlb@RPOy+R;hcMQ7#B49a4_-7I6@C#iq8ScF zXQ+;6qfO-Sa&)f6ML9Mhg3WM{K^?ZhM-BF%7Da4D7q;P){5^wu3}QPjp@HXP1o@=!8R{elC!_EL0EYr@Xbd2Y7@H6nUZ>y+)&sMZzHtD+Xyq;l$-B(6*1 zAeFQ}NO^RF-=+d}Q)FCscR6{Q&^qR1>6Y$3cXDc45;HnsqBJ4N0Zz16)oX- zd`&D-9czy^Ov`W=_bs?b@V}U0+B7>Ja0FyeB&eM-VZ&WKvf~!E8v&X)z|5BdOinQw z=PK^lOU%!RECf;H2$)GB94iu^JA9(malrJ{N~(C^SgMd!lsSu4vJvt`g)>il;5<%+ zVs_>{nk7P+-3#(zLIIq31AffL9J~pg*9yFal_0LSNYnP_3;aMT^gR7cqr8>_Yq&lg_+?x6xtD9K$ihj3Fn_@zVrlWxA=^cU1nl06G=%FXa9O+CTHNlAR_ z)9I8Xe)I*YTe|c5HMNI{(~{Wi*Qw7SGQP*+iL-1GJ$~Ko;(re4=d&C@ItKaVhr}bl zmQ?sFxC#Z=ST%9Sb$R|ZTv52<(E9O<7WfvO{kYM~1qDG~Q-90|H;lrLvzX7d+*AX? zsOKkc#ZCOh0~LNtZ}VzwVCL)J6I&c+D+-c8DerM7z{|r?be%zGz}W6Qyu+y6Xx#Qe z8^rzr9Q+10qc(u5GgxMrNt0$$$r64n3! diff --git a/bin/utils/XMLHelper.class b/bin/utils/XMLHelper.class index 6dcd31a63370687f805ead863f1228a36e7aa9dd..d5d92d63aec100e64842f4db6403d215c5178cfc 100644 GIT binary patch delta 1161 zcmZWoT~iZR7=BK&yJxdqGz3BtOd?=`d=l#iDq17OK*0o5Xb3Gz1FjGa8zixyIzwlA*Zzmj*qi=UCd*1h)^FC+Z=Xv(*OW!k} z@yGu!eg!a!#(g6l)y`GyO5;3(I~Ff8C}Xu7mH{_BCRAwmAAKKgXYk)De^bsZTV=bR zDHZZLdxcP&933LVdYNBbVUa{90`f?Z(6PLOua@oA%xq(`Vy~W!7Y+E(EfI&rLl$lG zqT7HMQ4@#JBYtDCoELp2jzD8jZ&vTt*JQch#DKH2QmxgAR}2Y`I77#~26JnhwQtMI zRm(&YDRI=5?j6EWj?7zBrIwkT$$htCZ8R!1+r%f(#E-6#pzlML4BWECze+&-;LxE)Z(ZkZh~GZeR=ngRGvA!ao-~?nqk} z69%%lWFn7(_}e{jB#V9zF5@c46$bA+WwZC{4Qt)REat?J(x(+o%%dcVN>2L{iyU8x z$4ao{nzWp6kjss#&9TG~5$$S3{G;5{R#D+t6KiUm&*K)u!4-+(s)8 z4&Wf|&|zj$RB7)TE3oMuco%lyqtUsLY@w@#Pz&J^C8Q*ph=i0TdP7Rr9*)cD$4`(f zgp@t#&PptCzdo4SEu@-AiywIR))4WOM7oIzh(?&&_Yr|XYF{D(i)eSqC7?(GIELet zdV{uj(7Uf>I$i3PR|RXorSZ(XNFC5E`03B;A}{=i zQ=UQqMFbr`dI(F*92Y>yE_{tL?M;zyr?E^5qzlKS3xiPJvmh&lx-U33=%dnxVe)}4 g2VrE8Bv$CC3pZd<)~R-zMin-#44Tz&2X%yA18H*5`Tzg` delta 1228 zcmZWoT~ixX7=BK6v%A@BXiZHa0TMohe3M#Qw9wYl6ex5aszysjWBs z0cRZM+*EHJr{i7gMKV)nTDF2+?~3!F~txnHk_tgb=-2* zZdn=v48fXR-`I4UV~@9N2IX?ysk>Jhq*S`hAQv0!mJSJB26P1XmcL|Y_kNABp1nT@ zS&WBR|8f+4qSwz5N&WxGbXi9?5&|*65IsWF8-?2~ce~{hF{`>YB~TG0#58Q+EsXG8 zmdZqsG>}4&!C$jm%}vqH7|42+HM`LyW_c7;jPc)Ck8}=i^S@YL8OKEx7kI+gBTXR4 zCw-HWYB~Hs?&jb5CfGIpyU(oMAiADEt5(%%7Ra$1)*5NuQ8CNV>$QmG^;WHB?O5yc z&VOW8++^rJ2F%uN>qJw>9Qt(3;FeHq@~@=+P!YFu6mi?Y9lX!m(&%sznE>vhtYVqr z^oeVF(sZpY10SNo52YdHBLnwvpC{#+u}|=+iU$m5jt{;=H+p2BfvT`y-4-R=QL)Cq zmA_Fw!!& zJ(1omA2hmtCT^c*gDM4zjG{l&LFk1CIYqPB0D_&S*?0}W8wgVtz!|(r723=UdZ?dj zAF~o$+(%?(AKf&fE7=ZuJBW8MIyfmu4&J3GR+l{TeHg|hrl?z? zaT!-g`&H^+gnEbz@T-tiyr&}X{Ucx$|AszIArLqO`R02K5uI_FWKZMzk?by#El#a4 zla=;SB*`;0=2pnV`3@F3C@tpOSj@kIO7Vl|=J6_fP|E%cEoVMMD4Y8pT9yRovIpjm zSjxP_3eYAqpTp0WwZ!f!eJ}I$TRrk3?%m-aIWU9-=}S^fQ(T~rtc(%Qj{(9GGtUJO z@+{V2QEdTT Qv5g(dbXqmh!WW4C3(w%>p8x;= diff --git a/bin/views/AddFlightScreen.class b/bin/views/AddFlightScreen.class deleted file mode 100644 index 31b0db3de31b79a264cb5b2e815a4ea7cdac14ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11965 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 X7>}>URFB%Oc2EE%t73KDn!rB+I_c0( diff --git a/bin/views/AddFlightView.class b/bin/views/AddFlightView.class new file mode 100644 index 0000000000000000000000000000000000000000..2fe88bffae2f0bbf1060ec5909400fd50e27577c GIT binary patch literal 11134 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 S+NSzcKLt=KDpK1w2L1=S*TUfd literal 0 HcmV?d00001 diff --git a/bin/views/DeletePilotScreen.class b/bin/views/DeletePilotView.class similarity index 87% rename from bin/views/DeletePilotScreen.class rename to bin/views/DeletePilotView.class index 04fa1788144a8d990daeeec1a9e1500eaee8807f..e9ae97163007cd467f4b77e5e8e0838c7edcd4cf 100644 GIT binary patch delta 191 zcmbQF-lML1>ff$?3=9m8jFRjOOpFYoWtpkv#riI(IjJS70hu}ZC1F5;jp{;-;^ID7 zff$?3=9m8jFRjOOpFZTWtpkv#riI(IjJS70hu}ZCBex>si}DzRfQNO zC4F$nZuVmoVqy%PoX9N94pDDCc><^0>&<9{IVc5aG$; Qyvjmi7n304^IfL;wH) diff --git a/bin/views/HelpScreen.class b/bin/views/HelpView.class similarity index 87% rename from bin/views/HelpScreen.class rename to bin/views/HelpView.class index 1befc0f7f6faa51a35b813bcba804833ebf73b59..a0a080e85ba8d2baa8147db21c6f47e1c31edd31 100644 GIT binary patch delta 129 zcmdlczDZo})W2Q(7#J8F8CJ0~FflUlm1U-u7wdbZ<`jehSrZjj3JCb1ifz38gi%;m v15MOgb22xx^yc?W?JS}qP!0LHslmxbsi}D&qb9eryKwTt4BmW={Q)xoVy-RG delta 133 zcmdlazD-==)W2Q(7#J8F8CJ0~FflR+lx3!t7wdbZ<`e`c7p11=O_W<^d$A@wgb diff --git a/bin/views/HomeScreen.class b/bin/views/HomeScreenView.class similarity index 92% rename from bin/views/HomeScreen.class rename to bin/views/HomeScreenView.class index 3efe2bd9f1b2c3c565e67641bc6a238949233799..66880b6fde55aa3c9253f4e6830f82b66a8a1c08 100644 GIT binary patch delta 306 zcmexs+ia(D>ff$?3=9m8jC3yE$}&^Si}gM7b5nzpi&9hb!hrmV3M<9Le6Y!E zy#1e9+*kvv+~&6|ygVYp5N(brDQ-EL=@}&;^Ck-j=81_yBtU$h{Pd*!{A{q)G(q`# z8Hki`VqRi;YCvXAen~)4ep+TuDo6zvV+dm)i11=$;K)hLO-e~rF=l6sVq}1t=#rX~ zS_07qQ6C9XABn8qgq<;-k%13ljYn!u0YqUONMRh~W-FnUjQql=VX*m~Fh4f{!vSQ1 delta 230 zcmZp+`)jLk>ff$?3=9m8jC3xZ$}&^Si}gM7b5nzpi&9hbCaSCy67oS8-T3%F zv#`DfhWO^6EWA8oq7dbdDJgC_nduoN5R)cL3Fb+NL!`ohw)o_yC*|j7LnY@4$}`GM z-X|!*1{Js^C8kC0t#-RhRNYla9YHI!s&y7&wcFaLUD|3JSCvp#QZ=H2 zxUYzNkq~D|Blx2v{ioqC;!21Le@GCo#7r_X@B8M>`_A{h#|1A7!k+xTbr+bR+JZ3@ zaZO=SL36yGnkxg7l#wv~zZvkU7{gTL>H_qGs91g9RAUMi&Db!J6xHA2G)q7U7$$r_=b$7Y+OF%uJrk8`M*@pLDF-XxMt68-4QP&s8WfT^T0 zi*!~ph*}2IAfDX}qnY6xW(23n;5wPKGKyD>;VonNM3&a^HR^pJB*AUewMv-CLO2tN zW)gNL<7A3Fm@UCMjF%+YOp`gCLULJ19v)`mqkx@~d@r*($Q(&EmuoEM4om1@DX%H! zBPD#tqfD$&J@KhzR;hths7$I<39D5()j6t>8r4L#YNl2lVU2piTJ=o!7pzkqtXChX zQ(xJreo$|~Cd0yJBa$tKi><~uwi!8WH)gOSkZk{K)HRBNdqgNriZDxOpM1Vqq}ngP zI3R2fQp6$Qe*`Z_*}yUCInH)Y(8Ni(afWl8<(8~1oTrTov~!U+ToUOn^M$KKidqY$ zQqW11DAqMP`N=O7=-nwN%-0F#h92o~hu*|0Z$)rZ7~R&V9Syd7gm9lQ9th7CVt6Q? zM|xsvl`RDe4tkI(F;3|Mmz2D}eww;mrRfakBI`Wqhxy_!5(W#1WsyGREVY&jS|;c+ iLA`=5*Kw{PDo@XFC0ct+Pa$=(;FkvS5vnU)?SB9QPr0}N delta 723 zcmYk3e@x7A7{_0q?{yW4J2|ILbxl{-LVkzV4;d;yN+A++%atQ{Mst2lH0D?~*@xwK z+WeRwF^)_lKmIWMqp>!OznCo>Gn+qbW}a!rKcDS+J zL}4hB4p~M-R@7|tdi~c&JC)&__YZ{EsszJS?fwtx_Ca>tWeS>d|EJ-yh}39P-yam! z-z-OG4C&B6V;te?*w<#OWwXy4+>})mSnuu6hfCsm&GCuzJ$_G}x6D@`XeiqlsP)zV zO;3s6Ys3yC0viJu&M@rysbh{g0W*%UZKO*rOkyC(48_SPQpk{ZBB|sthGNFDh;eLS zJX@GRh)J|CnO3H7nrzN9m0L{bF*&>=myh!6Gx@qXF{oaJO-UYOU8l5xLgJW7JhMb# zHtEcfrbW`Am;y>9n#Ww`Q^5kNDaA`Ueu@|uA8KvwC zXQq5HJO{+2gW^St?0<+XG}B~&JdVhqt>VN{syHU1C-HHLM)9DDHuiHys@plvSuSyo zE-vthi}Xm;%Vj=rMV#s2E7$b4)Q9F9L=n~nE>CPHR&L8tIz{u2zUm6u?h+#_TIiNZ z?vua+$vo60X$>|P(WEg*%(LQ_GiH!Prhb{WPL0+1=_{T(aXVC@u5>4xBT=A3?%v-w8?n;> diff --git a/bin/views/ViewLogbookScreen.class b/bin/views/ViewLogbookScreen.class deleted file mode 100644 index 53a44d2eec255c1fb426e170bc4ff1bdc5e9e8c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9039 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 diff --git a/bin/views/ViewLogbookView.class b/bin/views/ViewLogbookView.class new file mode 100644 index 0000000000000000000000000000000000000000..e581410975164afa00cd4ecf69d21f404ad6bb7f GIT binary patch literal 8958 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 - 1.0 + 2.0 - 123 + ad - 12:00 - - 13:00 + + 15:00 + - 12 + 2 - 2024-06-17 + 2024-06-20 asd @@ -29,25 +29,15 @@ asd - + asd asd - - - dasd - - - asdaa - - - - asdasd - + asd @@ -68,19 +58,19 @@ 13:00 - 15 + 1 2024-06-17 - asd + asdsss asdtest - + asd @@ -131,7 +121,7 @@ asdtest - + asd @@ -155,6 +145,211 @@ + + + + 1.0 + + + Max + + + 12:00 + + + 13:00 + + + 2 + + + 2024-06-20 + + + t + + + Max + + + + + asd + + + asd + + + asd + + + + + + + + + 1.0 + + + Max + + + 12:00 + + + 13:00 + + + 2 + + + 2024-06-20 + + + t + + + Max2 + + + + + asd + + + asd + + + asd + + + + + + + + + 1.0 + + + asd + + + 12:00 + + + 13:00 + + + 2 + + + 2024-06-20 + + + asd + + + asd22222 + + + + + asd + + + asd + + + asd + + + + + + + + + 1.0 + + + asd + + + 12:00 + + + 13:00 + + + 2 + + + 2024-06-20 + + + asd + + + 5 + + + + + asd + + + asd + + + asd + + + + + + + + + 1.0 + + + rr + + + 14:00 + + + 15:00 + + + 2 + + + 2024-06-20 + + + asd + + + rrr + + + + + asd + + + asd + + + asd + + + + + diff --git a/pilots.xml b/pilots.xml index 3c70075..3df3301 100644 --- a/pilots.xml +++ b/pilots.xml @@ -15,42 +15,6 @@ - - - - asd - - - asd - - - - dasd - - - - asdaa - - - - asdasd - - - - - - - - s - - - d - - - a - - - diff --git a/src/controllers/AddFlightController.java b/src/controllers/AddFlightController.java index 2fa5518..67b6390 100644 --- a/src/controllers/AddFlightController.java +++ b/src/controllers/AddFlightController.java @@ -3,13 +3,12 @@ package controllers; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.scene.control.*; -import javafx.stage.Stage; import models.Flight; import models.Flights; import models.Pilot; import models.Pilots; import utils.XMLHelper; -import views.HomeScreen; + import java.time.Duration; import java.time.LocalTime; @@ -20,11 +19,10 @@ import java.util.List; public class AddFlightController { private Flights flights; - private Stage stage; + private DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm"); - public AddFlightController(Stage stage) { - this.stage = stage; + public AddFlightController() { loadFlights(); } @@ -38,44 +36,6 @@ public class AddFlightController { return pilotList; } - public void saveFlight(Flight newFlight, DatePicker datumField, TextField musterField, TextField abflugortField, - TextField abflugzeitField, TextField ankunftszeitField, TextField tToFField, TextField anzahlLandungenField, - ComboBox pilotComboBox, CheckBox nachtflugBox, TextField kommentarField) { - try { - double flightDuration = Double.parseDouble(tToFField.getText().replace(',', '.')); - int landings = Integer.parseInt(anzahlLandungenField.getText()); - boolean isNachtflug = nachtflugBox.isSelected(); - - newFlight.setDatum(datumField.getValue()); - newFlight.setMuster(musterField.getText()); - newFlight.setAbflugort(abflugortField.getText()); - newFlight.setAbflugzeit(abflugzeitField.getText()); - newFlight.setAnkunftszeit(ankunftszeitField.getText()); - newFlight.setTToF(flightDuration); - newFlight.setAnzahlLandungen(landings); - newFlight.setPilot(pilotComboBox.getValue()); - newFlight.setNachtflug(isNachtflug); - newFlight.setKommentar(kommentarField.getText()); - newFlight.setDatumStr(datumField.getValue().format(DateTimeFormatter.ISO_LOCAL_DATE)); - - Flights flights = (Flights) XMLHelper.loadFromXML("flights.xml"); - if (flights == null) { - flights = new Flights(new ArrayList<>()); - } - flights.getFlights().add(newFlight); - XMLHelper.saveToXML(flights, "flights.xml"); - - new HomeScreen(stage).display(); - } catch (NumberFormatException e) { - showAlert("Ungültige Eingabe", "Bitte stellen Sie sicher, dass die Flugdauer und die Anzahl der Landungen numerisch sind."); - } catch (IllegalArgumentException e) { - showAlert("Fehlende Eingabe", e.getMessage()); - } catch (Exception e) { - showAlert("Fehler", "Es ist ein Fehler beim Speichern des Flugs aufgetreten."); - e.printStackTrace(); - } - } - public void saveFlight(Flight flight){ if(flights == null){ flights = new Flights(new ArrayList<>()); diff --git a/src/controllers/DeletePilotController.java b/src/controllers/DeletePilotController.java index daf9b4f..ef19ec0 100644 --- a/src/controllers/DeletePilotController.java +++ b/src/controllers/DeletePilotController.java @@ -27,13 +27,9 @@ public class DeletePilotController { public boolean deletePilot(Pilot pilot) { if (pilot != null) { - // Create a new list to avoid modifying the observable list directly List updatedList = new java.util.ArrayList<>(pilotsList); - // Remove the selected pilot from the list updatedList.remove(pilot); - // Save the updated list back to the XML file XMLHelper.saveToXML(new Pilots(updatedList), "pilots.xml"); - // Reload the pilots list to update the observable list loadPilots(); return true; } diff --git a/src/controllers/LogbookController.java b/src/controllers/LogbookController.java index 797509d..363c064 100644 --- a/src/controllers/LogbookController.java +++ b/src/controllers/LogbookController.java @@ -6,8 +6,7 @@ import javafx.stage.Stage; import models.Flight; import models.Flights; import utils.XMLHelper; -import views.HomeScreen; -import views.ViewLogbookScreen; +import views.HomeScreenView; public class LogbookController { private Stage stage; @@ -31,12 +30,6 @@ public class LogbookController { } } - /* public void editFlight(Flight flight) { - if (flight != null) { - new EditFlightScreen(stage, flight, this).display(); - } - } */ - public void updateFlight(Flight updatedFlight) { for (int i = 0; i < flightList.size(); i++) { if (flightList.get(i).getId().equals(updatedFlight.getId())) { @@ -53,6 +46,6 @@ public class LogbookController { } public void goBack() { - new HomeScreen(stage).display(); + new HomeScreenView(stage).display(); } } diff --git a/src/models/Flight.java b/src/models/Flight.java index b7bd469..2564a34 100644 --- a/src/models/Flight.java +++ b/src/models/Flight.java @@ -1,8 +1,5 @@ package models; -import java.io.IOException; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; import java.io.Serializable; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -12,9 +9,9 @@ import javafx.beans.property.*; public class Flight implements Serializable { private static final long serialVersionUID = 1L; - private String id; // Neue ID für jeden Flug - private String datumStr; // String zur Speicherung des Datums in XML - private transient ObjectProperty datum; // transient, um die direkte Serialization zu vermeiden + private String id; + private String datumStr; + private transient ObjectProperty datum; private StringProperty muster; private StringProperty abflugort; private StringProperty abflugzeit; @@ -27,9 +24,8 @@ public class Flight implements Serializable { private static final DateTimeFormatter formatter = DateTimeFormatter.ISO_LOCAL_DATE; - // Standardkonstruktor public Flight() { - this.id = UUID.randomUUID().toString(); // Generiere eine eindeutige ID + this.id = UUID.randomUUID().toString(); this.datum = new SimpleObjectProperty<>(); this.muster = new SimpleStringProperty(); this.abflugort = new SimpleStringProperty(); @@ -42,8 +38,6 @@ public class Flight implements Serializable { this.kommentar = new SimpleStringProperty(); } - // Getter und Setter Methoden - public String getId() { return id; } @@ -63,7 +57,8 @@ public class Flight implements Serializable { public void setDatumStr(String datumStr) { this.datumStr = datumStr; - this.datum = datumStr != null ? new SimpleObjectProperty<>(LocalDate.parse(datumStr, formatter)) : new SimpleObjectProperty<>(); + this.datum = datumStr != null ? new SimpleObjectProperty<>(LocalDate.parse(datumStr, formatter)) + : new SimpleObjectProperty<>(); } public ObjectProperty datumProperty() { @@ -181,21 +176,11 @@ public class Flight implements Serializable { public String getPilotInformationen() { Pilot pilot = getPilot(); if (pilot != null) { - return "Name: " + pilot.getName() + ", Adresse: " + pilot.getAdresse() + ", Kontaktinformationen: " + pilot.getKontaktinformationen(); + return "Name: " + pilot.getName() + ", Adresse: " + pilot.getAdresse() + ", Kontaktinformationen: " + + pilot.getKontaktinformationen(); } return "Keine Pilotinformationen verfügbar"; } - // Custom Serialization - private void writeObject(ObjectOutputStream oos) throws IOException { - oos.defaultWriteObject(); - oos.writeObject(datumStr); - } - - // Custom Deserialization - private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { - ois.defaultReadObject(); - datumStr = (String) ois.readObject(); - datum = datumStr != null ? new SimpleObjectProperty<>(LocalDate.parse(datumStr, formatter)) : new SimpleObjectProperty<>(); - } + } diff --git a/src/models/Pilot.java b/src/models/Pilot.java index 8a6281c..0be0001 100644 --- a/src/models/Pilot.java +++ b/src/models/Pilot.java @@ -15,7 +15,7 @@ public class Pilot implements Serializable { private List lizenzen; private List zertifikate; - // Standardkonstruktor + public Pilot() { this.name = new SimpleStringProperty(); this.adresse = new SimpleStringProperty(); diff --git a/src/program/Main.java b/src/program/Main.java index 1045456..320c5b4 100644 --- a/src/program/Main.java +++ b/src/program/Main.java @@ -2,12 +2,12 @@ package program; import javafx.application.Application; import javafx.stage.Stage; -import views.HomeScreen; +import views.HomeScreenView; public class Main extends Application { @Override public void start(Stage primaryStage) { - HomeScreen homeScreen = new HomeScreen(primaryStage); + HomeScreenView homeScreen = new HomeScreenView(primaryStage); homeScreen.display(); } @@ -15,3 +15,4 @@ public class Main extends Application { launch(args); } } + diff --git a/src/utils/XMLHelper.java b/src/utils/XMLHelper.java index 9c6c66d..71cf133 100644 --- a/src/utils/XMLHelper.java +++ b/src/utils/XMLHelper.java @@ -4,22 +4,9 @@ import java.beans.XMLDecoder; import java.beans.XMLEncoder; import java.io.*; -import models.Flight; -import models.Flights; - public class XMLHelper { - private static final String FLIGHTS_XML = "flights.xml"; - - /* public static Flights loadFlights() { - // Implement loading flights from XML - return (Flights) loadFromXML(FLIGHTS_XML); - } - - public static void saveFlights(Flights flights) { - saveToXML(flights, FLIGHTS_XML); - } */ - + public static void saveToXML(Object obj, String filePath) { try (XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(new FileOutputStream(filePath)))) { encoder.writeObject(obj); diff --git a/src/views/AddFlightScreen.java b/src/views/AddFlightView.java similarity index 88% rename from src/views/AddFlightScreen.java rename to src/views/AddFlightView.java index 6c144cc..e1841d4 100644 --- a/src/views/AddFlightScreen.java +++ b/src/views/AddFlightView.java @@ -11,15 +11,14 @@ import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; import models.Flight; -import models.Flights; import models.Pilot; -import utils.XMLHelper; + import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -public class AddFlightScreen { + +public class AddFlightView { private Stage stage; private AddFlightController controller; private Flight flight; @@ -35,10 +34,10 @@ public class AddFlightScreen { private TextField kommentarField; private ComboBox pilotComboBox; - public AddFlightScreen(Stage stage, Flight flight) { + public AddFlightView(Stage stage, Flight flight) { this.stage = stage; this.flight = flight; - this.controller = new AddFlightController(stage); + this.controller = new AddFlightController(); } public void display() { @@ -67,8 +66,8 @@ public class AddFlightScreen { Label tToFLabel = new Label("Flugdauer (Stunden):"); tToFField = new TextField(); tToFField.setPromptText("Flugdauer (Stunden)"); - tToFField.setEditable(false); // Make the field read-only - tToFField.setStyle("-fx-control-inner-background: #E0E0E0;"); // Gray out the field + tToFField.setEditable(false); + tToFField.setStyle("-fx-control-inner-background: #E0E0E0;"); Label anzahlLandungenLabel = new Label("Anzahl der Landungen:"); anzahlLandungenField = new TextField(); @@ -87,14 +86,13 @@ public class AddFlightScreen { Button saveBtn = new Button("Speichern"); - saveBtn.setOnAction(e -> saveFlight(flight, datumField, musterField, abflugortField, abflugzeitField, - ankunftszeitField, tToFField, anzahlLandungenField, pilotComboBox, nachtflugBox, kommentarField));//todo: saveFlight in Controller + saveBtn.setOnAction(e -> saveFlight()); Button backButton = new Button("Zurück"); backButton.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;"); - backButton.setOnAction(e -> new HomeScreen(stage).display()); + backButton.setOnAction(e -> new HomeScreenView(stage).display()); - // Add listeners to the time fields to update the flight duration automatically + abflugzeitField.textProperty().addListener((observable, oldValue, newValue) -> updateFlightDuration(abflugzeitField, ankunftszeitField, tToFField)); ankunftszeitField.textProperty().addListener((observable, oldValue, newValue) -> updateFlightDuration(abflugzeitField, ankunftszeitField, tToFField)); @@ -177,10 +175,9 @@ public class AddFlightScreen { pilotComboBox.setValue(flight.getPilot()); } - private void saveFlight(Flight newFlight, DatePicker datumField, TextField musterField, TextField abflugortField, - TextField abflugzeitField, TextField ankunftszeitField, TextField tToFField, TextField anzahlLandungenField, - ComboBox pilotComboBox, CheckBox nachtflugBox, TextField kommentarField) { + private void saveFlight() { try { + Flight newFlight = (flight != null) ? flight : new Flight(); double flightDuration = Double.parseDouble(tToFField.getText().replace(',', '.')); int landings = Integer.parseInt(anzahlLandungenField.getText()); boolean isNachtflug = nachtflugBox.isSelected(); @@ -199,7 +196,7 @@ public class AddFlightScreen { controller.saveFlight(newFlight); - new HomeScreen(stage).display(); + new HomeScreenView(stage).display(); } catch (NumberFormatException e) { showAlert("Ungültige Eingabe", "Bitte stellen Sie sicher, dass die Flugdauer und die Anzahl der Landungen numerisch sind."); } catch (IllegalArgumentException e) { @@ -209,6 +206,7 @@ public class AddFlightScreen { e.printStackTrace(); } } + private void showAlert(String title, String message) { Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle(title); diff --git a/src/views/DeletePilotScreen.java b/src/views/DeletePilotView.java similarity index 94% rename from src/views/DeletePilotScreen.java rename to src/views/DeletePilotView.java index 5438e1a..4a8bb2a 100644 --- a/src/views/DeletePilotScreen.java +++ b/src/views/DeletePilotView.java @@ -13,11 +13,11 @@ import javafx.scene.layout.VBox; import javafx.stage.Stage; import models.Pilot; -public class DeletePilotScreen { +public class DeletePilotView { private Stage stage; private DeletePilotController controller; - public DeletePilotScreen(Stage stage) { + public DeletePilotView(Stage stage) { this.stage = stage; this.controller = new DeletePilotController(); } @@ -43,7 +43,7 @@ public class DeletePilotScreen { Button backButton = new Button("Zurück"); backButton.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;"); - backButton.setOnAction(e -> new HomeScreen(stage).display()); + backButton.setOnAction(e -> new HomeScreenView(stage).display()); VBox vbox = new VBox(10, label, pilotComboBox, deleteBtn); vbox.setAlignment(Pos.CENTER); diff --git a/src/views/HelpScreen.java b/src/views/HelpView.java similarity index 90% rename from src/views/HelpScreen.java rename to src/views/HelpView.java index a08459d..84d73b7 100644 --- a/src/views/HelpScreen.java +++ b/src/views/HelpView.java @@ -9,10 +9,10 @@ import javafx.scene.control.TextArea; import javafx.scene.layout.VBox; import javafx.stage.Stage; -public class HelpScreen { +public class HelpView { private Stage stage; - public HelpScreen(Stage stage) { + public HelpView(Stage stage) { this.stage = stage; } @@ -27,7 +27,7 @@ public class HelpScreen { Button backBtn = new Button("Zurück"); - backBtn.setOnAction(e -> new HomeScreen(stage).display()); + backBtn.setOnAction(e -> new HomeScreenView(stage).display()); VBox vbox = new VBox(10, label, helpText, backBtn); vbox.setAlignment(Pos.CENTER); diff --git a/src/views/HomeScreen.java b/src/views/HomeScreenView.java similarity index 85% rename from src/views/HomeScreen.java rename to src/views/HomeScreenView.java index 59b3e8f..3414df4 100644 --- a/src/views/HomeScreen.java +++ b/src/views/HomeScreenView.java @@ -17,10 +17,10 @@ import javafx.stage.Stage; import models.Pilots; import utils.XMLHelper; -public class HomeScreen { +public class HomeScreenView { private Stage stage; - public HomeScreen(Stage stage) { + public HomeScreenView(Stage stage) { this.stage = stage; } @@ -36,15 +36,15 @@ public class HomeScreen { Button helpBtn = createHelpButton("/resources/icons/help_icon.png", "Hilfe anzeigen"); Button editPilotsBtn = createButton("Pilot bearbeiten", "/resources/icons/manage_pilot_icon.png", "Bearbeiten Sie ein Pilotenprofil"); - btn1.setOnAction(e -> new AddFlightScreen(stage, null).display()); - btn2.setOnAction(e -> new ViewLogbookScreen(stage).display()); - btn3.setOnAction(e -> new ManagePilotProfileScreen(stage).display()); - btn4.setOnAction(e -> new DeletePilotScreen(stage).display()); - helpBtn.setOnAction(e -> new HelpScreen(stage).display()); + btn1.setOnAction(e -> new AddFlightView(stage, null).display()); + btn2.setOnAction(e -> new ViewLogbookView(stage).display()); + btn3.setOnAction(e -> new ManagePilotProfileView(stage).display()); + btn4.setOnAction(e -> new DeletePilotView(stage).display()); + helpBtn.setOnAction(e -> new HelpView(stage).display()); editPilotsBtn.setOnAction(e -> { Pilots pilots = (Pilots) XMLHelper.loadFromXML("pilots.xml"); if (pilots != null && !pilots.getPilots().isEmpty()) { - new ManagePilotProfileScreen(stage).displayEditSelection(); // Aufruf mit Pilotenliste + new ManagePilotProfileView(stage).displayEditSelection(); // Aufruf mit Pilotenliste } else { showAlert("Keine Piloten", "Es sind keine Piloten zum Bearbeiten verfügbar."); } @@ -103,9 +103,9 @@ public class HomeScreen { Button button = new Button("", iconView); button.setTooltip(new Tooltip(tooltipText)); button.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;"); - button.setShape(new Circle(25)); // Set button shape to circle - button.setMinSize(50, 50); // Set the min size to ensure it remains circular - button.setMaxSize(50, 50); // Set the max size to ensure it remains circular + button.setShape(new Circle(25)); + button.setMinSize(50, 50); + button.setMaxSize(50, 50); return button; } diff --git a/src/views/ManagePilotProfileScreen.java b/src/views/ManagePilotProfileView.java similarity index 91% rename from src/views/ManagePilotProfileScreen.java rename to src/views/ManagePilotProfileView.java index 0c3c6d2..8db5775 100644 --- a/src/views/ManagePilotProfileScreen.java +++ b/src/views/ManagePilotProfileView.java @@ -6,18 +6,17 @@ import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.layout.BorderPane; -import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; import models.Pilot; import java.util.ArrayList; -public class ManagePilotProfileScreen { +public class ManagePilotProfileView { private Stage stage; private ManagePilotProfileController controller; - public ManagePilotProfileScreen(Stage stage) { + public ManagePilotProfileView(Stage stage) { this.stage = stage; this.controller = new ManagePilotProfileController(); } @@ -43,7 +42,7 @@ public class ManagePilotProfileScreen { }); Button backButton = new Button("Zurück"); - backButton.setOnAction(e -> new HomeScreen(stage).display()); + backButton.setOnAction(e -> new HomeScreenView(stage).display()); VBox vbox = new VBox(10, label, pilotComboBox, selectBtn); vbox.setAlignment(Pos.CENTER); @@ -108,17 +107,20 @@ public class ManagePilotProfileScreen { }); Button saveBtn = new Button("Speichern"); - saveBtn.setOnAction(e -> savePilot(pilot, nameField, adresseField, kontaktinformationenField, lizenzListView, zertifikatListView)); + saveBtn.setOnAction(e -> savePilot(pilot, nameField, adresseField, kontaktinformationenField, lizenzListView, + zertifikatListView)); Button backButton = new Button("Zurück"); - backButton.setOnAction(e -> new HomeScreen(stage).display()); + backButton.setOnAction(e -> new HomeScreenView(stage).display()); VBox lizenzBox = new VBox(10, new Label("Lizenzen"), lizenzListView, lizenzField, addLizenzButton); lizenzBox.setAlignment(Pos.CENTER); - VBox zertifikatBox = new VBox(10, new Label("Zertifikate"), zertifikatListView, zertifikatField, addZertifikatButton); + VBox zertifikatBox = new VBox(10, new Label("Zertifikate"), zertifikatListView, zertifikatField, + addZertifikatButton); zertifikatBox.setAlignment(Pos.CENTER); - VBox vbox = new VBox(10, label, nameField, adresseField, kontaktinformationenField, lizenzBox, zertifikatBox, saveBtn); + VBox vbox = new VBox(10, label, nameField, adresseField, kontaktinformationenField, lizenzBox, zertifikatBox, + saveBtn); vbox.setAlignment(Pos.CENTER); vbox.setPadding(new Insets(20)); @@ -135,8 +137,9 @@ public class ManagePilotProfileScreen { stage.show(); } - private void savePilot(Pilot pilot, TextField nameField, TextField adresseField, TextField kontaktinformationenField, - ListView lizenzListView, ListView zertifikatListView) { + private void savePilot(Pilot pilot, TextField nameField, TextField adresseField, + TextField kontaktinformationenField, + ListView lizenzListView, ListView zertifikatListView) { clearFieldStyles(nameField, adresseField, kontaktinformationenField); try { @@ -166,7 +169,7 @@ public class ManagePilotProfileScreen { controller.savePilot(pilot); - new HomeScreen(stage).display(); + new HomeScreenView(stage).display(); } catch (IllegalArgumentException e) { showAlert("Fehlende Eingabe", e.getMessage()); } catch (Exception e) { diff --git a/src/views/ViewLogbookScreen.java b/src/views/ViewLogbookView.java similarity index 85% rename from src/views/ViewLogbookScreen.java rename to src/views/ViewLogbookView.java index 2a2623b..4b7e2d6 100644 --- a/src/views/ViewLogbookScreen.java +++ b/src/views/ViewLogbookView.java @@ -1,6 +1,5 @@ package views; -import controllers.AddFlightController; import controllers.LogbookController; import javafx.beans.property.SimpleStringProperty; import javafx.collections.ObservableList; @@ -8,7 +7,7 @@ import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; import javafx.scene.control.*; -import javafx.scene.layout.BorderPane; + import javafx.scene.layout.VBox; import javafx.stage.Stage; import models.Flight; @@ -16,16 +15,16 @@ import models.Flight; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -public class ViewLogbookScreen { +public class ViewLogbookView { private Stage stage; private LogbookController controller; - private AddFlightController addFlightController; - public ViewLogbookScreen(Stage stage) { + public ViewLogbookView(Stage stage) { this.stage = stage; this.controller = new LogbookController(stage); } + @SuppressWarnings("unchecked") public void display() { Label label = new Label("Fluglogbuch Pegasus"); label.setStyle( @@ -74,23 +73,12 @@ public class ViewLogbookScreen { ObservableList flightList = controller.getFlightList(); table.setItems(flightList); - /* - * Button editBtn = new Button("Bearbeiten"); - * editBtn. - * setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;" - * ); - * editBtn.setOnAction(e -> { - * Flight selectedFlight = table.getSelectionModel().getSelectedItem(); - * controller.editFlight(selectedFlight); - * }); - */ - Button editBtn = new Button("Bearbeiten"); editBtn.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;"); editBtn.setOnAction(e -> { Flight selectedFlight = table.getSelectionModel().getSelectedItem(); if (selectedFlight != null) { - AddFlightScreen addFlightScreen = new AddFlightScreen(stage, selectedFlight); + AddFlightView addFlightScreen = new AddFlightView(stage, selectedFlight); addFlightScreen.display(); } });