From 537aa94d5431e97dd17bb54f9cc1354f5d2d908f Mon Sep 17 00:00:00 2001 From: Maximilian Date: Tue, 18 Jun 2024 11:57:45 +0200 Subject: [PATCH] Fehler bei XML speicherung angepasst --- Pegasus | 1 + bin/controllers/AddFlightController.class | Bin 7170 -> 7536 bytes bin/controllers/DeletePilotController.class | Bin 0 -> 1738 bytes bin/controllers/FlightController.class | Bin 2533 -> 0 bytes bin/controllers/LogbookController.class | Bin 2505 -> 2142 bytes .../ManagePilotProfileController.class | Bin 0 -> 2059 bytes bin/controllers/PilotController.class | Bin 925 -> 0 bytes bin/models/Flight.class | Bin 7668 -> 7373 bytes bin/models/Flights.class | Bin 892 -> 1528 bytes bin/utils/XMLHelper.class | Bin 2345 -> 2408 bytes bin/views/AddFlightScreen.class | Bin 9292 -> 11965 bytes bin/views/DeletePilotScreen.class | Bin 5426 -> 5010 bytes bin/views/EditFlightScreen.class | Bin 11042 -> 0 bytes bin/views/FlightView.class | Bin 2577 -> 0 bytes bin/views/HomeScreen.class | Bin 7908 -> 7933 bytes bin/views/ManagePilotProfileScreen.class | Bin 10949 -> 10568 bytes bin/views/PilotView.class | Bin 5373 -> 0 bytes bin/views/ViewLogbookScreen.class | Bin 8826 -> 9039 bytes flights.xml | 186 +++++++----------- pilots.xml | 58 ++---- src/controllers/AddFlightController.java | 34 +++- src/controllers/DeletePilotController.java | 42 ++++ src/controllers/FlightController.java | 46 ----- src/controllers/LogbookController.java | 41 ++-- .../ManagePilotProfileController.java | 56 ++++++ src/controllers/PilotController.java | 26 --- src/models/Flight.java | 39 ++-- src/models/Flights.java | 18 +- src/utils/XMLHelper.java | 14 ++ src/views/AddFlightScreen.java | 108 ++++++++-- src/views/DeletePilotScreen.java | 21 +- src/views/EditFlightScreen.java | 178 ----------------- src/views/FlightView.java | 27 --- src/views/HomeScreen.java | 4 +- src/views/ManagePilotProfileScreen.java | 94 +++++---- src/views/PilotView.java | 83 -------- src/views/ViewLogbookScreen.java | 24 ++- 37 files changed, 446 insertions(+), 654 deletions(-) create mode 160000 Pegasus create mode 100644 bin/controllers/DeletePilotController.class delete mode 100644 bin/controllers/FlightController.class create mode 100644 bin/controllers/ManagePilotProfileController.class delete mode 100644 bin/controllers/PilotController.class delete mode 100644 bin/views/EditFlightScreen.class delete mode 100644 bin/views/FlightView.class delete mode 100644 bin/views/PilotView.class create mode 100644 src/controllers/DeletePilotController.java delete mode 100644 src/controllers/FlightController.java create mode 100644 src/controllers/ManagePilotProfileController.java delete mode 100644 src/controllers/PilotController.java delete mode 100644 src/views/EditFlightScreen.java delete mode 100644 src/views/FlightView.java delete mode 100644 src/views/PilotView.java diff --git a/Pegasus b/Pegasus new file mode 160000 index 0000000..489ea74 --- /dev/null +++ b/Pegasus @@ -0,0 +1 @@ +Subproject commit 489ea74b7a7a3b9f156fd899a1015e63e77b4f2f diff --git a/bin/controllers/AddFlightController.class b/bin/controllers/AddFlightController.class index d83822d6ee25a72c83729f8b731ba622e839d114..d8dc47d12ebeceb64fcde57ded7109a7475a6b13 100644 GIT binary patch delta 3592 zcma)9d3aRS75|-?$-G%^Cdp)hAq0j%NXR4vSptMDkt8IN1(T2vL}8LV!r&x>vmoFy zN^NUxYsJ^rYHQUlq5^e6UJ|LAZm!j;-K={zYVBrQTT)x3=iZqR{rXS8FM03Wd(J)U z@0|PQ;EH!^T+e*)$YTKNXvZPf8soC8qC*=F7H0{#kxj6cE$DW@OUP(ysu>z`ArA!_ z@(IPpCa=$ECufGhG)y)8$7VaAgyRZn0HJnGt zO2k9qSk;!+mL@&CM~@0D!BXRxWo2PCA#*4)pfh)qI_SbOtPog<8iTBJ?W?g?!y2R9 zI^VhuwZ}WHuUnn%xKP6;cGjrN%{RtvGN=x88r!tFvo@ngLpLFNcW`g8DjXahtm=$M zL&JjtThMFVu9eKX2p4PE_7Rc#NP+_qxCGmcx3n^Q5d9kZ43DG0Isn}$b(A;<5z?@W zP{c+Hj5{;5xdOX!DF+;ib?RZgKduj`0&I0*2oVj#gxSi$J8Uj?a1Sms#vJn~X1w8; zUYNk;8um`bo=UaAKI}JgoMny#t`N8qR~dEA`N;&50@vUwf{5wyy1t#^#9$;EcOij; z0w0r%%yWzbdPs3TF7OG-$&#GmOB2I8q*>SS0OBSS;_a6A}wGHCA1ymx;IP0wQh}Sjtq;Z%LtJYI?&FP}DeOuZYBIgYVTBP1 z&8l-4cHtPZTsVRUWlKF|Yfo%LEV9$6YS~;r{@<&Pv+|CSMj=r*Cvyo8l_=hzrH6PiVO?9Asxxu!;KT~ zj0gKK?TQBbbq#MFe>(FXGH%Seb+Nas>gx8s z-Q07=3zobkQq&_Ti`ZvdEObCueb~&ZQYc_oQbfZ(u1}0WA)_R_BZH>1QXY(@b6qrp zW@=P8nT~j9NUv&%^asOTObIHYS;iCDJN$ks)@TlQhw?*7)hD7sl{1=4^Nhxv?G8W9 z7gS1R$B*T3238pNdkgI~v|6K8#tYs#)-~MK?|GM6HL5cX<<54lrv{Dc3G>vjcs@7B z(?}b5f;V(@w098Z8*}pJyIfRD&5RVfz$nUF*ilO@f?6f=9kPW(@vtr>+68Trn{pa7 z>A?X#+NJM{OHPNNPRa2wXMJQi&Yd>N+AOG>dW_rijwY?J$m;R+Vv!eudh->*Z&_M~ zDL*rLbrJI|{GL`m0#CU&XB4?7;42TDKw-Iwq6gJMKR*jt9WVnnOy`4z@M0$K6=9Cz zDHSNjTwbvZRbwSxPl!o>2nK;;-# zSN*}@z{dF=7rpR;HGG**zrvM!8_jr!YxXxT(rL6RD2yYQ?M@&$3B?Kg62Ia)%FSQnH(X0e{T8QG z3={YrQxc66tnQS8_ym5>l1bO3B1c(HwQa{ zzp^_5g-O19{*L$H;mGgCKk!dvaZJ^!C9^pS2YWohg0Jwg)A$!t?=ZMd<9((iLS=iV zjQyL9NnGwm##v5Bwg%FW&@iN-{eS*$(lE%IR!Xwa5#TI$iuiv{NTqMKXn2WrzUoo9 z{|`SI?<8*lnW1YKFK3=ae!0Zg6ueI0jCGB5?O`mJdbvvfs+{ zCCv?tk<*GE+nU2DxXwyN>HRUvB;0lO@tLiZpKXyx9b+PA=%5U%^1MN46RGB7eOS^_n~QVO?p~zT$G~_QV5;ATqp|l2LBKNbHMaAJ!Ak?|SI~liw%Dts2HRs$brT|qaG!#=MQx=x?(L$=?v$@Ek zMNCOI&ZEVtf+5T@JpTbt$`|tW*p9YZk18cjzIdjk)9B@cU~wmZ<+{231R}}>zj8}L zH#N>Zv_!ceSn+9E%1;SMJ7}ZEx`>uhb=q_-^JIrPl7U=WZqmxB`@^LeajscH8Id!X z1g>-i?%UhDfWzh3Qg delta 3178 zcmai0d3aP;75|;t-ptEQGBa7o07)hxp&^qYtRW;oNeLl963~Pt6bh5%B^j8^gqaBf zq9a&qZE;DTTDRI36{yk$D3d@cqSdw*skJI17SXzO(TWu{YFm2lo3MTU;rGq=-nr-8 zdw##O-1FvA&7NxY`FBs81W-rI2G#k4U3-et1supAn9HWDw!=xVHa6Du^{H?pTR|3~ zSl{aM3_j+t3gjSHucYP9JOKrE2MFT@tgz|(=!~rdlNFTe1Ex~*E%53OnDYEn2x@;Y z6p6>CZtn}J@WHR3f{-~74~AluYnz)IwNSqn6_|=j{T0*P3DXJbeUUDWtt*X#DyCtk zz%0zxtIU&Zb1+vywZ73j*<6F#qj#Gxm>tW|q+mIrK;NBFz$}~5q7N#Q3RdF%3f@O> zZVqecwI+#XrLz&jY}^d68Nw*q+c`a)PjcPBLcgnB~x0$ zTL!}2@z_<{M+NT0#|R4B+S(!w1WQ@{l-1JV#|7@jCkSri*v>$2s7arox*Ye)824Vy z#xhkM|0$+(V^!tp&j<|SK0T}!t?$QY1wMz*r%1O1I(y@iw}e`kg8G8M7q14jJkr;v zh2w#!gIn~=0$+ihkg>FN#m1%;i|U#-*4MQyR?&yA3OtC1^f%Oo1^w73@HOcmjk$7K z2l}`Z?Dz&Nx{Y)i4XWS(dm1B}N^?xXBYGq)Z|y;(tJsf2^0qw6r7CMOiX|JlvMCsg z*Gi)M@wmVfn9Zf{(c)ts(r^S%DmconZ$2V$3`zZBn%C~bu)uMg&=pZlPw5Lq&YTgP zlu)XQ5u6hEuDqg3S1{He3hc1sY0mnpaL?0Eh2p^;&AXVJI?$on@dJIY*kpTF;5qzI ze@j#sp61?e(0W5!xa-+Nl|XrVzEFEJ9>#=GtP0Aex~nD zpJzLZa|(W;zmT4n_e)78v!Ab0yfq%^+|m{ebZQEIb@bizgEY7#-$ojts7a@cLj81R zT%YJ#X~H{t*yU4jg-9Xj54rNpCNk?Iu1z*8DGJ&2BKJ76og8|td!yY-X@Uf$AKm9B zD$OV4`n$LLJ0j68E$Z)#gd))zZ&d55RjH7Q6!H=#8W-w9mcv}kSK+m+S$Q0JXGjY~ z8-iM>t2MqOq{TSmvfK6DS>ALGuUqO_RVXzDHigO*^6B2}LWiF!6`D#Y(GO>rSOra^ z>H5~}nWCI{5;`^r{wAzvNPw&!c#d_37R7t%r5UqFdovRa;~5nsgzf)Q428n zHf?)cTILCw&pcf@S@v?eRnS7J(<^cgB}_2MfyxuwBu6a2?L1|<5BQnJt5(*V_?=Zg z1X1qJ9ER%{#+Cby!E@L+G=ZOPSorDT=QyNeJg+BUB5QI}N0E;LUa=Dcir94_ylg8% zLgE%1NRO~2-FSyFsmWb7jPg^M)?D!noE1sTXz}@vqsoLez9)E(g#o}ol6L{G3K`Z5 z7dy;lZv`kZ;LB6~#^5cin}_)fp3X!T;8w=VO>npiQ3o?_V^@-IYTF{-mTTDR*|wN% zX`pvdpkR)|9|%GNmhk2xHki;T`I}zmqb^>LdXyxVIxC!0lUOl~Rda>M&Wd5&UX|fd zlL%C0`Z%JVQ|L<~5%Kxin8bk3V=;ssK9AK9cKJLuLrD1YL=t;^IT=aZmt-*bOIiDwR=ST3ITFqt12Yqwng#QjrV zNafEDbE?3T;55z~?{j?b<@!~e<=n`MMUA@nI8PP4_MuOT*g0m<9R-I8UJMIb#B+o9EUJER50fh*eHX^zT6D!6;6j!0V(KL(5qnC z|NQP%(7{SG&qBt<6-vjB?)t5OaX4U4xU{B9*SKzgyg*zl9z6wGDdO1N(l*^iiufW;WXG} zU(gf|O+Hyc^4mT}Y8OKpGkS!|+mBGi5Y1@u`;s)<&z!3L6-lb~CuzZ&>#?V1bPwma zmm56D|L8aK+}^_ELXunqZXVJcFWoj)b1yA2YMzE1s;9*aZK4K_)C7@B0qoH ImM-+X2Li!_P5=M^ diff --git a/bin/controllers/DeletePilotController.class b/bin/controllers/DeletePilotController.class new file mode 100644 index 0000000000000000000000000000000000000000..e2997b8199cbe281cc3a864f1c4188aaad83f1f9 GIT binary patch literal 1738 zcma)6TXWM!7(Ht{2rEi3fkF}jBn|;zl8Ad-9Igp27a5od6QFO3vrPrE<&oqJ{Eoi& zwJ$uhGcDmV!|>FH{w9Xu?8>oYNGFVEB=4v1JA1yf=iC22y?qbhI_?`t2~5?4W*i2- zFT==QlD>@P1J4iQ#ctR@Mj-dp-EeK+ZLZt*SD(syEMT@&UgUTY7t@YP_~p4>S5WoX z3z`u#BN=YEtG-l86@l!sx88K)b|?kT?Ow6qG=eqhN492Exk7|J3trQUuLz_I#T9|f zA`?ucF=QbN(}ci23ptpi=LhbZE{qs-yr#U@Zmi1iq2ePj;skZqUvWcEtvkU?{Hw?8 zX=hhaNM&eU#tD8R!AzmJdrPdl@GW^?wVq{bV-^OmXD^O)#h-uP@J$@WaRbNLWjpq$ z*5jIUOZqJtTA0L?z@Sp18U_u15I9-TER(Zbjzh1xUP*{=Ki-OgX|}js|HwohGZs$b z6i>3-Jf-Y3WUK9Mebfeu0td8bbnto@x-Zlh69o*Jn8mz-If2O?TvL6#*z=GD8>a~s zbgk5d5~y@q(OdM2I_>Oc#*TlN+}KqH>1&n8l-2f5jy9J_*6UB;P``g(w6;7n`9-{f@FwNn4yX^bxT0+KlZ9KjO>H7~Lp}_&pHA(7wu8es ztOHt6_S)YI4ccz4xv^YJIyaYtc378HPmSsLj#tvWQVUZYi8QY=fs~pHz74KY*ozGR z^E%*jkdX@Cg70i;6ISUJhX2xO`}rK!0K+WU$Fdwo7_*XO9Kb=YC>IV9G=V;>0qqXp zKILx+2F@Z6hz_{LMG6Cysl;yWGILoajn0XH8x!DEQsh*O^MMl2Y zk<>>VG?1?v^oYPEEt4YnI}sJZIr1tgLaNJ6EYxPpZ*Vn*NAHk-GP{XI)j(D0nR%Ih z$%2IFF)h_mu8vdCDbk(B41Yyl9A%nTsgsbN>yYMFxP!YSk;4%)yNYeW*i+YjLz@_{5Adp@wqqKG(rn>rklI>o^zh(Jm;LdfB*aEQvlboWgsSS zyzIH5?>Ub2gWSAhZ)}D$%^d@Afu6h8H&)KE+>P8y>8>n?0$rh9lk=Wmv%*mN0;d%L73T2_yYD%E}itXCrRe`pV(V{?n#;eE_+R$mjKt~6<1QH7ileJn3hj7?H zk3ikegUs61Qut`FZ(uUAkpC z^*Rc+%G^YlO5rR<44k8edjxhBFfocT0iz_t`%+Sn)rf)ar%=|mJl}G1g=o=A?D6dtjI`xfjrOh7ieX#@rrsdwNyVWpg z*d&6`@@d=OqRd{>j4$1aK&KrPEyu1Xt!djT?{05?%4ty93JCtU=J4D&{lBhktFC-# zmG3QCTTwf91u~rTeb3K_4^+>dY`|5wb3s|UG8c7eE*kQw(P9Ut1qQO!?QF^OE7H%F zJ;(DW)4r@wxDPOEV21aEs@p+POw3_kpo7>E?7mrY<`Y$0I@DxXD|S#k=G9Ynq~*^m zYaNo+%8cB3xtF?B+BE>JPrSm|z#^L=*!1pS=iSF5zUCMf4SXbUY+pHaq$KkA*g%2T z;=x9zwQ1qO7N@U>bqX`Lwzje+aCZL`wfUYC3$u#b>e^)Ij2=+p=Y2+t%Ih-|pYIl{ zV22KG;8lES;w!bOx@SRJ?1F;a4%JD?L|L75^F;NGbi>^vQmsPjr>PUa2Q zmHv!l1%aCEWK&<9;xN&LP8{W)+3>&{7~~t<0dLa!IM;E$4e7WKxlV8=Gd}h^jy%DM<%wu98P5*J zpWw_6#(zA5oc9Z@TCon%zXyFdtg$XOqC{AXhqrJ+<7eErYQH-pADl`5Mn+JTu07ukGOao~S9kJxr$)8e*Vf)`T$dAr=_qJKVs{ zDA*6QQRPdI-=0i7y%cY|`ZIb46GIo4CIo|j-zJ9o<3Bz7N1?PPl%bHPm{x{ZXIc_U zH__6#g+-zqrql|zkq|jOqXz8;gn=ap{nVvj#!AHLA(515>A$dg`!}pT#wW|!@g3aB zlF}F1i5*zk9aPr$GC!ts7@@$UEb UEUjvt8eIOS$SKc}^`-~^15`6+s{jB1 diff --git a/bin/controllers/LogbookController.class b/bin/controllers/LogbookController.class index 73380b285ee19077d35f274b5f40be55c87590c6..bb6b17c1d5d9d847eb765d6c8f85cdccd1887675 100644 GIT binary patch literal 2142 zcma)7T~ixn7(JT+TbAW3DOCAJZ1bgTwY0Vdun*o@du&`utcY|%O{S#h# z#Z0es#`0ljoL+g+pX7AZ^X_gSu}pQCY~H;4KIb{ldCv3l?62Q`2QUXqMnuAJ*{*ty zZCQrnY6ZKpZreM#(=8b-5_-1veOU!+EQWBu=Wf`#bsQn z3*p$id?DdVplx7>qUV^^N;aV0=#Z?8q=c@f9=QqP{u>qFLg&RJGOXIZ zxfACU*icE`?z~9aD)u~kE`zf6?3>2-uC{3J8pX0>7*z#jY>M=%SZ%2=MJe)z>F!zj z1Dd~R*PODkV2XRB|Ak9;Qdk1xR3XZXI>J9*P5z4W%iVT=t#FUS36;-I?kxK!fv)rs zKbgnqO&=oui+{GC&lpl0CV+)j+M3}CfoUh{s6TU-)c0`_IP)0(Oa}&2h z9*+nugv~`~4xoujhEDKq1W$4M5c8xne~5)25%b?^-M5H0Hb%IYM{Pg!T zs=Io|bA)#*kYeF!jPi=(CCA$%#nII;kE=e{u^{cK(mCA08c9Vkjk~zVZ^60)Ezi*^ zB_n@Q%ZQkQkoOA1MXTaZkhm+D9N~*XMu_?KS(m%~9M>2+#U5X8&?p|}75@bSjU=p} og3mBcG_Lyz$^yLi2*x2QXTXY|`zGyitD(=`A*h6H21l^-4<*3oB>(^b literal 2505 zcma)7Yf~Fl7=BKGE`%-6(9nXVgkDLw#9qCmtp$Wq4MhpkqV=*Qr(xU8F79r)s6WA< z;Y`1(V?(twjx)~q!QbRKK4*6m5~x*}NjC3!&+|U-^IrDPzkm4^z%;(r5EB?KI=1gR zmL**;n|I3Vj`L);Vbahp(D&HbGP0Iom$OUjk7dyp=LS7ebcc$0(sKiGS)4roOq?HV3uveuewCN`rkKhe9s{8+lqpc&vm(kkwd4h@}gKAqArtQd7$j!_D; z@&tPGrY-MPE9=r-QEHKC-YFW^s^OaIcVuk$H%xku4$YIL+L{SZ84dj0<}JuG%7 z&XZ|aWp8SyV#RS0X$@m!T=h-X<-uZpL0X&A)sew?JuTO%@Ic@~SfQ|~3chRFO5*Tvj$>s?^6Cp(p^25iKx++mH|upAJ>Yv- zdE#@*icc1e&8YTqSu&%VDiK-<<DM4?typJD9kl#a$uMb z!Ko{EbS$V|)k>zfX&Jknc#q1>%MEUkPO!eCGp6s$)b{V+(PXCzrc6mTvYnc@s^yeX z^`=zI-_x;#4>!tK9WCR&YlH3p-R_XGLktY&1;SfLa$G;xi4O3Y`0Qr*nbp3Ja>^ zb9})?Ik&vLv`lg9`@lPlyniVd#~RiZr=mc5e~Z2HPI^_{V!%fz3v_zYUom~PDUvUd zGITa|JXX#}>AWC~5|@kI@fD1vqoPhIuCHDL()Q~|j*d-y$w>~XWtZ+7ChIlOGIdLv zYP}m4weRpl7Ky{vW8+k$=LK(&4kN7lsaFU@w0Oa(xC=x2i{Xtsw4vXUE7xK ztYvtfn!K(?H89F{YvXG##(ysQ;E9Wu)~?_=P8(B$&d;N?tOcGxGP8%C%=j}L%REQ_ zGYn>GcHok}18s?v(JCnGZc)x~4MXjxg+Ie2P zKt(T7$uZh9O?r+*)Ch_XvCKd!Jj3w4El_BPa+8RHC%rGQ5`^8uY7GzeOBWBAO`-== z0eq-$Zv-Dxn<>iT8$z`cD)j*^hh3s( zmr3XfRlJHJTw|Q;L99%O*GMG=7hXU&1)onb-b|v3Ek=%Eo3Ufq!7jhm+I-0F{Ob1L EKhk4b&j0`b diff --git a/bin/controllers/ManagePilotProfileController.class b/bin/controllers/ManagePilotProfileController.class new file mode 100644 index 0000000000000000000000000000000000000000..a6583572e84f8d209bf308f033a9dd9c63105dc8 GIT binary patch literal 2059 zcma)7T~ixn6n@?$un;y-A|DMc6{J)6{Jzv!s=^qP}97mb+qG4-8XZsCpGd1TO7qhg!ze%Eipx?LEEV3N-J_a7Umc zU$S;|)5&=Ioh)6mM%i%Z1;WYHxg%yrE+#9*KYwm%~%GWOh%r?Nx&SzVRk9#j9cr8BVjTACbYXN`^X7WEH$Bpw@E`#W*Ha zyoT2W6n4I>mB?=6=AiQ^rZJ=7jRv*(J{505>Pr9OKr=b}?t0+9AhW40+5Mb~dA!A1 zyPC7?HA)R`$*#S^@r#5BGtwO_gz|NXQv+U(!-8xG}o8+v`t8nXxqURt5MjY)N5kOw%-D^VaMPcgrm_{|%N&sMIod<(u? z)2E20PoRFsMF<^ywtE|6h{$VTOpW-l;ampBn59%Kw}@Xker0~B}}ukb0`{hrw)e9!pVCxh%~ z7!p`MM&FGyqy?U1d};Iq6C)>>`W8*2PidYNczph+s8#Rt*yv%MUb1uQMr4|e~jq>V*eTPA&Jb#HQ_<)tvE-{uoA{b zWbPO}--Jbfm6tVvC+ELjeT>e)#K`+0Y{*soqo44JoVP!YDFTy#BYt`0UF0}z4tq7&!(^7>>z{gE8#3`HIve{JpR|>X* z5B>mulz3(m(l!BE*!^zjoNvzTpTEC;131Egi=4oAKZ&z6i6WJbJ0EnEWXJP@3rAq> zEW8LiQ5X+9?|Wyep9!ptl7Wf@N`Vb#xI+QwLaQ$VmB4&wgbzhN(9B ztmtH)^;lph_|JK{rW~uxx^NPXNVU-ju8)73r8*uSHoHFV;l7J)j^8vuVh42rmlRX9 z6I+t%G6#{vTSB!)b9u_>JeGKZU9xh1%IZ(f2Vtg+uRflm>7qdw795vop)IgJ(Btzc z{A!Q%R%M}%XhLP-3XJ3aX);Os>YX+Y))sz*17iYq>3W{OPL2;R!A86SejRo^_|dht-2&G6t`Y!_I~?~QQNk)}tUQ{+uz^ixB(O5VMn)({fxD>B zWRC12fYrZ2i*aK+(`$VecDjIhb_| s?0`IGMQP*Wj7i`rm!INaaoWsD;ww{*XNw!vskC*2N6vZniOk`}KYQ}DH~;_u diff --git a/bin/models/Flight.class b/bin/models/Flight.class index d365ae05afd13df8be5789bea762267ce68290c9..7afafe4b749a8fdf34726a7de8b75e9c5fda5be2 100644 GIT binary patch literal 7373 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 literal 7668 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 diff --git a/bin/models/Flights.class b/bin/models/Flights.class index 2f55ca3fa9075095d828c57f8da3530af4f309f9..68304fbdead9ab35831098e46687ca2c2e200997 100644 GIT binary patch delta 675 zcmZvYPfG$(6vfXSOH)UKL<GiySKfeIj!FJR0Mh$nNSlq8zrSm#rM9W=V z7R^e{Xuo9iLoXtjbzz3!FBh&0##P;_7&)s}S22eu!NKE%pq7)}N}*aZ@+W2Uw4TwA z3C=T{Jlq2&4AiV!lhANzdR8o%R}n*;fhAKq$?82LLbRk}0n1_^xBE7_kRmC$7fEs&3 zAl|~Xf}kCByufr&v80P9`}r2qf` diff --git a/bin/utils/XMLHelper.class b/bin/utils/XMLHelper.class index 4f4f511d47d74537b12b8dc834c67970db1b6b2a..6dcd31a63370687f805ead863f1228a36e7aa9dd 100644 GIT binary patch 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;= delta 1161 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 X7>}>URFB%Oc2EE%t73KDn!rB+I_c0( literal 9292 zcmds6d3apab^o0=qnXk8$&yF1rRN1?V~iHdG8ix(8L+Gc8_OGGWMo6g)6A1JXfz{c zp5z4rVF`paByB=M$QP2fAz!nSh7nj0(n3qqhPJdx+jJx87MgTP3vE+EX@B=EqZwIp zX!-g_Bl~-E-?`_Wd+yoKeZTeAsjmU(mIuSo1k0z>*0DlocPiDNNso@%iDcfgvS9=T zbvKyPW@pCCj&|-JzQIb`f~taTj#`3-0W~*rywiE_OekoVAezi&?R+kivGRho19NX> z8}yV=xFEDWolV=92^w1#qS!hp2=?SsRulo$=%~h0L7=5|uo`4fM-@V0!~|#ml%1kj zh6c4fsur%$5k^E%JCM#=`=%y_t^6T#IKyMb269O=Gic`1>fHkd?Xh%$91bifDIOx6 zN*5+G=7})Y2v+)nNm^N})8ngiz#O(R5u7ck@6Sw)rcB$)He2cJs5NY5<58@}TE*Tv z>cbU;EB1t)Cr(%EUJ4PtJjzapR6>mQOlF8#;%_ZP5OX)A(JeM$~U(p?5S+Z%C>UdKuNn5 zGm5o+I`-oLHzI3&skH5yTd?JbI{Q_E4N8liv2>)fSu5W$Y$nG?^EpzFH=onDS^c9h zw_-yCSJOzM;XL{i0r zq@B)X3ydQLD?hDHKaeiiT@j2>gU%XqG`1*5xryPN!_g>iP_{HqiIoDz8R)kThA|;n zwct5-PT6)Y8$pf-N=#bmIoU=g;*!oA%W)lFnoZ z?|1$d_s0x2#29y{bWDT(5*nk{7;~i1vPfVl1;mO-GUuFK3nP?#w6fej!fmBesq?*p3m4Pknc3Ki+jZQ5I|aJ3B}T1DD{r3=w9NU>uw~M7CcP=@(pH3Yxvn($jLQOS(9v=zg z!(OtZ<&0Xn3Cqr(=sb`s=y(_(rQ7!O?K{-Rh`rpGWH}O#_7EP?@o_v#jWX7Ev!=?b z&{;};^T;x{hjy%IT;QKt{FshU;nP$l7w;N1Ct3fr^tKMFsbAFbOa9a#r^0xgwTySH z5*NF(Tv-V1xX`Eh8GKHK%ug#4U(oSIe2Jl&I0qiq|A#ZBY6FR|%ru-CW-Ez`drQ^@>7j!3*zRFuDSm$cBvg&lC+?loP&a1B)pdh}BzYODhG;D{W z2iNge_-h`*&h;H<^_Dd={kc4IZbJpXULm^#e~VYc_&%EhPne4*Z)He-H?JOc+mNo- zBT@Vi{}9ICmuW?{AZ{a~;~())UfHX(RMA~HM(ZfgG4CJZpLP6;YAb?;F;&M_WmKuo zcu{F%6@@&@&S*+i(N0WLJc-8iyT)#K(j6HaR>6DeEA+5B9K^X8qdJ z!_!LuIwo6@g^yiI=REbeUxj)U<^VpYldAeuNkVXrPj7JxQ)+ZqxGJx4Ui|uEahCi7 zL`7+H+S+MnS-AS!xgp8dx?5wajZ`J+zR}c1nRgg@D%Z@*NnBJt?3AdEd{!=qtYRh+ zgVV!Gh704Uz(<@ahqLn5z04JuNGe<36O(@XyT#vlaY1e$m|&336gr(szUwmX*6FXR zl!q_e1y(dnP12_<_ZFgeDsQTeL6Dr6Z+ywl`NP6Hz5RKWIkrl(E^AdF3o|aNwd`!< z99`DSxpdcbVbIK^Q-|38&WlKXht7z!OwQA#Mc86D@)99Am0934=PeLt9sVmLZ*NrE zr6VjGD=uN&y>!_mo#fLgt@g8jTFwIDbQz<)4-sMSeQ|HvYA$bdn^R_fq&dr`$Znp_<()oru1Rjrq%HQFo7AB%(Pf*&X{;)K zcJt^Wq{ef8*K?!NhnleL zo?mhMe%s?-|0&DaqsxHorHLmqmYH{AxN}X#YG+-`yc%!bawm5$ll{6Jkb|@z6^GsZ zMGm(3;mCz7a=@Q?1NfgRxH3}D#ZPq!D~x-k>~gv#(EGF2F;4-!SFNxJW&__Jd0V)q z+HuNLR>h-uHk_DkM`gJ9E6%TvXWE9?;J?*&GL-st#paImoB^1mSOrQtI29z>D9&D-I9x{NqG z+({TS_HK2J?X;X$AuRXuPWUtvSxC`gx!=3~cfF@Vd!9}39>%o_tY!5OVCSvzAHN1U zBYxcBZP#SyZ5 zZG4%7ew~8FeDr#wK6X9P+rEnBMVRph2gg!4%V#kM5M!m7ZSau3FP{eTu|7L~XWHh<>O>L)ei!*6d7javgyYLj= zr(pLOOUhv%aA31|h4WfaF3t1BM26~{* z!>$SXqosj555G3(kCq4OycH{g{-`cc$D@-gV_DE2#R7Fv7gis1MzfgVkv>uNES??; z7>$XcpwX0=!EAh`vCFKZyNN5#K4|m8bDH8V=JIYSq*a)S!qTDQ^qVzaST5 zFUPCtrE5@!v*}ySI2Y^qUGW@j!+Pw%2JGQS%tL6wQGQ4qK|6BT$Se0vxDB1WN8XGN z;sQL1Exa4O5TD0IyfwNQPva82KngD*j&ET*Ucse!6_?{RQhbx2z60nHoge-h(I@M0 zg>>*k--XyMSK**s$M10|BqWDHxr5)+9_E*`$8bbG%P(eM#*l+5?!@9>+25OE{r@11GhYag+94+^l^cw`f1ct$|wH7HGolfwTF&fDuX7yRpWL zNYTIwp6+!&@Da@MFS)*hYH)fj1bv_GsV6PY4U)koHYV z9=&)F2k`-1LnA+m4`G;JC{!}qMOA?xUHxQ~bW}y%&=i$| zRH{lkY6+0`b#kd(#^dP}&*dCdagXz4hjb$(JBe9`z+31IOFRDu-oT1bou&#DS1|Y# z*VPc~@T~L=&BzsTU7fBj@~rF{3bZp;Y)lMQbtHyDMldlHHmVXs5hIisstXxmKEp;N zQIsnkf$8lVJB%P>Jf|3}qei4C`{rlfD`|0i=&}2lvG+TNZFche;nHCb%T$M9=konR>!ZMm1~B$ZS9O4Daz5gZB)_*5@kufwnVztAuS}xQpqDYOvx!} zN7~4KQLdlUo=a)aq0~k!;*=;w#1yrXFiAQxSECe1A;%z1{(?K-kKctU#CmZeF} z$!;pl^t;)bGAQE+uT84a806cN!mM8yk=H&hg1URK44zTfH1=kX7pJkNK& z^S#&a_x|4ZWGZy9*7?kv)29KfWBy6!K%+B}PGvLcWKzp8R7Mxy^hmpw)UsOdXfmB` zTTq(Z7Ks+9aKO!A4b}}hz)+~d2D=O|L&g7f;KULX2&-ZhGL*?9gVH4orTo03n0uJK zvYh;xF||}6dB)HaBU;LdG6Y1>3Nj1wbuOP(K_%~Djs7xJtEdqIMc19A2!N=3ksih49K6bx%w)43iU)wBGt94e^AD&aZ8P!o*uN0kbDYu%uN)qJ(JxU3eJ zsd$U|tq?p`7

IPw$P z!%y2Al@aVy@ebU=FW9eP@8r#Low6VA5?Q>P56dem_v5`P?i4k2Qw_~J>m!<$)t#{7 zeJb9M5Abtx<(j*RA(4!xr*~x%njX;wA@o%Vo%HU-q>KX$9)V9J8BYyI+LCddGCK&) z8PEyMoP;@HuptUJb**|7A0i=C?1sYG5&~BWBoV|^XHX7;30fc#wQrO z^O$Gj!&;x#aYBFT+LE`z6Hiz zvf~uKEaNmomC508myMrwIg3<0iLWrYy1F}i`Zlc_=<4a_$6WR5G|mW^zQ#}&H2uyR zxCTYxrty@DZ_KyHz-Tr}beYCCRXj7#>h)TDNXrOT3(2!8zAYqfQ9bH zDn#aB^uHBb>$WQRHML7eW=A?Xtl(wp%62UiFx>?9?8*#j0nLYCrFIElxdm6XjZD*hmPS`3A*tTv`Ac$NHiY9lo06uiclyK8y3yWL$twMy*V6dxam z-;~t&0e5{!#@}fM?H<+k=#lm5F|9w5(Zmdz!5ac-y6p@uswky`=H0D!#;h{4@QdzR ztHf-)#`BUyxs>qRB;Q(Uyh0{ZZp^9Thj_swGe;pV%$<2u{0$fA%uQ#6Syw8hWlTzH zy3BkG)%;#h3Gel|?J`>`x=y?vDXgBbz#>L2O&E(9qV%*;Ov;T`7rkw!rm)bnIFy4L zsy_iwD32wv9EwiBcg!?fN~;$Vtv*_d$#^O4O6UjLnZ{TKKfRF~GZ-W1bZJ^ACb0 zxC$_^&J=Z!s73NirqC~irg7bza6`<8sQnbWW7hiqnAFf8vrUBibLefc`E66^HxTpN z^4LylH|7vGFqFp#UG?S`yWj4Y4D6(b%|O~OO(Amge$c=@20rvSK4QTZx{^nTj)aa+z+>Rk0!J%h1>9hwR!Z=fp%BZl z0_CVi01;Hsm|uytXuw8<(T7#ojz;XmYTS-Xae%%phe+cHnsF4D<1wtkX|&)hTJbWW z^BS(k1^N<*n)J} literal 5426 zcma)A30Pd!75*>FykU5RgbvK8e*-Au3D2M2A2FlAx{j0S_2?%%kr;2(i|- zcGG_Sy6<+^*0y#t)gcD8Y17(jt*Lh3?Y`PpyIZyW?|p9uCO|&j>_QZVvT11_OJb~3yN%M#s-)mZ?XLcto+v^#0Of#jSKw$Yb#*`7ajMPZHYv3Al z&=V+hJ!8ZaC{M__;pw<~kN3#YCV|kNWGd-hM7>pu2~_t96tvkxW(4^t)}cWc$gisI zD}ul>9fb%9lqQlX^T6czfa&xa0~U>yCG0`N>NA|Ad=CZ-ywRj95KS!M0e7PfCEW?j zII3Zlz}n1)2hEfjAGA}RV_WfrF<@F@tfsTddovZYPNm(!Q8N`mIihlpYXw&M?)X^r zcuq1k(p23S#(II;`r+yNVXCWllh>M!v0dj+OgF`{gGbEd$f(yC8?ddRCaH3xj!jZ! z*fqT#@2F*lu~{H8A+dKGrpK)awql!xN+L1oB`r68xHGZOv?feP$9C)xD7I{4sKc?x zIU%rpv8^fa=SQwdL$yH3II*Wj<*FM&6>4?Vp@lpF6j+&1^7 z6JtL@5aP)1FqSZk-HgSA*K1CD8d?R`Es8|zr03bGF!nO^i7drh5DnuJ zflf)70b_7%#IYw+L-lmSb{b<_cd9?1PaX}_4<{{);~na6X`Z!UV;PV6r8+JHNfH`0 zQbY16nN>@km+XPfIUtz;Hl0a{EaK*rneyW8@^hcE;*jSpIH02o-DE2P>Poe!NDFMt z=7mL;NxTp8*j_Q|oVsUltc*#aS2}RH!0x5@eYTBgI3%zpCmzfP_M{i@BPm18mBfgD z8m<&rkt23MWvM>AND}5MDyiCgWiCQef=QqVFUEidBRC&q)QD-1o1Swt-fg=&1~EkZ z+u9HGw$ry&86ES5h*uwmb&OzCKqp=;R&pdYPC%vIMORe!X}Ct9BG_|Q+x`@nyP@WD zea9k5A|*YrnRu)AR`*FuFVW$EsWT#}YYYuBnUS;$?fAOrqJ~LEE(e|f#a7!HGM#QC z#fG6Wn7~v#XdD;3j3S)A2GXTSVD5x@$TT&6n$Vg#<0!+tqz_ zqP?S6irygMc@@*`V%nB~NUnR0j@ROKzKKr58A+xD8lIDmdG6oDq?qG=kMtzee3OrI zsQHGI>M4R7@g@oPn^|wpFw$)}^ss5K3c`(etB$wf?W}rCys8Yiqb4IKur0{GXHQMC zfWA}5yYOz}L=|n8;d1fHOzKueTMaga@m}&S?wGDU=?t1KOE#;H+c4;|0=y3&(C~hi z8tI;2Fw`m?AH;`vc&Ykeuux!&?^13RRM^K;rWe2bV1i8k2yWGI3wf+G2ID$DijUD* z&u*V)lv9S)VLRh&BXaf|6xL#V9G}$i34zT4=u0Pc9k=6C>>)_wGpe-Tu{2d*5y5Bh zISrqk7em>t_&tk`J8�#xkZkor|KY3N;UbRCA|}yJX8!;Eviy*bG^+dk|Qk;h#_N zoZf=9CaCRu4Ub8pG?7z-IbEbmzpPL!H9neig_i|JO=r@uz^28GWdx)`)_8Vvtsbeq zVR31{7|FfKn&ZFGt*HTfn#|2zGcRGP1=%CdTE3{{TvDKXp~7T-!#EFBCWqYC?&w6O zz4KMavq{AEFI*kd{Luz=4lvFg$nvscuv2C$ThvC?< z2;r5{+#|pQ`OT#oOr@y^kK)@Jz9mo@FglkhN~ltO_7Vae-@$hYUHid(ls=jvr@Q(%z(JF`1vnPj&n()8Ong4W@b7;K-Su z>-dG7StheK8(*fi%+#-R{2ITJMPGuL8aiYo31da(lq;CKCS=oRSdtu`v?d#T6$O>F zf+WB;VBBfgz)Er$Ax}|1;cJ(9L8Z_PY|lTTv~II{CZs z7af1a6MnAkGptE&IyZL(=|;ofnEK`)@nU=(|IqPInWjRHIc`r8-YWcCM(RH@WBa~m z8K?|y#ea1?jb|hsjVZI&R;_*x9Rq_4k(2fMe@rF*y=WhM5&udT!Lve0t6}++uVW?j zuqfoNI!t!8PFQH*(qdA@jc#@SqqC5fWd`q~nnKy!bc3J{?^0xv$74n&k=4TP#Iyj!k??}xI|7-6; z$sK&lLn%L(sg)Hdz-r2_!E%mO_|jMbd0FB*rInCmEhkacS$97ob!pVxhR7@$`e(57z$|w4*B{68W^h4cLA0Q3PZ}4^qNTsA zZ3gX)h0(&Yjx_c~3u~eU^(U|&NTXBDzd+81q9K1iRC5A7!DL^5ISz;J#TEVewLSe* z+S5-xJu`S=qZZYU;p#NZs5Xlv<;G?(p2oy1Jnm+yF&qs?Lunl0mzKs$qoHHC{y1J4 z4f)cCDSaHTp2dy*(Qr9lUye7-;Ejz%(V{foQj^9z%HEU4&1ro2ZrqlKLp67zL{5EL zKBVz^32}jfcocN{=K>d~ILLYI}g%9^_mp@}5DZhH?#69U60ep3I8@AFrc$0fl0-INg5?kIdkE z2kL9n_+hRrmw`i2UVw@&pGvxt%*Hq*ODl|M?`Il&riTHFeQ~yYY7hbrx0qbu;*v zB=u9Xc(z{#cSayB@@_*(%}Pfj>wUVF%Av6;D+)!&}3U)-s%R z3|oWRag6e`o857M16+ib}DKb7h>{E~-Qg$@?fy Ji`wSs{{iNO-sS)R diff --git a/bin/views/EditFlightScreen.class b/bin/views/EditFlightScreen.class deleted file mode 100644 index 1de65f9473369103bffabaa35a03fe85a6834749..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11042 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 DWL@wg diff --git a/bin/views/ManagePilotProfileScreen.class b/bin/views/ManagePilotProfileScreen.class index 943f2439c3cfe6d3ee32e257618aa91341b64fb3..5097e37b36d97ca1efc224c8ea807bd0d4351990 100644 GIT binary patch literal 10568 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 literal 10949 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 diff --git a/bin/views/PilotView.class b/bin/views/PilotView.class deleted file mode 100644 index 40c74d646f60ad624e46073427ab5e35a98c24b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5373 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 diff --git a/bin/views/ViewLogbookScreen.class b/bin/views/ViewLogbookScreen.class index 826879febb55aebad86b477165f42c5976dfad44..53a44d2eec255c1fb426e170bc4ff1bdc5e9e8c0 100644 GIT binary patch literal 9039 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 literal 8826 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 - + - 2.0 + 1.0 123 @@ -14,132 +14,39 @@ 12:00 - 14:00 + 13:00 - 2 + 12 - 2024-06-10 + 2024-06-17 asd - asdasd - - - - - sad - - - ads - - - sad - - - - - - - - - 1.0 - - - test - - - 11:00 - - - 12:00 - - - 2 - - - 2024-06-11 - - asd - - test - - sad + asd - ads + asd - äää - - - äää + dasd - sad - - - - - - - - - 6.75 - - - max - - - 09:15 - - - 16:00 - - - 2 - - - 2024-06-14 - - - Kommentar - - - Max - - - - - max - - - max - - - - hallo - - - test - - - - max + asdaa - test + asdasd @@ -152,7 +59,7 @@ 1.0 - mannheim + 12322 12:00 @@ -164,39 +71,84 @@ 1 - 2024-06-14 + 2024-06-17 - max + asd - newTest + asdtest - - true + + + + asd + + + asd + + + + dasd + + + + asdaa + + + + asdasd + + + + + + + + + + 1.0 + + + 12322 + + + 12:00 + + + 13:00 + + + 1 + + + 2024-06-17 + + + asd + + + asdtest - max + asd - max + asd - hallo - - - test + dasd - max + asdaa - test + asdasd diff --git a/pilots.xml b/pilots.xml index d645733..3c70075 100644 --- a/pilots.xml +++ b/pilots.xml @@ -1,77 +1,53 @@ - + - sad + asd - ads + asd - sad - - - - - - - asdasd - - - asdasd - - - sad + asd - sad + asd - ads + asd - äää - - - äää + dasd - sad + asdaa + + + + asdasd + - + - max + s - max - - - - hallo - - - test - + d - max - - - - test - + a diff --git a/src/controllers/AddFlightController.java b/src/controllers/AddFlightController.java index 682d2df..2fa5518 100644 --- a/src/controllers/AddFlightController.java +++ b/src/controllers/AddFlightController.java @@ -19,11 +19,13 @@ import java.util.ArrayList; 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; + loadFlights(); } public ObservableList loadPilots() { @@ -74,6 +76,27 @@ public class AddFlightController { } } + public void saveFlight(Flight flight){ + if(flights == null){ + flights = new Flights(new ArrayList<>()); + } + + boolean flightExists = false; + for (int i = 0; i < flights.getFlights().size(); i++) { + if (flights.getFlights().get(i).getMuster().equals(flight.getMuster())) { + flights.getFlights().set(i, flight); + flightExists = true; + break; + } + } + + if (!flightExists) { + flights.getFlights().add(flight); + } + + XMLHelper.saveToXML(flights, "flights.xml"); + } + public double calculateFlightDuration(String abflugzeit, String ankunftszeit) throws DateTimeParseException { LocalTime start = LocalTime.parse(abflugzeit, timeFormatter); LocalTime end = LocalTime.parse(ankunftszeit, timeFormatter); @@ -93,12 +116,7 @@ public class AddFlightController { field.setStyle("-fx-border-color: red;"); } - public void clearFieldStyles(Control... fields) { - for (Control field : fields) { - field.setStyle(null); - } - } - + public void showAlert(String title, String message) { Alert alert = new Alert(Alert.AlertType.ERROR); alert.setTitle(title); @@ -106,4 +124,8 @@ public class AddFlightController { alert.setContentText(message); alert.showAndWait(); } + + public void loadFlights() { + flights = (Flights) XMLHelper.loadFromXML("flights.xml"); + } } diff --git a/src/controllers/DeletePilotController.java b/src/controllers/DeletePilotController.java new file mode 100644 index 0000000..daf9b4f --- /dev/null +++ b/src/controllers/DeletePilotController.java @@ -0,0 +1,42 @@ +package controllers; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import models.Pilot; +import models.Pilots; +import utils.XMLHelper; + +import java.util.List; + +public class DeletePilotController { + private ObservableList pilotsList; + + public DeletePilotController() { + loadPilots(); + } + + public ObservableList getPilotsList() { + return pilotsList; + } + + public void loadPilots() { + Pilots pilotsData = (Pilots) XMLHelper.loadFromXML("pilots.xml"); + List pilotList = pilotsData != null ? pilotsData.getPilots() : new java.util.ArrayList<>(); + pilotsList = FXCollections.observableArrayList(pilotList); + } + + 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; + } + return false; + } +} diff --git a/src/controllers/FlightController.java b/src/controllers/FlightController.java deleted file mode 100644 index c640bf5..0000000 --- a/src/controllers/FlightController.java +++ /dev/null @@ -1,46 +0,0 @@ -package controllers; - -import java.time.Duration; -import java.time.LocalTime; -import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeParseException; - -import javafx.scene.control.Alert; -import javafx.scene.control.Control; - -public class FlightController { - private DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm"); - - public double calculateFlightDuration(String abflugzeit, String ankunftszeit) throws DateTimeParseException { - LocalTime start = LocalTime.parse(abflugzeit, timeFormatter); - LocalTime end = LocalTime.parse(ankunftszeit, timeFormatter); - return (double) Duration.between(start, end).toMinutes() / 60; - } - - public boolean isValidTime(String time) { - try { - LocalTime.parse(time, timeFormatter); - return true; - } catch (DateTimeParseException e) { - return false; - } - } - - public void setErrorStyle(Control field) { - field.setStyle("-fx-border-color: red;"); - } - - public void clearFieldStyles(Control... fields) { - for (Control field : fields) { - field.setStyle(null); - } - } - - public void showAlert(String title, String message) { - Alert alert = new Alert(Alert.AlertType.ERROR); - alert.setTitle(title); - alert.setHeaderText(null); - alert.setContentText(message); - alert.showAndWait(); - } -} diff --git a/src/controllers/LogbookController.java b/src/controllers/LogbookController.java index bff54f0..797509d 100644 --- a/src/controllers/LogbookController.java +++ b/src/controllers/LogbookController.java @@ -6,10 +6,8 @@ import javafx.stage.Stage; import models.Flight; import models.Flights; import utils.XMLHelper; -import views.EditFlightScreen; import views.HomeScreen; - -import java.util.List; +import views.ViewLogbookScreen; public class LogbookController { private Stage stage; @@ -17,7 +15,6 @@ public class LogbookController { public LogbookController(Stage stage) { this.stage = stage; - this.flightList = FXCollections.observableArrayList(); loadFlights(); } @@ -28,28 +25,34 @@ public class LogbookController { private void loadFlights() { Flights flights = (Flights) XMLHelper.loadFromXML("flights.xml"); if (flights != null) { - List flightEntries = flights.getFlights(); - flightList.addAll(flightEntries); + flightList = FXCollections.observableArrayList(flights.getFlights()); + } else { + flightList = FXCollections.observableArrayList(); } } - public void editFlight(Flight selectedFlight) { - if (selectedFlight != null) { - new EditFlightScreen(stage, selectedFlight).display(); - } else { - showAlert("Fehler", "Bitte wählen Sie einen Flug aus."); + /* 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())) { + flightList.set(i, updatedFlight); + break; + } + } + saveFlights(); + } + + private void saveFlights() { + Flights flights = new Flights(flightList); + XMLHelper.saveToXML(flights, "flights.xml"); } public void goBack() { new HomeScreen(stage).display(); } - - private void showAlert(String title, String message) { - javafx.scene.control.Alert alert = new javafx.scene.control.Alert(javafx.scene.control.Alert.AlertType.ERROR); - alert.setTitle(title); - alert.setHeaderText(null); - alert.setContentText(message); - alert.showAndWait(); - } } diff --git a/src/controllers/ManagePilotProfileController.java b/src/controllers/ManagePilotProfileController.java new file mode 100644 index 0000000..3092004 --- /dev/null +++ b/src/controllers/ManagePilotProfileController.java @@ -0,0 +1,56 @@ +package controllers; + +import models.Pilot; +import models.Pilots; +import utils.XMLHelper; + +import java.util.ArrayList; +import java.util.List; + +public class ManagePilotProfileController { + private Pilots pilots; + + public ManagePilotProfileController() { + loadPilots(); + } + + public List getPilotsList() { + return pilots != null ? pilots.getPilots() : new ArrayList<>(); + } + + public Pilot getPilot(String name) { + if (pilots != null) { + for (Pilot pilot : pilots.getPilots()) { + if (pilot.getName().equals(name)) { + return pilot; + } + } + } + return null; + } + + public void savePilot(Pilot pilot) throws Exception { + if (pilots == null) { + pilots = new Pilots(new ArrayList<>()); + } + + boolean pilotExists = false; + for (int i = 0; i < pilots.getPilots().size(); i++) { + if (pilots.getPilots().get(i).getName().equals(pilot.getName())) { + pilots.getPilots().set(i, pilot); + pilotExists = true; + break; + } + } + + if (!pilotExists) { + pilots.getPilots().add(pilot); + } + + XMLHelper.saveToXML(pilots, "pilots.xml"); + } + + public void loadPilots() { + pilots = (Pilots) XMLHelper.loadFromXML("pilots.xml"); + } +} diff --git a/src/controllers/PilotController.java b/src/controllers/PilotController.java deleted file mode 100644 index 6db6a12..0000000 --- a/src/controllers/PilotController.java +++ /dev/null @@ -1,26 +0,0 @@ -package controllers; - -import models.Pilot; -import views.PilotView; - -public class PilotController { - private Pilot model; - private PilotView view; - - public PilotController(Pilot model, PilotView view) { - this.model = model; - this.view = view; - } - - public void setPilotName(String name) { - model.setName(name); - } - - public String getPilotName() { - return model.getName(); - } - - public void updateView() { - view.displayPilotDetails(model); - } -} diff --git a/src/models/Flight.java b/src/models/Flight.java index 1fd8a10..b7bd469 100644 --- a/src/models/Flight.java +++ b/src/models/Flight.java @@ -6,11 +6,13 @@ import java.io.ObjectOutputStream; import java.io.Serializable; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.UUID; 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 StringProperty muster; @@ -27,6 +29,7 @@ public class Flight implements Serializable { // Standardkonstruktor public Flight() { + this.id = UUID.randomUUID().toString(); // Generiere eine eindeutige ID this.datum = new SimpleObjectProperty<>(); this.muster = new SimpleStringProperty(); this.abflugort = new SimpleStringProperty(); @@ -39,18 +42,10 @@ public class Flight implements Serializable { this.kommentar = new SimpleStringProperty(); } - public Flight(LocalDate datum, String muster, String abflugort, String abflugzeit, String ankunftszeit, double tToF, int anzahlLandungen, Pilot pilot, boolean nachtflug, String kommentar) { - this(); - this.setDatum(datum); - this.muster.set(muster); - this.abflugort.set(abflugort); - this.abflugzeit.set(abflugzeit); - this.ankunftszeit.set(ankunftszeit); - this.tToF.set(tToF); - this.anzahlLandungen.set(anzahlLandungen); - this.pilot.set(pilot); - this.nachtflug.set(nachtflug); - this.kommentar.set(kommentar); + // Getter und Setter Methoden + + public String getId() { + return id; } public LocalDate getDatum() { @@ -62,17 +57,17 @@ public class Flight implements Serializable { this.datumStr = datum != null ? datum.format(formatter) : null; } - public ObjectProperty datumProperty() { - return datum; - } - public String getDatumStr() { return datumStr; } public void setDatumStr(String datumStr) { this.datumStr = datumStr; - this.datum.set(datumStr != null ? LocalDate.parse(datumStr, formatter) : null); + this.datum = datumStr != null ? new SimpleObjectProperty<>(LocalDate.parse(datumStr, formatter)) : new SimpleObjectProperty<>(); + } + + public ObjectProperty datumProperty() { + return datum; } public String getMuster() { @@ -194,17 +189,13 @@ public class Flight implements Serializable { // Custom Serialization private void writeObject(ObjectOutputStream oos) throws IOException { oos.defaultWriteObject(); - oos.writeObject(datum.get() != null ? datum.get().format(formatter) : null); + oos.writeObject(datumStr); } // Custom Deserialization private void readObject(ObjectInputStream ois) throws ClassNotFoundException, IOException { ois.defaultReadObject(); - String datumStr = (String) ois.readObject(); - if (datumStr != null) { - this.datum = new SimpleObjectProperty<>(LocalDate.parse(datumStr, formatter)); - } else { - this.datum = new SimpleObjectProperty<>(); - } + datumStr = (String) ois.readObject(); + datum = datumStr != null ? new SimpleObjectProperty<>(LocalDate.parse(datumStr, formatter)) : new SimpleObjectProperty<>(); } } diff --git a/src/models/Flights.java b/src/models/Flights.java index 9b5a722..42006f6 100644 --- a/src/models/Flights.java +++ b/src/models/Flights.java @@ -8,7 +8,7 @@ public class Flights implements Serializable { private List flights; public Flights() { - this.flights = new ArrayList<>(); + flights = new ArrayList<>(); } public Flights(List flights) { @@ -22,4 +22,20 @@ public class Flights implements Serializable { public void setFlights(List flights) { this.flights = flights; } + + public void addFlight(Flight flight) { + flights.add(flight); + } + + public int size() { + return flights.size(); + } + + public Flight get(int index) { + return flights.get(index); + } + + public void set(int index, Flight flight) { + flights.set(index, flight); + } } diff --git a/src/utils/XMLHelper.java b/src/utils/XMLHelper.java index d311ceb..9c6c66d 100644 --- a/src/utils/XMLHelper.java +++ b/src/utils/XMLHelper.java @@ -4,8 +4,22 @@ 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/AddFlightScreen.java index ed790ed..6c144cc 100644 --- a/src/views/AddFlightScreen.java +++ b/src/views/AddFlightScreen.java @@ -11,16 +11,33 @@ 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 { private Stage stage; private AddFlightController controller; + private Flight flight; + + private DatePicker datumField; + private TextField musterField; + private TextField abflugortField; + private TextField abflugzeitField; + private TextField ankunftszeitField; + private TextField tToFField; + private TextField anzahlLandungenField; + private CheckBox nachtflugBox; + private TextField kommentarField; + private ComboBox pilotComboBox; - public AddFlightScreen(Stage stage) { + public AddFlightScreen(Stage stage, Flight flight) { this.stage = stage; + this.flight = flight; this.controller = new AddFlightController(stage); } @@ -29,54 +46,49 @@ public class AddFlightScreen { label.setStyle("-fx-font-size: 18px; -fx-font-weight: bold;"); Label datumLabel = new Label("Datum:"); - DatePicker datumField = new DatePicker(LocalDate.now()); // Set today's date + datumField = new DatePicker(LocalDate.now()); Label musterLabel = new Label("Muster:"); - TextField musterField = new TextField(); + musterField = new TextField(); musterField.setPromptText("Muster"); Label abflugortLabel = new Label("Abflugort:"); - TextField abflugortField = new TextField(); + abflugortField = new TextField(); abflugortField.setPromptText("Abflugort"); Label abflugzeitLabel = new Label("Abflugzeit:"); - TextField abflugzeitField = new TextField(); + abflugzeitField = new TextField(); abflugzeitField.setPromptText("HH:mm"); Label ankunftszeitLabel = new Label("Ankunftszeit:"); - TextField ankunftszeitField = new TextField(); + ankunftszeitField = new TextField(); ankunftszeitField.setPromptText("HH:mm"); Label tToFLabel = new Label("Flugdauer (Stunden):"); - TextField tToFField = new TextField(); + 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 Label anzahlLandungenLabel = new Label("Anzahl der Landungen:"); - TextField anzahlLandungenField = new TextField(); + anzahlLandungenField = new TextField(); anzahlLandungenField.setPromptText("Anzahl der Landungen"); Label nachtflugLabel = new Label("Nachtflug:"); - CheckBox nachtflugBox = new CheckBox(); + nachtflugBox = new CheckBox(); Label kommentarLabel = new Label("Kommentar:"); - TextField kommentarField = new TextField(); + kommentarField = new TextField(); kommentarField.setPromptText("Kommentar"); ObservableList pilotList = controller.loadPilots(); Label pilotLabel = new Label("Pilot:"); - ComboBox pilotComboBox = new ComboBox<>(pilotList); + pilotComboBox = new ComboBox<>(pilotList); + Button saveBtn = new Button("Speichern"); - saveBtn.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;"); - saveBtn.setOnAction(e -> { - Flight newFlight = new Flight(); - controller.clearFieldStyles(datumField, musterField, abflugortField, abflugzeitField, ankunftszeitField, tToFField, anzahlLandungenField, kommentarField); - - // Save the flight with the corrected TToF value - controller.saveFlight(newFlight, datumField, musterField, abflugortField, abflugzeitField, ankunftszeitField, tToFField, anzahlLandungenField, pilotComboBox, nachtflugBox, kommentarField); - }); + saveBtn.setOnAction(e -> saveFlight(flight, datumField, musterField, abflugortField, abflugzeitField, + ankunftszeitField, tToFField, anzahlLandungenField, pilotComboBox, nachtflugBox, kommentarField));//todo: saveFlight in Controller Button backButton = new Button("Zurück"); backButton.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;"); @@ -128,6 +140,11 @@ public class AddFlightScreen { stage.setScene(scene); stage.show(); + + if (flight != null) { + populateFieldsWithFlight(flight); + } + } private void updateFlightDuration(TextField abflugzeitField, TextField ankunftszeitField, TextField tToFField) { @@ -146,4 +163,57 @@ public class AddFlightScreen { tToFField.setText(""); } } + + private void populateFieldsWithFlight(Flight flight) { + datumField.setValue(LocalDate.parse(flight.getDatumStr())); + musterField.setText(flight.getMuster()); + abflugortField.setText(flight.getAbflugort()); + abflugzeitField.setText(flight.getAbflugzeit()); + ankunftszeitField.setText(flight.getAnkunftszeit()); + tToFField.setText(Double.toString(flight.getTToF())); + anzahlLandungenField.setText(Integer.toString(flight.getAnzahlLandungen())); + nachtflugBox.setSelected(flight.isNachtflug()); + kommentarField.setText(flight.getKommentar()); + 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) { + 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)); + + controller.saveFlight(newFlight); + + 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(); + } + } + private void showAlert(String title, String message) { + Alert alert = new Alert(Alert.AlertType.ERROR); + alert.setTitle(title); + alert.setHeaderText(null); + alert.setContentText(message); + alert.showAndWait(); + } } diff --git a/src/views/DeletePilotScreen.java b/src/views/DeletePilotScreen.java index baf69fd..5438e1a 100644 --- a/src/views/DeletePilotScreen.java +++ b/src/views/DeletePilotScreen.java @@ -1,5 +1,6 @@ package views; +import controllers.DeletePilotController; import javafx.geometry.Insets; import javafx.geometry.Pos; import javafx.scene.Scene; @@ -11,35 +12,30 @@ import javafx.scene.layout.BorderPane; import javafx.scene.layout.VBox; import javafx.stage.Stage; import models.Pilot; -import models.Pilots; -import utils.XMLHelper; - -import java.util.List; public class DeletePilotScreen { private Stage stage; + private DeletePilotController controller; public DeletePilotScreen(Stage stage) { this.stage = stage; + this.controller = new DeletePilotController(); } public void display() { Label label = new Label("Piloten löschen"); label.setStyle("-fx-font-size: 18px; -fx-font-weight: bold;"); - Pilots pilotsData = (Pilots) XMLHelper.loadFromXML("pilots.xml"); - List pilotList = pilotsData != null ? pilotsData.getPilots() : new java.util.ArrayList<>(); - ComboBox pilotComboBox = new ComboBox<>(javafx.collections.FXCollections.observableArrayList(pilotList)); + ComboBox pilotComboBox = new ComboBox<>(controller.getPilotsList()); pilotComboBox.setPromptText("Pilot auswählen"); Button deleteBtn = new Button("Löschen"); deleteBtn.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;"); deleteBtn.setOnAction(e -> { Pilot selectedPilot = pilotComboBox.getValue(); - if (selectedPilot != null) { - pilotList.remove(selectedPilot); - XMLHelper.saveToXML(new Pilots(pilotList), "pilots.xml"); - new HomeScreen(stage).display(); + if (selectedPilot != null && controller.deletePilot(selectedPilot)) { + showAlert("Erfolg", "Der Pilot wurde erfolgreich gelöscht."); + pilotComboBox.setItems(controller.getPilotsList()); // Refresh the combo box } else { showAlert("Fehler", "Bitte wählen Sie einen Piloten aus."); } @@ -52,7 +48,6 @@ public class DeletePilotScreen { VBox vbox = new VBox(10, label, pilotComboBox, deleteBtn); vbox.setAlignment(Pos.CENTER); vbox.setPadding(new Insets(20)); - BorderPane borderPane = new BorderPane(); borderPane.setTop(backButton); @@ -68,7 +63,7 @@ public class DeletePilotScreen { } private void showAlert(String title, String message) { - Alert alert = new Alert(Alert.AlertType.ERROR); + Alert alert = new Alert(Alert.AlertType.INFORMATION); alert.setTitle(title); alert.setHeaderText(null); alert.setContentText(message); diff --git a/src/views/EditFlightScreen.java b/src/views/EditFlightScreen.java deleted file mode 100644 index 0c3b638..0000000 --- a/src/views/EditFlightScreen.java +++ /dev/null @@ -1,178 +0,0 @@ -package views; - -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; -import models.Flights; -import utils.XMLHelper; - -import java.time.LocalDate; -import java.util.List; - -public class EditFlightScreen { - private Stage stage; - private Flight flight; - - public EditFlightScreen(Stage stage, Flight flight) { - this.stage = stage; - this.flight = flight; - } - - public void display() { - Label label = new Label("Flugdaten bearbeiten:"); - label.setStyle("-fx-font-size: 18px; -fx-font-weight: bold;"); - DatePicker datumField = new DatePicker(flight.getDatum()); - TextField musterField = new TextField(flight.getMuster()); - TextField abflugortField = new TextField(flight.getAbflugort()); - TextField abflugzeitField = new TextField(flight.getAbflugzeit()); - TextField ankunftszeitField = new TextField(flight.getAnkunftszeit()); - TextField tToFField = new TextField(String.valueOf(flight.getTToF())); - TextField anzahlLandungenField = new TextField(String.valueOf(flight.getAnzahlLandungen())); - CheckBox nachtflugBox = new CheckBox("Nachtflug"); - nachtflugBox.setSelected(flight.isNachtflug()); - TextField kommentarField = new TextField(flight.getKommentar()); - - datumField.setPromptText("YYYY-MM-DD"); - musterField.setPromptText("Muster"); - abflugortField.setPromptText("Abflugort"); - abflugzeitField.setPromptText("HH:MM"); - ankunftszeitField.setPromptText("HH:MM"); - tToFField.setPromptText("Flugdauer (Stunden)"); - anzahlLandungenField.setPromptText("Anzahl der Landungen"); - kommentarField.setPromptText("Kommentar"); - - // Nur numerische Eingaben für Flugdauer und Anzahl der Landungen zulassen - tToFField.textProperty().addListener((observable, oldValue, newValue) -> { - if (!newValue.matches("\\d*\\.?\\d*")) { - tToFField.setText(oldValue); - } - }); - - anzahlLandungenField.textProperty().addListener((observable, oldValue, newValue) -> { - if (!newValue.matches("\\d*")) { - anzahlLandungenField.setText(oldValue); - } - }); - - Button saveBtn = new Button("Speichern"); - saveBtn.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;"); - saveBtn.setOnAction(e -> handleSaveFlight(datumField, musterField, abflugortField, abflugzeitField, ankunftszeitField, - tToFField, anzahlLandungenField, nachtflugBox.isSelected(), kommentarField)); - - Button backButton = new Button("Zurück"); - backButton.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;"); - backButton.setOnAction(e -> new ViewLogbookScreen(stage).display()); - - VBox vbox = new VBox(10, label, datumField, musterField, abflugortField, abflugzeitField, ankunftszeitField, - tToFField, anzahlLandungenField, nachtflugBox, kommentarField, saveBtn); - vbox.setAlignment(Pos.CENTER); - vbox.setPadding(new Insets(20)); - - - BorderPane borderPane = new BorderPane(); - borderPane.setTop(backButton); - borderPane.setCenter(vbox); - BorderPane.setAlignment(backButton, Pos.TOP_LEFT); - BorderPane.setMargin(backButton, new Insets(10)); - - Scene scene = new Scene(borderPane, 800, 600); - scene.getStylesheets().add(getClass().getResource("/resources/styles.css").toExternalForm()); - - stage.setScene(scene); - stage.show(); - } - - private void handleSaveFlight(DatePicker datumField, TextField musterField, TextField abflugortField, TextField abflugzeitField, - TextField ankunftszeitField, TextField tToFField, TextField anzahlLandungenField, boolean isNachtflug, - TextField kommentarField) { - clearFieldStyles(datumField, musterField, abflugortField, abflugzeitField, ankunftszeitField, tToFField, anzahlLandungenField); - - try { - if (datumField.getValue() == null) { - setErrorStyle(datumField); - throw new IllegalArgumentException("Datum ist erforderlich."); - } - if (musterField.getText().isEmpty()) { - setErrorStyle(musterField); - throw new IllegalArgumentException("Muster ist erforderlich."); - } - if (abflugortField.getText().isEmpty()) { - setErrorStyle(abflugortField); - throw new IllegalArgumentException("Abflugort ist erforderlich."); - } - if (abflugzeitField.getText().isEmpty()) { - setErrorStyle(abflugzeitField); - throw new IllegalArgumentException("Abflugzeit ist erforderlich."); - } - if (ankunftszeitField.getText().isEmpty()) { - setErrorStyle(ankunftszeitField); - throw new IllegalArgumentException("Ankunftszeit ist erforderlich."); - } - if (tToFField.getText().isEmpty()) { - setErrorStyle(tToFField); - throw new IllegalArgumentException("Flugdauer ist erforderlich."); - } - if (anzahlLandungenField.getText().isEmpty()) { - setErrorStyle(anzahlLandungenField); - throw new IllegalArgumentException("Anzahl der Landungen ist erforderlich."); - } - - double flightDuration = Double.parseDouble(tToFField.getText()); - int landings = Integer.parseInt(anzahlLandungenField.getText()); - - flight.setDatum(datumField.getValue()); - flight.setMuster(musterField.getText()); - flight.setAbflugort(abflugortField.getText()); - flight.setAbflugzeit(abflugzeitField.getText()); - flight.setAnkunftszeit(ankunftszeitField.getText()); - flight.setTToF(flightDuration); - flight.setAnzahlLandungen(landings); - flight.setNachtflug(isNachtflug); - flight.setKommentar(kommentarField.getText()); - - Flights flights = (Flights) XMLHelper.loadFromXML("flights.xml"); - if (flights != null) { - List flightEntries = flights.getFlights(); - for (int i = 0; i < flightEntries.size(); i++) { - if (flightEntries.get(i).equals(flight)) { - flightEntries.set(i, flight); - break; - } - } - XMLHelper.saveToXML(flights, "flights.xml"); - } - - new ViewLogbookScreen(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(); - } - } - - private void setErrorStyle(Control field) { - field.setStyle("-fx-border-color: red;"); - } - - private void clearFieldStyles(Control... fields) { - for (Control field : fields) { - field.setStyle(null); - } - } - - private void showAlert(String title, String message) { - Alert alert = new Alert(Alert.AlertType.ERROR); - alert.setTitle(title); - alert.setHeaderText(null); - alert.setContentText(message); - alert.showAndWait(); - } -} diff --git a/src/views/FlightView.java b/src/views/FlightView.java deleted file mode 100644 index 17b645e..0000000 --- a/src/views/FlightView.java +++ /dev/null @@ -1,27 +0,0 @@ -package views; - -import models.Flight; - -import java.util.List; - -public class FlightView { - public void displayFlightDetails(Flight flight) { - System.out.println("Flight Details: "); - System.out.println("Datum: " + flight.getDatum()); - System.out.println("Muster: " + flight.getMuster()); - System.out.println("Abflugort: " + flight.getAbflugort()); - System.out.println("Abflugzeit: " + flight.getAbflugzeit()); - System.out.println("Ankunftszeit: " + flight.getAnkunftszeit()); - System.out.println("Flugdauer: " + flight.getTToF()); - System.out.println("Anzahl der Landungen: " + flight.getAnzahlLandungen()); - System.out.println("Pilotinformationen: " + flight.getPilotInformationen()); - System.out.println("Nachtflug: " + (flight.isNachtflug() ? "Ja" : "Nein")); - System.out.println("Kommentar: " + flight.getKommentar()); - } - - public void displayAllFlights(List flights) { - for (Flight flight : flights) { - displayFlightDetails(flight); - } - } -} diff --git a/src/views/HomeScreen.java b/src/views/HomeScreen.java index ba2ebca..59b3e8f 100644 --- a/src/views/HomeScreen.java +++ b/src/views/HomeScreen.java @@ -36,7 +36,7 @@ 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).display()); + 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()); @@ -44,7 +44,7 @@ public class HomeScreen { editPilotsBtn.setOnAction(e -> { Pilots pilots = (Pilots) XMLHelper.loadFromXML("pilots.xml"); if (pilots != null && !pilots.getPilots().isEmpty()) { - new ManagePilotProfileScreen(stage).displayEditSelection(pilots); // Aufruf mit Pilotenliste + new ManagePilotProfileScreen(stage).displayEditSelection(); // Aufruf mit Pilotenliste } else { showAlert("Keine Piloten", "Es sind keine Piloten zum Bearbeiten verfügbar."); } diff --git a/src/views/ManagePilotProfileScreen.java b/src/views/ManagePilotProfileScreen.java index 253c5b3..0c3c6d2 100644 --- a/src/views/ManagePilotProfileScreen.java +++ b/src/views/ManagePilotProfileScreen.java @@ -1,33 +1,35 @@ package views; +import controllers.ManagePilotProfileController; 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.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; import models.Pilot; -import models.Pilots; -import utils.XMLHelper; import java.util.ArrayList; public class ManagePilotProfileScreen { private Stage stage; + private ManagePilotProfileController controller; public ManagePilotProfileScreen(Stage stage) { this.stage = stage; + this.controller = new ManagePilotProfileController(); } public void display() { display(null); } - public void displayEditSelection(Pilots pilots) { + public void displayEditSelection() { Label label = new Label("Wählen Sie einen Piloten zum Bearbeiten aus:"); ComboBox pilotComboBox = new ComboBox<>(); - pilotComboBox.getItems().addAll(pilots.getPilots()); + pilotComboBox.getItems().addAll(controller.getPilotsList()); pilotComboBox.setPromptText("Pilot auswählen"); Button selectBtn = new Button("Auswählen"); @@ -46,7 +48,6 @@ public class ManagePilotProfileScreen { VBox vbox = new VBox(10, label, pilotComboBox, selectBtn); vbox.setAlignment(Pos.CENTER); vbox.setPadding(new Insets(20)); - BorderPane borderPane = new BorderPane(); borderPane.setTop(backButton); @@ -57,65 +58,69 @@ public class ManagePilotProfileScreen { Scene scene = new Scene(borderPane, 800, 600); scene.getStylesheets().add(getClass().getResource("/resources/styles.css").toExternalForm()); - stage.setScene(scene); stage.show(); } public void display(Pilot pilot) { - Label label = new Label(pilot == null ? "Pilotendaten eingeben:" : "Pilotendaten bearbeiten:"); - TextField nameField = new TextField(pilot != null ? pilot.getName() : ""); - TextField adresseField = new TextField(pilot != null ? pilot.getAdresse() : ""); - TextField kontaktinformationenField = new TextField(pilot != null ? pilot.getKontaktinformationen() : ""); - TextField lizenzField = new TextField(); - TextField zertifikatField = new TextField(); + Label label = new Label(pilot == null ? "Neuen Piloten anlegen" : "Pilotenprofil bearbeiten"); + label.setStyle("-fx-font-size: 18px; -fx-font-weight: bold;"); + TextField nameField = new TextField(); nameField.setPromptText("Name"); + TextField adresseField = new TextField(); adresseField.setPromptText("Adresse"); + TextField kontaktinformationenField = new TextField(); kontaktinformationenField.setPromptText("Kontaktinformationen"); - lizenzField.setPromptText("Neue Lizenz"); - zertifikatField.setPromptText("Neues Zertifikat"); - - ListView lizenzListView = new ListView<>(); - ListView zertifikatListView = new ListView<>(); if (pilot != null) { - lizenzListView.getItems().addAll(pilot.getLizenzen()); - zertifikatListView.getItems().addAll(pilot.getZertifikate()); + nameField.setText(pilot.getName()); + adresseField.setText(pilot.getAdresse()); + kontaktinformationenField.setText(pilot.getKontaktinformationen()); } - Button addLizenzBtn = new Button("Lizenz hinzufügen"); - addLizenzBtn.setOnAction(e -> { - if (!lizenzField.getText().isEmpty()) { - lizenzListView.getItems().add(lizenzField.getText()); + ListView lizenzListView = new ListView<>(); + lizenzListView.getItems().addAll(pilot != null ? pilot.getLizenzen() : new ArrayList<>()); + + TextField lizenzField = new TextField(); + lizenzField.setPromptText("Neue Lizenz hinzufügen"); + Button addLizenzButton = new Button("Hinzufügen"); + addLizenzButton.setOnAction(e -> { + String lizenz = lizenzField.getText(); + if (!lizenz.isEmpty()) { + lizenzListView.getItems().add(lizenz); lizenzField.clear(); } }); - Button addZertifikatBtn = new Button("Zertifikat hinzufügen"); - addZertifikatBtn.setOnAction(e -> { - if (!zertifikatField.getText().isEmpty()) { - zertifikatListView.getItems().add(zertifikatField.getText()); + ListView zertifikatListView = new ListView<>(); + zertifikatListView.getItems().addAll(pilot != null ? pilot.getZertifikate() : new ArrayList<>()); + + TextField zertifikatField = new TextField(); + zertifikatField.setPromptText("Neues Zertifikat hinzufügen"); + Button addZertifikatButton = new Button("Hinzufügen"); + addZertifikatButton.setOnAction(e -> { + String zertifikat = zertifikatField.getText(); + if (!zertifikat.isEmpty()) { + zertifikatListView.getItems().add(zertifikat); zertifikatField.clear(); } }); - Button submitBtn = new Button(pilot == null ? "Hinzufügen" : "Speichern"); - - submitBtn.setOnAction(e -> handleSaveProfile(pilot, nameField, adresseField, kontaktinformationenField, - lizenzListView, zertifikatListView)); - - Button viewPilotsBtn = new Button("Alle Piloten anzeigen"); - viewPilotsBtn.setOnAction(e -> new PilotView(stage).displayAllPilots()); + Button saveBtn = new Button("Speichern"); + saveBtn.setOnAction(e -> savePilot(pilot, nameField, adresseField, kontaktinformationenField, lizenzListView, zertifikatListView)); Button backButton = new Button("Zurück"); backButton.setOnAction(e -> new HomeScreen(stage).display()); - VBox vbox = new VBox(10, label, nameField, adresseField, kontaktinformationenField, lizenzField, addLizenzBtn, - lizenzListView, zertifikatField, addZertifikatBtn, zertifikatListView, submitBtn, viewPilotsBtn); + 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); + zertifikatBox.setAlignment(Pos.CENTER); + + VBox vbox = new VBox(10, label, nameField, adresseField, kontaktinformationenField, lizenzBox, zertifikatBox, saveBtn); vbox.setAlignment(Pos.CENTER); vbox.setPadding(new Insets(20)); - BorderPane borderPane = new BorderPane(); borderPane.setTop(backButton); @@ -130,8 +135,8 @@ public class ManagePilotProfileScreen { stage.show(); } - private void handleSaveProfile(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 { @@ -159,16 +164,7 @@ public class ManagePilotProfileScreen { pilot.setLizenzen(new ArrayList<>(lizenzListView.getItems())); pilot.setZertifikate(new ArrayList<>(zertifikatListView.getItems())); - Pilots pilots = (Pilots) XMLHelper.loadFromXML("pilots.xml"); - if (pilots == null) { - pilots = new Pilots(new ArrayList<>()); - } - - if (!pilots.getPilots().contains(pilot)) { - pilots.getPilots().add(pilot); - } - - XMLHelper.saveToXML(pilots, "pilots.xml"); + controller.savePilot(pilot); new HomeScreen(stage).display(); } catch (IllegalArgumentException e) { diff --git a/src/views/PilotView.java b/src/views/PilotView.java deleted file mode 100644 index 20ce787..0000000 --- a/src/views/PilotView.java +++ /dev/null @@ -1,83 +0,0 @@ -package views; - -import javafx.geometry.Insets; -import javafx.geometry.Pos; -import javafx.scene.Scene; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.ScrollPane; -import javafx.scene.layout.BorderPane; -import javafx.scene.layout.VBox; -import javafx.stage.Stage; -import models.Pilot; -import models.Pilots; -import utils.XMLHelper; - -import java.util.List; - -public class PilotView { - private Stage stage; - - public PilotView(Stage stage) { - this.stage = stage; - } - - public void displayPilotDetails(Pilot pilot) { - Label nameLabel = new Label("Name: " + pilot.getName()); - Label adresseLabel = new Label("Adresse: " + pilot.getAdresse()); - Label kontaktLabel = new Label("Kontaktinformationen: " + pilot.getKontaktinformationen()); - Label lizenzenLabel = new Label("Lizenzen: " + String.join(", ", pilot.getLizenzen())); - Label zertifikateLabel = new Label("Zertifikate: " + String.join(", ", pilot.getZertifikate())); - - VBox vbox = new VBox(10, nameLabel, adresseLabel, kontaktLabel, lizenzenLabel, zertifikateLabel); - vbox.setAlignment(Pos.CENTER); - vbox.setPadding(new Insets(20)); - - - Button backButton = new Button("Zurück"); - backButton.setOnAction(e -> new HomeScreen(stage).display()); - - BorderPane borderPane = new BorderPane(); - borderPane.setTop(backButton); - borderPane.setCenter(vbox); - BorderPane.setAlignment(backButton, Pos.TOP_LEFT); - BorderPane.setMargin(backButton, new Insets(10)); - - Scene scene = new Scene(borderPane, 800, 600); // Fenstergröße angepasst - scene.getStylesheets().add(getClass().getResource("/resources/styles.css").toExternalForm()); - stage.setScene(scene); - stage.setTitle("Pilot Details"); - stage.show(); - } - - public void displayAllPilots() { - Pilots pilotsData = (Pilots) XMLHelper.loadFromXML("pilots.xml"); - List pilots = pilotsData != null ? pilotsData.getPilots() : List.of(); - - VBox vbox = new VBox(10); - vbox.setPadding(new Insets(20)); - - for (Pilot pilot : pilots) { - Label pilotLabel = new Label(pilot.getName()); - vbox.getChildren().add(pilotLabel); - } - - ScrollPane scrollPane = new ScrollPane(vbox); // ScrollPane hinzugefügt - scrollPane.setFitToWidth(true); - scrollPane.setFitToHeight(true); - - Button backButton = new Button("Zurück"); - backButton.setOnAction(e -> new HomeScreen(stage).display()); - - BorderPane borderPane = new BorderPane(); - borderPane.setTop(backButton); - borderPane.setCenter(scrollPane); // ScrollPane anstelle von VBox hinzugefügt - BorderPane.setAlignment(backButton, Pos.TOP_LEFT); - BorderPane.setMargin(backButton, new Insets(10)); - - Scene scene = new Scene(borderPane, 800, 600); // Fenstergröße angepasst - stage.setScene(scene); - stage.setTitle("Alle Piloten"); - stage.show(); - } -} diff --git a/src/views/ViewLogbookScreen.java b/src/views/ViewLogbookScreen.java index 39eb5cf..2a2623b 100644 --- a/src/views/ViewLogbookScreen.java +++ b/src/views/ViewLogbookScreen.java @@ -1,5 +1,6 @@ package views; +import controllers.AddFlightController; import controllers.LogbookController; import javafx.beans.property.SimpleStringProperty; import javafx.collections.ObservableList; @@ -18,6 +19,7 @@ import java.time.format.DateTimeFormatter; public class ViewLogbookScreen { private Stage stage; private LogbookController controller; + private AddFlightController addFlightController; public ViewLogbookScreen(Stage stage) { this.stage = stage; @@ -26,7 +28,8 @@ public class ViewLogbookScreen { public void display() { Label label = new Label("Fluglogbuch Pegasus"); - label.setStyle("-fx-font-size: 32px; -fx-font-weight: bold; -fx-text-fill: #431EB9; -fx-font-family: 'Arial Black';"); + label.setStyle( + "-fx-font-size: 32px; -fx-font-weight: bold; -fx-text-fill: #431EB9; -fx-font-family: 'Arial Black';"); TableView table = new TableView<>(); table.setStyle("-fx-font-weight: bold;"); @@ -65,16 +68,31 @@ public class ViewLogbookScreen { TableColumn kommentarCol = new TableColumn<>("Kommentar"); kommentarCol.setCellValueFactory(cellData -> cellData.getValue().kommentarProperty()); - table.getColumns().addAll(datumCol, musterCol, abflugortCol, abflugzeitCol, ankunftszeitCol, tToFCol, anzahlLandungenCol, pilotCol, nachtflugCol, kommentarCol); + table.getColumns().addAll(datumCol, musterCol, abflugortCol, abflugzeitCol, ankunftszeitCol, tToFCol, + anzahlLandungenCol, pilotCol, nachtflugCol, kommentarCol); 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(); - controller.editFlight(selectedFlight); + if (selectedFlight != null) { + AddFlightScreen addFlightScreen = new AddFlightScreen(stage, selectedFlight); + addFlightScreen.display(); + } }); Button backButton = new Button("Zurück");