From 28ad2b878f1a21d03879e81cd441d0175d89e6b1 Mon Sep 17 00:00:00 2001 From: damithc Date: Mon, 25 May 2020 00:58:18 +0800 Subject: [PATCH 01/29] Add Gradle support --- build.gradle | 41 +++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 58695 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 183 +++++++++++++++++++++++ gradlew.bat | 103 +++++++++++++ text-ui-test/runtest.sh | 0 6 files changed, 332 insertions(+) create mode 100644 build.gradle create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100755 gradlew create mode 100644 gradlew.bat mode change 100644 => 100755 text-ui-test/runtest.sh diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000000..885198fcfa --- /dev/null +++ b/build.gradle @@ -0,0 +1,41 @@ +plugins { + id 'java' + id 'application' + id 'com.github.johnrengelman.shadow' version '5.1.0' +} + +repositories { + mavenCentral() +} + +dependencies { + testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' + testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' +} + +test { + useJUnitPlatform() + + testLogging { + events "passed", "skipped", "failed" + + showExceptions true + exceptionFormat "full" + showCauses true + showStackTraces true + showStandardStreams = false + } +} + +application { + mainClassName = "seedu.duke.Duke" +} + +shadowJar { + archiveBaseName = "duke" + archiveClassifier = null +} + +run{ + standardInput = System.in +} diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f3d88b1c2faf2fc91d853cd5d4242b5547257070 GIT binary patch literal 58695 zcma&OV~}Oh(k5J8>Mq;vvTfV8ZQE5{wr$(iDciPf+tV}m-if*I+;_h3N1nY;M6TF7 zBc7A_WUgl&IY|&uNFbnJzkq;%`2QLZ5b*!{1OkHidzBVe;-?mu5upVElKVGD>pC88 zzP}E3wRHBgaO?2nzdZ5pL;m-xf&RU>buj(E-s=DK zf%>P9se`_emGS@673tqyT^;o8?2H}$uO&&u^TlmHfPgSSfPiTK^AZ7DTPH`Szw4#- z&21E&^c|dx9f;^@46XDX9itS+ZRYuqx#wG*>5Bs&gxwSQbj8grds#xkl;ikls1%(2 zR-`Tn(#9}E_aQ!zu~_iyc0gXp2I`O?erY?=JK{M`Ew(*RP3vy^0=b2E0^PSZgm(P6 z+U<&w#)I=>0z=IC4 zh4Q;eq94OGttUh7AGWu7m){;^Qk*5F6eTn+Ky$x>9Ntl~n0KDzFmB0lBI6?o!({iX zQt=|-9TPjAmCP!eA{r|^71cIvI(1#UCSzPw(L2>8OG0O_RQeJ{{MG)tLQ*aSX{AMS zP-;|nj+9{J&c9UV5Ww|#OE*Ah6?9WaR?B04N|#`m0G-IqwdN~Z{8)!$@UsK>l9H81 z?z`Z@`dWZEvuABvItgYLk-FA(u-$4mfW@2(Eh(9fe`5?WUda#wQa54 z3dXE&-*@lsrR~U#4NqkGM7Yu4#pfGqAmxmGr&Ep?&MwQ9?Z*twtODbi;vK|nQ~d_N z;T5Gtj_HZKu&oTfqQ~i`K!L||U1U=EfW@FzKSx!_`brOs#}9d(!Cu>cN51(FstP_2dJh>IHldL~vIwjZChS-*KcKk5Gz zyoiecAu;ImgF&DPrY6!68)9CM-S8*T5$damK&KdK4S6yg#i9%YBH>Yuw0f280eAv3 za@9e0+I>F}6&QZE5*T8$5__$L>39+GL+Q(}j71dS!_w%B5BdDS56%xX1~(pKYRjT; zbVy6V@Go&vbd_OzK^&!o{)$xIfnHbMJZMOo``vQfBpg7dzc^+&gfh7_=oxk5n(SO3 zr$pV6O0%ZXyK~yn++5#x`M^HzFb3N>Vb-4J%(TAy#3qjo2RzzD*|8Y} z7fEdoY5x9b3idE~-!45v?HQ$IQWc(c>@OZ>p*o&Om#YU904cMNGuEfV=7=&sEBWEO z0*!=GVSv0>d^i9z7Sg{z#So+GM2TEu7$KXJ6>)Bor8P5J(xrxgx+fTLn1?Jlotz*U z(ekS*a2*ml5ft&R;h3Gc2ndTElB!bdMa>UptgIl{pA+&b+z_Y&aS7SWUlwJf-+PRv z$#v|!SP92+41^ppe}~aariwztUtwKA8BBLa5=?j3@~qHfjxkvID8CD`t5*+4s|u4T zLJ9iEfhO4YuAl$)?VsWcln|?(P=CA|!u}ab3c3fL8ej9fW;K|@3-c@y4I;^8?K!i0 zS(5Cm#i85BGZov}qp+<-5!Fh+KZev3(sA2D_4Z~ZLmB5B$_Yw2aY{kA$zuzggbD{T zE>#yd3ilpjM4F^dmfW#p#*;@RgBg{!_3b6cW?^iYcP!mjj!}pkNi{2da-ZCD2TKKz zH^x^+YgBb=dtg@_(Cy33D|#IZ&8t?w8$E8P0fmX#GIzq~w51uYmFs{aY76e0_~z2M z(o%PNTIipeOIq(H5O>OJ*v8KZE>U@kw5(LkumNrY>Rv7BlW7{_R9v@N63rK)*tu|S zKzq|aNs@81YUVZ5vm>+pc42CDPwQa>oxrsXkRdowWP!w?=M(fn3y6frEV*;WwfUV$s31D!S_;_~E@MEZ>|~wmIr05#z2J+& zBme6rnxfCp&kP@sP)NwG>!#WqzG>KN7VC~Gdg493So%%-P%Rk!<|~-U|L3VASMj9K zk(Pfm1oj~>$A>MFFdAC8M&X0i9-cV7Q($(R5C&nR5RH$T&7M=pCDl`MpAHPOha!4r zQnYz$7B1iLK$>_Ai%kZQaj-9)nH$)tESWUSDGs2|7plF4cq1Oj-U|+l4Ga}>k!efC z*ecEudbliG+%wI8J#qI!s@t%0y9R$MBUFB)4d47VmI`FjtzNd_xit&l1T@drx z&4>Aj<2{1gUW8&EihwT1mZeliwrCN{R|4@w4@@Btov?x5ZVzrs&gF0n4jGSE33ddUnBg_nO4Zw)yB$J-{@a8 z);m%fvX2fvXxogriNb}}A8HxA)1P-oK+Da4C3pofK3>U_6%DsXFpPX}3F8O`uIpLn zdKjq(QxJTJ4xh->(=lxWO#^XAa~<7UxQl8~8=izS!TcPmAiBP5Et7y?qEbFd9Q=%IJ;%Kn$lto-~3`}&`x=AVS+Uo7N*hbUxhqVH_w^sn!74z{Ka#*U6s z=8jIrHpUMBC@@9Jn~GS<$lse*EKuX%3Swl5&3~GiK_$vn8Vjqe{mjhBlH}m4I8qK+ ztU50COh7)d-gXpq-|}T;biGa^e=VjxjjFuoGIA8`2jJ}wNBRcsx24?7lJ7W4ksNPv zA7|gcXT@~7KTID#0|EX#OAXvgaBJ8Jg!7X#kc1^Tvl;I(=~(jtn-(5bhB=~J^w5bw z8^Hifeupm;nwsSDkT{?x?E(DgLC~Nh8HKQGv`~2jMYrz9PwS^8qs3@nz4ZBCP5}%i z=w}jr2*$X-f(zDhu%D8(hWCpix>TQpi{e`-{p^y?x4?9%)^wWc?L}UMcfp~lL|;g) zmtkcXGi9#?cFOQQi_!Z8b;4R%4y{$SN~fkFedDJ&3eBfHg|DRSx09!tjoDHgD510Z z_aJLHdS&7;Dl;X|WBVyl_+d+2_MK07^X1JEi_)v$Z*ny-()VrD6VWx|Un{)gO0*FQ zX{8Ss3JMrV15zXyfCTsVO@hs49m&mN(QMdL3&x@uQqOyh2gnGJYocz0G=?BX7qxA{ zXe0bn4ij^;wfZfnRlIYkWS^usYI@goI9PccI>}Ih*B!%zv6P$DoXsS%?G)|HHevkG z>`b#vtP=Lx$Ee(t??%_+jh(nuc0Q&mCU{E3U z1NqNK!XOE#H2Pybjg0_tYz^bzX`^RR{F2ML^+<8Q{a;t(#&af8@c6K2y2m zP|parK=qf`I`#YxwL=NTP>tMiLR(d|<#gEu=L-c!r&(+CpSMB5ChYW1pUmTVdCWw|!Ao?j&-*~50S`=) z9#Knf7GPA19g%Y7wip@`nj$aJcV|SakXZ*Q2k$_SZlNMx!eY8exF;navr&R)?NO9k z#V&~KLZ0c9m|Mf4Gic}+<=w9YPlY@|Pw*z?70dwOtb<9-(0GOg>{sZaMkZc9DVk0r zKt%g5B1-8xj$Z)>tWK-Gl4{%XF55_Ra3}pSY<@Y&9mw`1jW8|&Zm{BmHt^g=FlE{` z9Lu7fI2v3_0u~apyA;wa|S4NaaG>eHEw&3lNFVd_R9E=Y? zgpVQxc9{drFt2pP#ZiN~(PL%9daP4pWd*5ABZYK{a@e&Vb`TYiLt$1S>KceK36Ehz z;;MI%V;I`#VoSVAgK3I%-c>ViA>nt=5EZ zjr$Jv~$_vg<$q<@CpZ1gdqP_3v^)uaqZ`?RS_>f(pWx3(H;gWpjR?W8L++YPW;)Vw3)~tozdySrB3A2;O<%1F8?Il4G|rO0mEZYHDz!?ke!$^bEiWRC1B%j~ws0+hHS;B8l5Wh)e+Ms7f4M4CbL%Q_*i~cP}5-B(UkE&f7*pW6OtYk5okQCEoN4v|7;(+~~nyViqo5 z(bMGQi$)KN6EmfVHv4pf2zZMJbcAKyYy>jY@>LB5eId|2Vsp{>NMlsee-tmh({;@b z@g;wiv8@a1qrDf-@7$(MR^M^*dKYBewhIDFX%;*8s zR#u?E;DJO;VnTY6IfbO=dQ61V0DisUAs4~t|9`9ZE(jG}ax#-xikDhsO_4^RaK ziZ?9AJQP_{9WuzVk^s_U+3V8gOvVl5(#1>}a|RL>};+uJB%nQM-J>M4~yK)cioytFXtnmOaJZSiE+3g}C`Im~6H z*+-vjI>ng5w>>Y!L(+DwX2gs0!&-BFEaDie4i5ln*NGP$te7$F9iUlJl4`XpkAsPm z0l?GQ17uN^=g~u1*$)S`30xL%!`LW*flwT*#svAtY(kHXFfvA`dj*pDfr0pBZ`!La zWmX$Z@qyv|{nNsRS|+CzN-Pvb>47HEDeUGFhpp5C_NL0Vp~{Wc{bsm_5J!#tuqW@? z)Be zb&Gj&(l*bHQDq7w-b`F9MHEH*{Dh~0`Gn8t`pz}!R+q~4u$T@cVaUu`E^%0f-q*hM z1To6V31UGJN7a-QW5;nhk#C26vmHyjTVZkdV zqYMI9jQY)3oZt=V0L7JZQ=^c2k){Y_lHp&V_LIi*iX^Ih3vZ_K<@Di(hY<&g^f?c$wwF-wX1VLj>ZC4{0#e`XhbL_$a9uXS zKph*4LupSV2TQBCJ4AfOXD8fs2;bAGz-qU4=Qj$^1ZJX z2TtaVdq>OjaWGvv9)agwV)QW9eTZ-xv`us2!yXSARnD5DwX_Vg*@g4w!-zT|5<}-7 zsnllGRQz>k!LwdU`|i&!Bw^W7CTUU3x`Zg8>XgHj=bo!cd<#pI8*pa*1N`gg~I0ace!wzZoJ)oGScm~D_Sc;#wFed zUo;-*0LaWVCC2yqr6IbeW3`hvXyMfAH94qP2|cN``Z%dSuz8HcQ!WT0k38!X34<6l zHtMV%4fH5<6z-lYcK;CTvzzT6-^xSP>~a*8LfbByHyp$|X*#I6HCAi){gCu1nvN%& zvlSbNFJRCc&8>f`$2Qa`fb@w!C11v1KCn)P9<}ei0}g*cl~9A9h=7(}FO!=cVllq3 z7nD)E%gt;&AYdo{Ljb2~Fm5jy{I><%i*GUlU8crR4k(zwQf#nima@xb%O71M#t-4< z(yjX(m^mp_Y;5()naqt2-VibylPS)Oof9uBp$3Gj`>7@gjKwnwRCc>rx%$esn);gI z5B9;~uz57n7Rpm8K^o=_sFPyU?>liHM&8&#O%f)}C5F7gvj#n#TLp@!M~Q?iW~lS}(gy%d&G3p?iBP z(PZQUv07@7!o3~1_l|m5m;Xr)^QK_JaVAY3v1UREC*6>v;AT$BO`nA~KZa1x3kV2F z%iwG7SaaAcT8kalCa^Hg&|eINWmBQA_d8$}B+-Q_@6j_{>a- zwT3CMWG!A}Ef$EvQsjK>o)lJ;q!~#F%wo`k-_mT=+yo%6+`iGe9(XeUl;*-4(`G;M zc@+ep^Xv&<3e7l4wt48iwaLIC1RhSsYrf6>7zXfVD zNNJ1#zM;CjKgfqCabzacX7#oEN{koCnq1-stV+-CMQ=ZX7Fpd*n9`+AEg9=p&q7mTAKXvcbo?$AVvOOp{F>#a;S?joYZl_f}BECS%u&0x!95DR;|QkR9i}`FEAsPb=)I z8nb=4iwjiLRgAF}8WTwAb^eA>QjL4Srqb#n zTwx^-*Z38Uzh@bX$_1tq>m{o8PBX*t3Lqaf$EBqiOU*2NFp{LJX#3}p9{|v{^Hg4f zlhllKI>F+>*%mu6i9V7TT*Wx-zdK z(p8faUOwGOm5mBC%UGA1jO0@IKkG;i&+6Ur8XR2ZuRb$*a}R^-H6eKxcYodlXsF`& z{NkO+;_Yh-Ni@vV9iyzM43Yibn;oC7hPAzC24zs&+RYdY&r`3&&fg2hs62ysV^G`N zHMfBEFo8E3S$0C_m({bL8QCe$B@M{n1dLsaJYIU;(!n*V?0I1OvBB=iYh&`?u8 z&~n-$nbVIhO3mMhCQRlq%XRr1;Hvl=9E_F0sc9!VLnM>@mY~=Cx3K5}wxHKEZF9pC zIdyu1qucM!gEiomw7bW0-RwbX7?o=FE#K0l4`U2KhC8*kMWaEWJyVNZVu_tY2e&4F zb54Lh=Oz>(3?V$!ArXFXh8Cb3i;%KQGCrW$W#;kvx$YA2gofNeu?@nt>Yq8?2uJQp zUTo14hS%&dHF3Uhm~Z1>W)yb%&HoM!3z?%a%dmKT#>}}kKy2B=V3{Nu=bae%V%wU$ zb4%^m?&qn==QeHo`nAs3H}wtiK~!!&i|iBLfazh6!y9F)ToKNyE0B385!zq{p)5vB zvu`R#ULIS|2{3w52c*c$4}Pe>9Fw&U^>Bb_LUWn!xPx3X-uQsv(b1XFvFzn#voq0* z5~o`V_G805QXdgAOwOjoqmZ?uzwBVYSNP0Ie8FL`P0VK1J4CzV@t&%0duHB{;yIL$FZ9 zz#s#%ZG6ya&AwE;0_~^$1K

Hnj76Oym1QVh(3qRgs)GmgnEt-KxP|nCFY3uezZn zmtR0CZ$Z_-+f07?lu_tr~IC{&U6+QOth>ZgYk4V2FI$B2V3`M`Jk zsr>>lupymPeK129PfpDt9?GA2;I>03Ktz8NxwvTroqu8oaRB&bXT}G=^2UyOW}(4H z;9sG^YwV8K7pC&&viM^X_pfeFoN!cIhrE>OPQ5E<4KKDyPhRV^BGb_^Y6GO6#w}c= zu`0fC-@F4qXQtnB^nPmfI7Uw0bLhY^09TCO+H2(nvg8jdPjMAi4oSX%GP3oeo0`ks z%DoV|waU-Q7_libJCwnnOL9~LoapKqFPpZx?5FygX zsA~*ZR7X=@i{smf?fgxbcY6Y`JvD50P=R;Xv^sANPRp-Hc8n~Wb*gLIaoZJ2Q^CFe z_=G}y&{_NXT|Ob??}$cF7)$oPQMaeN_va1f%>C>V2E01uDU=h~<_fQKjtnl_aho2i zmI|R9jrNdhtl+q*X@}>l08Izz&UJygYkbsqu?4OOclV{GI5h98vfszu2QPiF?{Tvh19u_-C^+NjdAq!tq&Rd`ejXw#` z@U15c$Nmylco)Yj4kctX{L+lz$&CqTT5~}Q>0r-Xe!m5+?du6R&XY|YD5r5C-k*`s zOq-NOg%}RJr5ZWV4)?EO%XzZg&e8qVFQ?40r=8BI-~L%9T7@_{1X@<7RjboXqMzsV z8FiSINMjV*vC^FCv_;`jdJ-{U1<_xjZg4g?ek z4FtsapW_vFGqiGcGHP%?8US~Dfqi8^ZqtHx!}0%dqZFg%nQB)8`mE$~;1)Fb76nFk z@rK#&>2@@)4vO&gb{9&~R8-_{8qz6Rmw`4zeckD(L9xq}{r(fUO0Zh-R(d#x{<0j| z?6xZ2sp3mWnC}40B~g2QinHs1CZqZH&`+x2yBLT8hF7oWNIs_#YK2cyHO6AoGRG|RM>Hyn(ddpXFPAOGh~^0zcat`%&WoEQf9)!@l*3Tt@m>Lb z6$+$c!zsy_=%L9!_;jfd`?VXDd*^Vn%G>n~V9Vr6+_D@#E+dWB#&zAE+6xJeDMr1j zV+Tp~ht!M%^6f?)LBf8U1O4G#CutR07SB>8C&_&;g3TdIR#~e~qRtwd>&)|-ztJJ#4y0|UMjhJZlS8gA zAA260zUh+!$+xMfWKs|Lr23bcy#)JNnY|?WOka&wTS7_u%*N7PrMl1Lp9gxJY%CF? zz4IA@VVxX{knZPlNF+$9)>YIj#+(|$aflt=Wnforgn6`^3T+vaMmbshBjDi&tR(a7 zky~xCa77poRXPPam)@_UCwPdha^X~Aum=c0I@yTyD&Z!3pkA7LKr%Y6g%;~0<`{2& zS7W$AY$Kd}3Tg9CJgx=_gKR59zTMROsos?PU6&ocyCwCs8Qx1R%2#!&5c%~B+APu( z<1EXfahbm{XtOBK%@2a3&!cJ6R^g|2iLIN1)C2|l=;uj%tgSHoq2ojec6_4@6b<8BYG1h-Pm_V6dkRB!{T?jwVIIj&;~b7#%5Ew=0Fx zc(p7D1TT&e=hVt4spli}{J6tJ^}WL>sb`k}&gz+6It`Yz6dZdI53%$TR6!kSK2CfT*Q$`P30 z;$+G$D*C$U(^kkeY!OWn$j@IUu0_a{bZQ=TCbHD1EtmZ0-IBR<_3=tT%cz$>EE!V}pvfn7EMWs^971+XK}~kxSc_ATJJD$?)1Gz^Jq!>Hz#KkdCJ~jb-Y*Xv01_}}=T_V-A1<3O!V9Ezf z%Lnjihb3>=ZV}jSeqNu5AAdVbe|`;|p<%W#-<$s1oDYrB;C({psqV>ENkhadsC{cfEx=teVSB`?FOs+}d#pssxP z(ihudAVu3%%!*vOIWY11fn1M0&W|(|<2lEShz|#%W|wV2qM%#+P9NOy1x8jytHpfU zh;_L^uiL<<$L@~NpRXSrkJgdC>9R=>FmVu3^#C?3H>P{ue=mcv7lBmnfA?mB|L)EF zHv%Nl|D}0Tb~JVnv$ZysvbD8zw)>|5NpW3foe!QHipV9>Zy`|<5?O+rsBr*nZ4OE} zUytv%Rw7>^moSMsSU?@&a9+OdVgzWZnD>QXcUd{dd7vad+=0Hy)4|0A`}rpCx6cu!Ee5AM=iJ?|6=pG^>q(ExotyZP3(2PGhgg6-FkkQHS?nHX(yU0NG;4foCV|&)7 z1YK!bnv%#5n<25|CZ>4r1nK=D39qMzLAja*^#CN(aBbMx${?Iur3t=g2EMK|KwOF?I@W~0y`al&TGqJ zwf#~(?!>@#|JbDjQV9ct%+51l%q|lcY&f{FV&ACRVW*%VY6G5DzTpC!e%=T30mvav zRk$JOTntNoxRv>PDlJG1X=uep&???K00ep|l_#7=YZPuRHYoM46Z$O=ZZuGy_njgC z>P@gd+zKH5SjpWQ!h_r*!ol1s{9DS@sD4}xgFxaw>|av!xrKzg?rGnhZ#uZeU~iod z3-i*Hl@7cge0);y{DCVU(Ni1zg{yE&CxYT7)@zJ%ZZABj-Fh}0au^)*aw`vpmym;( z5|JZ!EACYenKNXH%=Md{my$sI3!8^FgtqkMcUR%w_)EBdP5DZ64aCIR%K99tId6SU ziT8Ef)K%7{XuIpPi}N+&FCm$elE>oKY;3c$x+*mXy?~wt6~?ss$HGqCm=YL2xzVTQ zr>*2_F;7j{5}NUPQ(aY0+h~rOKN|IA28L7^4XjX!L0C^vFB+3R5*1+s@k7;4d#U=5 zXTy8JN^_BCx1a4O3HMa9rf@?Fz>>dq}uvkY7!c?oksgs~xrpCo1{}^PD?w}Ug z3MbfBtRi z$ze~eRSLW^6bDJJeAt^5El{T*i1*v9wX{T7`a2wAVA z%j>3m*g^lc*~GOHFNy?h7>f7mPU*)3J>yPosaGkok}2#?wX5d$9moM~{NTzLznVhX zKa}bFQt#De`atoWzj4Lb@ZCud_T9rA@6VcmvW(+X?oIaH-FDbEg#0Slwf|7f!zUO( z7EUzpBOODL&w~(tNt0z|<9}Filev&4y;SQPp+?kIvJgnpc!^eYmsWz1)^n`LmP&Ui z-Oi1J2&O|$I<^V@g2Z91l3OArSbCkYAD0Tuw-O(INJJ>t%`DfIj}6%zmO+=-L{b!P zLRKvZHBT=^`60YuZon~D$;8UDlb-5l8J=1erf$H(r~ryWFN)+yY@a;=CjeUGNmexR zN)@)xaHmyp$SJcl>9)buKst5_+XomJu34&QMyS zQR(N@C$@%EmfWB8dFN(@Z%xmRma@>QU}!{3=E`wrRCQ~W=Dwb}*CW8KxAJ;v@TAs3 zW}Pq5JPc)(C8Rths1LR}Bgcf6dPOX<#X08^QHkznM-S>6YF(siF;pf~!@)O{KR4q1_c`T9gxSEf`_;a-=bg6=8W zQ&t`BK^gsK-E0Jp{^gW&8F9k?L4<#}Y0icYT2r+Dvg!bnY;lNNCj_3=N=yd9cM9kY zLFg|R0X;NRMY%zD*DbAmFV`(V@IANtz4^_32CH*)XCc$A>P-v49$k@!o$8%Ug>3-- z$#Fpo9J>eUMKg>Cn+T0H!n0Hf#avZX4pp54cv}YcutP+CmKC~a745-zhZp`KNms;J zS3S49WEyS8gCRAY|B~6yDh*cehY52jOSA#MZmk2dzu`_XpBXx9jDf!H3~!`n zaGe=)1VkfIz?*$T3t>-Pwhrw447idZxrsi;ks;(NF>uVl12}zI(N~2Gxi)8yDv-TLgbZ;L&{ax&TBv;m@z6RcbakF^el{!&)<___n#_|XR%jedxzfXG!a2Eyi)4g zYAWkYK{bQzhm|=>4+*SLTG2<#7g-{oB48b05=?PeW;Jo3ebWlo5y5|cl?p8)~PVZqiT^A~w-V*st8kV%%Et1(}x(mE0br-#hyPspVehofF`{gjFXla1lrqXJqQKE9M)8Xe0ZO&s$}Q zBTPjH>N!UU%bRFqaX(O9KMoG$Zy|xt-kCDjz(E*VDaI={%q? zURR{qi>G^wNteX|?&ZfhK-93KZlPXmGMsPd1o?*f_ej~TkoQ#no}~&#{O=>RadgtR zvig@~IZMsm3)vOr`>TGKD&fbRoB*0xhK7|R?Jh-NzkmR}H6lJiAZTIM1#AXE1LOGx zm7j;4b(Lu6d6GwtnsCvImB8%KJD+8z?W{_bDEB$ulcKP*v;c z*Ymsd)aP+t$dAfC-XnbwDx3HXKrB{91~O}OBx)fsb{s-qXkY<@QK7p-q-aaX&F?GS z2};`CqoNJ$<0DuM2!NCbtIpJ9*1a8?PH#bnF#xf~AYOIc4dx1Bw@K=)9bRX;ehYs; z$_=Ro(1!iIM=kZDlHFB>Ef46#rUwLM%)(#oAG(gYp>0tc##V{#aBl!q``!iIe1GBn z+6^G^5)(nr z8h#bm1ZzI450T?!EL)>RWX8VwT1X`2f;dW!{b~S>#$Pa~D6#Hp!;85XzluH%v5325 z730-aW?rY1!EAt;j7d23qfbMEyRZqxP};uID8xmG@mGw~3#2T^B~~14K5?&dP&H@r zL|aXJsEcAAXEXfu2d-!otZTV=if~^EQD*!NkUFQaheV&b-?-zH6JfjKO)aYN=Do*5 zYZ-@m#)5U0c&sUqu_%-Editr5#%Ne&bs)DxOj2_}`f;I_ReEY9U&Cf3rb>A3LK(ZD zid0_-3RfsS*t&g!zw}C_9u(_ze-vc1L59CdBl(IS^yrvsksfvjXfm>(lcol%L3))Q z@ZT;aumO3Q#8R!-)U697NBM@11jQ>lWBPs#?M4_(w=V_73rsiZh8awEm>q1phn1Ks ze@D|zskeome3uilE8-dgG(EojlI(@Yhfm}Xh_AgueHV`SL##I@?VR+bEHH=sh21A_ zhs&pIN7YTLcmJiyf4lZ;`?pN0`8@QbzDpmT`$m0CTrTMiCq%dE&Cd_{-h`I~f8Kps zAuZt4z)}@T>w$9V@iLi=mh({yiCl}}d>JN)z;*G<6&mgl(CYhJHCAPl=PYK2D>*F zy;YK=xS@1JW7i=C)T04(2P#|fowalY=`Y`G8?eRMAKt|ddG9UF^0M5 zW=ZGZ5qb-z@}iS`4RKXvuPIfzUHT)rv<8a|b?bgB3n=ziCiX4m2~CdVBKHWxw2+Hz zLvqoAij9(0moKoo2$`dqS0?5-(?^RXfcsQB6hU2SAgq8wyeasuyFGcK+@An?8ZzVw zW8wwbZB@i=<<4fA7JKPkki6y>>qO3_bW>-uQ*>9g+g7M0U^`RV)YTrGu2Q=2K>fiI zY0dFs>+}xuOZE^efLK2K6&X@>+y10Oqejnnq^NjfXt9JpK4K_E=cl29 z(t2P;kl4AK_Jg9v{1(z)ESpyo_(Z`74D&J1A#J?l5&J^Ad1sm5;Po@s9v7wOs(=_T zkutjt`BaxT09G{-r>yzyKLlM(k`GZl5m+Tgvq=IN|VjtJ*Zu66@#Rw;qdfZqi15A@fr^vz?071F5!T`s>Lx5!TszI%UK|7dDU;rUCwrRcLh!TZZ9$UMfo z@Qzjw>tKS3&-pyWS^p4mMtx`AvwxVc?g?#8aj@jQ#YKDG0aCx{pU+36?ctAiz=f$k z05S(b&VPQgA(Sm`oP&M^eiHvBe&PcTb+j$!!Yx(j3iI5zcQLOn(QqfX5OElbSsQBUw7);5C92onieJyx`p{V!iwXk)+1v zA6vStRZo0hc>m5yz-pkby#9`iG5+qJ{x>6I@qeAK zSBFylj8{FU*0YbFd2FZ6zdt^2p?V;3F~kap`UQgf@}c33+6xP)hK)fmDo@mm=`47* z9S6rnwCSL&aqgZs959!lhEZZp`*>V8ifNmL;cqajMuaJ~t`;jLPB?X~Ylk_Z#Q;%} zV+sAJ=4505-DdnIR=@D_a`Gy#RxtSX+i-zInO@LVDOd*p>M-|X(qRrZ3S(>(=Oj>} z89d75&n?m^j>;SOXM=)vNoum|3YmzxjYx%^AU*V|5v@SjBYtESp^yz?eQ#>5pnCj} zJ_WCw23wGd2AA-iBve8Hq8`%B3K4@9q@a}sf$49IA^IPsX@QK)36mrzqOv?R_n9K@ zw3=^_m#j{gNR0;&+F~wlS(i8IQN8mIvIO)mkx|e)u*y+xDie}%mkZ*m)BQM^$R@-g z1FrP0{8A?EcxtxxxX&J;393ljwwG?2A2?y-1M0-tw$?5ssoEsbPi?sd2!s~TrwPLF zYo-5XYV7AU-c|Vb-v;>pVi^CwX(Rpt<9{Ic?@<9SrNu>F(gwij%?dC9^!Xo90o1-| z&_aPKo%+xyw64e&v<}F^-7sO0Cz-VOF@7**i@v&(Oy4Q8PbV+4&rKwmYyokM z48OZ|^%*mC_Q)RJ31D#b4o4Jzr{~BX4D#swW<31;qCil2qlim;e=9ymJAEXfv-|h3 z)>uqQ5~S+8IgiWW28Fqbq+@ukCLy+k7eGa1i5#G_tAUquw$FjFvQt6~kWa69KXvAj z-knF`5yWMEJvCbTX!K{L)VeNF?(+s?eNjtE5ivg^-#937-l()2nKr#cHShB&Pl^l8 zVYws26D^7nXPlm<_DYU{iDS>6Bq0@QsN%6n>XHVvP<^rDWscC!c+LFrK#)T@$%_0{ zob%f&oaq>1_Z8Ata@Y2K6n?GYg|l8SgUr(}hi4D!@KL~hjRv<}ZZ`tCD^ev=H&^0pP%6q2e+t=Ua`ag8xqWvNnIvCU|6ZA^L5v{DD)!mcQ@n6{=; z#Z)PrAz>*+h-|IV!&J*f@{xb!L7h3{?FEs*ifw5z2U9$&OkYseI68yb=V4xv*VK3- zVxGhtmedujX32y-kC{5ej-Wy#JvB~4oxTb{|1H825_B(A0#?CjUTc=PrGh6jAgK9h zoLAe`+NBdStZE@Y8UH^Rd*|R-|7Ke}wr$(CZQHhO+upHlCp)%n+fH_}S8%^%xqhu%20_1p=x#Dl9ia`c3iM+9Vh5?gyY8M9c$tJ5>}V_sidHN zoMl%rSgSK!7+Y8tQkYq|;Vh`4by2uMsUfnxkk2{S@a>V#d}fv}Yud*>paVi_~T zU!GoYwWbnG%92!Cte(zhZX-i9#KJ;b{$(aZs|{MerP#6||UUx$=y)4XOb zihyKn`_QhJ#~@_peJ*8yD4>I7wQyKkZG%#FTKZfb(@G+9x7-3@hG}+ZC&$7DwbaB$ zC)jLj7yituY&WpOWlG7Z4Tuxzdwo6k!3lgwhh7BYMyB? zO9Q5nvn77~g~c623b`Pe5efNzYD#2Sfmg>aMB5s?4NC|-0pIXy%%`J;+E{(irb!Szc8M8A@!}0zqJLoG4SJ5$~1*yRo0^Z`uObA+= zV?1sYNvzvWbP%AsMzoIo3Cwx~y%i8rHF(BgLS>tH5Ab|1wp$X_3o2_VB(pFxgQ5QQ zk@)Vy95$b%HVf4@ppX(wrv^Jwfrsu+9N_OUm}nD7Ch_7STj66EYsZR#`9k|Tf^@p& ziHwnO$p{TB#R(Q{Os>Un~0!r$JO zLZ&F%SP|%$TuG)mFeOhKr1?S!aa0jTV$2XIeZb_fgO&n{8HTe9s`L&(tKoy?OaS^$ zLHNrgYgq920EI~M>LyU7gK70$7*`nFKD^d>MoEAhsBU0%@*RW@%T(J z?+wVbz=mcN%4#7qlCpl_^Ay7VB%?+uW1WSNnQOj^tALyqTpV zkEN2C;qO_W)MYl^Ow5I;t3;z#iG82F(qe}#QeE;AjA=wM==dB(Gu+ez*5|RVxO4}l zt`o?*B;);-0`vR(#+Q^L4WH_9wklh-S-L-_zd%Q0LZ%|H5=>Z)-x#Z+m%p&6$2ScV zEBneIGo)r0oT)xjze*Q~AIqhB%lOM5Id}^eKwS!?b_;B&TouZsemyL&y`)#FX}ZKp zp)ZnB*^)1P@2bCoe+Z|#KhTBNrT)UN@WIuudw})fwHl)re1|b~E1F=xpH?7L77p>5 zei$aD@KO0<+zo1<&7OuZatNsPq24Whu%0jD_ z$ZZy6MzayYgTJulNEy8D$F%JDYgx|d6{6kpDg#s170<15bM#4tzvrDU$6bvu-hH@6 zgcjq&3aR3k(23$FaUA|iuoy*bO{2F6W0<+ZdsYvXjc?d@ZT8kM!GD}r@qr;TF@0Hb z2Dz-A!HZ$-qJ?F%w6_`t`8xk$f$MNBfjqwvJiVdD+pf7NVFGh?O=qp2vh%UcYvc{rFldib~rkIlo`seU%pO_6hmBWGMcUhsBSWiQYYPMX<-Cjp49@7U==iS57bG zw3T9Nbm`)m9<<4e$U74`t~zRo0JSfi}=GdQXGLLPyW zlT^I}y=t$j{Vx!wN^z8X4l0|@RNrC#)G>bK)7IT7Qop>YdS^NnI3gfP>vtp)pXkr2WSVcAAv8uN>@ z`6)kICvNYU$DA8pnkl4sQopDC6<_M8zGJ^@ANXJL(yd#n1XFj9pH;rld*gwY8om_I zdB55w@FUQ_2k}d%HtQsmUx_7Mzftky&o2X2yDQrgGcehmrDDDtUJj5``AX$gzEbMc zUj2Qzp)Lo>y-O*@HJ|g9$GR2-jgjKfB68J6OlIg;4F2@2?FlW zqj|lO7A2Ts-Kd!SO|r9XLbPt_B~pBpF40xcr0h=a&$bg(cwjp>v%d~Uk-7GUWom?1 z92p+C0~)Og*-N~daT#gQdG{&dPRZso(#{jGeDb1G`N)^nFSB`{2-UQ&!fkPyK`m03 z_Di94`{-(%3nE4}7;4MZ)Pmawf#{}lyTSs5f(r;r1Dp4<;27K=F}Oga^VsUs3*NIn zOsYstpqpRF&rq^9>m50LRORj>=;{CV2&#C$-{M5{oY9biBSoQyXvugVcwyT-19S;pf!`GSNqb4**TI%Y z*zyV)XN3Fdp3RNNr9FU+cV*tt?4L8>D@kJp^rkf_rJ~DPYL}oJngd1^l!4ITQN`0RTT^iq4xMg|S6;d}lznE$Ip^8pW-CHu zP*^!U>Lcd3*shqa)pswq;y<|ISM1g1RG#`|MSPNAsw*XH1IAD(e(Kgqp6aDHgv>fI z!P67$z{#()Pdo3;4dUoy*Xor(O?+YTRPe=g*FfRj*9q9!8p%1l>g3e^rQ_nm{(@4t z?^nMDC2J8@my5q0QyCljCSp_@)No+6bZ*y)lSdrkLFcR6YOHu*vZ-q(C);5$MmM_z z1WT>Gc8g%`Rt~6*!}JhWi0=Rc_z5c8GR9YXW+cdoK~Ea(@wyXf|89HagNuFAO-V7k zUb|9zaCCWH3^Fz(m7$8K$|0ZOP!SNpgP!ql<)!z8w$Z$?9gq2f<~koe3|zD=imLfD z>IV5?SkRZ;7JlOG%z%Tlze$GXr0A}ResyF63ZGZVDLv2k4HWtoqoCaq+Z&GaVKuLA z>@zhNjYYc=sexH?;DTe4&2vnQE}C@UFo&|qcLddvH0FwswdRUc(p*X&IT^Zu>xLpG zn(@C%3ig(l2ZPm#Fc){+0b+%O7nt4zbOt+3@GQVm|1t70=-U(>yo3VY2`FnXFHUyi zwiqf(akt0kEE5_Pa-a*VCS}Pi6?`~P%bvX6UT~r-tUAY%I4XF3^nC+tf3alyL{M`w zv?aVQ#usdwpZmkrfv19O39}tQPQM+oY**a{X?@3Qe>r$+G!>r#?Id&U&m^HU(f= zjVpSi9M||1FyNQA&PO`*94&(qTTMQv3-z`bpCXs-3bX}#Ovqec<>omYhB*VrwxqjY zF3#OXFsj`h#G?F}UAilxTQ|78-edHc-Uc-LHaH*Y(K%R#dVw>_gz}kRD4s#+U&Pq= zps)kMf_t9`GHR7CO4zI8WVj0%qiSqy50N{e_5o#GrvNhMpJf5_sCPrEa%a@ltFnss ziaWh26vEW4fQp}qa4oP(l4xIMpA)~VHD9!lP%;Tm`(HD$jYMM-5Ag>S(gC35J35$%?^gk(r|`4Ewi-W z;f&;B*fO=kC@N=r<-#nGW|yXE;`zb0Y3TJOAkw1a$SQgoTawHZTck+V%T=spmP`^BHihc(jc+S1ObX%6AYQ6LVVc+BfM*P{2s0T2z zVIs*5{ql%#CKAzv0?@S+%||z;`dpfj0Y(VtA51n$j%sG5I%A|h98VU}PkVZFrk1*G zaw75v3(N50lanvr&ND4=7Db;HS4fpi)2vTME7aD2-8N5+kcOXmYCrLE?*5&dWhvB` zbD5)ADuIwwpS*Ms;1qyns(8&tZ*)0*&_lNa`_(phwqkL}h#WdX_ zyKg%+7vP>*&Fus9E4SqIN*Ms`QLB(YOnJ|md%U|X`r#tVN$#q6nEH1|blQ?9e(3|3 z`i#;GUl~v?I6&I6%YvkvmR?*l%&z)Pv8irzVQsWrZSr%aoYuPJa#EjK|4NmiuswK= zlKP2v&;yXv3>LQ$P){aYWrb)5GICwbj;ygw>*amKP;Z{xb^cF}O@IeQ^hB-OjEK{l z>#PNyLuVkeDroL9SK2*ChHmJJSkv@YRn7)E49fy!3tqhq`HtHs_(DK|2Lyv(%9L&f zSy+H}Uk{nE2^5h7zN7;{tP3)$1GK9Xcv^L48Sodg0}ZST@}x607yJo2O*XCfs7*wT@d?G^Q6QQRb!kVn?}iZLUVoyh8M4A^ElaHD*Nn2= zkfCS=(Bg9-Mck6K{ z%ZM59Rs4(j1tSG1B#wS=$kQfXSvw6V>A(IC@>F;5RrCos`N{>Oyg|o*qR2EJ>5Gpe ze~a4CB{mmDXC7C>uS@VL&t%X#&4k<`nDx;Zjmo%?A4fV3KOhBr;VuO!cvM8s2;pG5 zcAs!j?nshFQhNA`G3HMS z?8bfRyy1LwSYktu+I7Hurb-AIU9r|rl5nMd!S&!()6xYNJ1EqJd9BkjgDH@F*! zzjtj4ezywvlkV7X@dG^oOB}T76eK=y!YZB#53LhYsZuP&HdmVL>6kH8&xwa zxv8;t-AE>D5K<{`-({E0O4%fGiLVI8#GfZ0aXR6SfYiPUJKnujMoTI5El<1ZO9w|u zS3lJFx<7XUoUD(@)$pDcs3taMb*(v2yj#G)=Mz-1M1q@Tf4o{s9}Uj9Yo?8refJwV zJ;b+7kf0M}fluzHHHS!Ph8MGJxJNks7C$58^EmlaJcp`5nx+O7?J)4}1!Y>-GHf9o zk}oTyPa>+YC$)(Qm8|MhEWbj?XEq}R=0NFH@F3ymW>&KS!e&k5*05>V@O*~my_Th; zlP05~S5@q+XG>0EuSH!~gZe_@5Dbj}oNIiPJpEOip+3l!gyze@%qOkmjmx=?FWJLF zj?b}f8Vet*yYd16KmM43rVfZo?rz3u|L6Foi*GQe4+{REUv9*}d?%a{%=8|i;I!aT z7Wxm}QJC`?cEt9+$@kSkB!@`TKZz1|yrA1^*7geq zD5Kx-zf|pvWA+8s$egLrb=kY385v2WCGL{y4I15NCz5NMnyXP_^@rsP#LN$%`2+AL zJaUyV<5;B^7f+pLzTN50Z~6KC0WI<|#bMfv+JiP3RTN^2!a7*oi+@v3w*sm5#|7zz zosF*{&;fHBXn2@uguQ1IDsh(oJzH#i4%pk;Qh^T zfQLyOW;E*NqU!Fki*f-T4j(?C$lY2CT{e!uW}8E(evb3!S%>v^NtNy@BTYAD;DkVo zn9ehVGaO7s?PQBP{p%b#orGi6Y&~<;D%XLWdUi}`Nu-(U$wBBTt*|N4##sm2JSuWc)TRoYg57cM*VDGj~ka<=&JF zo8=4>Z8F`wA?AUHtoi$_hHoK!3v?l*P0$g^yipOWlcex4?N2?Ewb1U=lu}0`QICA4 zef61j-^1p}hkA*0_(esa!p%dX6%-1e-eMfQsIp6wRgtE=6=hDe`&jel{y=6x5;78s z?5^{J|t!#x1aS8<3C`v%E%u{*wZwSXr$0Owl5_ zmXh>D>C_SjOCL^CyGZpBpM5`eymt{*rf~9`%F&&o7*S!H%3X)7~QFgn^J>6 zD+yV}u{HN-x9*_$R;a+k?4k*1f)rE~K|QvcC3dlr>!nftB?gE-cfcPMj&9mRl>|Lg zQyCe|&SuZopU0>IfRmcV3^_mhueN5oQ=J+H4%UsSIum4r4!`^DJqZr?1j3BU)Ttzg z6LwM)W&UEMIe*H2T6|{rQ;x9qGbp7ca#-!Egm4|ECNTMN);`>2Q&%|BpOdIJ4l|fp zk!qEhl;n(Y7~R1YNt7FnY10bQZXRna2X`E_D1f*}v1bW^lJorDD0_p2Rkr32n}hY! zCDB(t$)4YOd)97R60gfg3|wrlsVs#4=poh4JS7Ykg$H)vE#B|YFrxU-$Ae^~62e;! zK9mwxK?dV4(|0_sv(zY&mzkf{x@!T8@}Z6Bf)#sfGy#XyRS1{$Bl(6&+db=>uy-@y z$Eq~9fYX$06>PSKAs#|7RqJ3GFb;@(^e`jpo-14%^{|%}&|6h{CD(w@8(bu-m=dVl zoWmYtxTjwKlI!^nwJ}^+ql`&fE#pcj*3I|_Z>#y##e@AvnlSN4po#4N#}WT)V5oNP zkG+h_Yb=fB$)i`e2Fd28kS$;$*_sI;o0Xoj#uVAtsB6CjX&|;Bk}HzQ*hJ!HDQ&qZ z^qf{}c`l^h5sg-i(pEg#_9aW(yTi?#WH=48?2Hfl_X+(SfW)_c48bG5Bf+MDNp>Y#Mpil%{IzCXD&azAq4&1U10=$#ETJzev$)C*S;Pr9papU3OabRQk_toRZ!Ge(4-=Ki8Db?eSBq~ZT#ufL6SKaXZ+9rA~ zQwyTQTI7*NXOhn?^$QOU>Y6PyCFP|pg;wi8VZ5Z$)7+(I_9cy--(;T#c9SO;Hk~|_ z0tEQ)?geu8C(E$>e1wy%f@o;Ar2e#3HZP$I#+9ar9bDa(RUOA+y!oB;NEBQ`VMb@_ zLFj{syU4mN%9GF;zCwNbx@^)jkv$|vFtbtbi7_odG)9s=q(-PtOnIVcwy(FxnEZm&O^y`vwRfhB z7Urcums9SQS6(swAgl?S|WDGUTFQu51yG$8069U zviuZ=@J&7tQ8DZG<(a->RzV+sUrmH$WG+QvZmUJhT*IoR3#3{ugW%XG0s?_ycS6V6 zS)019<_Rl@DN~8K4#w3g_lvRm4mK3&jmI$mwROr0>D`mX+228Dw4r;mvx7df zy~$zP8NjVX?xkGFaV>|BLuXMQ+BN+MMrIB4S6X)p&5l$;6=S8oI9qi&1iQbs?TroDMfCmIeJ}pbVVtVqHhS(zutEy6#UjTk29-+3@W0`KfehW`@np zhhu#)O&g%r)hTj4b$CY41NYp_)7!bYyG;v(rts z^}YDJt2W88H^H;e$LSm3dh=~yi@)mzJtEfW8=4avbeOE&;Oc>-6OHO+MW`XBZ4rO6 zS;nAi**w3Yso4&Ty+8f$uvT?Z)eaLe$KW1I~9YM2zeTIT}C%_G6FPH-s5Wi3r`=I&juGTfl zZ;4qFZV|6V0c&>t!Y>mvGx#1WWL0N5evV=u28K9**dv`}U3tJ$W?>3InXiwyc)SA% zcnH}(zb0@&wmE>J07n#DOs7~lw>5qUY0(JDQszC~KAAM}Bmd-2tGIzUpO@|yGBrJyXGJk3d+7 zJBN0$?Se(rEb0-z2m%CBd;~_4aH04%9UnSc4KP!FDAM5F_EFujJZ!KDR-fn181GX` z8A?8BUYV}D9bCE0eV~M>9SPag%iVCLWOYQJDzC4~B~Ct0{H7x|kOmVcTQ;esvyHJC zi$H0R73Z8+Z!9^3|2tNut#&MVKbm`8?65s)UM8rg6uE(|e^DYqvoc15-f;u8c=>3;Viz*T# zN%!T+Hex0>>_gUKs%+lgY9jo6CnxL6qnQ>C*RseLWRpipqI;AQE7;LUwL`zM%b`Vu z%Sa-+?a#+=)HaD|k2%_(b;pHRF96(c;QyPl6XHL8IqGQKC$M8R=US-c8;hUe?LKo&l!{V)8d&55sUXEu z5uITcO~`ipddh+Nr{7ibp^Wd{bU)^3##<5`lkuqfckxEU*9{pgNpTB2=ku1c-|3dK z|LIQF=ld@I7swq^4|G1VA}BK85&>2p#*P95W`I1FF(8G9vfNJ6MoN$+C^M89u!X=< zJSS%l?Qj>$J%9?0#0&S6#*h*(-9Z$}q*G#hP?cX7cAvM0eiVFhJJ~$`iZM!N5NhDb zi<1u_m#?jzpIaOe7h|Kiap#mHA`L|)ATnPJ7du{^ybuNx@1jA+V1l8ux#{LJ#teM(6=%gZcMq24J$2p z`wcC!qRssmwUv4H6Psw{(YdDNOv$!sq&O1SvIS}fCKZa+`T=Ayt@uZjQqEC{@Uj+| z!;i3W+p~=@fqEEhW@gT^JtCR<`m`i|Htg<TSJ&v`p;55ed zt@a|)70mq;#RP@=%76*iz>fAr7FKd|X8*@?9sWOFf$gbH$XFG zcUNu#=_+ovUd>FW*twO`+NSo*bcea=nbQ_gu^C7iR*dZtYbMkXL5mB@4a3@0wnwH! z(fZKLy+yfQRd%}-!aPC z4GB%OvPHXl(^H(BwVr6u6s=I;`SHQ1um7GPCdP-BjO%OQUH!_UKbEGvHCY}{OL`8FU$GZ;Y$SlS$-0VjK%lCP?U0shcadt4x7lN4%V}wBrLEbiEcK-OHl+pcBNSqN#mftpRj2A4Q z+av@-<#t_Dj_FN^O2~wq(ij1O*+=RVl+6gNV^~CI1UED- zn^zN@UOq8?q58b^4RA>lV}x;jA2OE=SqMYV9P#RsUlI+pp!y*jpwHgp-w3i$V)%?L z>irn1pnRc|P@r|Z0pCeMZ*k$}$`1GVGCT&QtJ`V%Mq!TXoge?8Fjn$bz}NqDn*2ZQ z$p3@F_^(}IVS76>OLNzs`O5!pF=LZ$<&gyuM$HQzHx8ww^FVxnP%Yv2i=m*1ASF~~ zP=!H}b`xl`k0pL5byku2QOS~!_1po!6vQyQL#LQ#rIRr?G5^W?yuNvw-PP{}%m35i$i+I?DJ%RGRcqekT#X~CxOjkV1UQrd&m_bbJ+gsSGbPwKS{F& zU-`QNw!*yq#Co#{)2JvP-6>lY$J$2u+e=r0&kEc#j#jh@4Tp;l*s<28wU%r= zezVPG^r*a?&Fn_(M|A7^xTPD998E-)-A4agNwT?=>FbrHz8w~w?hWBeHVYM()|buJ zvGv4j<%!U_Rh^ZKi~2(h1vk-?o9;`*Zc}m5#o@a1ncp)}rO2SDD9y!nT$_Eb%h`>% zDmssJ8Dl=gDn<-7Ug$~nTaRzd?CJh;?}nCco$7Pz<#J8;YL40#VFbAG|4nA$co;l^byBOT2Ki@gAO!{xU7-TY|rujdYTaWV(Rr{Jwu?(_TA zDR1|~ExJBfJ?MAReMF47u!oEw>JHVREmROknZUs2>yaboEyVs$Pg1f6vs06gCQp$b z?##4PWI#BxjCAVl>46V_dm4?uw=Y@h#}ER4|ACU{lddiweg`vq>gmB25`XuhNai1- zjt{?&%;TRFE+2Y_Gn;p^&&|bU44M=`9!Mc%NbHv|2E4!2+dUL z>6be$Kh|Duz}+)(R7WXsh!m`+#t^Its($x`pqDaN-^E z?*a=0Ck^rZBLQV~jY-SBliN&7%-y3s@FB;X)z(t&D=~@U0vT%xfcu`Lix=W#WVE{{ z2=C~L$>`~@JCIg8RAyk= zYG`(@w4H95n0@Fqv16~nlDU!+QZw&#w@K)hv!V>zA!ZOL$1Iykd&Su3rEln@(gxO| zxWc++T-rQEIL+j7i`TeatMfp4z7Ir31(TE4+_Ds@M|-+cwQg(z>s=S}gsSz{X*Wm+ ziKJWgOd`5^o|5a#i%?Gvw~8e?Rpi7C>nQ5dvPHVTO$PI^mnJ*7?gd3RD{|c_a>WrXT#Es3d}(k z$wpmA#$Q^zFclx{-GUL_M$i0&mRQMd4J#xq-5es)yD{kYCP1s!An(~K5JDRkv6DUSKgo^s@lVM5|V4mWjNZp zsuw^##l%rbRDKglQyj?YT!nk$lNUzh%kH705HWhiMuv(5a<~yoRDM&oCqm+1#S~|8 zA$g2Xr=}p_FX%Eaq{tUO9i*Q1i!>$+1JYZCL}flWRvF0y1=#D#y-JQTwx6uP-(bC} z_uP7)c;Xd`C6k#JVW?#Id7-|`uW+hN0>OM=C2Ta^4?G zr;EvxJ{%l|8D-heRYRM%f*LBC)krHZJ@%&CL0)FADWh14&7KV<9km6gE=o9(7keg~^rIQtthK^_8%Jk&aZLY_bc6SbY>IcwDK9{sV*t1GfKwf8aCo8t za)yALEi^-WXb!k6n>W-62Z^n8hO|eRYr&uZiW5d_URi??nl*aGu?ioQ+9RF9u8kwD z6UZ6HVd(G%l9>y7E)uyn?gAJMKeki0@tG*jdcE-}K?8(D-&n=Ld1i=A1AI<1z>u5p=B z<1}|q3@2jNxW-}Q4z~s|j&^Qc;nXIdS3K8caP_07#ig} z#KAD&ue2jXc&K#Q`Hy#x+LeT4HHUCzi1e?*3w{tK+5Tij(#2l2%p#YGI-b~{5{aS8 z!jABC*n6y~W|h;P!kn(a4$Ri2G118!?0WHDNn((QDJP^I{{wPf<^efQWW?zS>VS?X zfIUgCS{7oV$|7z2hJBt+pp1CPx4L{B_yC3oWdE)d)20WG6m5qknl}8@;kjPJE@!xP zV(Nkv^-Vz>DuwBXmKT(z>57*D<$u=Blt)IS-RK0j89omD{5Ya*ULWkoO)qeM_*)jF zIn87l{kXPp=}4ufM1h7t(lAL?-kEq>_DE-in8-!@+>E1+gCV9Fq)5V3SY?**;AKq0 zIpQ(1u*3MVh#tHRu5E5=B{W-QOI34plm`#uH(mk*;9&Re%?|v-=fvb;?qvVL@gc|l z8^L?2_0ZrVFS-stRY(E>UiQeG_sMrw5UiO znGFLOP-GO{JtBM@!)Q37k3G_p&JhdwPwtJS6@R4_($Ut^b!8HP{52-tkue8MG=Zwr z7u6WaFranJq4oNadY)>_6d~?pKVxg$2Uz`zZPnZVHOh-;M|H7qbV0OF8}z;ZPoI+| z(`e}bn6u*kJpRLC>OZ}gX#eHCMEk#d8y$XzSU;QZ|An$pQ%uZC$=Ki!h@&m8$5(xCtGaY3X1FsU?l5w^Fr{Q-?+EbUBxx+b?D z80o*@qg0juG;aZhj=tO=YHjfo=1+-NqLME~Kw7Y1A*?}M7#cOyT(vd$1tVPKKd@U! z&oV!RzZcK6gPWj`*8FIAy2I&x``h_sXPe*O{|ih(Y+V3|o68MWq~2Iy^iQ8RqK76f zC$1+hXqd^jsz`U{+EFo^VQNrLZt#R`qE*>2-Ip&(@6FmtAngx@+YnG}b5B9Y)^wg#oc z24KlT2s!H_4ZR^1_nDX#UH4(UTgl603&Q3g{G4!?6Sl9Om=Sy|8CjWO>d@e9?Q%s- z-OS3*W_H7*LW|Ne{b+^#LqQ}UKDmiZDma@no2!ydO^jcm>+z379K%=Ifs{20mT|xh zP$e7P=?N(tW4PMHJOQ`a8?n}>^&@<`1Rgo`aRevPp^1n7ibeS6sc8^GPe>c&{Kc+R z^2_F~K=HVI45Pf|<3)^;I{?H}vU7-QK3L1nHpcn3!1_)<$V;e0d_b8^d1T==rVpky zZTn~UvKrjdr11k}UO@o>aR2wn{jX5`KQQM1J1A?^wAFvi&A#NA#`_qKksu`sQ0tdM ziif17TO<{wDq_Q;OM}+1xMji^5X=syK=$QdZnS#dwe$;JYC7JozV8KpwfV}?As|^! zFlln0UitprIpuzLd$`<{_XoUV>rrHgc{cUQH-Px#(_Ul%=#ENrfJe@MRP_$E@FLMa zI`(J)Imw$o427@Oc^3(U&vz}<3Lfmy7diVpJJJ@gA>e;q-&gj zcGcBC_luF%_;**EB?o--G?AkaruJ%-b*8aX$4E+-?V@RWMnjHJ;hx27Vd7l0nUUY( z6OQb&8g8cvN3LZ%^xvIav*X|Epqm@yrTZk9U{GSZXAUJt8Lh(%7?Eaf&AzmXOVvU| zmz<@l1oMe#^POR38KT6q3@c`{%eYNu4ccurv`q?b5DzLxENjSfYOJHAI$MbSNgB*D zJsP>i*BgrFlIn?x&DH9x~UbPBtMFj{_vJ#CaAF>1$oE&k`EF&L@HCa@mN>Q7~!RU>7 zW%fv84aCKSgBacmuvg}r@)YKqO$U{D5|!`vG-Gp%An}raz2gESWm0Exhux4C)zE}} z_@kn z3t}bvm?L+@@az@<*jG>(Xopq&c*;^mttlJ!mv;5k6o%Ac<_`o`4G3qzzo(GO{!&F8 zW+~bF?S;7gO1dQ@>gwZ?iIHjE#^@;Ix!Z`R6{RYLlGB&v4A)ha(2hc`RGV-8`LcvSf+Y@lhT%(Z7$tWEF;cZs2{B|9k#&C}sPyr; zd-g~${TqY7E$9X+h4_(yMxQ%q;tm(h(lKzK)2FQ%k#b2}aMy+a=LHYgk?1|1VQ=&e z9)olOA5H}UD{%nu+!3^HsrBoX^D9Iy0pw!xNGXB6bPSpKDAaun{!fT~Z~`xp&Ii~k zdac?&*lkM+k_&+4oc6=KJ6RwIkB|st@DiQ!4`sI;@40>%zAG^!oG2@ z@eBM$2PJ@F&_3_}oc8A*7mp-0bWng^he9UYX#Ph*JL+<>y+moP^xvQF!MD_)h@b}c2GVX8Ez`x!kjAIV>y9h;2EgwMhDc~tn<2~`lf9j8-Q~yL zM=!Ahm|3JL3?@Tt(OuDDfljlbbN@nIgn#k+7VC+Ko;@iKi>~ovA)(M6rz5KP(yiH| z#iwJqOB7VmFZ#6qI~93C`&qTxT(*Q@om-Xb%ntm_?E;|58Ipd1F!r>^vEjy}*M^E(WslbfLE z<+71#sY~m$gZvoRX@=^FY}X?5qoU|Vg8(o`Om5RM6I(baU^6HmB<+n9rBl@N$CmP41^s?s1ey}wu3r3 z4~1dkyi%kA#*pLQy0phlXa-u(oK2Dwzhuex$YZv=*t*Tg5=n~H=}fJA!p2L78y3D2 zimkqC1gTU(0q||k9QM#><$b-Ilw#Ut2>JF=T^qN34^qcBEd={! zB)rxUbM2IwvMo?S;Id^aglw}-t9et}@TP;!QlFoqqcs(-HfNt9VqGFJ4*Ko*Kk#*B zGpJ>tA9(=t|4#M!kBaf%{$Kfj3-uf|ZFgiU`Bo>%k_OuAp~vnE^_Tg8*% z*?)4JdzyMTzvNDy{r$c``zBw=Vr)6c4}CBIv#mw()3h7`?V-;LF?J&N5a>kjpy;9n zQyXvuu`n?+W84QV=(i`JEJY=}Ak+u4>!Lyt2P!$nBl}T=^|pG*z@)_l!)OKB{tIV&&E@hj=OIhSBHgPV~X=R3NrTMh?VzDm?1yW^IJ&zzAn2{8rE~MRX5EE)a(-T&oE)1J4pGXBYi+nexX-?5! z{EZ4Ju=Y8MQ87=uNc2t^7@X)?85KeSoc`?BmCD;Uv_cwQaLyc}vvnJKHV zuK)H_d)xhGKB!_pRXv{$XgfZ_(8G%N3o$ZI#_ zixQj~so0*m^iuA!bT>&8R@>b%#B~zbIlwt4Ba0v&>B(`*Z;~?6!>-aQ zal+Qt4^dCcjZZMd4b4Khg~(GP#8$3BeB8j!-6l?*##)H?J$PeUy)cA_I26#0aggao zaM5PweS_Sb@{OZ@Uw*(!DNV)KTQU+BTRi?AUAv0Vowth`7mr9)ZVC+TI?@; zWGL&zydnsuE3+D7#U~P%PrxpD3nTc9#mm621iX*?ZMS_Q#n9SzOJ~Hg@`rX{d?qJ; zt}`76!H)MX#=VKifJZP$3<8@}0-llthFpq3FV;(UP$-k63MkHHq~J&}d?C<+c~*Zk z<#G&>AD7EoiAVO38TO2TOBKN>6N|JS*{+`}V-)T0j(bAzGlEUWEvWLrMOIItYexh) z?he>SJk*#bywgDF6+*&%>n%0`-3tOY72+n&Q1NJ`A-bX*2tJV(@;%b6&RxMcUd7+# z@UzOmc9DolSHc-D$5(GouinaE%&uOVMyD&CTdKaEB{Qap4_wU7_=23CULKQ;jmZuV;+Y$(`#Gh0@}s7-!qk-^&#IG>7B{yft?UoA)H5 z|B0u3Tu0TF{AB0jpT|E&RsYB$3WiQU^5p*|f)^Si_#^j+Ao^|5(gNjn+!0|NtXDt* z5fwxpajl@e0FrdEuj2s#Pg>gUvJdko9RBwEe_4@?aEM?SiA2nvm^tsLML{-AvBWM7 z_bm7%tu*MaJkUWd#?GWVrqaQ0>B%Azkxj+Yidvc$XdG1{@$U~uF|1oovneldx`h;9 zB1>H;;n1_5(h`2ECl?bu-sSY@d!QTa`3DrNj_F@vUIdW5{R7$|K{fN11_l7={h7@D z4}I;wCCq>QR6(;JbVbb4$=OBO)#zVu|0iK~SnW~{SrOq&j*_>YRzU&bHUhPPwiy($ zK0qin8U;#F@@}_P_flw`bW_v^G;ct?Pb65%=%egDBgS#YF3?E36$9xzdvYqjAZoK#hcjctJu~MF^S*$q3`o2;!L|jPnM1x*Q~qF%BH(5UDFYglsJwO zEdEuB7NihnTXK6$)F~``nmSQNFP7x7hE{WuOjTAhEjGw#XxvL@S;aZYuyu9)!yZ~X zo35D6Cwb8`shRXCCR;xlR`n`cs4aie!SSM`0)x3ykwM*k zK~w^4x2u#=jEEi`3Q9AU!wE)Zpn#)0!*~)(T^SEjIJveav(d1$RaSMC0|}<)?}nSG zRC2xEBN_YAsuKyl_3yDt%W^F`J-TyeGrcfboC_0Ta=KcW_?~RLb>xbqIVI6`%iWz; zM8Kq9QzwO8w!TntqcB;gNuV$gd+N|(4?6A9GEzYs z5f4(*N5}&ObeYA~I28r;?pKUj4N6}iloE=ok%1|X()Ahdwir?xf6QJfY7owe>pPj)Me*}c^%W-pP6`dnX1&6 z`b#*_P0PeM+1FR)t)Rnr22f!@UFBW!TxgjV)u0%_C~gIbb_D3aPhZ~Wmex0)Lj`VoZKjoW)dUoKY6*| z0|V)|XyjiKgZ}s5(SN?te*muif87vD_(wYOiOjOKNI4L*aK||2$~;s25HS#iY6r=)WW8a^dkd0Y|pPc1-9jmy&wqoCbL84`C94At6$lm_o!8m*did^?o$m?ozIp{RmZ*M%YMX_i$KYkz_Q)QK?Fdm)REqf*f=@>C-SnW{Lb;yYfk&2nAC~b}&B@@^fY7g;n(FVh_hy zW}ifIO9T7nSBHBQP5%-&GF8@A-!%wJAjDn{gAg=lV6IJv!|-QEXT+O>3yoZNCSD3V zG$B?5Xl20xQT?c%cCh?mParFHBsMGB=_5hl#!$W@JHM-vKkiwYqr8kZJ06n%w|-bS zE?p&12hR2B+YB$0GQd;40fJd6#37-qd1}xc1mNCeC%PDxb zlK=X|WE*qn2fROb4{oXtJZSyjOFleI3i8RBZ?2u?EEL1W-~L%7<`H6Vp0;cz5vv`7jlTXf-7XGwp}3|Xl6tNaII3GC z9y1w*@jFLl2iFA!<5AQ~e@S|uK4WL9<$R^??V^aM?Bgy=#|wl$D2P$o;06>{f)P+X z91};NrzVV+)b}k2#rYLF0X0-A+eRul=opDju)g0+vd79B%i!Y}*&a^L$_|C&jQN^j z9q#4<(4)3qNst^+ZYpyVF2hP;DN|OMxM9w(+)%kFQRcYVI zO-frej9x6a%-D%Xuwedcw9#3VSVkOjNF!BYRoY1KD3wFJ%?ML*3QwcarMK)@v`o%s z$w=NLrO>og`nRJpZZ(%~*hNJU#Y~k;_Ci3~gc=4UQO!Ydje^?=W^DgCKyO;Zz4LgQ zKtm($MdY;UZ((U_g5*pMY+dYGyyT1ERkaj`U#S-2yyJ47wMonCpV+2rI8zPNHDfo& zc59dFz*2#^A-R?P6Np}jhDLi4&vP%$NW#8J>=CLj1mlf$XzmQezH*F1jNOiPgXl2j zzD07AKLT*h$CA*OsOba2etPLU%|p?=XhplXo?vOu@q0{QBo++)@6U?YKv_)GFK(^Y zm&uFBbrQyzJm;c49O00PIt;|{&ei%VSS%Y3m3#~L#(3%Gso^a4#9AaB$w@vnAvdr6 z%!2#)YS0HFt%o)q6~BelT;?%oUjX%9qQCn#-~+TM(a^s%Y>&aBkL(UY{+?a9@&Q+a;t%c_6u^6_r@>MEAN9ir5q=Yo|R8z4lKYd1sv^LyTozFn$KqaJ>? zoH&+`AX>E03Gv=71+NZK2>!-NasKeCfMp;@5rZ z*m<}q2!$AgKUwWRXTVHs!E>`FcMT|fzJo30W551|6RoE#Q0WPD$fdA>IRD-C=ae&$=Fuzc6q1CNF>b3z_c<9!;))OViz@ zP58XOt`WOQS)r@tD0IiEIo4Umc(5f%J1p{y4F(1&3AzeAP%V)e#}>2%8W9~x^l}S4 zUOc9^;@m{eUDGL={35TN0+kQbN$X~)P>~L?3FD>s;=PIq9f{Xsl)b7D@8JW{!WVi=s?aqGVKrSJB zO-V&R>_|3@u=MEV1AF%!V*;mZS=ZK9u5OVbETOE$9JhOs!YRxgwRS9XMQ0TArkAi< zu1EC{6!O{djvwxWk_cF`2JgB zE{oo?Cyjy5@Et}<6+>vsYWY3T7S-EcO?8lrm&3!318GR}f~VZMy+(GQ#X9yLEXnnX z7)UaEJSIHQtj5?O(ZJQ{0W{^JrD=EqH_h`gxh^HS!~)?S)s<7ox3eeb7lS!XiKNiWDj5!S1ZVr8m*Vm(LX=PFO>N%y7l+73j-eS1>v0g}5&G zp?qu*PR0C>)@9!mP#acrxNj`*gh}21yrvqyhpQQK)U6|hk1wt3`@h^0-$GQCE z^f#SJiU zb@27$QZ^SVuNSI7qoRcwiH6H(ax|Xx!@g__4i%NN5wu0;mM`CSTZjJw96htSu%C7? z#pPQ9o4xEOJ#DT#KRu9mzu!GH0jb{vhP$nkD}v`n1`tnnNls#^_AN-c~PD;MVeGMBhLT0Ce2O2nwYOlg39xtI24v>pzQ zanl2Vr$77%weA<>>iVZQ&*K9_hfmv=tXiu#PVzNA;M@2}l&vaQsh84GX_+hrIfZC= z0Se*ilv-%zoXRHyvAQW9nOI2C$%DlFH1%zP-4r8bEfHjB3;8{WH`gOYt zg+fX)HIleuMKewYtjg+cSVRUIxAD9xCn+MT zs`DA7)Wx;B`ycL8Q&dR8+8mfhK;a^Rw9 zh9tC~qa>%5T{^8THrj^VEl5Do4j4h@nkrBG6+k8CDD~KB=57m@BL-)vXGkKIuVO9v z7t_L5rpY^0y=uu5iNw0v&Ca-zWk>v;fLJ=+SaV&V#C-o^}8 zp&Xp$v?~ccnfR=&5Df)32^d6QJLg*iuF#s|0M4zJF@Hza1p`q|f}~K)q;HC*I1_9t zQ&1jr9-kdUi8)DGxiwdqU|rPxYWDQPWY&SI&Rxkhxobp~C=Y*`d?HD4JW?WjU7dBPeuIE`ABLq95b#lfKS52IB^6KoHmm60$R}TESplQt59#mboJj+Na!P)V{ic@$yQ-&Z za^JU0T+n0Lf2VdusoNr0?g~1DMsY)zdY-63yH!Ii#aWe|;0TO>L7#YlaDrH}xvYXn zh-NYa>O>f_NTTBG=|k0qWH+X?d5@+INsQ}WcI_3z1Z4-%Gj#_{P$0A~cAye`?j0cW z8)hd(V}7rattLUSMvgZ4g96P7n` z^{55A&&29;-P992{yhkGWa3v_Z6iB4a&~NmL)IpC&dsSwe$9jS(4RVJGt=Y!b-O~1 zSCl@wlaba_cA*yt(QvulMcLUuK z>(ys_!{vqKy{%%~d#4ibQ5$yKn6|4Ky0_ngH>x-}h3pHzRt;iqs}KzajS!i!Pqs8c zCP%xI*d=F=6za_0g`{ZO^mAwRk0iwkzKB7D)SaLR0h|ovGF2w9C9g8;f#EtDN*vBP9yl;n=;B2a7#E8(%Bw()z(M$_pu zQ+9uFnlJ!5&$kk^S_+kJ>r9y8MFPpSf9;o8v;ZxsMA!p>eaAIwt5xNiQ|2_ydGkbi zkggG;Xp&I7C8R{>ten^j@MsN#V5JPs1Ezc!74->Nh0a}U){OK@j=OIoY}C7IYYd8-V9 zQ6s?v=Y7(?Y$7=P#Wwub-*0DLqli?I%kT-D^jqK?c2~HEx<2(poRWAUoC}!~6$1=I z*M(IfPmdID8i+5l@=1(+`?i`G_ew=1Y!gF?tFbdgtW2etKLOFoNozkH(i!Qa7(h^| zF`9!VeqQQwM+yO6J`;oWUWq@9l6hP~FiG8-{Pj*T`XI3~s@FfjW2Tl(llpa901$&y`F}K1uZuHEo;=mr+_8d(o z2Be#yWHEN@euC$=VUSB+3A}khJdF$)0r#<5(f3n`kx>ZT8ifaKyX*OhffeHH1?6OM z*-19$j5tMNYQoB)>cGpz@11>J%q4KW`GLNj?uB>LcNg$0G@}XN#Tqf2F5@jv<`|~p zqB^l!%v!g{R_+0GX5z0>3Q~O``%T$NFc==dsPsTj-;{b$XUS0TGoJs2BUA*H;4S?w z|Nigt|F@9hf7QLSo}JPEK#CPgYgTjrdCSChx0yJeRdbXipF(OwV)ZvghYba)5NZxS zm=L8k_7Lb?f8`=vpv(@m%gzsCs9^E$D5Jn+sf}1lep*zz&5V?~qi_@B?-$Vd1ti(rCi*I0}c}slKv@H_+g?#yarVzpYZN zIk21Bz9Z#WOF`JG&TC&C%a*3*`)GJx9I!U8+!#J4}@5rm8*jK%Xg2VLjP-a;H zFydWO;nxOZ&|{yOW;ta$ZU^6*4vFP)idD6M*M0+9buB#hK4z%YTGBdSva?Pvxim2` zF-?QVGuRQ2-1eYzd1Y%}w^`t1S7|{{8=Es#ApC0<;pc$|NJ)IU%WVK+4gnTWA7-t1 z0K{DCESXb}!y_tzrycr^%%|G4T4)`$BC8+qm|n1lS?CO=`V`1T#ykY#5g5$dc$lGt zqGHyw-*Av%C;33nEiU(rU?w^3F46!dEz#cHd3IF<(XCq)>JG?Bi)4v26MQr1A-g5RqhFoPy%^TD3sa|D^9aS>>_2-X2i#? ztVp@ZkyMB;Uo#9s!R!@G#CCaFVaxx*8YYu$kGFk4g3|9t!1nKqOaDBAe;w!(6#w)0 z?{&F2BgctT1=Z;TvjOGL_!}Vlt=kaLA7#W`mv1h%hUg983!wA*K@_r6_cd6o z6LHiCE6qwlt2H&|Ica~%b9C?Z@$dreBNR_!NKcfL)%8kGr7!IVq|^&6PKYK%EhcKu z6+uR*%EOw=rF6Q42Mx|a> z$2XrM*NV2x9ci6|X^eh1UAbJ9Ky!#*Q5w7)#o#%}d!#-^k8To=n8{UU*LmFsS-wRj zi6-p76V6g?If3S&Bj~GW&QI_WtyPY0@u3hjKtqf9`8S!wn{@P&Tc8uu8cf)YmrX7+ zrC+O3V{9}JG6ihA&^2Q7@)Kq)j(Y_oTzsoBUYQDG!}`Ame`bbcr>J-6E%gaBPEDCU zflX#1-)Ih^HJV*lew*N_SdG-4!b2}G8%U&9_V0~Qt?ZS z@H3L&5ybV8X}A@KQADl93H`}0qkNm!jGHkCJUM%r8`mP1nV?Oo%^l;yDnU6IJtbuY z`X2Sf8|r00mB_f)Q0;S{FqS1Yq?otd-BVbw`#@SDd5}n5X4lqdDi1*vtVv8-Zi10q zexCj0eyngrp`UxjEOrdzUt`?%jRlj7zSU-V-%R?y+_w7P7f1ge%t1ozmN+&)%3xQW zT3u@)))(_a<6`lTJd`DIYw>(pkb=PMKvCNEG~zza+LVNqkY^}QoGMVdS0K;gS*A3f z;6Ua!^sSV-try(M^pB6D9dsX}c>$Da#NHucp9vr(fg4pbBR*uPhYq+N>q1X4RSOCl znIQj4=A+y+8{?LQ$3L@(!Yy~~Cu4Sx72*%@dW>eP%Br7=uaynV6Mqa-49A9) z|L&5r=4K5SClwc`!2J|>(#n$4y1>lmR~2Om8q6HkcpK>d(Fk!T^NO?hM4Fc+(5J{` z&K|vrBz;;zWlNO%=a~JkMxMiZa%wYz#G901lw#+2SUaMMHrebb&|1L8tKoGJK*QhJ zU9|WkDy^-4F6U&VYSc3ScHDk@kV^0801#I|-pSK%az5=DwI}gMm)@s2O+-ESTk?QY z;y9gyucaXO(Cc+cd{B>2)euMHFT71$a6DssWU>>oLw4E-7>FC-YgZH1QAbRwmdahD zO4KAeuA^0q&yWS|zLTx%(P4VOqZv-^BO`0OFAXdBNt9>LAXmPALi3b|gt{b?e-$z0 z4n7H$eg6y_zs(c>*4FT!kN*$H`43~1p!g;IZ8-mYbUPTejaLW#BZnAPFES?ApM{TQ zE*TC%O8)apqcX|PrNjIZE-z{q`I(LwIE0kf=PLjExEX>)oIu><<@lt>-Ng9i$Lrk( znGXl|i4dP;Mt^-IbEp7K0e#*c7By@gCo@VQIW$93ujLL`)lMbA9R?C_5u~7^KopaAMj#6&>n-SOWlup_@{4 zcJ?w_!9JKPM=&Bd#IQ37F*x39y!azm$;~IRlkm>bHdABcNwW-TdDKD$pkD{j6A8d* z{vP~|<}bj_Oz#83K$ieRtsA4a@4a5cRjJ}A01{PgxXn3;fx)5ElMEPwDX_mW9)9oB z*;scve~v#HHqUj3KdC$tdV3&0)Whkp-=hKKz{SzD7g0@N!wyv;ZAime7AjB7&)!)5 zp_iVblaf)%agwJqOG2e7WTCM1&khq`{b>fN4n8hOJbvO?Y;60>LIwagLXWC@@0RSR zo%lPo1cUU=g$ahJ8D=;`v~ORUSl(1-&a@yTAC5Y8E892@{P@MM=GXUGpBSXSbSs!N z;L~0D_s7{+^F6c!WW+^yz5~o7eWtsOE}8{hKaFlHgnyBeUJ8Zz2$k7Lrh?NuMU|No zVvsq@57)8zin;&ckR1;*Z%(xH2lBw z`x%N;|H1En8au588bPDxP^$kfpO!bIzz>K=5Jiq9Rg(NGde0g!rKagLa+&yC)jg7y zq}~2IH)N*FJC31qrIH-2;%3^F?=bDD^U2Y;%ftN(v71oY;od+vh!!2z^}GHR$43rg z0In@ki}TglIsMU^O1(SiLK#oiuyw zB>-@z?&uW`ILoPupw0_cs?C|2YoX&87~us+ny%eo{A!3M<-7O7mHUBCgA~{yR!Dc^ zb= z8}s4Ly!GdxEQj7HHr<}iu@%Lu+-bV>EZ6MnB~{v7U59;q<9$h}&0WT;SKRpf2IId ztAjig0@{@!ab z{yVt$e@uJ{3R~8*vfrL03KVF2pS5`oR75rm?1c`@a8e{G$zfx^mA*~d>1x`8#dRm) zFESmEnSSsupfB>h7MipTeE!t>BayDVjH~pu&(FI%bRUpZ*H615?2(_6vNmYwbc^KX4HqSi!&mY9$w zpf%C6vy@O30&3N5#0s_!jDk|6qjb-7wE3YT3DA7q3D`Q&Y*y>XbgE7=g#rPx1hnf8 zTWd{IC!Iysq*vZup5VGrO)UM<3)6raR`rOwk(!ikf3XPp!n|gz0hS*P=VDXAyMW(s zL??-`&IusEuOMrz>m(A1W5Q~>9xJwCExAcMkOBD` zD5BJSadd{0u}%z4r!9qA`FW4;Ka_Qk>FcHxiucGw4L9qhtoge|ag8jbr`7LHSbVQz z6|xUo*^LV1SLxS>?D`m=g{8IC&1YF$e}VRGD#ZOc_15QW%J@FbEj8tE-nGxo4?X02 z@|q#k*G4xMW>q84Xc09pRj@>Hz8t^fMm3n&G;Al6KU*;=W`7Q{$^|=bnZiJ7?(s)@ zB`vW>#zJ{}!8=*|?p(~fcXSanO^j8+q7V!q16*ic!HLRdz0TzNI6}m+=OKd2b8KX< zAcDTj*%~vQlcO+%@H01gjv-1zZaOXVoM*t-+KXTR#NoTf-#{dQAm?GqK6q8Ta zu3xW?t=NE$EfYa#=0HofLn5~c#m-U#Ct_r6~X-pg6k*F zYIP7De52BBwcAnK?O(j?YEs1;q60!-!hTuKzw3T;XcA_w5HvU;tO~}byLA^cggu8i z-IP@pxFjTy&ie28m}j66dm@g78xK7aG{QSR^bAcY+W*xWu;G~I08sf(GK4>K-cbfJ z-%v9DGR77He<291M~=fg>>9&NFQlboP)pC6fT;{>_!lM`A&&HWIMd)Y6e@IL;nvRdBE*Tn({&3{-XJ9helJa{G51Ck}-_Y=5C|fEo z)7fZlsHxN&SY&ZLTdYuBBZnwIh0#VTzmyK>U0|r&SXb&GP0m)1dGV8z(^x6s5yQ-z zEyniK${#U@Y7p@Yxx}E+jA?1@{=|e6UM;iyai=0=aItVvqieogZUq@sio2#9NLW~L z{w@^H!HEGU;>;T0lu{Ad20Hr6u;?-9YHKvkjEc)}wsb4Y-ArRK8`24uBT8N)8m%Ee zYJX21)|e{peL26}VUUKYQ3L@NSe8rEbN#AIo$tjJm-$B|IJU?mu(h$Sq`XNY0@NhY z0?WeMtPwP)sUdk}dWA4qBUV^x>P|is-kPgVe)*WV>dKDL>gOq1 zUYw(nU|N#dw>97A_(c3?VA_zDfF{^A1eE#8Bucd^ON(sv-{tc@&i)Y)3V~o7U~+AA zOwnXB5`WN^z$z<9^@(?LY%7?y5X_C(j1ip-Ug^f7Tt6suI3&a=&~#EJegG4r2^tKz zJoEXCVOc1QdOSNHp2d;t&smxL%CfK@mSl)Ky}`!6kCsi#7s5&G2Q!sM9S6o)&mdx% zz|2M~pav2;Th=DTN5yB@6HFAO!pl-y+tEJsh}(? z!tIyg01O*w@mWxsFhHMi7%Gqz!v(Osc5WxK+^1PGfsozw)FE}VIxk9GexmAohPNAF*SAjxG3Al#(xQoYXdI}TR zoCHAFS6+LDqsP8L1SZH{RxJjFK_=vy4nNH^?M!OsQWe^qC~$c1r&y`H9n5;D z2F$t-Htc%2@K(>opJHE{NytI2<_J<6Kz*p$wtKUTEH}zITx?H0L%!5%i@!rLphSBrkFs>jscP6?HVQovX8!~b~ZY|0h%&souT7e5nD@OxuSgC zVW*eo0B|1POwg7;6fJSUC`g+`1%XQvwpRc*&|AtV*h!#5nQM(@m!K)-Qop!Rt3F`a z9HUO zF3w{uI_==EpjFQWV4boF^A?wc@@@U+KrKPjn6sK{OLu-~1UloSqt-aHYo*^@kQy2+ zH(9*-mFz?YV4cL7EW)9hsdmG{5jaYXLvm*&3PZ4y?8z`$9z6`q9fgsJm@*W$-QSzu zut}57hroSbTd=&RJpuy#?K?A6!-;_MowpK8eb~5T-^eye%3O-T^ktSMbd%PT0j-B?#yAKr37u%gB z*2)WJMw6Y)6BvY$JjD`(06ci7u;u$hv}gN5oS&Q^*y$J6L)0#BD<>XL|;pZgtZaxp3~$0zxA(;6Qr_AP$?8l@S)C^Hoaz#rQFK^lA}3&)Gr}Fsca? zK>9BkVcl;c*E2P9UMppEIB&38dL9R?Xg9N{Nl~4*w!qsZJElz}Xc9gz#}cwnP4u{+ z6VNTEx*>u67?3bn{sWk*P`1_$YfsB+)Ax0+jt|)0p&VS?N0k8IAp2KH_#eY3I#{Hw zB$vObUDtXyZX)*wVh*@BefnUej#jv@%uiA=>ngX0kQXaz>8(WM)fX~v__@I}7|!Il z@J%r#I!JqqFwGd4JPhmDmL>1Bh}nn_BE;hgKUesNOf9zQhiuhn%4B}O8jnxEwJiQFDaiiuXw2sb?*8a}Lr;_#7+IPfIjhVDhazSpbQZECL+4)p8lO;)!y>Rt=0X*;O# zX{s(p-*d{#{Y3gVhL;A{4a(Z5sIfpk;WMCqdFA&Mb7mp;YMXhBF@p`}$ShAug+bo`;<9fm!~F z-;1yCj$GQ^mzucrfuatilXrYLr)`izjn_m(f~);txN?D7d?Kg4wDuPXilVyeVwjzf z=4Kewf=u}X_H*viVfPWZW?Sqa3G#h3|;b!Q7>BRc7-Wox0}&>}Lqo=0v;T_i~% zqB&h;14|~nK{W0N=$obGP@O%(c8SraYS^qiu%Q`B zBHdA!`Vk7#Bz*@_3eE#bizLzjBV;F0vfSA~+7@8+F{$7Y?fwI~Pp_X`2ORgqW6g@2 z{cQV!niSsMEVr1IaeRAj8~|*4yW~X5$6o`crw4uTHhgPs^qAk?9UPu;xy5wh2^jZ; z)@27Q=QKa?8w7_C0|u`@k=%b9Ce$D7x42CdLsckF2<$wLuV2kpik8PXex2^Co$n2o z)l#H*;#>?yrPw0x6LI@x(X$nezCBa0Obi%|I5ZV|4bJSPtNHjDkS|3S?fiv(i_(n* zFbve0g!B0!MMmakRsgg_if8nwImb=kk%|s+08xGQ)J?vpkdaya3UD|RJK+LQ72|g> zc4LnwInx!2pN-5Yvp7rvRF#B=(ZO8gyVB^0Dh#ZdHA2BjjppfV<=2Nm#w_t{%6O$W z`-?7N?LwL0DWgK0Y7L#ChSHfa{=DOpJpl8L@V70cd%ei)n%SQO;Z+Xw#li#%LUfbs z&hP%UzN(qM3cw#bWQS6_B@>1^ea-AqNA12xoiQeb_Zdtf>yHljqeIHqlyC^gzH)h1 zstXTFEb0r=l9;><<$a}YWlscH7VW_xeKVZ#*#v#HiuUOs7PPj8ml4#!BiGEK)kDpO zX=2mU0ZuIDDnhfV7v_Rs)0R#ff6I6_|MrzV(R$3Nt#S7D?GQy6?a^WRvA@r2~?7f~s99*9;fuqJ(843U`hRl2O|sk>J@WMsR2O zwyZt$@J)DnSUNkF@B3MPNz|<@`72{M*S5d<1Vkg+G=q~u{8OP84Yh6VCE5pNC*#m> z*jzHy5Tc82sBVw+6W7DoR5@LXZ|+>;)Q%czg%8pyMyeE2-)R^oHg~SrO~#I8MxNc> z6pWT&F&H1mX7#2@mBY>#rRoFKszT z(gvV#j3x|7sF|Dt0*CgsJTdH1R!>inYZWp*2RDbjjQCP98L_ds!$x&{t85NRYk4ii ztJ3HyC8h2A2&`kq^Cfci>N*r&btHg_|v6=s|v=(-MQ zK4kjqoI^~y`j9poC2r{Izdlehm8!AcMP^+SwDUce1Zon(%YvxK)x|rXsJRlO?-K91 zMsmHgI&PmqT_W}C0mdA_6L!EEjgJzidRvTN;vQRJ-uBl#{dEeN?24PRwx)7c5kF^ut=M0)e@zr?z_vpYf=%;;@UYF9>9-->Qf2FW*# z5*#VFB$$-k(zphh4sAElMiLbp`$+SKm*{l6qX;Q8GZ7b|J>OhC!yg$}8dt$dx3E8b z$FlaM*K@6mSsYCoe#*QjLEB3|_Vs4GbZI#!>Ya}dzh%uMn}sw0gFQQ{+V+e|_`q)M3nK27)nAqQ-viJoPHUKdr9HN`v0 z+tZo0ORLuv_d)x}gO|~s(H!12RM(aMfqLG>KSH#kGxC{sUUj>FUC(6;ds1cOjeDYu zOrd>q@bNFq5?0s&@5nbF3-rw{{V&YYf3o_9|K-X4k861UwZ&C2bH+A7^%7nizU>b? zC2@*VlrqprJiv$rx{+^+Op9i3RM;IHq@a;34=Gn%B+rXMZi=UsHC@TEFk4{*fs96p z)wNUY?AhVkdLGQmPESuh@-!iqSZrnxIT~Mon)J+i+B~9VdL8QE`^4=2@lNaKluUVx z_^i7~5E4dN4&gVMi%;7ast@WIY21Q`+^iTC*Gx@IMVYB`BLFHzPh{Fpc6LKZTk@>P zquo2E*Pgq(0MX>h>4)YaJYbIK&V?-W}JfL@&R0I2)TOA!Teg zNa4DBO&)`Nn0$Inb|d8ea|)qqOLYVbQIBRC4T4E<5#Nzc2 z57|Bq7mYsW8y?uLA$XMj%OeK+1|DAKcLYB98-vDP<3*+SKYcPcOkm&}H|!{9l*9%L zbiYJYJ^)Cql-&wPwABGD>Ai7SUXe15m zIr^wNEU$9)D6@atm z(w(1~GuLpHi?JGgIBj`Ovy;j4M`XjrCNs?JsGh1zKsZ{8 z@%G?i>LaU7#uSQLpypocm*onI)$8zFgVWc7_8PVuuw>u`j-<@R$Of}T`glJ!@v*N^ zc(T~+N+M!ZczPSXN&?Ww(<@B=+*jZ+KmcpB8* zDY_1bZ3fwTw|urH{LLWB;DCGzz$jD|VX#Af@HC%BktA8F7VJSy&!5iTt};#U^e0_q zh6j7KCTInKqriZ1`BiF3iq2LWk;gyt0ORIFc4Mi3Bx`7WEuFq{u^C49-SYVjnv!_40m1>7x*+<8~Xkq?056 z!RBfE@osP%SxzOw>cLAQ$bioAOC0V!OzIXIc};)8HjfPtc~8tnah$PtoAz`4k)7$FDUc2O@D)g_uAo&nXMymK$##V?gYUPt^l zj{6NFDL(l-Rh(xkAHP%bBa=($r%3Y~jB!eQ1Smuq2iuQ|>n%Y=p(26SE5gFu11*Q< zaPN5G^d;Iovf`VY&Gh58z~%JpGzaeUz6QoBL^J%+U4|30w7Q&g9i}}@l61eKEfCgo zST6qMxF_Eaj7;0OC)TSU{4_m}%FOa6B{AxS$QIcmmG~IVjjf;7Uk!HBtHfm{%LsLb zu8~5VQFyOZk&!VY(wxL__haJ;>Bj?g&n`+i&=X{unJmv&0whCitWfGlOr6+Tc-lMZ z(ZRXqC-=O+GAvTXKViA9vdwu{aifhk$tYh~-9BScg!Yr*M2zw&9`pHMxHGh`dUH-1;~^6lF@ep;X9PjQ!rqmXNWJ?#P-qb%*TB%xe&3 zX*5V>xuW7)$3!Yc$y>cwBqd8+p+u>WS7p7~O80ipG{(a*#=NJ`^Ld6k-`|;Y&htFy zIi2(Sm)4eD=o+CGo~M3%qF|O9P0+ahmc%EklI?NgX05W3+OdS`_Rd#wg-}hd1&txU5wXy zy`x)05?WVZvELw`XWetIAg6$|(^4ntaE;=f$Wcpwbxm7?bLDnPs-1!bRoMcy!EeOh zpIv8ewDzcIU}mv1NxV!&(Wf7~_kqGAk=2=j&O5FA)z2!APCcDQPnIaiqMkVT4fUyX z))R|WvOJyzcU6d=z0q8JDt42*`js4g+_t{YP7lVguX+vhEejJ3TAIo*Z6jizHm#S- zZT_}-STQAa-0Gn8+RmR7V}{Ns1@jJ{^Sb!9&RSXXP;^ep)r6;&PW++~XYXC9a=zSF z?sp(JQo&MROb~b1Y*Xw4!P)>PHT>Z<)*U=Ax_75^OUw97pNudbxS1XPtNrIg zQ5YB77E@i7$2Ia}(^JcCi@OX`9a|m}PY%-th2m~y+)eCl>fTVjCP^lDOBLyhg1DZ+ z)~G{&OkDc$!;t~`gq(wz@qW3lh9B^ic$>-h#nV!H8d#l+>C(M%g}u2g=I#&W|L!VD zqHYoQkBW;`r|fW02u{7X!X;}T7X4iAaWzkeOh}7&o!F1qt4#$1|BDF;(2VlgEqJ$F zy8Ba-y(%fs`MzpvyXlQLEhS^ed$7Va2hO%?$-D>^*f$b)2Hx;}Ao$UqFt7l26<7eP z!{!C7PVrq>=794Zqmc z%LKkzIBZq@%Ja8EkH}?>c5ILG(EAMS*JHu?#9_7TsELw)8LZzN>f2Y6YN{AJC?34> zh42sPa1%2JpCeS9&E1URm+Pb}B>A1M`R{+O+2~}c(@^1Rf&J9p(4QqHl;E^4w5;I5 zM{?(A^eg*6DY_kI*-9!?If^HaNBfuh*u==X1_a?8$EQ3z!&;v2iJ``O7mZh%G)(O8 ze<4wX?N94(Ozf9`j+=TZpCbH>KVjWyLUe*SCiYO=rFZ4}S~Tq|ln75Jz7$AcKl$=hub=-0RM1s(0WMmE`(OPtAj>7_2I5&76hu2KPIA0y;9{+8yKa;9-m??hIE5t`5DrZ8DzRsQ+{p1jk-VFL9U z2NK_oIeqvyze>1K%b|V?-t;Wv`nY~?-t;tMC4ozyk8CR(hoZTno3!*8ZTc15`?MFf zDI892&g&3lshOEv4E@w-*_%)8C_<&HhV`0D5lN$WT4Q^UWHNSAE+RZe(o z%bqR^hp1IsDr47e^AajFtlppT)2F6yPcrWO9{Kw{o=P6y^HOW$Wqd_)_fwzn`ikZl zOGVc0+S(*=xZ_KbL0Nr`Sx$$CWEbw$52udl1f=X6CZEcFMA*nl>`0gn4&tc5^`!!)tGw<}^Q>P7E}$ zialDUofH*XcB3r9@tA@lnS}dA(@nK_xuw0b;FPUnNGD0;MIySCw=cSzB#=3>F37V-nni3UNB)-;;Gkk;3l9fh6FIjSZU zk=Eo2a`6i7@i*4>ym5`R?i-uZFv6+iX*Gi^I}ZU1OrLAX8aGiT@`*YnjeF>}$U}ORP`+EY5`eqVC_&4yG z;Tp>+2QbZ?lt1GB+D}q14W3dWP8lWnN zf(nlT6+XW&(zme{FbyDpP^NakA<~TK=Y}H^eS%2rt0v8Lr)B}@B!cTvC=9FM;7q4@ zf*;vb4HG>RFpY5?vFCp27VEnVIGx~-na6biU4{+UoYe=}^R#_My6wT$5d&r*=kpAA zu;=-c0|~yqi(N8&*H;aNfhyey+HHQ7J_qae*_CgG2V8j=Tq936S0DC8r3BXBql3Gz z0pLo_`|4Q+oY3rPBNaLmL{QM};9dke>ujP^j@z-N;fNlKb|edn>)YaafDaJ>GWKP$ z5}l&#$QFhN!CMT;WH&z-5E)kvM|36lV!^#3z{@2FF>HsgUO4PMqO#U$X%+U>K!xJ@ zBFs|+woG_9HZQs_Tw*vnCPGhlXG@>y|6pJT$I67!aP&b0o$AF2JwFy9OoapQAk>k7 z**+$_5L;5fKof<;NBX%_;vP@eyD=Z0(QW)5AF7 zp|=tk3p?5)*e~Inuydz-U?%Kuj4%zToS5I|lolPT!B)ZuRVkVa>f*-2aPeV3R79xh zB)3A$>X~szg#}>uNkpLPG#3IKyeMHM*pUuV5=-Jji7S6PSQ9oCLo{oXxzOZfF$PP) zrYwlmSQ-~n94uO3CD{K0QTmj@g%Yzn7_xQ4fTduU0Yqvln`e_`CdXH5iQ5qRr1 zBC;}%YZ2!4I>*=sR)O~jBPx6sxmIEBnq)s-fHz_y0z8-gPl2Us4BiBXNR5CIF!YR@ zb9B305SilU*@4|+ x6JBtc8JSt5M0pkooaq!^FqtuD_KdXXTo>Mw54>`rP&>h&58!3a6l6r9{sG7g--!SK literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..b7c8c5dbf5 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100755 index 0000000000..2fe81a7d95 --- /dev/null +++ b/gradlew @@ -0,0 +1,183 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000..62bd9b9cce --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,103 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/text-ui-test/runtest.sh b/text-ui-test/runtest.sh old mode 100644 new mode 100755 From ed6d4d25bd4e34461919ffe785a6f10f4c087552 Mon Sep 17 00:00:00 2001 From: lzq Date: Sat, 5 Aug 2023 15:24:02 +0800 Subject: [PATCH 02/29] Bump gradle and lib version --- build.gradle | 9 +- gradle/wrapper/gradle-wrapper.jar | Bin 58695 -> 63375 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 281 ++++++++++++++--------- gradlew.bat | 195 ++++++++-------- 5 files changed, 273 insertions(+), 216 deletions(-) diff --git a/build.gradle b/build.gradle index 885198fcfa..a388517ae1 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ plugins { id 'java' id 'application' - id 'com.github.johnrengelman.shadow' version '5.1.0' + id 'com.github.johnrengelman.shadow' version '7.1.2' } repositories { @@ -9,8 +9,8 @@ repositories { } dependencies { - testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' - testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' + testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.10.0' + testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.10.0' } test { @@ -28,12 +28,13 @@ test { } application { - mainClassName = "seedu.duke.Duke" + mainClass.set("seedu.duke.Duke") } shadowJar { archiveBaseName = "duke" archiveClassifier = null + dependsOn("distZip", "distTar") } run{ diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f3d88b1c2faf2fc91d853cd5d4242b5547257070..033e24c4cdf41af1ab109bc7f253b2b887023340 100644 GIT binary patch delta 43723 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 delta 38942 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index b7c8c5dbf5..66c01cfeba 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 2fe81a7d95..fcb6fca147 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,78 +17,110 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` - -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -97,87 +129,120 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 62bd9b9cce..6689b85bee 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -1,103 +1,92 @@ -@rem -@rem Copyright 2015 the original author or authors. -@rem -@rem Licensed under the Apache License, Version 2.0 (the "License"); -@rem you may not use this file except in compliance with the License. -@rem You may obtain a copy of the License at -@rem -@rem https://www.apache.org/licenses/LICENSE-2.0 -@rem -@rem Unless required by applicable law or agreed to in writing, software -@rem distributed under the License is distributed on an "AS IS" BASIS, -@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -@rem See the License for the specific language governing permissions and -@rem limitations under the License. -@rem - -@if "%DEBUG%" == "" @echo off -@rem ########################################################################## -@rem -@rem Gradle startup script for Windows -@rem -@rem ########################################################################## - -@rem Set local scope for the variables with windows NT shell -if "%OS%"=="Windows_NT" setlocal - -set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. -set APP_BASE_NAME=%~n0 -set APP_HOME=%DIRNAME% - -@rem Resolve any "." and ".." in APP_HOME to make it shorter. -for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi - -@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" - -@rem Find java.exe -if defined JAVA_HOME goto findJavaFromJavaHome - -set JAVA_EXE=java.exe -%JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init - -echo. -echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:findJavaFromJavaHome -set JAVA_HOME=%JAVA_HOME:"=% -set JAVA_EXE=%JAVA_HOME%/bin/java.exe - -if exist "%JAVA_EXE%" goto init - -echo. -echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% -echo. -echo Please set the JAVA_HOME variable in your environment to match the -echo location of your Java installation. - -goto fail - -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - -:execute -@rem Setup the command line - -set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar - -@rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% - -:end -@rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd - -:fail -rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of -rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 - -:mainEnd -if "%OS%"=="Windows_NT" endlocal - -:omega +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega From f92460715316a4294379e3c5620e25c1ec58c974 Mon Sep 17 00:00:00 2001 From: Chen1x Date: Thu, 24 Aug 2023 23:42:35 +0800 Subject: [PATCH 03/29] Level-0 --- src/main/java/Duke.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5d313334cc..4f3056f686 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,10 +1,11 @@ public class Duke { public static void main(String[] args) { - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo); + String greetings = "____________________________________________________________\n" + + " Hello! I'm Tackie\n" + + " What can I do for you?\n" + + "____________________________________________________________\n" + + " Bye. Hope to see you again soon!\n" + + "____________________________________________________________\n"; + System.out.println(greetings); } } From 2a5504b33bd67c35b8347615247c2e79412007a1 Mon Sep 17 00:00:00 2001 From: Chen1x Date: Thu, 24 Aug 2023 23:55:42 +0800 Subject: [PATCH 04/29] Echo --- src/main/java/Duke.java | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 4f3056f686..5288b71eae 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,11 +1,26 @@ +import java.util.Scanner; + public class Duke { public static void main(String[] args) { String greetings = "____________________________________________________________\n" + " Hello! I'm Tackie\n" + " What can I do for you?\n" + - "____________________________________________________________\n" + - " Bye. Hope to see you again soon!\n" + "____________________________________________________________\n"; + + String farewell = "____________________________________________________________\n" + + " Bye. Hope to see you again soon!\n" + + "____________________________________________________________"; + System.out.println(greetings); + + Scanner scanner = new Scanner(System.in); + String userInput = scanner.nextLine(); + while (!userInput.equals("bye")) { + System.out.println("____________________________________________________________\n" + + userInput + + "\n____________________________________________________________"); + userInput = scanner.nextLine(); + } + System.out.println(farewell); } } From 26ba4fead142b94b33426461a0ec8467e18b1810 Mon Sep 17 00:00:00 2001 From: Chen1x Date: Thu, 7 Sep 2023 23:34:17 +0800 Subject: [PATCH 05/29] Add level 2 --- src/main/java/Duke.java | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5288b71eae..425297459a 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,26 +1,47 @@ import java.util.Scanner; public class Duke { - public static void main(String[] args) { + private static String[] tasks = new String[100]; + private static int taskAmount = 0; + + private static void greet() { String greetings = "____________________________________________________________\n" + " Hello! I'm Tackie\n" + " What can I do for you?\n" + "____________________________________________________________\n"; + System.out.println(greetings); + } + private static void farewell() { String farewell = "____________________________________________________________\n" + " Bye. Hope to see you again soon!\n" + "____________________________________________________________"; + System.out.println(farewell); + } - System.out.println(greetings); + private static void list(){ + for (int i = 0; i < Duke.taskAmount; i++) { + System.out.println(Duke.tasks[i]); + } + } + + public static void main(String[] args) { + Duke.greet(); Scanner scanner = new Scanner(System.in); String userInput = scanner.nextLine(); while (!userInput.equals("bye")) { - System.out.println("____________________________________________________________\n" + - userInput + - "\n____________________________________________________________"); + if (userInput.equals("list")) { + Duke.list(); + } else { + System.out.println("____________________________________________________________\n" + + "Added: " + userInput + + "\n____________________________________________________________"); + tasks[Duke.taskAmount] = userInput; + Duke.taskAmount += 1; + } userInput = scanner.nextLine(); } - System.out.println(farewell); + Duke.farewell(); } } From f37937e3f046d89894da06acf4c36ae7a340b130 Mon Sep 17 00:00:00 2001 From: Chen1x Date: Sun, 10 Sep 2023 21:29:00 +0800 Subject: [PATCH 06/29] add Level-3 --- src/main/java/Duke.java | 53 ++++++++++++++++++++++++++++++++++------- src/main/java/Task.java | 31 ++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 src/main/java/Task.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 425297459a..4c644a117e 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,7 +1,8 @@ import java.util.Scanner; public class Duke { - private static String[] tasks = new String[100]; + + private static Task[] tasks = new Task[100]; private static int taskAmount = 0; private static void greet() { @@ -20,9 +21,30 @@ private static void farewell() { } private static void list(){ + System.out.println("____________________________________________________________"); + System.out.println("Here are the tasks in your list:"); for (int i = 0; i < Duke.taskAmount; i++) { - System.out.println(Duke.tasks[i]); + System.out.println(Integer.toString(i + 1) + "." + Duke.tasks[i]); } + System.out.println("____________________________________________________________"); + } + + private static void mark(int taskIndex){ + Task targetTask = Duke.tasks[taskIndex]; + System.out.println("____________________________________________________________"); + System.out.println("Nice! I've marked this task as done:"); + targetTask.markStatus(); + System.out.println(targetTask); + System.out.println("____________________________________________________________"); + } + + private static void unmark(int taskIndex){ + Task targetTask = Duke.tasks[taskIndex]; + System.out.println("____________________________________________________________"); + System.out.println("OK, I've marked this task as not done yet:"); + targetTask.unmarkStatus(); + System.out.println(targetTask); + System.out.println("____________________________________________________________"); } public static void main(String[] args) { @@ -31,13 +53,28 @@ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String userInput = scanner.nextLine(); while (!userInput.equals("bye")) { - if (userInput.equals("list")) { + String[] inputParts = userInput.split(" ", 2); + int taskIndex; + switch (inputParts[0]) { + case "list": Duke.list(); - } else { - System.out.println("____________________________________________________________\n" + - "Added: " + userInput + - "\n____________________________________________________________"); - tasks[Duke.taskAmount] = userInput; + break; + + case "mark": + taskIndex = Integer.parseInt(inputParts[1]) - 1; + Duke.mark(taskIndex); + break; + + case "unmark": + taskIndex = Integer.parseInt(inputParts[1]) - 1; + Duke.unmark(taskIndex); + break; + + default: + System.out.println("____________________________________________________________"); + System.out.println("Added: " + userInput); + System.out.println("____________________________________________________________"); + Duke.tasks[Duke.taskAmount] = new Task(userInput); Duke.taskAmount += 1; } userInput = scanner.nextLine(); diff --git a/src/main/java/Task.java b/src/main/java/Task.java new file mode 100644 index 0000000000..2cc2075faa --- /dev/null +++ b/src/main/java/Task.java @@ -0,0 +1,31 @@ +public class Task { + protected String description; + protected boolean isDone; + + public Task(String description) { + this.description = description; + this.isDone = false; + } + + public String getDescription() { + return this.description; + } + + public String getStatusIcon() { + return (isDone ? "X" : " "); // mark done task with X + } + + public void markStatus() { + this.isDone = true; + } + + public void unmarkStatus() { + this.isDone = false; + } + + + @Override + public String toString() { + return "[" + this.getStatusIcon() + "] " + this.description; + } +} \ No newline at end of file From 34e03ea8f7476e7416065c29dc14fb4c6c5e883a Mon Sep 17 00:00:00 2001 From: Chen1x Date: Sun, 10 Sep 2023 22:10:28 +0800 Subject: [PATCH 07/29] add Level-4 --- src/main/java/Deadline.java | 14 +++++++++ src/main/java/Duke.java | 60 +++++++++++++++++++++++++++++++++---- src/main/java/Event.java | 16 ++++++++++ src/main/java/Task.java | 1 + src/main/java/Todo.java | 11 +++++++ 5 files changed, 97 insertions(+), 5 deletions(-) create mode 100644 src/main/java/Deadline.java create mode 100644 src/main/java/Event.java create mode 100644 src/main/java/Todo.java diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java new file mode 100644 index 0000000000..e4e4b232c6 --- /dev/null +++ b/src/main/java/Deadline.java @@ -0,0 +1,14 @@ +public class Deadline extends Task { + + protected String by; + + public Deadline(String description, String by) { + super(description); + this.by = by; + } + + @Override + public String toString() { + return "[D]" + super.toString() + " (by: " + by + ")"; + } +} diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 4c644a117e..f366d87cec 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -24,7 +24,7 @@ private static void list(){ System.out.println("____________________________________________________________"); System.out.println("Here are the tasks in your list:"); for (int i = 0; i < Duke.taskAmount; i++) { - System.out.println(Integer.toString(i + 1) + "." + Duke.tasks[i]); + System.out.println((i + 1) + "." + Duke.tasks[i]); } System.out.println("____________________________________________________________"); } @@ -47,14 +47,45 @@ private static void unmark(int taskIndex){ System.out.println("____________________________________________________________"); } + private static void printAddTaskInfo(Task task){ + System.out.println("____________________________________________________________"); + System.out.println("Got it. I've added this task:"); + System.out.println(task); + System.out.println("Now you have " + Duke.taskAmount + " tasks in the list."); + System.out.println("____________________________________________________________"); + } + + private static void todo(String description){ + Todo newTask = new Todo(description); + Duke.tasks[Duke.taskAmount] = newTask; + Duke.taskAmount += 1; + Duke.printAddTaskInfo(newTask); + } + + private static void deadline(String description, String by){ + Deadline newTask = new Deadline(description, by); + Duke.tasks[Duke.taskAmount] = newTask; + Duke.taskAmount += 1; + Duke.printAddTaskInfo(newTask); + } + + private static void event(String description, String from, String to){ + Event newTask = new Event(description, from, to); + Duke.tasks[Duke.taskAmount] = newTask; + Duke.taskAmount += 1; + Duke.printAddTaskInfo(newTask); + } + public static void main(String[] args) { Duke.greet(); + int taskIndex; + String description; + Scanner scanner = new Scanner(System.in); String userInput = scanner.nextLine(); while (!userInput.equals("bye")) { String[] inputParts = userInput.split(" ", 2); - int taskIndex; switch (inputParts[0]) { case "list": Duke.list(); @@ -70,12 +101,31 @@ public static void main(String[] args) { Duke.unmark(taskIndex); break; + case "todo": + description = inputParts[1]; + Duke.todo(description); + break; + + case "deadline": + inputParts = inputParts[1].split(" /by ", 2); + description = inputParts[0]; + String by = inputParts[1]; + Duke.deadline(description, by); + break; + + case "event": + inputParts = inputParts[1].split(" /from ", 2); + description = inputParts[0]; + inputParts = inputParts[1].split(" /to ", 2); + String from = inputParts[0]; + String to = inputParts[1]; + Duke.event(description, from, to); + break; + default: System.out.println("____________________________________________________________"); - System.out.println("Added: " + userInput); + System.out.println("OOPS!!! I'm sorry, but I don't know what that means :-("); System.out.println("____________________________________________________________"); - Duke.tasks[Duke.taskAmount] = new Task(userInput); - Duke.taskAmount += 1; } userInput = scanner.nextLine(); } diff --git a/src/main/java/Event.java b/src/main/java/Event.java new file mode 100644 index 0000000000..e88e803d82 --- /dev/null +++ b/src/main/java/Event.java @@ -0,0 +1,16 @@ +public class Event extends Task { + + protected String from; + protected String to; + + public Event(String description, String from, String to) { + super(description); + this.from = from; + this.to = to; + } + + @Override + public String toString() { + return "[E]" + super.toString() + " (from: " + from + " to: " + to + ")"; + } +} diff --git a/src/main/java/Task.java b/src/main/java/Task.java index 2cc2075faa..4bb231498e 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -1,4 +1,5 @@ public class Task { + protected String description; protected boolean isDone; diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java new file mode 100644 index 0000000000..931cfd4f9e --- /dev/null +++ b/src/main/java/Todo.java @@ -0,0 +1,11 @@ +public class Todo extends Task { + + public Todo(String description) { + super(description); + } + + @Override + public String toString() { + return "[T]" + super.toString(); + } +} From b82229ea261968efa2f76866e083bce16a59b859 Mon Sep 17 00:00:00 2001 From: Chen1x Date: Sun, 10 Sep 2023 22:21:36 +0800 Subject: [PATCH 08/29] add A-TextUiTesting --- text-ui-test/EXPECTED.TXT | 58 +++++++++++++++++++++++++++++++++++---- text-ui-test/input.txt | 10 +++++++ 2 files changed, 62 insertions(+), 6 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 657e74f6e7..ab227d0b0b 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,7 +1,53 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| +____________________________________________________________ + Hello! I'm Tackie + What can I do for you? +____________________________________________________________ +____________________________________________________________ +Got it. I've added this task: +[T][ ] borrow book +Now you have 1 tasks in the list. +____________________________________________________________ +____________________________________________________________ +Got it. I've added this task: +[D][ ] return book (by: Sunday) +Now you have 2 tasks in the list. +____________________________________________________________ +____________________________________________________________ +Got it. I've added this task: +[E][ ] project meeting (from: Mon 2pm to: 4pm) +Now you have 3 tasks in the list. +____________________________________________________________ +____________________________________________________________ +Here are the tasks in your list: +1.[T][ ] borrow book +2.[D][ ] return book (by: Sunday) +3.[E][ ] project meeting (from: Mon 2pm to: 4pm) +____________________________________________________________ +____________________________________________________________ +Nice! I've marked this task as done: +[T][X] borrow book +____________________________________________________________ +____________________________________________________________ +Nice! I've marked this task as done: +[E][X] project meeting (from: Mon 2pm to: 4pm) +____________________________________________________________ +____________________________________________________________ +Here are the tasks in your list: +1.[T][X] borrow book +2.[D][ ] return book (by: Sunday) +3.[E][X] project meeting (from: Mon 2pm to: 4pm) +____________________________________________________________ +____________________________________________________________ +OK, I've marked this task as not done yet: +[T][ ] borrow book +____________________________________________________________ +____________________________________________________________ +Here are the tasks in your list: +1.[T][ ] borrow book +2.[D][ ] return book (by: Sunday) +3.[E][X] project meeting (from: Mon 2pm to: 4pm) +____________________________________________________________ +____________________________________________________________ + Bye. Hope to see you again soon! +____________________________________________________________ \ No newline at end of file diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index e69de29bb2..48c9e63ad0 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -0,0 +1,10 @@ +todo borrow book +deadline return book /by Sunday +event project meeting /from Mon 2pm /to 4pm +list +mark 1 +mark 3 +list +unmark 1 +list +bye \ No newline at end of file From 54882117b601cc04c20e24859d8ecabb91ea4c3d Mon Sep 17 00:00:00 2001 From: Chen1x Date: Sun, 10 Sep 2023 22:58:53 +0800 Subject: [PATCH 09/29] add Level-5 --- src/main/java/Duke.java | 104 +++++++++++++++++++++++++------------- text-ui-test/EXPECTED.TXT | 34 +++++++++++-- text-ui-test/input.txt | 9 ++++ 3 files changed, 108 insertions(+), 39 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index f366d87cec..107b9cf07c 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -5,19 +5,19 @@ public class Duke { private static Task[] tasks = new Task[100]; private static int taskAmount = 0; + private static void display(String... text) { + System.out.println("____________________________________________________________"); + for (String i : text) + System.out.println(i); + System.out.println("____________________________________________________________"); + } + private static void greet() { - String greetings = "____________________________________________________________\n" + - " Hello! I'm Tackie\n" + - " What can I do for you?\n" + - "____________________________________________________________\n"; - System.out.println(greetings); + Duke.display("Hello! I'm Tackie", "What can I do for you?"); } private static void farewell() { - String farewell = "____________________________________________________________\n" + - " Bye. Hope to see you again soon!\n" + - "____________________________________________________________"; - System.out.println(farewell); + Duke.display("Bye. Hope to see you again soon!"); } private static void list(){ @@ -31,28 +31,20 @@ private static void list(){ private static void mark(int taskIndex){ Task targetTask = Duke.tasks[taskIndex]; - System.out.println("____________________________________________________________"); - System.out.println("Nice! I've marked this task as done:"); targetTask.markStatus(); - System.out.println(targetTask); - System.out.println("____________________________________________________________"); + Duke.display("Nice! I've marked this task as done:", targetTask.toString()); } private static void unmark(int taskIndex){ Task targetTask = Duke.tasks[taskIndex]; - System.out.println("____________________________________________________________"); - System.out.println("OK, I've marked this task as not done yet:"); targetTask.unmarkStatus(); - System.out.println(targetTask); - System.out.println("____________________________________________________________"); + Duke.display("OK, I've marked this task as not done yet:", targetTask.toString()); } private static void printAddTaskInfo(Task task){ - System.out.println("____________________________________________________________"); - System.out.println("Got it. I've added this task:"); - System.out.println(task); - System.out.println("Now you have " + Duke.taskAmount + " tasks in the list."); - System.out.println("____________________________________________________________"); + Duke.display("Got it. I've added this task:", + task.toString(), + "Now you have " + Duke.taskAmount + " tasks in the list."); } private static void todo(String description){ @@ -79,53 +71,95 @@ private static void event(String description, String from, String to){ public static void main(String[] args) { Duke.greet(); + String[] inputParts; int taskIndex; String description; + String by; + String from; + String to; Scanner scanner = new Scanner(System.in); String userInput = scanner.nextLine(); while (!userInput.equals("bye")) { - String[] inputParts = userInput.split(" ", 2); + inputParts = userInput.split(" ", 2); switch (inputParts[0]) { case "list": Duke.list(); break; case "mark": - taskIndex = Integer.parseInt(inputParts[1]) - 1; + try { + taskIndex = Integer.parseInt(inputParts[1]) - 1; + } catch (ArrayIndexOutOfBoundsException error) { + Duke.display("OOPS!!! The index of mark cannot be empty."); + break; + } Duke.mark(taskIndex); break; case "unmark": - taskIndex = Integer.parseInt(inputParts[1]) - 1; + try { + taskIndex = Integer.parseInt(inputParts[1]) - 1; + } catch (ArrayIndexOutOfBoundsException error) { + Duke.display("OOPS!!! The index of unmark cannot be empty."); + break; + } Duke.unmark(taskIndex); break; case "todo": - description = inputParts[1]; + try { + description = inputParts[1]; + } catch (ArrayIndexOutOfBoundsException error) { + Duke.display("OOPS!!! The description of a todo cannot be empty."); + break; + } Duke.todo(description); break; case "deadline": - inputParts = inputParts[1].split(" /by ", 2); + try { + inputParts = inputParts[1].split(" /by ", 2); + } catch (ArrayIndexOutOfBoundsException error) { + Duke.display("OOPS!!! The description of a deadline cannot be empty."); + break; + } description = inputParts[0]; - String by = inputParts[1]; + try { + by = inputParts[1]; + } catch (ArrayIndexOutOfBoundsException error) { + Duke.display("OOPS!!! The by of a deadline cannot be empty."); + break; + } Duke.deadline(description, by); break; case "event": - inputParts = inputParts[1].split(" /from ", 2); + try { + inputParts = inputParts[1].split(" /from ", 2); + } catch (ArrayIndexOutOfBoundsException error) { + Duke.display("OOPS!!! The description of an event cannot be empty."); + break; + } description = inputParts[0]; - inputParts = inputParts[1].split(" /to ", 2); - String from = inputParts[0]; - String to = inputParts[1]; + try { + inputParts = inputParts[1].split(" /to ", 2); + } catch (ArrayIndexOutOfBoundsException error) { + Duke.display("OOPS!!! The from of an event cannot be empty."); + break; + } + from = inputParts[0]; + try { + to = inputParts[1]; + } catch (ArrayIndexOutOfBoundsException error) { + Duke.display("OOPS!!! The to of an event cannot be empty."); + break; + } Duke.event(description, from, to); break; default: - System.out.println("____________________________________________________________"); - System.out.println("OOPS!!! I'm sorry, but I don't know what that means :-("); - System.out.println("____________________________________________________________"); + Duke.display("OOPS!!! I'm sorry, but I don't know what that means :-("); } userInput = scanner.nextLine(); } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index ab227d0b0b..b38654f433 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,19 +1,39 @@ ____________________________________________________________ - Hello! I'm Tackie - What can I do for you? +Hello! I'm Tackie +What can I do for you? +____________________________________________________________ +____________________________________________________________ +OOPS!!! I'm sorry, but I don't know what that means :-( +____________________________________________________________ +____________________________________________________________ +OOPS!!! The description of a todo cannot be empty. ____________________________________________________________ - ____________________________________________________________ Got it. I've added this task: [T][ ] borrow book Now you have 1 tasks in the list. ____________________________________________________________ ____________________________________________________________ +OOPS!!! The description of a deadline cannot be empty. +____________________________________________________________ +____________________________________________________________ +OOPS!!! The by of a deadline cannot be empty. +____________________________________________________________ +____________________________________________________________ Got it. I've added this task: [D][ ] return book (by: Sunday) Now you have 2 tasks in the list. ____________________________________________________________ ____________________________________________________________ +OOPS!!! The description of an event cannot be empty. +____________________________________________________________ +____________________________________________________________ +OOPS!!! The from of an event cannot be empty. +____________________________________________________________ +____________________________________________________________ +OOPS!!! The to of an event cannot be empty. +____________________________________________________________ +____________________________________________________________ Got it. I've added this task: [E][ ] project meeting (from: Mon 2pm to: 4pm) Now you have 3 tasks in the list. @@ -25,6 +45,9 @@ Here are the tasks in your list: 3.[E][ ] project meeting (from: Mon 2pm to: 4pm) ____________________________________________________________ ____________________________________________________________ +OOPS!!! The index of mark cannot be empty. +____________________________________________________________ +____________________________________________________________ Nice! I've marked this task as done: [T][X] borrow book ____________________________________________________________ @@ -39,6 +62,9 @@ Here are the tasks in your list: 3.[E][X] project meeting (from: Mon 2pm to: 4pm) ____________________________________________________________ ____________________________________________________________ +OOPS!!! The index of unmark cannot be empty. +____________________________________________________________ +____________________________________________________________ OK, I've marked this task as not done yet: [T][ ] borrow book ____________________________________________________________ @@ -49,5 +75,5 @@ Here are the tasks in your list: 3.[E][X] project meeting (from: Mon 2pm to: 4pm) ____________________________________________________________ ____________________________________________________________ - Bye. Hope to see you again soon! +Bye. Hope to see you again soon! ____________________________________________________________ \ No newline at end of file diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 48c9e63ad0..36eb0d6ca3 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1,10 +1,19 @@ +hi +todo todo borrow book +deadline +deadline return book deadline return book /by Sunday +event +event Project meeting +event project meeting /from Mon 2pm event project meeting /from Mon 2pm /to 4pm list +mark mark 1 mark 3 list +unmark unmark 1 list bye \ No newline at end of file From 605d92f7abb79c0fcf7700924e445e64d010dc4e Mon Sep 17 00:00:00 2001 From: Chen1x Date: Sun, 10 Sep 2023 23:16:44 +0800 Subject: [PATCH 10/29] Refactor error handling --- src/main/java/Duke.java | 60 ++++++++++++++++++--------------------- text-ui-test/EXPECTED.TXT | 12 ++++---- 2 files changed, 34 insertions(+), 38 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 107b9cf07c..b7b4574078 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -12,6 +12,10 @@ private static void display(String... text) { System.out.println("____________________________________________________________"); } + private static void raiseMissingValueError(String value, String command) { + Duke.display(String.format("OOPS!!! The %s of %s cannot be empty.", value, command)); + } + private static void greet() { Duke.display("Hello! I'm Tackie", "What can I do for you?"); } @@ -88,73 +92,65 @@ public static void main(String[] args) { break; case "mark": - try { - taskIndex = Integer.parseInt(inputParts[1]) - 1; - } catch (ArrayIndexOutOfBoundsException error) { - Duke.display("OOPS!!! The index of mark cannot be empty."); + if (inputParts.length == 1) { + raiseMissingValueError("index", "mark"); break; } + taskIndex = Integer.parseInt(inputParts[1]) - 1; Duke.mark(taskIndex); break; case "unmark": - try { - taskIndex = Integer.parseInt(inputParts[1]) - 1; - } catch (ArrayIndexOutOfBoundsException error) { - Duke.display("OOPS!!! The index of unmark cannot be empty."); + if (inputParts.length == 1) { + raiseMissingValueError("index", "unmark"); break; } + taskIndex = Integer.parseInt(inputParts[1]) - 1; Duke.unmark(taskIndex); break; case "todo": - try { - description = inputParts[1]; - } catch (ArrayIndexOutOfBoundsException error) { - Duke.display("OOPS!!! The description of a todo cannot be empty."); + if (inputParts.length == 1) { + raiseMissingValueError("description", "todo"); break; } + description = inputParts[1]; Duke.todo(description); break; case "deadline": - try { - inputParts = inputParts[1].split(" /by ", 2); - } catch (ArrayIndexOutOfBoundsException error) { - Duke.display("OOPS!!! The description of a deadline cannot be empty."); + if (inputParts.length == 1) { + raiseMissingValueError("description", "deadline"); break; } + inputParts = inputParts[1].split(" /by ", 2); description = inputParts[0]; - try { - by = inputParts[1]; - } catch (ArrayIndexOutOfBoundsException error) { - Duke.display("OOPS!!! The by of a deadline cannot be empty."); + if (inputParts.length == 1) { + raiseMissingValueError("by", "deadline"); break; } + by = inputParts[1]; Duke.deadline(description, by); break; case "event": - try { - inputParts = inputParts[1].split(" /from ", 2); - } catch (ArrayIndexOutOfBoundsException error) { - Duke.display("OOPS!!! The description of an event cannot be empty."); + if (inputParts.length == 1) { + raiseMissingValueError("description", "event"); break; } + inputParts = inputParts[1].split(" /from ", 2); description = inputParts[0]; - try { - inputParts = inputParts[1].split(" /to ", 2); - } catch (ArrayIndexOutOfBoundsException error) { - Duke.display("OOPS!!! The from of an event cannot be empty."); + if (inputParts.length == 1) { + raiseMissingValueError("from", "event"); break; } + inputParts = inputParts[1].split(" /to ", 2); from = inputParts[0]; - try { - to = inputParts[1]; - } catch (ArrayIndexOutOfBoundsException error) { - Duke.display("OOPS!!! The to of an event cannot be empty."); + if (inputParts.length == 1) { + raiseMissingValueError("to", "event"); break; } + to = inputParts[1]; Duke.event(description, from, to); break; diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index b38654f433..995bf2ae30 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -6,7 +6,7 @@ ____________________________________________________________ OOPS!!! I'm sorry, but I don't know what that means :-( ____________________________________________________________ ____________________________________________________________ -OOPS!!! The description of a todo cannot be empty. +OOPS!!! The description of todo cannot be empty. ____________________________________________________________ ____________________________________________________________ Got it. I've added this task: @@ -14,10 +14,10 @@ Got it. I've added this task: Now you have 1 tasks in the list. ____________________________________________________________ ____________________________________________________________ -OOPS!!! The description of a deadline cannot be empty. +OOPS!!! The description of deadline cannot be empty. ____________________________________________________________ ____________________________________________________________ -OOPS!!! The by of a deadline cannot be empty. +OOPS!!! The by of deadline cannot be empty. ____________________________________________________________ ____________________________________________________________ Got it. I've added this task: @@ -25,13 +25,13 @@ Got it. I've added this task: Now you have 2 tasks in the list. ____________________________________________________________ ____________________________________________________________ -OOPS!!! The description of an event cannot be empty. +OOPS!!! The description of event cannot be empty. ____________________________________________________________ ____________________________________________________________ -OOPS!!! The from of an event cannot be empty. +OOPS!!! The from of event cannot be empty. ____________________________________________________________ ____________________________________________________________ -OOPS!!! The to of an event cannot be empty. +OOPS!!! The to of event cannot be empty. ____________________________________________________________ ____________________________________________________________ Got it. I've added this task: From b72726b074235b0b64d7182bf28848e3c7842197 Mon Sep 17 00:00:00 2001 From: Chen1x Date: Sun, 10 Sep 2023 23:37:05 +0800 Subject: [PATCH 11/29] add Level-6 --- src/main/java/Duke.java | 54 ++++++++++++++++++++++++--------------- text-ui-test/EXPECTED.TXT | 13 ++++++++++ text-ui-test/input.txt | 3 +++ 3 files changed, 49 insertions(+), 21 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index b7b4574078..d4a1932a0d 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,9 +1,9 @@ import java.util.Scanner; +import java.util.ArrayList; public class Duke { - private static Task[] tasks = new Task[100]; - private static int taskAmount = 0; + private static ArrayList tasks = new ArrayList<>(); private static void display(String... text) { System.out.println("____________________________________________________________"); @@ -27,48 +27,44 @@ private static void farewell() { private static void list(){ System.out.println("____________________________________________________________"); System.out.println("Here are the tasks in your list:"); - for (int i = 0; i < Duke.taskAmount; i++) { - System.out.println((i + 1) + "." + Duke.tasks[i]); + for (int i = 0; i < Duke.tasks.size(); i++) { + System.out.println((i + 1) + "." + Duke.tasks.get(i)); } System.out.println("____________________________________________________________"); } private static void mark(int taskIndex){ - Task targetTask = Duke.tasks[taskIndex]; + Task targetTask = Duke.tasks.get(taskIndex); targetTask.markStatus(); Duke.display("Nice! I've marked this task as done:", targetTask.toString()); } private static void unmark(int taskIndex){ - Task targetTask = Duke.tasks[taskIndex]; + Task targetTask = Duke.tasks.get(taskIndex); targetTask.unmarkStatus(); Duke.display("OK, I've marked this task as not done yet:", targetTask.toString()); } private static void printAddTaskInfo(Task task){ - Duke.display("Got it. I've added this task:", - task.toString(), - "Now you have " + Duke.taskAmount + " tasks in the list."); + Duke.display("Got it. I've added this task:", task.toString(), + "Now you have " + Duke.tasks.size() + " tasks in the list."); } - private static void todo(String description){ + private static void addTodo(String description){ Todo newTask = new Todo(description); - Duke.tasks[Duke.taskAmount] = newTask; - Duke.taskAmount += 1; + Duke.tasks.add(newTask); Duke.printAddTaskInfo(newTask); } - private static void deadline(String description, String by){ + private static void addDeadline(String description, String by){ Deadline newTask = new Deadline(description, by); - Duke.tasks[Duke.taskAmount] = newTask; - Duke.taskAmount += 1; + Duke.tasks.add(newTask); Duke.printAddTaskInfo(newTask); } - private static void event(String description, String from, String to){ + private static void addEvent(String description, String from, String to){ Event newTask = new Event(description, from, to); - Duke.tasks[Duke.taskAmount] = newTask; - Duke.taskAmount += 1; + Duke.tasks.add(newTask); Duke.printAddTaskInfo(newTask); } @@ -81,6 +77,7 @@ public static void main(String[] args) { String by; String from; String to; + Task deletedTask; Scanner scanner = new Scanner(System.in); String userInput = scanner.nextLine(); @@ -109,13 +106,28 @@ public static void main(String[] args) { Duke.unmark(taskIndex); break; + case "delete": + if (inputParts.length == 1) { + raiseMissingValueError("index", "delete"); + break; + } + taskIndex = Integer.parseInt(inputParts[1]) - 1; + if (taskIndex < 0 || taskIndex >= Duke.tasks.size()) { + Duke.display("OOPS!!! The task index is invalid."); + } else { + deletedTask = Duke.tasks.remove(taskIndex); + Duke.display("Noted. I've removed this task:", deletedTask.toString(), + "Now you have " + Duke.tasks.size() + " tasks in the list."); + } + break; + case "todo": if (inputParts.length == 1) { raiseMissingValueError("description", "todo"); break; } description = inputParts[1]; - Duke.todo(description); + Duke.addTodo(description); break; case "deadline": @@ -130,7 +142,7 @@ public static void main(String[] args) { break; } by = inputParts[1]; - Duke.deadline(description, by); + Duke.addDeadline(description, by); break; case "event": @@ -151,7 +163,7 @@ public static void main(String[] args) { break; } to = inputParts[1]; - Duke.event(description, from, to); + Duke.addEvent(description, from, to); break; default: diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 995bf2ae30..8d9cd2cf65 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -75,5 +75,18 @@ Here are the tasks in your list: 3.[E][X] project meeting (from: Mon 2pm to: 4pm) ____________________________________________________________ ____________________________________________________________ +OOPS!!! The task index is invalid. +____________________________________________________________ +____________________________________________________________ +Noted. I've removed this task: +[D][ ] return book (by: Sunday) +Now you have 2 tasks in the list. +____________________________________________________________ +____________________________________________________________ +Here are the tasks in your list: +1.[T][ ] borrow book +2.[E][X] project meeting (from: Mon 2pm to: 4pm) +____________________________________________________________ +____________________________________________________________ Bye. Hope to see you again soon! ____________________________________________________________ \ No newline at end of file diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 36eb0d6ca3..0017326917 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -16,4 +16,7 @@ list unmark unmark 1 list +delete 0 +delete 2 +list bye \ No newline at end of file From 7602f418f8d1d9213aec6d8fde2c05b935457789 Mon Sep 17 00:00:00 2001 From: Chen1x Date: Wed, 20 Sep 2023 19:57:56 +0800 Subject: [PATCH 12/29] add Level-7 --- data/duke.txt | 0 src/main/java/Deadline.java | 12 ++++++- src/main/java/Duke.java | 68 +++++++++++++++++++++++++++++++++++++ src/main/java/Event.java | 13 ++++++- src/main/java/Task.java | 8 +++-- src/main/java/Todo.java | 12 +++++-- text-ui-test/EXPECTED.TXT | 15 ++++++-- text-ui-test/data/duke.txt | 0 text-ui-test/input.txt | 3 ++ 9 files changed, 123 insertions(+), 8 deletions(-) create mode 100644 data/duke.txt create mode 100644 text-ui-test/data/duke.txt diff --git a/data/duke.txt b/data/duke.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index e4e4b232c6..282d555eeb 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -3,10 +3,20 @@ public class Deadline extends Task { protected String by; public Deadline(String description, String by) { - super(description); + super(description, false); this.by = by; } + public Deadline(String description, Boolean isDone, String by) { + super(description, isDone); + this.by = by; + } + + @Override + public String toSaveString() { + return "D | " + super.toSaveString() + " | " + by; + } + @Override public String toString() { return "[D]" + super.toString() + " (by: " + by + ")"; diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index d4a1932a0d..70e8e1fc51 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,10 +1,76 @@ +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.util.List; import java.util.Scanner; import java.util.ArrayList; public class Duke { + private static final String FILE_PATH = "./data/duke.txt"; + private static ArrayList tasks = new ArrayList<>(); + private static void saveTasks() { + try { + FileWriter writer = new FileWriter(FILE_PATH); + + for (Task task : tasks) { + writer.write(task.toSaveString() + "\n"); + } + + writer.close(); + } catch (IOException e) { + System.out.println("An error occurred while saving tasks."); + e.printStackTrace(); + } + } + + private static void loadTasks() { + File file = new File(FILE_PATH); + + if (!file.exists()) { + System.out.println("No save file detected. Attempting to create one..."); + if (file.getParentFile() != null) { + file.getParentFile().mkdirs(); // This creates the directory structure if it doesn't exist + } + try { + file.createNewFile(); + } catch (IOException e) { + System.out.println("An error occurred while creating a new save file."); + e.printStackTrace(); + } + System.out.println("Save file created successfully at " + FILE_PATH); + } + + List lines; + + try { + lines = Files.readAllLines(file.toPath()); + } catch (IOException e) { + System.out.println("An error occurred while loading tasks."); + return; + } + + for (String line : lines) { + String[] parts = line.split(" \\| "); + boolean isMarked = parts[1].equals("1"); + + switch (parts[0]) { + case "T": + tasks.add(new Todo(parts[2], isMarked)); + break; + case "D": + tasks.add(new Deadline(parts[2], isMarked, parts[3])); + break; + case "E": + tasks.add(new Event(parts[2], isMarked, parts[3], parts[4])); + break; + } + } + } + private static void display(String... text) { System.out.println("____________________________________________________________"); for (String i : text) @@ -69,6 +135,7 @@ private static void addEvent(String description, String from, String to){ } public static void main(String[] args) { + Duke.loadTasks(); Duke.greet(); String[] inputParts; @@ -169,6 +236,7 @@ public static void main(String[] args) { default: Duke.display("OOPS!!! I'm sorry, but I don't know what that means :-("); } + saveTasks(); userInput = scanner.nextLine(); } Duke.farewell(); diff --git a/src/main/java/Event.java b/src/main/java/Event.java index e88e803d82..8ff5829d09 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -4,11 +4,22 @@ public class Event extends Task { protected String to; public Event(String description, String from, String to) { - super(description); + super(description, false); this.from = from; this.to = to; } + public Event(String description, Boolean isDone, String from, String to) { + super(description, isDone); + this.from = from; + this.to = to; + } + + @Override + public String toSaveString() { + return "E | " + super.toSaveString() + " | " + from + " | " + to; + } + @Override public String toString() { return "[E]" + super.toString() + " (from: " + from + " to: " + to + ")"; diff --git a/src/main/java/Task.java b/src/main/java/Task.java index 4bb231498e..1d4e85ed86 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -3,9 +3,9 @@ public class Task { protected String description; protected boolean isDone; - public Task(String description) { + public Task(String description, Boolean isDone) { this.description = description; - this.isDone = false; + this.isDone = isDone; } public String getDescription() { @@ -24,6 +24,10 @@ public void unmarkStatus() { this.isDone = false; } + public String toSaveString() { + return (isDone ? "1" : "0") + " | " + this.description; + } + @Override public String toString() { diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java index 931cfd4f9e..23ac13234e 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/Todo.java @@ -1,7 +1,15 @@ public class Todo extends Task { - public Todo(String description) { - super(description); + super(description, false); + } + + public Todo(String description, Boolean isDone) { + super(description, isDone); + } + + @Override + public String toSaveString() { + return "T | " + super.toSaveString(); } @Override diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 8d9cd2cf65..f2dbf29213 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -6,6 +6,9 @@ ____________________________________________________________ OOPS!!! I'm sorry, but I don't know what that means :-( ____________________________________________________________ ____________________________________________________________ +Here are the tasks in your list: +____________________________________________________________ +____________________________________________________________ OOPS!!! The description of todo cannot be empty. ____________________________________________________________ ____________________________________________________________ @@ -83,9 +86,17 @@ Noted. I've removed this task: Now you have 2 tasks in the list. ____________________________________________________________ ____________________________________________________________ +Noted. I've removed this task: +[T][ ] borrow book +Now you have 1 tasks in the list. +____________________________________________________________ +____________________________________________________________ +Noted. I've removed this task: +[E][X] project meeting (from: Mon 2pm to: 4pm) +Now you have 0 tasks in the list. +____________________________________________________________ +____________________________________________________________ Here are the tasks in your list: -1.[T][ ] borrow book -2.[E][X] project meeting (from: Mon 2pm to: 4pm) ____________________________________________________________ ____________________________________________________________ Bye. Hope to see you again soon! diff --git a/text-ui-test/data/duke.txt b/text-ui-test/data/duke.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 0017326917..0d0e149df9 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1,4 +1,5 @@ hi +list todo todo borrow book deadline @@ -18,5 +19,7 @@ unmark 1 list delete 0 delete 2 +delete 1 +delete 1 list bye \ No newline at end of file From 307f5d3bd67557f421d3b7971e1e2b0fe1173a6f Mon Sep 17 00:00:00 2001 From: Chen1x Date: Wed, 20 Sep 2023 21:26:04 +0800 Subject: [PATCH 13/29] add Level-8 --- src/main/java/Deadline.java | 17 +++++++++++----- src/main/java/Duke.java | 39 +++++++++++++++++++++++++++---------- src/main/java/Event.java | 23 ++++++++++++++++------ text-ui-test/EXPECTED.TXT | 22 ++++++++++----------- text-ui-test/input.txt | 6 +++--- 5 files changed, 72 insertions(+), 35 deletions(-) diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index 282d555eeb..e8a4a8d0e0 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -1,24 +1,31 @@ +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + public class Deadline extends Task { - protected String by; + protected LocalDateTime by; - public Deadline(String description, String by) { + public Deadline(String description, LocalDateTime by) { super(description, false); this.by = by; } - public Deadline(String description, Boolean isDone, String by) { + public Deadline(String description, Boolean isDone, LocalDateTime by) { super(description, isDone); this.by = by; } + public String getByString() { + return this.by.format(DateTimeFormatter.ofPattern("MMM d yyyy HHmm")); + } + @Override public String toSaveString() { - return "D | " + super.toSaveString() + " | " + by; + return "D | " + super.toSaveString() + " | " + getByString(); } @Override public String toString() { - return "[D]" + super.toString() + " (by: " + by + ")"; + return "[D]" + super.toString() + " (by: " + getByString() + ")"; } } diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 70e8e1fc51..0561b02142 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -2,6 +2,8 @@ import java.io.FileWriter; import java.io.IOException; import java.nio.file.Files; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Scanner; import java.util.ArrayList; @@ -12,6 +14,19 @@ public class Duke { private static ArrayList tasks = new ArrayList<>(); + private static DateTimeFormatter inputDateTimeFormatter = DateTimeFormatter.ofPattern("d/M/yyyy HHmm"); + + private static DateTimeFormatter outputDateTimeFormatter = DateTimeFormatter.ofPattern("MMM d yyyy HHmm"); + + private static LocalDateTime parseInputDateTime(String dateTimeString){ + return LocalDateTime.parse(dateTimeString, inputDateTimeFormatter); + } + + private static LocalDateTime parseOutputDateTime(String dateTimeString){ + return LocalDateTime.parse(dateTimeString, outputDateTimeFormatter); + } + + private static void saveTasks() { try { FileWriter writer = new FileWriter(FILE_PATH); @@ -62,10 +77,10 @@ private static void loadTasks() { tasks.add(new Todo(parts[2], isMarked)); break; case "D": - tasks.add(new Deadline(parts[2], isMarked, parts[3])); + tasks.add(new Deadline(parts[2], isMarked, parseOutputDateTime(parts[3]))); break; case "E": - tasks.add(new Event(parts[2], isMarked, parts[3], parts[4])); + tasks.add(new Event(parts[2], isMarked, parseOutputDateTime(parts[3]), parseOutputDateTime(parts[4]))); break; } } @@ -116,19 +131,20 @@ private static void printAddTaskInfo(Task task){ "Now you have " + Duke.tasks.size() + " tasks in the list."); } + private static void addTodo(String description){ Todo newTask = new Todo(description); Duke.tasks.add(newTask); Duke.printAddTaskInfo(newTask); } - private static void addDeadline(String description, String by){ + private static void addDeadline(String description, LocalDateTime by){ Deadline newTask = new Deadline(description, by); Duke.tasks.add(newTask); Duke.printAddTaskInfo(newTask); } - private static void addEvent(String description, String from, String to){ + private static void addEvent(String description, LocalDateTime from, LocalDateTime to){ Event newTask = new Event(description, from, to); Duke.tasks.add(newTask); Duke.printAddTaskInfo(newTask); @@ -141,9 +157,12 @@ public static void main(String[] args) { String[] inputParts; int taskIndex; String description; - String by; - String from; - String to; + String byString; + LocalDateTime by; + String fromString; + LocalDateTime from; + String toString; + LocalDateTime to; Task deletedTask; Scanner scanner = new Scanner(System.in); @@ -208,7 +227,7 @@ public static void main(String[] args) { raiseMissingValueError("by", "deadline"); break; } - by = inputParts[1]; + by = parseInputDateTime(inputParts[1]); Duke.addDeadline(description, by); break; @@ -224,12 +243,12 @@ public static void main(String[] args) { break; } inputParts = inputParts[1].split(" /to ", 2); - from = inputParts[0]; + from = parseInputDateTime(inputParts[0]); if (inputParts.length == 1) { raiseMissingValueError("to", "event"); break; } - to = inputParts[1]; + to = parseInputDateTime(inputParts[1]); Duke.addEvent(description, from, to); break; diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 8ff5829d09..a24d14612c 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -1,27 +1,38 @@ +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + public class Event extends Task { - protected String from; - protected String to; + protected LocalDateTime from; + protected LocalDateTime to; - public Event(String description, String from, String to) { + public Event(String description, LocalDateTime from, LocalDateTime to) { super(description, false); this.from = from; this.to = to; } - public Event(String description, Boolean isDone, String from, String to) { + public Event(String description, Boolean isDone, LocalDateTime from, LocalDateTime to) { super(description, isDone); this.from = from; this.to = to; } + public String getFromString() { + return this.from.format(DateTimeFormatter.ofPattern("MMM d yyyy HHmm")); + } + + public String getToString() { + return this.to.format(DateTimeFormatter.ofPattern("MMM d yyyy HHmm")); + } + @Override public String toSaveString() { - return "E | " + super.toSaveString() + " | " + from + " | " + to; + return "E | " + super.toSaveString() + " | " + getFromString() + " | " + getToString(); } @Override public String toString() { - return "[E]" + super.toString() + " (from: " + from + " to: " + to + ")"; + return "[E]" + super.toString() + " (from: " + getFromString() + " to: " + getToString() + ")"; } } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index f2dbf29213..a5e94d5e68 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -24,7 +24,7 @@ OOPS!!! The by of deadline cannot be empty. ____________________________________________________________ ____________________________________________________________ Got it. I've added this task: -[D][ ] return book (by: Sunday) +[D][ ] return book (by: Sep 1 2023 1800) Now you have 2 tasks in the list. ____________________________________________________________ ____________________________________________________________ @@ -38,14 +38,14 @@ OOPS!!! The to of event cannot be empty. ____________________________________________________________ ____________________________________________________________ Got it. I've added this task: -[E][ ] project meeting (from: Mon 2pm to: 4pm) +[E][ ] project meeting (from: Sep 2 2022 1200 to: Sep 2 2022 1600) Now you have 3 tasks in the list. ____________________________________________________________ ____________________________________________________________ Here are the tasks in your list: 1.[T][ ] borrow book -2.[D][ ] return book (by: Sunday) -3.[E][ ] project meeting (from: Mon 2pm to: 4pm) +2.[D][ ] return book (by: Sep 1 2023 1800) +3.[E][ ] project meeting (from: Sep 2 2022 1200 to: Sep 2 2022 1600) ____________________________________________________________ ____________________________________________________________ OOPS!!! The index of mark cannot be empty. @@ -56,13 +56,13 @@ Nice! I've marked this task as done: ____________________________________________________________ ____________________________________________________________ Nice! I've marked this task as done: -[E][X] project meeting (from: Mon 2pm to: 4pm) +[E][X] project meeting (from: Sep 2 2022 1200 to: Sep 2 2022 1600) ____________________________________________________________ ____________________________________________________________ Here are the tasks in your list: 1.[T][X] borrow book -2.[D][ ] return book (by: Sunday) -3.[E][X] project meeting (from: Mon 2pm to: 4pm) +2.[D][ ] return book (by: Sep 1 2023 1800) +3.[E][X] project meeting (from: Sep 2 2022 1200 to: Sep 2 2022 1600) ____________________________________________________________ ____________________________________________________________ OOPS!!! The index of unmark cannot be empty. @@ -74,15 +74,15 @@ ____________________________________________________________ ____________________________________________________________ Here are the tasks in your list: 1.[T][ ] borrow book -2.[D][ ] return book (by: Sunday) -3.[E][X] project meeting (from: Mon 2pm to: 4pm) +2.[D][ ] return book (by: Sep 1 2023 1800) +3.[E][X] project meeting (from: Sep 2 2022 1200 to: Sep 2 2022 1600) ____________________________________________________________ ____________________________________________________________ OOPS!!! The task index is invalid. ____________________________________________________________ ____________________________________________________________ Noted. I've removed this task: -[D][ ] return book (by: Sunday) +[D][ ] return book (by: Sep 1 2023 1800) Now you have 2 tasks in the list. ____________________________________________________________ ____________________________________________________________ @@ -92,7 +92,7 @@ Now you have 1 tasks in the list. ____________________________________________________________ ____________________________________________________________ Noted. I've removed this task: -[E][X] project meeting (from: Mon 2pm to: 4pm) +[E][X] project meeting (from: Sep 2 2022 1200 to: Sep 2 2022 1600) Now you have 0 tasks in the list. ____________________________________________________________ ____________________________________________________________ diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 0d0e149df9..779095863a 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -4,11 +4,11 @@ todo todo borrow book deadline deadline return book -deadline return book /by Sunday +deadline return book /by 01/09/2023 1800 event event Project meeting -event project meeting /from Mon 2pm -event project meeting /from Mon 2pm /to 4pm +event project meeting /from 02/09/2022 1200 +event project meeting /from 02/09/2022 1200 /to 02/09/2022 1600 list mark mark 1 From c0f282fae3001da220cc689e8c160fc46b8eaffb Mon Sep 17 00:00:00 2001 From: Chen1x Date: Thu, 21 Sep 2023 00:30:31 +0800 Subject: [PATCH 14/29] Add A-MoreOOP --- src/main/java/AddCommand.java | 14 ++ src/main/java/Command.java | 11 ++ src/main/java/DeleteCommand.java | 21 +++ src/main/java/Duke.java | 121 +++++------------- src/main/java/DukeException.java | 5 + src/main/java/DukeInvalidIndexException.java | 5 + src/main/java/DukeMissingValueException.java | 5 + .../DukeUnrecognisedCommandException.java | 5 + .../java/DukeWrongDateFormatException.java | 5 + src/main/java/ExitCommand.java | 7 + src/main/java/ListCommand.java | 11 ++ src/main/java/MarkCommand.java | 21 +++ src/main/java/Parser.java | 104 +++++++++++++++ src/main/java/Storage.java | 84 ++++++++++++ src/main/java/Task.java | 4 +- src/main/java/TaskList.java | 39 ++++++ src/main/java/Ui.java | 60 +++++++++ src/main/java/UnmarkCommand.java | 21 +++ text-ui-test/EXPECTED.TXT | 22 ++-- 19 files changed, 466 insertions(+), 99 deletions(-) create mode 100644 src/main/java/AddCommand.java create mode 100644 src/main/java/Command.java create mode 100644 src/main/java/DeleteCommand.java create mode 100644 src/main/java/DukeException.java create mode 100644 src/main/java/DukeInvalidIndexException.java create mode 100644 src/main/java/DukeMissingValueException.java create mode 100644 src/main/java/DukeUnrecognisedCommandException.java create mode 100644 src/main/java/DukeWrongDateFormatException.java create mode 100644 src/main/java/ExitCommand.java create mode 100644 src/main/java/ListCommand.java create mode 100644 src/main/java/MarkCommand.java create mode 100644 src/main/java/Parser.java create mode 100644 src/main/java/Storage.java create mode 100644 src/main/java/TaskList.java create mode 100644 src/main/java/Ui.java create mode 100644 src/main/java/UnmarkCommand.java diff --git a/src/main/java/AddCommand.java b/src/main/java/AddCommand.java new file mode 100644 index 0000000000..af3663efb8 --- /dev/null +++ b/src/main/java/AddCommand.java @@ -0,0 +1,14 @@ +public class AddCommand extends Command { + private Task taskToAdd; + + public AddCommand(Task task) { + this.taskToAdd = task; + } + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) { + tasks.add(taskToAdd); + ui.displayAddedTask(taskToAdd, tasks); + storage.saveTasks(tasks); + } +} diff --git a/src/main/java/Command.java b/src/main/java/Command.java new file mode 100644 index 0000000000..abf2085f86 --- /dev/null +++ b/src/main/java/Command.java @@ -0,0 +1,11 @@ +import java.util.ArrayList; + +public abstract class Command { + protected boolean isExit = false; + + public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException; + + public boolean isExit() { + return isExit; + } +} \ No newline at end of file diff --git a/src/main/java/DeleteCommand.java b/src/main/java/DeleteCommand.java new file mode 100644 index 0000000000..4d7f3ad4f3 --- /dev/null +++ b/src/main/java/DeleteCommand.java @@ -0,0 +1,21 @@ +public class DeleteCommand extends Command { + private int taskIndexToDelete; + + public DeleteCommand(int taskIndexToDelete) { + this.taskIndexToDelete = taskIndexToDelete; + } + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + if (taskIndexToDelete <= 0 || taskIndexToDelete > tasks.size()) { + throw new DukeInvalidIndexException(taskIndexToDelete); + } + + Task deletedTask = tasks.get(taskIndexToDelete - 1); // Lists are 0-indexed, but users see a 1-indexed list. + tasks.remove(taskIndexToDelete - 1); + + ui.displayDeletedTask(deletedTask, tasks); + + storage.saveTasks(tasks); + } +} diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 0561b02142..e8e6e40908 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -10,100 +10,48 @@ public class Duke { - private static final String FILE_PATH = "./data/duke.txt"; - - private static ArrayList tasks = new ArrayList<>(); - - private static DateTimeFormatter inputDateTimeFormatter = DateTimeFormatter.ofPattern("d/M/yyyy HHmm"); - - private static DateTimeFormatter outputDateTimeFormatter = DateTimeFormatter.ofPattern("MMM d yyyy HHmm"); - - private static LocalDateTime parseInputDateTime(String dateTimeString){ - return LocalDateTime.parse(dateTimeString, inputDateTimeFormatter); - } - - private static LocalDateTime parseOutputDateTime(String dateTimeString){ - return LocalDateTime.parse(dateTimeString, outputDateTimeFormatter); - } - - - private static void saveTasks() { - try { - FileWriter writer = new FileWriter(FILE_PATH); - - for (Task task : tasks) { - writer.write(task.toSaveString() + "\n"); - } - - writer.close(); - } catch (IOException e) { - System.out.println("An error occurred while saving tasks."); - e.printStackTrace(); - } - } - - private static void loadTasks() { - File file = new File(FILE_PATH); - - if (!file.exists()) { - System.out.println("No save file detected. Attempting to create one..."); - if (file.getParentFile() != null) { - file.getParentFile().mkdirs(); // This creates the directory structure if it doesn't exist - } + private Ui ui; + private Storage storage; + private Parser parser; + private TaskList tasks; + + // Initialize the classes in the Duke constructor. + public Duke(String filePath) { + this.ui = new Ui(); + this.storage = new Storage(filePath); + tasks = new TaskList(storage.loadTasks()); + this.parser = new Parser(); + } + + public void run() { + ui.greet(); + boolean isExit = false; + while (!isExit) { try { - file.createNewFile(); - } catch (IOException e) { - System.out.println("An error occurred while creating a new save file."); - e.printStackTrace(); - } - System.out.println("Save file created successfully at " + FILE_PATH); - } - - List lines; - - try { - lines = Files.readAllLines(file.toPath()); - } catch (IOException e) { - System.out.println("An error occurred while loading tasks."); - return; - } - - for (String line : lines) { - String[] parts = line.split(" \\| "); - boolean isMarked = parts[1].equals("1"); - - switch (parts[0]) { - case "T": - tasks.add(new Todo(parts[2], isMarked)); - break; - case "D": - tasks.add(new Deadline(parts[2], isMarked, parseOutputDateTime(parts[3]))); - break; - case "E": - tasks.add(new Event(parts[2], isMarked, parseOutputDateTime(parts[3]), parseOutputDateTime(parts[4]))); - break; + String fullCommand = ui.readCommand(); + Command c = parser.parse(fullCommand); + c.execute(tasks, ui, storage); + isExit = c.isExit(); + } catch (DukeException e) { + ui.display(e.getMessage()); } } } - private static void display(String... text) { - System.out.println("____________________________________________________________"); - for (String i : text) - System.out.println(i); - System.out.println("____________________________________________________________"); + public static void main(String[] args) { + new Duke("./data/duke.txt").run(); } +} +/* +public class Duke { - private static void raiseMissingValueError(String value, String command) { - Duke.display(String.format("OOPS!!! The %s of %s cannot be empty.", value, command)); - } - private static void greet() { - Duke.display("Hello! I'm Tackie", "What can I do for you?"); + private static LocalDateTime parseInputDateTime(String dateTimeString){ + return LocalDateTime.parse(dateTimeString, inputDateTimeFormatter); } - private static void farewell() { - Duke.display("Bye. Hope to see you again soon!"); - } + + private static void list(){ System.out.println("____________________________________________________________"); @@ -253,11 +201,12 @@ public static void main(String[] args) { break; default: - Duke.display("OOPS!!! I'm sorry, but I don't know what that means :-("); + Ui.display("OOPS!!! I'm sorry, but I don't know what that means :-("); } saveTasks(); userInput = scanner.nextLine(); } - Duke.farewell(); + ui.farewell(); } } +*/ \ No newline at end of file diff --git a/src/main/java/DukeException.java b/src/main/java/DukeException.java new file mode 100644 index 0000000000..d2789a1f82 --- /dev/null +++ b/src/main/java/DukeException.java @@ -0,0 +1,5 @@ +public class DukeException extends Exception { + public DukeException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/src/main/java/DukeInvalidIndexException.java b/src/main/java/DukeInvalidIndexException.java new file mode 100644 index 0000000000..923bc269ec --- /dev/null +++ b/src/main/java/DukeInvalidIndexException.java @@ -0,0 +1,5 @@ +public class DukeInvalidIndexException extends DukeException { + public DukeInvalidIndexException(int taskIndex) { + super("OOPS!!! No such task with index " + taskIndex); + } +} diff --git a/src/main/java/DukeMissingValueException.java b/src/main/java/DukeMissingValueException.java new file mode 100644 index 0000000000..b97bdfc5c7 --- /dev/null +++ b/src/main/java/DukeMissingValueException.java @@ -0,0 +1,5 @@ +public class DukeMissingValueException extends DukeException{ + public DukeMissingValueException(String value, String command) { + super(String.format("OOPS!!! The %s of %s cannot be empty.", value, command)); + } +} diff --git a/src/main/java/DukeUnrecognisedCommandException.java b/src/main/java/DukeUnrecognisedCommandException.java new file mode 100644 index 0000000000..ec1e59b2cc --- /dev/null +++ b/src/main/java/DukeUnrecognisedCommandException.java @@ -0,0 +1,5 @@ +public class DukeUnrecognisedCommandException extends DukeException { + public DukeUnrecognisedCommandException() { + super("OOPS!!! I'm sorry, but I don't know what that means :-("); + } +} diff --git a/src/main/java/DukeWrongDateFormatException.java b/src/main/java/DukeWrongDateFormatException.java new file mode 100644 index 0000000000..3bb190ad09 --- /dev/null +++ b/src/main/java/DukeWrongDateFormatException.java @@ -0,0 +1,5 @@ +public class DukeWrongDateFormatException extends DukeException { + public DukeWrongDateFormatException() { + super("Please use the correct date time format: d/M/yyyy HHmm."); + } +} diff --git a/src/main/java/ExitCommand.java b/src/main/java/ExitCommand.java new file mode 100644 index 0000000000..927ecf82df --- /dev/null +++ b/src/main/java/ExitCommand.java @@ -0,0 +1,7 @@ +public class ExitCommand extends Command { + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) { + ui.farewell(); + isExit = true; + } +} diff --git a/src/main/java/ListCommand.java b/src/main/java/ListCommand.java new file mode 100644 index 0000000000..2c350a552f --- /dev/null +++ b/src/main/java/ListCommand.java @@ -0,0 +1,11 @@ +public class ListCommand extends Command { + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + if (tasks.size() == 0) { + ui.displayEmptyList(); + } else { + ui.displayList(tasks); + } + } +} \ No newline at end of file diff --git a/src/main/java/MarkCommand.java b/src/main/java/MarkCommand.java new file mode 100644 index 0000000000..ab726a412d --- /dev/null +++ b/src/main/java/MarkCommand.java @@ -0,0 +1,21 @@ +public class MarkCommand extends Command { + private int taskIndexToMark; + + public MarkCommand(int taskIndexToMark) { + this.taskIndexToMark = taskIndexToMark; + } + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + if (taskIndexToMark <= 0 || taskIndexToMark > tasks.size()) { + throw new DukeInvalidIndexException(taskIndexToMark); + } + + Task taskToMark = tasks.get(taskIndexToMark - 1); + taskToMark.mark(); + + ui.displayMarkedTask(taskToMark); + + storage.saveTasks(tasks); + } +} \ No newline at end of file diff --git a/src/main/java/Parser.java b/src/main/java/Parser.java new file mode 100644 index 0000000000..4774825fd1 --- /dev/null +++ b/src/main/java/Parser.java @@ -0,0 +1,104 @@ +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +public class Parser { + + + private static final DateTimeFormatter inputDateTimeFormatter = DateTimeFormatter.ofPattern("d/M/yyyy HHmm"); + + public Command parse(String fullCommand) throws DukeException { + String[] parts = fullCommand.split(" ", 2); + String commandType = parts[0]; + + switch (commandType) { + case "bye": + return new ExitCommand(); + case "list": + return new ListCommand(); + case "todo": + return parseTodo(parts); + case "deadline": + return parseDeadline(parts); + case "event": + return parseEvent(parts); + case "delete": + return parseDelete(parts); + case "mark": + return parseMark(parts); + case "unmark": + return parseUnmark(parts); + default: + throw new DukeUnrecognisedCommandException(); + } + } + + private void ensureValidParts(String[] parts, String value, String command) throws DukeException { + if (parts.length < 2 || parts[1].isEmpty()) { + throw new DukeMissingValueException(value, command); + } + } + + private Command parseTodo(String[] parts) throws DukeException { + ensureValidParts(parts, "description", "todo"); + return new AddCommand(new Todo(parts[1])); + } + + + private Command parseDeadline(String[] parts) throws DukeException { + ensureValidParts(parts, "description", "deadline"); + String[] deadlineParts = parts[1].split(" /by ", 2); + ensureValidParts(deadlineParts, "deadline time", "deadline"); + try { + LocalDateTime by = LocalDateTime.parse(deadlineParts[1], inputDateTimeFormatter); + return new AddCommand(new Deadline(deadlineParts[0], by)); + } catch (DateTimeParseException e) { + throw new DukeWrongDateFormatException(); + } + } + + private Command parseEvent(String[] parts) throws DukeException { + ensureValidParts(parts, "description", "event"); + String[] eventParts = parts[1].split(" /from ", 2); + ensureValidParts(eventParts, "start time", "event"); + String[] timeParts = eventParts[1].split(" /to ", 2); + ensureValidParts(timeParts, "end time", "event"); + try { + LocalDateTime from = LocalDateTime.parse(timeParts[0], inputDateTimeFormatter); + LocalDateTime to = LocalDateTime.parse(timeParts[1], inputDateTimeFormatter); + return new AddCommand(new Event(eventParts[0], from, to)); + } catch (DateTimeParseException e) { + throw new DukeWrongDateFormatException(); + } + } + + private Command parseDelete(String[] parts) throws DukeException { + ensureValidParts(parts, "task index", "delete"); + try { + int deleteIndex = Integer.parseInt(parts[1]); + return new DeleteCommand(deleteIndex); + } catch (NumberFormatException e) { + throw new DukeException("Please provide a valid task index."); + } + } + + private Command parseMark(String[] parts) throws DukeException { + ensureValidParts(parts, "task index", "mark"); + try { + int markIndex = Integer.parseInt(parts[1]); + return new MarkCommand(markIndex); + } catch (NumberFormatException e) { + throw new DukeException("Please provide a valid task index."); + } + } + + private Command parseUnmark(String[] parts) throws DukeException { + ensureValidParts(parts, "task index", "unmark"); + try { + int unmarkIndex = Integer.parseInt(parts[1]); + return new UnmarkCommand(unmarkIndex); + } catch (NumberFormatException e) { + throw new DukeException("Please provide a valid task index."); + } + } +} \ No newline at end of file diff --git a/src/main/java/Storage.java b/src/main/java/Storage.java new file mode 100644 index 0000000000..60bb3f76a6 --- /dev/null +++ b/src/main/java/Storage.java @@ -0,0 +1,84 @@ +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.util.ArrayList; +import java.util.List; + +public class Storage { + + private static LocalDateTime parseSavedDateTime(String dateTimeString){ + return LocalDateTime.parse(dateTimeString, DateTimeFormatter.ofPattern("MMM d yyyy HHmm")); + } + private String filePath; + + public Storage(String filePath) { + this.filePath = filePath; + } + + public void saveTasks(TaskList tasks) { + try { + FileWriter writer = new FileWriter(this.filePath); + + for (int i = 0; i < tasks.size(); i++) { + writer.write(tasks.get(i).toSaveString() + "\n"); + } + + writer.close(); + } catch (IOException e) { + System.out.println("An error occurred while saving tasks."); + e.printStackTrace(); + } + } + + public ArrayList loadTasks() { + File file = new File(this.filePath); + + if (!file.exists()) { + System.out.println("No save file detected. Attempting to create one..."); + if (file.getParentFile() != null) { + file.getParentFile().mkdirs(); // This creates the directory structure if it doesn't exist + } + try { + file.createNewFile(); + } catch (IOException e) { + System.out.println("An error occurred while creating a new save file."); + e.printStackTrace(); + } + System.out.println("Save file created successfully at " + this.filePath); + } + + List lines; + + try { + lines = Files.readAllLines(file.toPath()); + } catch (IOException e) { + System.out.println("An error occurred while loading tasks."); + return null; + } + + ArrayList tasks = new ArrayList<>(); + + for (String line : lines) { + String[] parts = line.split(" \\| "); + boolean isMarked = parts[1].equals("1"); + + switch (parts[0]) { + case "T": + tasks.add(new Todo(parts[2], isMarked)); + break; + case "D": + tasks.add(new Deadline(parts[2], isMarked, parseSavedDateTime(parts[3]))); + break; + case "E": + tasks.add(new Event(parts[2], isMarked, parseSavedDateTime(parts[3]), parseSavedDateTime(parts[4]))); + break; + } + } + return tasks; // Return the loaded list of tasks. + } + + // ... Other storage-related methods ... +} \ No newline at end of file diff --git a/src/main/java/Task.java b/src/main/java/Task.java index 1d4e85ed86..51f5565c49 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -16,11 +16,11 @@ public String getStatusIcon() { return (isDone ? "X" : " "); // mark done task with X } - public void markStatus() { + public void mark() { this.isDone = true; } - public void unmarkStatus() { + public void unmark() { this.isDone = false; } diff --git a/src/main/java/TaskList.java b/src/main/java/TaskList.java new file mode 100644 index 0000000000..5d785984a0 --- /dev/null +++ b/src/main/java/TaskList.java @@ -0,0 +1,39 @@ +import java.util.ArrayList; + +public class TaskList { + + private ArrayList tasks; + + public TaskList() { + this.tasks = new ArrayList<>(); + } + + public TaskList(ArrayList loadedTasks) { + this.tasks = loadedTasks; + } + + // Adds a task to the list. + public void add(Task task) { + tasks.add(task); + } + + // Removes a task from the list based on the index. + public Task remove(int index){ + return tasks.remove(index); + } + + // Gets a task based on its index. + public Task get(int index) { + return tasks.get(index); + } + + // Returns the number of tasks in the list. + public int size() { + return tasks.size(); + } + + // Returns the entire list of tasks. + public ArrayList getTasks() { + return tasks; + } +} \ No newline at end of file diff --git a/src/main/java/Ui.java b/src/main/java/Ui.java new file mode 100644 index 0000000000..f9a8d0b0e8 --- /dev/null +++ b/src/main/java/Ui.java @@ -0,0 +1,60 @@ +import java.util.Scanner; + +public class Ui { + private Scanner scanner; + + public Ui() { + this.scanner = new Scanner(System.in); + } + + public void display(String... text) { + System.out.println("____________________________________________________________"); + for (String i : text) + System.out.println(i); + System.out.println("____________________________________________________________"); + } + + public void greet() { + display("Hello! I'm Tackie", "What can I do for you?"); + } + + public void farewell() { + display("Bye. Hope to see you again soon!"); + } + + public void displayAddedTask(Task task, TaskList tasks) { + display("Got it. I've added this task:", task.toString(), + "Now you have " + tasks.size() + " tasks in the list."); + } + + public void displayDeletedTask(Task task, TaskList tasks) { + display("Got it. I've removed this task:", task.toString(), + "Now you have " + tasks.size() + " tasks in the list."); + } + + public void displayMarkedTask(Task task) { + display("Nice! I've marked this task as done:", task.toString()); + } + + public void displayUnmarkedTask(Task task) { + display("OK, I've marked this task as not done yet:", task.toString()); + } + + public void displayEmptyList() { + display("You currently have no tasks in your list."); + } + + + public String readCommand() { + return scanner.nextLine().trim(); + } + + public void displayList(TaskList tasks) { + System.out.println("____________________________________________________________"); + System.out.println("Here are the tasks in your list:"); + for (int i = 0; i < tasks.size(); i++) { + System.out.println((i + 1) + "." + tasks.get(i)); + } + System.out.println("____________________________________________________________"); + } +} diff --git a/src/main/java/UnmarkCommand.java b/src/main/java/UnmarkCommand.java new file mode 100644 index 0000000000..805f135443 --- /dev/null +++ b/src/main/java/UnmarkCommand.java @@ -0,0 +1,21 @@ +public class UnmarkCommand extends Command { + private int taskIndexToUnmark; + + public UnmarkCommand(int taskIndexToUnmark) { + this.taskIndexToUnmark = taskIndexToUnmark; + } + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + if (taskIndexToUnmark <= 0 || taskIndexToUnmark > tasks.size()) { + throw new DukeInvalidIndexException(taskIndexToUnmark); + } + + Task taskToUnmark = tasks.get(taskIndexToUnmark - 1); + taskToUnmark.unmark(); + + ui.displayUnmarkedTask(taskToUnmark); + + storage.saveTasks(tasks); + } +} \ No newline at end of file diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index a5e94d5e68..e1498b704e 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -6,7 +6,7 @@ ____________________________________________________________ OOPS!!! I'm sorry, but I don't know what that means :-( ____________________________________________________________ ____________________________________________________________ -Here are the tasks in your list: +You currently have no tasks in your list. ____________________________________________________________ ____________________________________________________________ OOPS!!! The description of todo cannot be empty. @@ -20,7 +20,7 @@ ____________________________________________________________ OOPS!!! The description of deadline cannot be empty. ____________________________________________________________ ____________________________________________________________ -OOPS!!! The by of deadline cannot be empty. +OOPS!!! The deadline time of deadline cannot be empty. ____________________________________________________________ ____________________________________________________________ Got it. I've added this task: @@ -31,10 +31,10 @@ ____________________________________________________________ OOPS!!! The description of event cannot be empty. ____________________________________________________________ ____________________________________________________________ -OOPS!!! The from of event cannot be empty. +OOPS!!! The start time of event cannot be empty. ____________________________________________________________ ____________________________________________________________ -OOPS!!! The to of event cannot be empty. +OOPS!!! The end time of event cannot be empty. ____________________________________________________________ ____________________________________________________________ Got it. I've added this task: @@ -48,7 +48,7 @@ Here are the tasks in your list: 3.[E][ ] project meeting (from: Sep 2 2022 1200 to: Sep 2 2022 1600) ____________________________________________________________ ____________________________________________________________ -OOPS!!! The index of mark cannot be empty. +OOPS!!! The task index of mark cannot be empty. ____________________________________________________________ ____________________________________________________________ Nice! I've marked this task as done: @@ -65,7 +65,7 @@ Here are the tasks in your list: 3.[E][X] project meeting (from: Sep 2 2022 1200 to: Sep 2 2022 1600) ____________________________________________________________ ____________________________________________________________ -OOPS!!! The index of unmark cannot be empty. +OOPS!!! The task index of unmark cannot be empty. ____________________________________________________________ ____________________________________________________________ OK, I've marked this task as not done yet: @@ -78,25 +78,25 @@ Here are the tasks in your list: 3.[E][X] project meeting (from: Sep 2 2022 1200 to: Sep 2 2022 1600) ____________________________________________________________ ____________________________________________________________ -OOPS!!! The task index is invalid. +OOPS!!! No such task with index 0 ____________________________________________________________ ____________________________________________________________ -Noted. I've removed this task: +Got it. I've removed this task: [D][ ] return book (by: Sep 1 2023 1800) Now you have 2 tasks in the list. ____________________________________________________________ ____________________________________________________________ -Noted. I've removed this task: +Got it. I've removed this task: [T][ ] borrow book Now you have 1 tasks in the list. ____________________________________________________________ ____________________________________________________________ -Noted. I've removed this task: +Got it. I've removed this task: [E][X] project meeting (from: Sep 2 2022 1200 to: Sep 2 2022 1600) Now you have 0 tasks in the list. ____________________________________________________________ ____________________________________________________________ -Here are the tasks in your list: +You currently have no tasks in your list. ____________________________________________________________ ____________________________________________________________ Bye. Hope to see you again soon! From ebdf08fd09a2b9fd437e1a894af06082c0454c8e Mon Sep 17 00:00:00 2001 From: Chen1x Date: Thu, 21 Sep 2023 18:33:27 +0800 Subject: [PATCH 15/29] add A-Packages --- data/{duke.txt => jarvis.txt} | 0 src/main/java/Duke.java | 212 ------------------ src/main/java/DukeException.java | 5 - src/main/java/DukeInvalidIndexException.java | 5 - src/main/java/DukeMissingValueException.java | 5 - .../DukeUnrecognisedCommandException.java | 5 - .../java/DukeWrongDateFormatException.java | 5 - src/main/java/jarvis/Jarvis.java | 43 ++++ .../java/{ => jarvis/command}/AddCommand.java | 7 + .../java/{ => jarvis/command}/Command.java | 9 +- .../{ => jarvis/command}/DeleteCommand.java | 13 +- .../{ => jarvis/command}/ExitCommand.java | 6 + .../{ => jarvis/command}/ListCommand.java | 9 +- .../{ => jarvis/command}/MarkCommand.java | 13 +- .../{ => jarvis/command}/UnmarkCommand.java | 13 +- .../jarvis/exception/JarvisException.java | 7 + .../JarvisInvalidIndexException.java | 7 + .../JarvisMissingValueException.java | 7 + .../JarvisUnrecognisedCommandException.java | 7 + .../JarvisWrongDateFormatException.java | 7 + src/main/java/{ => jarvis/parser}/Parser.java | 41 ++-- .../java/{ => jarvis/storage}/Storage.java | 8 + src/main/java/{ => jarvis/task}/Deadline.java | 2 + src/main/java/{ => jarvis/task}/Event.java | 2 + src/main/java/{ => jarvis/task}/Task.java | 2 + src/main/java/{ => jarvis/task}/Todo.java | 2 + .../java/{ => jarvis/tasklist}/TaskList.java | 4 + src/main/java/{ => jarvis/ui}/Ui.java | 7 +- text-ui-test/EXPECTED.TXT | 2 +- text-ui-test/data/{duke.txt => jarvis.txt} | 0 text-ui-test/runtest.bat | 12 +- 31 files changed, 202 insertions(+), 265 deletions(-) rename data/{duke.txt => jarvis.txt} (100%) delete mode 100644 src/main/java/Duke.java delete mode 100644 src/main/java/DukeException.java delete mode 100644 src/main/java/DukeInvalidIndexException.java delete mode 100644 src/main/java/DukeMissingValueException.java delete mode 100644 src/main/java/DukeUnrecognisedCommandException.java delete mode 100644 src/main/java/DukeWrongDateFormatException.java create mode 100644 src/main/java/jarvis/Jarvis.java rename src/main/java/{ => jarvis/command}/AddCommand.java (71%) rename src/main/java/{ => jarvis/command}/Command.java (51%) rename src/main/java/{ => jarvis/command}/DeleteCommand.java (65%) rename src/main/java/{ => jarvis/command}/ExitCommand.java (61%) rename src/main/java/{ => jarvis/command}/ListCommand.java (59%) rename src/main/java/{ => jarvis/command}/MarkCommand.java (61%) rename src/main/java/{ => jarvis/command}/UnmarkCommand.java (62%) create mode 100644 src/main/java/jarvis/exception/JarvisException.java create mode 100644 src/main/java/jarvis/exception/JarvisInvalidIndexException.java create mode 100644 src/main/java/jarvis/exception/JarvisMissingValueException.java create mode 100644 src/main/java/jarvis/exception/JarvisUnrecognisedCommandException.java create mode 100644 src/main/java/jarvis/exception/JarvisWrongDateFormatException.java rename src/main/java/{ => jarvis/parser}/Parser.java (69%) rename src/main/java/{ => jarvis/storage}/Storage.java (94%) rename src/main/java/{ => jarvis/task}/Deadline.java (97%) rename src/main/java/{ => jarvis/task}/Event.java (98%) rename src/main/java/{ => jarvis/task}/Task.java (97%) rename src/main/java/{ => jarvis/task}/Todo.java (94%) rename src/main/java/{ => jarvis/tasklist}/TaskList.java (93%) rename src/main/java/{ => jarvis/ui}/Ui.java (91%) rename text-ui-test/data/{duke.txt => jarvis.txt} (100%) diff --git a/data/duke.txt b/data/jarvis.txt similarity index 100% rename from data/duke.txt rename to data/jarvis.txt diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java deleted file mode 100644 index e8e6e40908..0000000000 --- a/src/main/java/Duke.java +++ /dev/null @@ -1,212 +0,0 @@ -import java.io.File; -import java.io.FileWriter; -import java.io.IOException; -import java.nio.file.Files; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.util.List; -import java.util.Scanner; -import java.util.ArrayList; - -public class Duke { - - private Ui ui; - private Storage storage; - private Parser parser; - private TaskList tasks; - - // Initialize the classes in the Duke constructor. - public Duke(String filePath) { - this.ui = new Ui(); - this.storage = new Storage(filePath); - tasks = new TaskList(storage.loadTasks()); - this.parser = new Parser(); - } - - public void run() { - ui.greet(); - boolean isExit = false; - while (!isExit) { - try { - String fullCommand = ui.readCommand(); - Command c = parser.parse(fullCommand); - c.execute(tasks, ui, storage); - isExit = c.isExit(); - } catch (DukeException e) { - ui.display(e.getMessage()); - } - } - } - - public static void main(String[] args) { - new Duke("./data/duke.txt").run(); - } -} -/* -public class Duke { - - - private static LocalDateTime parseInputDateTime(String dateTimeString){ - return LocalDateTime.parse(dateTimeString, inputDateTimeFormatter); - } - - - - - private static void list(){ - System.out.println("____________________________________________________________"); - System.out.println("Here are the tasks in your list:"); - for (int i = 0; i < Duke.tasks.size(); i++) { - System.out.println((i + 1) + "." + Duke.tasks.get(i)); - } - System.out.println("____________________________________________________________"); - } - - private static void mark(int taskIndex){ - Task targetTask = Duke.tasks.get(taskIndex); - targetTask.markStatus(); - Duke.display("Nice! I've marked this task as done:", targetTask.toString()); - } - - private static void unmark(int taskIndex){ - Task targetTask = Duke.tasks.get(taskIndex); - targetTask.unmarkStatus(); - Duke.display("OK, I've marked this task as not done yet:", targetTask.toString()); - } - - private static void printAddTaskInfo(Task task){ - Duke.display("Got it. I've added this task:", task.toString(), - "Now you have " + Duke.tasks.size() + " tasks in the list."); - } - - - private static void addTodo(String description){ - Todo newTask = new Todo(description); - Duke.tasks.add(newTask); - Duke.printAddTaskInfo(newTask); - } - - private static void addDeadline(String description, LocalDateTime by){ - Deadline newTask = new Deadline(description, by); - Duke.tasks.add(newTask); - Duke.printAddTaskInfo(newTask); - } - - private static void addEvent(String description, LocalDateTime from, LocalDateTime to){ - Event newTask = new Event(description, from, to); - Duke.tasks.add(newTask); - Duke.printAddTaskInfo(newTask); - } - - public static void main(String[] args) { - Duke.loadTasks(); - Duke.greet(); - - String[] inputParts; - int taskIndex; - String description; - String byString; - LocalDateTime by; - String fromString; - LocalDateTime from; - String toString; - LocalDateTime to; - Task deletedTask; - - Scanner scanner = new Scanner(System.in); - String userInput = scanner.nextLine(); - while (!userInput.equals("bye")) { - inputParts = userInput.split(" ", 2); - switch (inputParts[0]) { - case "list": - Duke.list(); - break; - - case "mark": - if (inputParts.length == 1) { - raiseMissingValueError("index", "mark"); - break; - } - taskIndex = Integer.parseInt(inputParts[1]) - 1; - Duke.mark(taskIndex); - break; - - case "unmark": - if (inputParts.length == 1) { - raiseMissingValueError("index", "unmark"); - break; - } - taskIndex = Integer.parseInt(inputParts[1]) - 1; - Duke.unmark(taskIndex); - break; - - case "delete": - if (inputParts.length == 1) { - raiseMissingValueError("index", "delete"); - break; - } - taskIndex = Integer.parseInt(inputParts[1]) - 1; - if (taskIndex < 0 || taskIndex >= Duke.tasks.size()) { - Duke.display("OOPS!!! The task index is invalid."); - } else { - deletedTask = Duke.tasks.remove(taskIndex); - Duke.display("Noted. I've removed this task:", deletedTask.toString(), - "Now you have " + Duke.tasks.size() + " tasks in the list."); - } - break; - - case "todo": - if (inputParts.length == 1) { - raiseMissingValueError("description", "todo"); - break; - } - description = inputParts[1]; - Duke.addTodo(description); - break; - - case "deadline": - if (inputParts.length == 1) { - raiseMissingValueError("description", "deadline"); - break; - } - inputParts = inputParts[1].split(" /by ", 2); - description = inputParts[0]; - if (inputParts.length == 1) { - raiseMissingValueError("by", "deadline"); - break; - } - by = parseInputDateTime(inputParts[1]); - Duke.addDeadline(description, by); - break; - - case "event": - if (inputParts.length == 1) { - raiseMissingValueError("description", "event"); - break; - } - inputParts = inputParts[1].split(" /from ", 2); - description = inputParts[0]; - if (inputParts.length == 1) { - raiseMissingValueError("from", "event"); - break; - } - inputParts = inputParts[1].split(" /to ", 2); - from = parseInputDateTime(inputParts[0]); - if (inputParts.length == 1) { - raiseMissingValueError("to", "event"); - break; - } - to = parseInputDateTime(inputParts[1]); - Duke.addEvent(description, from, to); - break; - - default: - Ui.display("OOPS!!! I'm sorry, but I don't know what that means :-("); - } - saveTasks(); - userInput = scanner.nextLine(); - } - ui.farewell(); - } -} -*/ \ No newline at end of file diff --git a/src/main/java/DukeException.java b/src/main/java/DukeException.java deleted file mode 100644 index d2789a1f82..0000000000 --- a/src/main/java/DukeException.java +++ /dev/null @@ -1,5 +0,0 @@ -public class DukeException extends Exception { - public DukeException(String message) { - super(message); - } -} \ No newline at end of file diff --git a/src/main/java/DukeInvalidIndexException.java b/src/main/java/DukeInvalidIndexException.java deleted file mode 100644 index 923bc269ec..0000000000 --- a/src/main/java/DukeInvalidIndexException.java +++ /dev/null @@ -1,5 +0,0 @@ -public class DukeInvalidIndexException extends DukeException { - public DukeInvalidIndexException(int taskIndex) { - super("OOPS!!! No such task with index " + taskIndex); - } -} diff --git a/src/main/java/DukeMissingValueException.java b/src/main/java/DukeMissingValueException.java deleted file mode 100644 index b97bdfc5c7..0000000000 --- a/src/main/java/DukeMissingValueException.java +++ /dev/null @@ -1,5 +0,0 @@ -public class DukeMissingValueException extends DukeException{ - public DukeMissingValueException(String value, String command) { - super(String.format("OOPS!!! The %s of %s cannot be empty.", value, command)); - } -} diff --git a/src/main/java/DukeUnrecognisedCommandException.java b/src/main/java/DukeUnrecognisedCommandException.java deleted file mode 100644 index ec1e59b2cc..0000000000 --- a/src/main/java/DukeUnrecognisedCommandException.java +++ /dev/null @@ -1,5 +0,0 @@ -public class DukeUnrecognisedCommandException extends DukeException { - public DukeUnrecognisedCommandException() { - super("OOPS!!! I'm sorry, but I don't know what that means :-("); - } -} diff --git a/src/main/java/DukeWrongDateFormatException.java b/src/main/java/DukeWrongDateFormatException.java deleted file mode 100644 index 3bb190ad09..0000000000 --- a/src/main/java/DukeWrongDateFormatException.java +++ /dev/null @@ -1,5 +0,0 @@ -public class DukeWrongDateFormatException extends DukeException { - public DukeWrongDateFormatException() { - super("Please use the correct date time format: d/M/yyyy HHmm."); - } -} diff --git a/src/main/java/jarvis/Jarvis.java b/src/main/java/jarvis/Jarvis.java new file mode 100644 index 0000000000..88de23e880 --- /dev/null +++ b/src/main/java/jarvis/Jarvis.java @@ -0,0 +1,43 @@ +package jarvis; + +import jarvis.command.Command; +import jarvis.exception.JarvisException; +import jarvis.parser.Parser; +import jarvis.storage.Storage; +import jarvis.tasklist.TaskList; +import jarvis.ui.Ui; + +public class Jarvis { + + private Ui ui; + private Storage storage; + private Parser parser; + private TaskList tasks; + + // Initialize the classes in the Duke constructor. + public Jarvis(String filePath) { + this.ui = new Ui(); + this.storage = new Storage(filePath); + tasks = new TaskList(storage.loadTasks()); + this.parser = new Parser(); + } + + public void run() { + ui.greet(); + boolean isExit = false; + while (!isExit) { + try { + String fullCommand = ui.readCommand(); + Command c = parser.parse(fullCommand); + c.execute(tasks, ui, storage); + isExit = c.isExit(); + } catch (JarvisException e) { + ui.display(e.getMessage()); + } + } + } + + public static void main(String[] args) { + new Jarvis("./data/jarvis.txt").run(); + } +} \ No newline at end of file diff --git a/src/main/java/AddCommand.java b/src/main/java/jarvis/command/AddCommand.java similarity index 71% rename from src/main/java/AddCommand.java rename to src/main/java/jarvis/command/AddCommand.java index af3663efb8..aaea39e042 100644 --- a/src/main/java/AddCommand.java +++ b/src/main/java/jarvis/command/AddCommand.java @@ -1,3 +1,10 @@ +package jarvis.command; + +import jarvis.storage.Storage; +import jarvis.task.Task; +import jarvis.tasklist.TaskList; +import jarvis.ui.Ui; + public class AddCommand extends Command { private Task taskToAdd; diff --git a/src/main/java/Command.java b/src/main/java/jarvis/command/Command.java similarity index 51% rename from src/main/java/Command.java rename to src/main/java/jarvis/command/Command.java index abf2085f86..5d72bf4ae6 100644 --- a/src/main/java/Command.java +++ b/src/main/java/jarvis/command/Command.java @@ -1,9 +1,14 @@ -import java.util.ArrayList; +package jarvis.command; + +import jarvis.storage.Storage; +import jarvis.tasklist.TaskList; +import jarvis.ui.Ui; +import jarvis.exception.JarvisException; public abstract class Command { protected boolean isExit = false; - public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException; + public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException; public boolean isExit() { return isExit; diff --git a/src/main/java/DeleteCommand.java b/src/main/java/jarvis/command/DeleteCommand.java similarity index 65% rename from src/main/java/DeleteCommand.java rename to src/main/java/jarvis/command/DeleteCommand.java index 4d7f3ad4f3..5c95b2664a 100644 --- a/src/main/java/DeleteCommand.java +++ b/src/main/java/jarvis/command/DeleteCommand.java @@ -1,3 +1,12 @@ +package jarvis.command; + +import jarvis.storage.Storage; +import jarvis.task.Task; +import jarvis.tasklist.TaskList; +import jarvis.ui.Ui; +import jarvis.exception.JarvisException; +import jarvis.exception.JarvisInvalidIndexException; + public class DeleteCommand extends Command { private int taskIndexToDelete; @@ -6,9 +15,9 @@ public DeleteCommand(int taskIndexToDelete) { } @Override - public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (taskIndexToDelete <= 0 || taskIndexToDelete > tasks.size()) { - throw new DukeInvalidIndexException(taskIndexToDelete); + throw new JarvisInvalidIndexException(taskIndexToDelete); } Task deletedTask = tasks.get(taskIndexToDelete - 1); // Lists are 0-indexed, but users see a 1-indexed list. diff --git a/src/main/java/ExitCommand.java b/src/main/java/jarvis/command/ExitCommand.java similarity index 61% rename from src/main/java/ExitCommand.java rename to src/main/java/jarvis/command/ExitCommand.java index 927ecf82df..9e69130e86 100644 --- a/src/main/java/ExitCommand.java +++ b/src/main/java/jarvis/command/ExitCommand.java @@ -1,3 +1,9 @@ +package jarvis.command; + +import jarvis.storage.Storage; +import jarvis.tasklist.TaskList; +import jarvis.ui.Ui; + public class ExitCommand extends Command { @Override public void execute(TaskList tasks, Ui ui, Storage storage) { diff --git a/src/main/java/ListCommand.java b/src/main/java/jarvis/command/ListCommand.java similarity index 59% rename from src/main/java/ListCommand.java rename to src/main/java/jarvis/command/ListCommand.java index 2c350a552f..8eaad91b4e 100644 --- a/src/main/java/ListCommand.java +++ b/src/main/java/jarvis/command/ListCommand.java @@ -1,7 +1,14 @@ +package jarvis.command; + +import jarvis.storage.Storage; +import jarvis.tasklist.TaskList; +import jarvis.ui.Ui; +import jarvis.exception.JarvisException; + public class ListCommand extends Command { @Override - public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (tasks.size() == 0) { ui.displayEmptyList(); } else { diff --git a/src/main/java/MarkCommand.java b/src/main/java/jarvis/command/MarkCommand.java similarity index 61% rename from src/main/java/MarkCommand.java rename to src/main/java/jarvis/command/MarkCommand.java index ab726a412d..5d55d44a22 100644 --- a/src/main/java/MarkCommand.java +++ b/src/main/java/jarvis/command/MarkCommand.java @@ -1,3 +1,12 @@ +package jarvis.command; + +import jarvis.storage.Storage; +import jarvis.task.Task; +import jarvis.tasklist.TaskList; +import jarvis.ui.Ui; +import jarvis.exception.JarvisException; +import jarvis.exception.JarvisInvalidIndexException; + public class MarkCommand extends Command { private int taskIndexToMark; @@ -6,9 +15,9 @@ public MarkCommand(int taskIndexToMark) { } @Override - public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (taskIndexToMark <= 0 || taskIndexToMark > tasks.size()) { - throw new DukeInvalidIndexException(taskIndexToMark); + throw new JarvisInvalidIndexException(taskIndexToMark); } Task taskToMark = tasks.get(taskIndexToMark - 1); diff --git a/src/main/java/UnmarkCommand.java b/src/main/java/jarvis/command/UnmarkCommand.java similarity index 62% rename from src/main/java/UnmarkCommand.java rename to src/main/java/jarvis/command/UnmarkCommand.java index 805f135443..9353f8a4e0 100644 --- a/src/main/java/UnmarkCommand.java +++ b/src/main/java/jarvis/command/UnmarkCommand.java @@ -1,3 +1,12 @@ +package jarvis.command; + +import jarvis.storage.Storage; +import jarvis.task.Task; +import jarvis.tasklist.TaskList; +import jarvis.ui.Ui; +import jarvis.exception.JarvisException; +import jarvis.exception.JarvisInvalidIndexException; + public class UnmarkCommand extends Command { private int taskIndexToUnmark; @@ -6,9 +15,9 @@ public UnmarkCommand(int taskIndexToUnmark) { } @Override - public void execute(TaskList tasks, Ui ui, Storage storage) throws DukeException { + public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (taskIndexToUnmark <= 0 || taskIndexToUnmark > tasks.size()) { - throw new DukeInvalidIndexException(taskIndexToUnmark); + throw new JarvisInvalidIndexException(taskIndexToUnmark); } Task taskToUnmark = tasks.get(taskIndexToUnmark - 1); diff --git a/src/main/java/jarvis/exception/JarvisException.java b/src/main/java/jarvis/exception/JarvisException.java new file mode 100644 index 0000000000..7c3c27c805 --- /dev/null +++ b/src/main/java/jarvis/exception/JarvisException.java @@ -0,0 +1,7 @@ +package jarvis.exception; + +public class JarvisException extends Exception { + public JarvisException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/src/main/java/jarvis/exception/JarvisInvalidIndexException.java b/src/main/java/jarvis/exception/JarvisInvalidIndexException.java new file mode 100644 index 0000000000..fac4621f30 --- /dev/null +++ b/src/main/java/jarvis/exception/JarvisInvalidIndexException.java @@ -0,0 +1,7 @@ +package jarvis.exception; + +public class JarvisInvalidIndexException extends JarvisException { + public JarvisInvalidIndexException(int taskIndex) { + super("OOPS!!! No such task with index " + taskIndex); + } +} diff --git a/src/main/java/jarvis/exception/JarvisMissingValueException.java b/src/main/java/jarvis/exception/JarvisMissingValueException.java new file mode 100644 index 0000000000..5d26c1b8f2 --- /dev/null +++ b/src/main/java/jarvis/exception/JarvisMissingValueException.java @@ -0,0 +1,7 @@ +package jarvis.exception; + +public class JarvisMissingValueException extends JarvisException { + public JarvisMissingValueException(String value, String command) { + super(String.format("OOPS!!! The %s of %s cannot be empty.", value, command)); + } +} diff --git a/src/main/java/jarvis/exception/JarvisUnrecognisedCommandException.java b/src/main/java/jarvis/exception/JarvisUnrecognisedCommandException.java new file mode 100644 index 0000000000..e01d188873 --- /dev/null +++ b/src/main/java/jarvis/exception/JarvisUnrecognisedCommandException.java @@ -0,0 +1,7 @@ +package jarvis.exception; + +public class JarvisUnrecognisedCommandException extends JarvisException { + public JarvisUnrecognisedCommandException() { + super("OOPS!!! I'm sorry, but I don't know what that means :-("); + } +} diff --git a/src/main/java/jarvis/exception/JarvisWrongDateFormatException.java b/src/main/java/jarvis/exception/JarvisWrongDateFormatException.java new file mode 100644 index 0000000000..6e32c6c367 --- /dev/null +++ b/src/main/java/jarvis/exception/JarvisWrongDateFormatException.java @@ -0,0 +1,7 @@ +package jarvis.exception; + +public class JarvisWrongDateFormatException extends JarvisException { + public JarvisWrongDateFormatException() { + super("Please use the correct date time format: d/M/yyyy HHmm."); + } +} diff --git a/src/main/java/Parser.java b/src/main/java/jarvis/parser/Parser.java similarity index 69% rename from src/main/java/Parser.java rename to src/main/java/jarvis/parser/Parser.java index 4774825fd1..395a30538b 100644 --- a/src/main/java/Parser.java +++ b/src/main/java/jarvis/parser/Parser.java @@ -1,3 +1,14 @@ +package jarvis.parser; + +import jarvis.command.*; +import jarvis.exception.JarvisException; +import jarvis.exception.JarvisMissingValueException; +import jarvis.exception.JarvisUnrecognisedCommandException; +import jarvis.exception.JarvisWrongDateFormatException; +import jarvis.task.Deadline; +import jarvis.task.Event; +import jarvis.task.Todo; + import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -7,7 +18,7 @@ public class Parser { private static final DateTimeFormatter inputDateTimeFormatter = DateTimeFormatter.ofPattern("d/M/yyyy HHmm"); - public Command parse(String fullCommand) throws DukeException { + public Command parse(String fullCommand) throws JarvisException { String[] parts = fullCommand.split(" ", 2); String commandType = parts[0]; @@ -29,23 +40,23 @@ public Command parse(String fullCommand) throws DukeException { case "unmark": return parseUnmark(parts); default: - throw new DukeUnrecognisedCommandException(); + throw new JarvisUnrecognisedCommandException(); } } - private void ensureValidParts(String[] parts, String value, String command) throws DukeException { + private void ensureValidParts(String[] parts, String value, String command) throws JarvisException { if (parts.length < 2 || parts[1].isEmpty()) { - throw new DukeMissingValueException(value, command); + throw new JarvisMissingValueException(value, command); } } - private Command parseTodo(String[] parts) throws DukeException { + private Command parseTodo(String[] parts) throws JarvisException { ensureValidParts(parts, "description", "todo"); return new AddCommand(new Todo(parts[1])); } - private Command parseDeadline(String[] parts) throws DukeException { + private Command parseDeadline(String[] parts) throws JarvisException { ensureValidParts(parts, "description", "deadline"); String[] deadlineParts = parts[1].split(" /by ", 2); ensureValidParts(deadlineParts, "deadline time", "deadline"); @@ -53,11 +64,11 @@ private Command parseDeadline(String[] parts) throws DukeException { LocalDateTime by = LocalDateTime.parse(deadlineParts[1], inputDateTimeFormatter); return new AddCommand(new Deadline(deadlineParts[0], by)); } catch (DateTimeParseException e) { - throw new DukeWrongDateFormatException(); + throw new JarvisWrongDateFormatException(); } } - private Command parseEvent(String[] parts) throws DukeException { + private Command parseEvent(String[] parts) throws JarvisException { ensureValidParts(parts, "description", "event"); String[] eventParts = parts[1].split(" /from ", 2); ensureValidParts(eventParts, "start time", "event"); @@ -68,37 +79,37 @@ private Command parseEvent(String[] parts) throws DukeException { LocalDateTime to = LocalDateTime.parse(timeParts[1], inputDateTimeFormatter); return new AddCommand(new Event(eventParts[0], from, to)); } catch (DateTimeParseException e) { - throw new DukeWrongDateFormatException(); + throw new JarvisWrongDateFormatException(); } } - private Command parseDelete(String[] parts) throws DukeException { + private Command parseDelete(String[] parts) throws JarvisException { ensureValidParts(parts, "task index", "delete"); try { int deleteIndex = Integer.parseInt(parts[1]); return new DeleteCommand(deleteIndex); } catch (NumberFormatException e) { - throw new DukeException("Please provide a valid task index."); + throw new JarvisException("Please provide a valid task index."); } } - private Command parseMark(String[] parts) throws DukeException { + private Command parseMark(String[] parts) throws JarvisException { ensureValidParts(parts, "task index", "mark"); try { int markIndex = Integer.parseInt(parts[1]); return new MarkCommand(markIndex); } catch (NumberFormatException e) { - throw new DukeException("Please provide a valid task index."); + throw new JarvisException("Please provide a valid task index."); } } - private Command parseUnmark(String[] parts) throws DukeException { + private Command parseUnmark(String[] parts) throws JarvisException { ensureValidParts(parts, "task index", "unmark"); try { int unmarkIndex = Integer.parseInt(parts[1]); return new UnmarkCommand(unmarkIndex); } catch (NumberFormatException e) { - throw new DukeException("Please provide a valid task index."); + throw new JarvisException("Please provide a valid task index."); } } } \ No newline at end of file diff --git a/src/main/java/Storage.java b/src/main/java/jarvis/storage/Storage.java similarity index 94% rename from src/main/java/Storage.java rename to src/main/java/jarvis/storage/Storage.java index 60bb3f76a6..e06bc0636d 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/jarvis/storage/Storage.java @@ -1,3 +1,11 @@ +package jarvis.storage; + +import jarvis.tasklist.TaskList; +import jarvis.task.Deadline; +import jarvis.task.Event; +import jarvis.task.Task; +import jarvis.task.Todo; + import java.io.File; import java.io.FileWriter; import java.io.IOException; diff --git a/src/main/java/Deadline.java b/src/main/java/jarvis/task/Deadline.java similarity index 97% rename from src/main/java/Deadline.java rename to src/main/java/jarvis/task/Deadline.java index e8a4a8d0e0..93a656346e 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/jarvis/task/Deadline.java @@ -1,3 +1,5 @@ +package jarvis.task; + import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; diff --git a/src/main/java/Event.java b/src/main/java/jarvis/task/Event.java similarity index 98% rename from src/main/java/Event.java rename to src/main/java/jarvis/task/Event.java index a24d14612c..8326c87b0e 100644 --- a/src/main/java/Event.java +++ b/src/main/java/jarvis/task/Event.java @@ -1,3 +1,5 @@ +package jarvis.task; + import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; diff --git a/src/main/java/Task.java b/src/main/java/jarvis/task/Task.java similarity index 97% rename from src/main/java/Task.java rename to src/main/java/jarvis/task/Task.java index 51f5565c49..7483bd0da3 100644 --- a/src/main/java/Task.java +++ b/src/main/java/jarvis/task/Task.java @@ -1,3 +1,5 @@ +package jarvis.task; + public class Task { protected String description; diff --git a/src/main/java/Todo.java b/src/main/java/jarvis/task/Todo.java similarity index 94% rename from src/main/java/Todo.java rename to src/main/java/jarvis/task/Todo.java index 23ac13234e..006f3b68e4 100644 --- a/src/main/java/Todo.java +++ b/src/main/java/jarvis/task/Todo.java @@ -1,3 +1,5 @@ +package jarvis.task; + public class Todo extends Task { public Todo(String description) { super(description, false); diff --git a/src/main/java/TaskList.java b/src/main/java/jarvis/tasklist/TaskList.java similarity index 93% rename from src/main/java/TaskList.java rename to src/main/java/jarvis/tasklist/TaskList.java index 5d785984a0..10deacc4e1 100644 --- a/src/main/java/TaskList.java +++ b/src/main/java/jarvis/tasklist/TaskList.java @@ -1,3 +1,7 @@ +package jarvis.tasklist; + +import jarvis.task.Task; + import java.util.ArrayList; public class TaskList { diff --git a/src/main/java/Ui.java b/src/main/java/jarvis/ui/Ui.java similarity index 91% rename from src/main/java/Ui.java rename to src/main/java/jarvis/ui/Ui.java index f9a8d0b0e8..12380e7747 100644 --- a/src/main/java/Ui.java +++ b/src/main/java/jarvis/ui/Ui.java @@ -1,3 +1,8 @@ +package jarvis.ui; + +import jarvis.task.Task; +import jarvis.tasklist.TaskList; + import java.util.Scanner; public class Ui { @@ -15,7 +20,7 @@ public void display(String... text) { } public void greet() { - display("Hello! I'm Tackie", "What can I do for you?"); + display("Hello Master! I'm Jarvis, your AI personal assistant.", "What can I do for you?"); } public void farewell() { diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index e1498b704e..8b58a8547a 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,5 +1,5 @@ ____________________________________________________________ -Hello! I'm Tackie +Hello Master! I'm Jarvis, your AI personal assistant. What can I do for you? ____________________________________________________________ ____________________________________________________________ diff --git a/text-ui-test/data/duke.txt b/text-ui-test/data/jarvis.txt similarity index 100% rename from text-ui-test/data/duke.txt rename to text-ui-test/data/jarvis.txt diff --git a/text-ui-test/runtest.bat b/text-ui-test/runtest.bat index 0873744649..500eb83595 100644 --- a/text-ui-test/runtest.bat +++ b/text-ui-test/runtest.bat @@ -7,7 +7,15 @@ REM delete output from previous run if exist ACTUAL.TXT del ACTUAL.TXT REM compile the code into the bin folder -javac -cp ..\src\main\java -Xlint:none -d ..\bin ..\src\main\java\*.java +javac -cp ..\src\main\java -Xlint:none -d ..\bin ^ +..\src\main\java\jarvis\*.java ^ +..\src\main\java\jarvis\ui\*.java ^ +..\src\main\java\jarvis\tasklist\*.java ^ +..\src\main\java\jarvis\task\*.java ^ +..\src\main\java\jarvis\storage\*.java ^ +..\src\main\java\jarvis\parser\*.java ^ +..\src\main\java\jarvis\exception\*.java ^ +..\src\main\java\jarvis\command\*.java IF ERRORLEVEL 1 ( echo ********** BUILD FAILURE ********** exit /b 1 @@ -15,7 +23,7 @@ IF ERRORLEVEL 1 ( REM no error here, errorlevel == 0 REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT -java -classpath ..\bin Duke < input.txt > ACTUAL.TXT +java -classpath ..\bin jarvis.Jarvis < input.txt > ACTUAL.TXT REM compare the output to the expected output FC ACTUAL.TXT EXPECTED.TXT From 6e72e54b1f2a0ca5e96ac3c7a3e65037fe53bc9d Mon Sep 17 00:00:00 2001 From: Chen1x Date: Thu, 21 Sep 2023 20:03:30 +0800 Subject: [PATCH 16/29] Add A-JUnit --- src/test/java/jarvis/task/DeadlineTest.java | 34 +++++++++++++++++++++ src/test/java/jarvis/task/EventTest.java | 33 ++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 src/test/java/jarvis/task/DeadlineTest.java create mode 100644 src/test/java/jarvis/task/EventTest.java diff --git a/src/test/java/jarvis/task/DeadlineTest.java b/src/test/java/jarvis/task/DeadlineTest.java new file mode 100644 index 0000000000..e1ab634d24 --- /dev/null +++ b/src/test/java/jarvis/task/DeadlineTest.java @@ -0,0 +1,34 @@ +package jarvis.task; + +import org.junit.jupiter.api.Test; + +import java.time.LocalDateTime; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class DeadlineTest { + + @Test + public void testToString() { + Deadline deadline = new Deadline("return book", LocalDateTime.of(2023, 9, 20, 12, 0)); + assertEquals("[D][ ] return book (by: Sep 20 2023 1200)", deadline.toString()); + } + + @Test + public void testToSaveString() { + Deadline deadline = new Deadline("return book", false, LocalDateTime.of(2023, 9, 20, 12, 0)); + assertEquals("D | 0 | return book | Sep 20 2023 1200", deadline.toSaveString()); + } + + @Test + public void testToSaveStringCompleted() { + Deadline deadline = new Deadline("return book", true, LocalDateTime.of(2023, 9, 20, 12, 0)); + assertEquals("D | 1 | return book | Sep 20 2023 1200", deadline.toSaveString()); + } + + @Test + public void testGetByString() { + Deadline deadline = new Deadline("return book", LocalDateTime.of(2023, 9, 20, 12, 0)); + assertEquals("Sep 20 2023 1200", deadline.getByString()); + } +} \ No newline at end of file diff --git a/src/test/java/jarvis/task/EventTest.java b/src/test/java/jarvis/task/EventTest.java new file mode 100644 index 0000000000..c823de76ae --- /dev/null +++ b/src/test/java/jarvis/task/EventTest.java @@ -0,0 +1,33 @@ +package jarvis.task; + +import org.junit.jupiter.api.Test; + +import java.time.LocalDateTime; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class EventTest { + + @Test + public void testToString() { + Event event = new Event("Meeting", LocalDateTime.of(2023, 9, 20, 10, 30), + LocalDateTime.of(2023, 9, 20, 11, 30)); + assertEquals("Meeting", event.getDescription()); + assertEquals("[E][ ] Meeting (from: Sep 20 2023 1030 to: Sep 20 2023 1130)", event.toString()); + } + + @Test + public void testToStringCompleted() { + Event event = new Event("Conference", true, + LocalDateTime.of(2023, 10, 1, 9, 0), + LocalDateTime.of(2023, 10, 1, 17, 0)); + assertEquals("[E][X] Conference (from: Oct 1 2023 0900 to: Oct 1 2023 1700)", event.toString()); + } + + @Test + public void testToSaveString() { + Event event = new Event("Dinner", LocalDateTime.of(2023, 11, 25, 19, 0), + LocalDateTime.of(2023, 11, 25, 21, 0)); + assertEquals("E | 0 | Dinner | Nov 25 2023 1900 | Nov 25 2023 2100", event.toSaveString()); + } +} \ No newline at end of file From 0c079241bd75df5f7e8b2f0f899a2804fe3f69c8 Mon Sep 17 00:00:00 2001 From: Chen1x Date: Thu, 21 Sep 2023 20:10:29 +0800 Subject: [PATCH 17/29] Add A-Jar --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index a388517ae1..27924c9b35 100644 --- a/build.gradle +++ b/build.gradle @@ -28,11 +28,11 @@ test { } application { - mainClass.set("seedu.duke.Duke") + mainClass.set("jarvis.Jarvis") } shadowJar { - archiveBaseName = "duke" + archiveBaseName = "jarvis" archiveClassifier = null dependsOn("distZip", "distTar") } From 409fccbea7d78a0159a7b1a8838ea2d7472041f4 Mon Sep 17 00:00:00 2001 From: Chen1x Date: Thu, 21 Sep 2023 23:30:27 +0800 Subject: [PATCH 18/29] Add A-JavaDoc --- src/main/java/jarvis/Jarvis.java | 18 ++++++- src/main/java/jarvis/command/AddCommand.java | 17 ++++++ src/main/java/jarvis/command/Command.java | 18 +++++++ .../java/jarvis/command/DeleteCommand.java | 18 +++++++ src/main/java/jarvis/command/ExitCommand.java | 12 +++++ src/main/java/jarvis/command/ListCommand.java | 12 +++++ src/main/java/jarvis/command/MarkCommand.java | 18 +++++++ .../java/jarvis/command/UnmarkCommand.java | 18 +++++++ .../jarvis/exception/JarvisException.java | 9 ++++ .../JarvisInvalidIndexException.java | 9 ++++ .../JarvisMissingValueException.java | 10 ++++ .../JarvisUnrecognisedCommandException.java | 7 +++ .../JarvisWrongDateFormatException.java | 7 +++ src/main/java/jarvis/parser/Parser.java | 16 +++++- src/main/java/jarvis/storage/Storage.java | 26 +++++++-- src/main/java/jarvis/task/Deadline.java | 33 ++++++++++++ src/main/java/jarvis/task/Event.java | 40 ++++++++++++++ src/main/java/jarvis/task/Task.java | 40 +++++++++++++- src/main/java/jarvis/task/Todo.java | 30 +++++++++++ src/main/java/jarvis/tasklist/TaskList.java | 44 +++++++++++++-- src/main/java/jarvis/ui/Ui.java | 54 ++++++++++++++++++- 21 files changed, 443 insertions(+), 13 deletions(-) diff --git a/src/main/java/jarvis/Jarvis.java b/src/main/java/jarvis/Jarvis.java index 88de23e880..1177656765 100644 --- a/src/main/java/jarvis/Jarvis.java +++ b/src/main/java/jarvis/Jarvis.java @@ -7,6 +7,10 @@ import jarvis.tasklist.TaskList; import jarvis.ui.Ui; +/** + * Represents the main Jarvis application. + * Initializes the application and starts the interaction with the user. + */ public class Jarvis { private Ui ui; @@ -14,7 +18,11 @@ public class Jarvis { private Parser parser; private TaskList tasks; - // Initialize the classes in the Duke constructor. + /** + * Constructs a Jarvis object. + * + * @param filePath The file path of the file to store the tasks. + */ public Jarvis(String filePath) { this.ui = new Ui(); this.storage = new Storage(filePath); @@ -22,6 +30,9 @@ public Jarvis(String filePath) { this.parser = new Parser(); } + /** + * Runs the Jarvis application until the user exits the application. + */ public void run() { ui.greet(); boolean isExit = false; @@ -37,6 +48,11 @@ public void run() { } } + /** + * The main method to launch the Jarvis application. + * + * @param args The command-line arguments. Not used in this application. + */ public static void main(String[] args) { new Jarvis("./data/jarvis.txt").run(); } diff --git a/src/main/java/jarvis/command/AddCommand.java b/src/main/java/jarvis/command/AddCommand.java index aaea39e042..dccc38d122 100644 --- a/src/main/java/jarvis/command/AddCommand.java +++ b/src/main/java/jarvis/command/AddCommand.java @@ -5,13 +5,30 @@ import jarvis.tasklist.TaskList; import jarvis.ui.Ui; +/** + * Represents a command to add a task to the task list. + * Contains the task to be added. + */ public class AddCommand extends Command { private Task taskToAdd; + /** + * Constructs an AddCommand object. + * + * @param task The task to be added. + */ public AddCommand(Task task) { this.taskToAdd = task; } + /** + * Executes the AddCommand. + * Adds the task to the task list, displays the added task, and saves the updated task list to storage. + * + * @param tasks The list of tasks. + * @param ui The Ui object, for displaying the added task to the user. + * @param storage The Storage object, for saving the updated task list. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) { tasks.add(taskToAdd); diff --git a/src/main/java/jarvis/command/Command.java b/src/main/java/jarvis/command/Command.java index 5d72bf4ae6..41fff2dc46 100644 --- a/src/main/java/jarvis/command/Command.java +++ b/src/main/java/jarvis/command/Command.java @@ -5,11 +5,29 @@ import jarvis.ui.Ui; import jarvis.exception.JarvisException; +/** + * Represents an abstract command that can be executed by Jarvis. + * This class serves as the base class for all specific commands + * that Jarvis can execute. + */ public abstract class Command { protected boolean isExit = false; + /** + * Executes the specific implementation of this command. + * + * @param tasks The list of tasks currently managed by Jarvis. + * @param ui The Ui object to interact with the user. + * @param storage The Storage object to read or save tasks to disk. + * @throws JarvisException If there is any error during the command execution. + */ public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException; + /** + * Checks if this command should cause Jarvis to exit. + * + * @return true if Jarvis should exit, false otherwise. + */ public boolean isExit() { return isExit; } diff --git a/src/main/java/jarvis/command/DeleteCommand.java b/src/main/java/jarvis/command/DeleteCommand.java index 5c95b2664a..57366a58a9 100644 --- a/src/main/java/jarvis/command/DeleteCommand.java +++ b/src/main/java/jarvis/command/DeleteCommand.java @@ -7,13 +7,31 @@ import jarvis.exception.JarvisException; import jarvis.exception.JarvisInvalidIndexException; +/** + * Represents a command to delete a task from the task list. + * Contains the index of the task to be deleted. + */ public class DeleteCommand extends Command { private int taskIndexToDelete; + /** + * Constructs a DeleteCommand object. + * + * @param taskIndexToDelete The index of the task to be deleted. + */ public DeleteCommand(int taskIndexToDelete) { this.taskIndexToDelete = taskIndexToDelete; } + /** + * Executes the DeleteCommand. + * Deletes the task from the task list, displays the deleted task, and saves the updated task list to storage. + * + * @param tasks The list of tasks. + * @param ui The Ui object, for displaying the deleted task to the user. + * @param storage The Storage object, for saving the updated task list. + * @throws JarvisInvalidIndexException If the task index is invalid. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (taskIndexToDelete <= 0 || taskIndexToDelete > tasks.size()) { diff --git a/src/main/java/jarvis/command/ExitCommand.java b/src/main/java/jarvis/command/ExitCommand.java index 9e69130e86..e3b2ed5f14 100644 --- a/src/main/java/jarvis/command/ExitCommand.java +++ b/src/main/java/jarvis/command/ExitCommand.java @@ -4,7 +4,19 @@ import jarvis.tasklist.TaskList; import jarvis.ui.Ui; +/** + * Represents a command to exit the application. + */ public class ExitCommand extends Command { + + /** + * Executes the ExitCommand. + * Displays the farewell message to the user. + * + * @param tasks The list of tasks. + * @param ui The Ui object, for displaying the farewell message to the user. + * @param storage The Storage object, not used in this command. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) { ui.farewell(); diff --git a/src/main/java/jarvis/command/ListCommand.java b/src/main/java/jarvis/command/ListCommand.java index 8eaad91b4e..a6e9a5431b 100644 --- a/src/main/java/jarvis/command/ListCommand.java +++ b/src/main/java/jarvis/command/ListCommand.java @@ -5,8 +5,20 @@ import jarvis.ui.Ui; import jarvis.exception.JarvisException; +/** + * Represents a command to list all tasks in the task list. + */ public class ListCommand extends Command { + /** + * Executes the ListCommand. + * Displays the list of tasks to the user. + * + * @param tasks The list of tasks. + * @param ui The Ui object, for displaying the list of tasks to the user. + * @param storage The Storage object, not used in this command. + * @throws JarvisException If there is any error during the command execution. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (tasks.size() == 0) { diff --git a/src/main/java/jarvis/command/MarkCommand.java b/src/main/java/jarvis/command/MarkCommand.java index 5d55d44a22..fb1316d204 100644 --- a/src/main/java/jarvis/command/MarkCommand.java +++ b/src/main/java/jarvis/command/MarkCommand.java @@ -7,13 +7,31 @@ import jarvis.exception.JarvisException; import jarvis.exception.JarvisInvalidIndexException; +/** + * Represents a command to mark a task in the task list as done. + * Contains the index of the task to be marked. + */ public class MarkCommand extends Command { private int taskIndexToMark; + /** + * Constructs a MarkCommand object. + * + * @param taskIndexToMark The index of the task to be marked. + */ public MarkCommand(int taskIndexToMark) { this.taskIndexToMark = taskIndexToMark; } + /** + * Executes the MarkCommand. + * Marks the task as done, displays the marked task, and saves the updated task list to storage. + * + * @param tasks The list of tasks. + * @param ui The Ui object, for displaying the marked task to the user. + * @param storage The Storage object, for saving the updated task list. + * @throws JarvisInvalidIndexException If the task index is invalid. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (taskIndexToMark <= 0 || taskIndexToMark > tasks.size()) { diff --git a/src/main/java/jarvis/command/UnmarkCommand.java b/src/main/java/jarvis/command/UnmarkCommand.java index 9353f8a4e0..f65ebbf153 100644 --- a/src/main/java/jarvis/command/UnmarkCommand.java +++ b/src/main/java/jarvis/command/UnmarkCommand.java @@ -7,13 +7,31 @@ import jarvis.exception.JarvisException; import jarvis.exception.JarvisInvalidIndexException; +/** + * Represents a command to unmark a task in the task list as done. + * Contains the index of the task to be unmarked. + */ public class UnmarkCommand extends Command { private int taskIndexToUnmark; + /** + * Constructs a UnmarkCommand object. + * + * @param taskIndexToUnmark The index of the task to be unmarked. + */ public UnmarkCommand(int taskIndexToUnmark) { this.taskIndexToUnmark = taskIndexToUnmark; } + /** + * Executes the UnmarkCommand. + * Unmarks the task as done, displays the unmarked task, and saves the updated task list to storage. + * + * @param tasks The list of tasks. + * @param ui The Ui object, for displaying the unmarked task to the user. + * @param storage The Storage object, for saving the updated task list. + * @throws JarvisInvalidIndexException If the task index is invalid. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (taskIndexToUnmark <= 0 || taskIndexToUnmark > tasks.size()) { diff --git a/src/main/java/jarvis/exception/JarvisException.java b/src/main/java/jarvis/exception/JarvisException.java index 7c3c27c805..8da31901af 100644 --- a/src/main/java/jarvis/exception/JarvisException.java +++ b/src/main/java/jarvis/exception/JarvisException.java @@ -1,6 +1,15 @@ package jarvis.exception; +/** + * Represents an exception that is specific to Jarvis. + */ public class JarvisException extends Exception { + + /** + * Creates a new JarvisException with the specified message. + * + * @param message The message to be displayed. + */ public JarvisException(String message) { super(message); } diff --git a/src/main/java/jarvis/exception/JarvisInvalidIndexException.java b/src/main/java/jarvis/exception/JarvisInvalidIndexException.java index fac4621f30..68a5afe2fa 100644 --- a/src/main/java/jarvis/exception/JarvisInvalidIndexException.java +++ b/src/main/java/jarvis/exception/JarvisInvalidIndexException.java @@ -1,6 +1,15 @@ package jarvis.exception; +/** + * Represents an exception that occurs when the user provides an invalid index. + */ public class JarvisInvalidIndexException extends JarvisException { + + /** + * Creates a new JarvisInvalidIndexException with the specified task index. + * + * @param taskIndex The task index that is invalid. + */ public JarvisInvalidIndexException(int taskIndex) { super("OOPS!!! No such task with index " + taskIndex); } diff --git a/src/main/java/jarvis/exception/JarvisMissingValueException.java b/src/main/java/jarvis/exception/JarvisMissingValueException.java index 5d26c1b8f2..6570d74d3d 100644 --- a/src/main/java/jarvis/exception/JarvisMissingValueException.java +++ b/src/main/java/jarvis/exception/JarvisMissingValueException.java @@ -1,6 +1,16 @@ package jarvis.exception; +/** + * Represents an exception that occurs when the user does not provide a value for a command. + */ public class JarvisMissingValueException extends JarvisException { + + /** + * Creates a new JarvisMissingValueException with the specified value and command. + * + * @param value The value that is missing. + * @param command The command that requires the value. + */ public JarvisMissingValueException(String value, String command) { super(String.format("OOPS!!! The %s of %s cannot be empty.", value, command)); } diff --git a/src/main/java/jarvis/exception/JarvisUnrecognisedCommandException.java b/src/main/java/jarvis/exception/JarvisUnrecognisedCommandException.java index e01d188873..d0c5b88e09 100644 --- a/src/main/java/jarvis/exception/JarvisUnrecognisedCommandException.java +++ b/src/main/java/jarvis/exception/JarvisUnrecognisedCommandException.java @@ -1,6 +1,13 @@ package jarvis.exception; +/** + * Represents an exception that occurs when the user provides an unrecognised command. + */ public class JarvisUnrecognisedCommandException extends JarvisException { + + /** + * Creates a new JarvisUnrecognisedCommandException. + */ public JarvisUnrecognisedCommandException() { super("OOPS!!! I'm sorry, but I don't know what that means :-("); } diff --git a/src/main/java/jarvis/exception/JarvisWrongDateFormatException.java b/src/main/java/jarvis/exception/JarvisWrongDateFormatException.java index 6e32c6c367..4ac4a39667 100644 --- a/src/main/java/jarvis/exception/JarvisWrongDateFormatException.java +++ b/src/main/java/jarvis/exception/JarvisWrongDateFormatException.java @@ -1,6 +1,13 @@ package jarvis.exception; +/** + * Represents an exception that occurs when the user provides an invalid date time format. + */ public class JarvisWrongDateFormatException extends JarvisException { + + /** + * Creates a new JarvisWrongDateFormatException. + */ public JarvisWrongDateFormatException() { super("Please use the correct date time format: d/M/yyyy HHmm."); } diff --git a/src/main/java/jarvis/parser/Parser.java b/src/main/java/jarvis/parser/Parser.java index 395a30538b..329eb3b9ba 100644 --- a/src/main/java/jarvis/parser/Parser.java +++ b/src/main/java/jarvis/parser/Parser.java @@ -13,11 +13,26 @@ import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; +/** + * The Parser class is responsible for interpreting user inputs + * and converting them into executable Command objects for the Jarvis application. + * + *

It recognizes specific keywords in the user input (such as "todo", "deadline", + * "event", etc.) and creates the corresponding Command objects with the necessary + * information extracted from the input.

+ */ public class Parser { private static final DateTimeFormatter inputDateTimeFormatter = DateTimeFormatter.ofPattern("d/M/yyyy HHmm"); + /** + * Parses user input into a recognizable Command object. + * + * @param fullCommand The entire user input string. + * @return The Command object corresponding to the user input. + * @throws JarvisException If the user input is not recognized or has an incorrect format. + */ public Command parse(String fullCommand) throws JarvisException { String[] parts = fullCommand.split(" ", 2); String commandType = parts[0]; @@ -55,7 +70,6 @@ private Command parseTodo(String[] parts) throws JarvisException { return new AddCommand(new Todo(parts[1])); } - private Command parseDeadline(String[] parts) throws JarvisException { ensureValidParts(parts, "description", "deadline"); String[] deadlineParts = parts[1].split(" /by ", 2); diff --git a/src/main/java/jarvis/storage/Storage.java b/src/main/java/jarvis/storage/Storage.java index e06bc0636d..624d2db5f6 100644 --- a/src/main/java/jarvis/storage/Storage.java +++ b/src/main/java/jarvis/storage/Storage.java @@ -15,6 +15,9 @@ import java.util.ArrayList; import java.util.List; +/** + * The Storage class is responsible for saving and loading the task list to and from the hard disk. + */ public class Storage { private static LocalDateTime parseSavedDateTime(String dateTimeString){ @@ -22,10 +25,20 @@ private static LocalDateTime parseSavedDateTime(String dateTimeString){ } private String filePath; + /** + * Constructs a Storage object. + * + * @param filePath The path to the save file. + */ public Storage(String filePath) { this.filePath = filePath; } + /** + * Saves the task list to the save file. + * + * @param tasks The list of tasks to be saved. + */ public void saveTasks(TaskList tasks) { try { FileWriter writer = new FileWriter(this.filePath); @@ -41,6 +54,11 @@ public void saveTasks(TaskList tasks) { } } + /** + * Loads the task list from the save file. + * + * @return The list of tasks loaded from the save file. + */ public ArrayList loadTasks() { File file = new File(this.filePath); @@ -59,14 +77,16 @@ public ArrayList loadTasks() { } List lines; - try { lines = Files.readAllLines(file.toPath()); } catch (IOException e) { System.out.println("An error occurred while loading tasks."); return null; } + return getTasks(lines); // Return the loaded list of tasks. + } + private static ArrayList getTasks(List lines) { ArrayList tasks = new ArrayList<>(); for (String line : lines) { @@ -85,8 +105,6 @@ public ArrayList loadTasks() { break; } } - return tasks; // Return the loaded list of tasks. + return tasks; } - - // ... Other storage-related methods ... } \ No newline at end of file diff --git a/src/main/java/jarvis/task/Deadline.java b/src/main/java/jarvis/task/Deadline.java index 93a656346e..abc1b48156 100644 --- a/src/main/java/jarvis/task/Deadline.java +++ b/src/main/java/jarvis/task/Deadline.java @@ -3,29 +3,62 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +/** + * Represents a deadline task. + * + * A Deadline is a task with an additional LocalDateTime attribute to indicate its deadline. + */ public class Deadline extends Task { protected LocalDateTime by; + /** + * Constructs a Deadline object with the specified description and deadline date-time. + * + * @param description The description of the deadline. + * @param by The deadline date-time of the task. + */ public Deadline(String description, LocalDateTime by) { super(description, false); this.by = by; } + /** + * Constructs a Deadline object with the specified description, completion status, and deadline date-time. + * + * @param description The description of the deadline. + * @param isDone Indicates if the task has been completed. + * @param by The deadline date-time of the task. + */ public Deadline(String description, Boolean isDone, LocalDateTime by) { super(description, isDone); this.by = by; } + /** + * Returns the deadline date-time as a formatted string. + * + * @return A string representing the formatted deadline date-time. + */ public String getByString() { return this.by.format(DateTimeFormatter.ofPattern("MMM d yyyy HHmm")); } + /** + * Converts the Deadline object to a string format suitable for saving to a file. + * + * @return A string representation of the Deadline object for saving purposes. + */ @Override public String toSaveString() { return "D | " + super.toSaveString() + " | " + getByString(); } + /** + * Returns a string representation of the Deadline object. + * + * @return A string representation of the Deadline object. + */ @Override public String toString() { return "[D]" + super.toString() + " (by: " + getByString() + ")"; diff --git a/src/main/java/jarvis/task/Event.java b/src/main/java/jarvis/task/Event.java index 8326c87b0e..40d40741d5 100644 --- a/src/main/java/jarvis/task/Event.java +++ b/src/main/java/jarvis/task/Event.java @@ -3,36 +3,76 @@ import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +/** + * Represents an event task. + * + * An Event is a task with additional LocalDateTime attributes to indicate its start and end times. + */ public class Event extends Task { protected LocalDateTime from; protected LocalDateTime to; + /** + * Constructs an Event object with the specified description, start time, and end time. + * + * @param description The description of the event. + * @param from The start time of the event. + * @param to The end time of the event. + */ public Event(String description, LocalDateTime from, LocalDateTime to) { super(description, false); this.from = from; this.to = to; } + /** + * Constructs an Event object with the specified description, completion status, start time, and end time. + * + * @param description The description of the event. + * @param isDone Indicates if the task has been completed. + * @param from The start time of the event. + * @param to The end time of the event. + */ public Event(String description, Boolean isDone, LocalDateTime from, LocalDateTime to) { super(description, isDone); this.from = from; this.to = to; } + /** + * Returns the start time of the event as a formatted string. + * + * @return A string representing the formatted start time of the event. + */ public String getFromString() { return this.from.format(DateTimeFormatter.ofPattern("MMM d yyyy HHmm")); } + /** + * Returns the end time of the event as a formatted string. + * + * @return A string representing the formatted end time of the event. + */ public String getToString() { return this.to.format(DateTimeFormatter.ofPattern("MMM d yyyy HHmm")); } + /** + * Converts the Event object to a string format suitable for saving to a file. + * + * @return A string representation of the Event object for saving purposes. + */ @Override public String toSaveString() { return "E | " + super.toSaveString() + " | " + getFromString() + " | " + getToString(); } + /** + * Returns a string representation of the Event object. + * + * @return A string representation of the Event object. + */ @Override public String toString() { return "[E]" + super.toString() + " (from: " + getFromString() + " to: " + getToString() + ")"; diff --git a/src/main/java/jarvis/task/Task.java b/src/main/java/jarvis/task/Task.java index 7483bd0da3..28042ac3cf 100644 --- a/src/main/java/jarvis/task/Task.java +++ b/src/main/java/jarvis/task/Task.java @@ -1,36 +1,74 @@ package jarvis.task; +/** + * Represents a generic task. + * + * This class serves as a parent for more specific types of tasks such as {@code Todo}, {@code Deadline}, and {@code Event}. + */ public class Task { protected String description; protected boolean isDone; + /** + * Constructs a Task object with the specified description and completion status. + * + * @param description The description or name of the task. + * @param isDone Indicates if the task has been completed. + */ public Task(String description, Boolean isDone) { this.description = description; this.isDone = isDone; } + /** + * Returns the description of the task. + * + * @return A string representing the description of the task. + */ public String getDescription() { return this.description; } + /** + * Returns the status icon of the task based on its completion status. + * A completed task is represented by "X", and an incomplete task is represented by a space. + * + * @return A string representing the status icon ("X" or " "). + */ public String getStatusIcon() { return (isDone ? "X" : " "); // mark done task with X } + /** + * Marks the task as done. + */ public void mark() { this.isDone = true; } + /** + * Marks the task as not done. + */ public void unmark() { this.isDone = false; } + /** + * Converts the Task object to a string format suitable for saving to a file. + * + * @return A string representation of the Task object for saving purposes. + */ public String toSaveString() { return (isDone ? "1" : "0") + " | " + this.description; } - + /** + * Returns a string representation of the Task object. + * The representation includes the status icon and the description of the task. + * + * @return A string representation of the Task object. + */ @Override public String toString() { return "[" + this.getStatusIcon() + "] " + this.description; diff --git a/src/main/java/jarvis/task/Todo.java b/src/main/java/jarvis/task/Todo.java index 006f3b68e4..d6e096b103 100644 --- a/src/main/java/jarvis/task/Todo.java +++ b/src/main/java/jarvis/task/Todo.java @@ -1,19 +1,49 @@ package jarvis.task; +/** + * Represents a Todo task. + * + * The Todo class is a type of task that only contains a description without any specific time or date associated with it. + */ public class Todo extends Task { + + /** + * Constructs a Todo object with the specified description. + * The completion status of the task is set to false (i.e., not done) by default. + * + * @param description The description or name of the todo task. + */ public Todo(String description) { super(description, false); } + /** + * Constructs a Todo object with the specified description and completion status. + * + * @param description The description or name of the todo task. + * @param isDone Indicates if the task has been completed. + */ public Todo(String description, Boolean isDone) { super(description, isDone); } + /** + * Converts the Todo object to a string format suitable for saving to a file. + * The format includes an identifier for the task type ("T") followed by the save string of the parent Task class. + * + * @return A string representation of the Todo object for saving purposes. + */ @Override public String toSaveString() { return "T | " + super.toSaveString(); } + /** + * Returns a string representation of the Todo object. + * The representation includes an identifier for the task type ("T") followed by the string representation of the parent Task class. + * + * @return A string representation of the Todo object. + */ @Override public String toString() { return "[T]" + super.toString(); diff --git a/src/main/java/jarvis/tasklist/TaskList.java b/src/main/java/jarvis/tasklist/TaskList.java index 10deacc4e1..2c366c9f6c 100644 --- a/src/main/java/jarvis/tasklist/TaskList.java +++ b/src/main/java/jarvis/tasklist/TaskList.java @@ -4,39 +4,73 @@ import java.util.ArrayList; +/** + * Represents a list of tasks, providing utility methods for managing tasks. + * This class provides a convenient way to handle tasks, such as adding, removing, and retrieving tasks. + */ public class TaskList { private ArrayList tasks; + /** + * Initializes a new empty task list. + */ public TaskList() { this.tasks = new ArrayList<>(); } + /** + * Initializes a task list with a given list of tasks. + * + * @param loadedTasks An ArrayList of tasks to initialize the task list with. + */ public TaskList(ArrayList loadedTasks) { this.tasks = loadedTasks; } - // Adds a task to the list. + /** + * Adds a task to the list. + * + * @param task The task to be added to the list. + */ public void add(Task task) { tasks.add(task); } - // Removes a task from the list based on the index. + /** + * Retrieves a task from the list based on its index. + * + * @param index The index of the task to be retrieved. + * @return The task at the specified index. + */ public Task remove(int index){ return tasks.remove(index); } - // Gets a task based on its index. + /** + * Retrieves a task from the list based on its index. + * + * @param index The index of the task to be retrieved. + * @return The task at the specified index. + */ public Task get(int index) { return tasks.get(index); } - // Returns the number of tasks in the list. + /** + * Returns the number of tasks in the list. + * + * @return The size of the task list. + */ public int size() { return tasks.size(); } - // Returns the entire list of tasks. + /** + * Provides access to the entire list of tasks. + * + * @return An ArrayList containing all tasks in the TaskList. + */ public ArrayList getTasks() { return tasks; } diff --git a/src/main/java/jarvis/ui/Ui.java b/src/main/java/jarvis/ui/Ui.java index 12380e7747..44571ad636 100644 --- a/src/main/java/jarvis/ui/Ui.java +++ b/src/main/java/jarvis/ui/Ui.java @@ -5,13 +5,25 @@ import java.util.Scanner; +/** + * Represents the user interface for interacting with the user. + * The class is responsible for displaying messages to the user and reading user input. + */ public class Ui { private Scanner scanner; + /** + * Initializes the Ui class and prepares it to read user input. + */ public Ui() { this.scanner = new Scanner(System.in); } + /** + * Displays the provided texts to the user surrounded by horizontal lines. + * + * @param text The messages to be displayed to the user. + */ public void display(String... text) { System.out.println("____________________________________________________________"); for (String i : text) @@ -19,41 +31,81 @@ public void display(String... text) { System.out.println("____________________________________________________________"); } + /** + * Displays a greeting message to the user. + */ public void greet() { display("Hello Master! I'm Jarvis, your AI personal assistant.", "What can I do for you?"); } + /** + * Displays a farewell message to the user. + */ public void farewell() { display("Bye. Hope to see you again soon!"); } + /** + * Displays a message confirming that a task has been added. + * + * @param task The task that has been added. + * @param tasks The current task list. + */ public void displayAddedTask(Task task, TaskList tasks) { display("Got it. I've added this task:", task.toString(), "Now you have " + tasks.size() + " tasks in the list."); } + /** + * Displays a message confirming that a task has been deleted. + * + * @param task The task that has been deleted. + * @param tasks The current task list. + */ public void displayDeletedTask(Task task, TaskList tasks) { display("Got it. I've removed this task:", task.toString(), "Now you have " + tasks.size() + " tasks in the list."); } + /** + * Displays a message confirming that a task has been marked as done. + * + * @param task The task that has been marked. + */ public void displayMarkedTask(Task task) { display("Nice! I've marked this task as done:", task.toString()); } + /** + * Displays a message confirming that a task has been unmarked. + * + * @param task The task that has been unmarked. + */ public void displayUnmarkedTask(Task task) { display("OK, I've marked this task as not done yet:", task.toString()); } + /** + * Displays a message informing the user that their task list is currently empty. + */ public void displayEmptyList() { display("You currently have no tasks in your list."); } - + /** + * Reads a command from the user. + * + * @return The user's input as a String. + */ public String readCommand() { return scanner.nextLine().trim(); } + /** + * Displays all the tasks in the user's task list. + * + * @param tasks The user's current task list. + */ public void displayList(TaskList tasks) { System.out.println("____________________________________________________________"); System.out.println("Here are the tasks in your list:"); From 91eb5f9e327cd07bc7d435ce4904ad2d26e06eff Mon Sep 17 00:00:00 2001 From: Chen1x Date: Fri, 22 Sep 2023 00:08:35 +0800 Subject: [PATCH 19/29] Add A-CodingStandard --- src/main/java/jarvis/parser/Parser.java | 8 ++++---- src/main/java/jarvis/storage/Storage.java | 17 ++++++++++------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/java/jarvis/parser/Parser.java b/src/main/java/jarvis/parser/Parser.java index 395a30538b..0a037c2467 100644 --- a/src/main/java/jarvis/parser/Parser.java +++ b/src/main/java/jarvis/parser/Parser.java @@ -16,7 +16,7 @@ public class Parser { - private static final DateTimeFormatter inputDateTimeFormatter = DateTimeFormatter.ofPattern("d/M/yyyy HHmm"); + private static final DateTimeFormatter INPUT_DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("d/M/yyyy HHmm"); public Command parse(String fullCommand) throws JarvisException { String[] parts = fullCommand.split(" ", 2); @@ -61,7 +61,7 @@ private Command parseDeadline(String[] parts) throws JarvisException { String[] deadlineParts = parts[1].split(" /by ", 2); ensureValidParts(deadlineParts, "deadline time", "deadline"); try { - LocalDateTime by = LocalDateTime.parse(deadlineParts[1], inputDateTimeFormatter); + LocalDateTime by = LocalDateTime.parse(deadlineParts[1], INPUT_DATE_TIME_FORMATTER); return new AddCommand(new Deadline(deadlineParts[0], by)); } catch (DateTimeParseException e) { throw new JarvisWrongDateFormatException(); @@ -75,8 +75,8 @@ private Command parseEvent(String[] parts) throws JarvisException { String[] timeParts = eventParts[1].split(" /to ", 2); ensureValidParts(timeParts, "end time", "event"); try { - LocalDateTime from = LocalDateTime.parse(timeParts[0], inputDateTimeFormatter); - LocalDateTime to = LocalDateTime.parse(timeParts[1], inputDateTimeFormatter); + LocalDateTime from = LocalDateTime.parse(timeParts[0], INPUT_DATE_TIME_FORMATTER); + LocalDateTime to = LocalDateTime.parse(timeParts[1], INPUT_DATE_TIME_FORMATTER); return new AddCommand(new Event(eventParts[0], from, to)); } catch (DateTimeParseException e) { throw new JarvisWrongDateFormatException(); diff --git a/src/main/java/jarvis/storage/Storage.java b/src/main/java/jarvis/storage/Storage.java index e06bc0636d..6ea6337516 100644 --- a/src/main/java/jarvis/storage/Storage.java +++ b/src/main/java/jarvis/storage/Storage.java @@ -16,10 +16,8 @@ import java.util.List; public class Storage { + private static final DateTimeFormatter SAVE_DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("MMM d yyyy HHmm"); - private static LocalDateTime parseSavedDateTime(String dateTimeString){ - return LocalDateTime.parse(dateTimeString, DateTimeFormatter.ofPattern("MMM d yyyy HHmm")); - } private String filePath; public Storage(String filePath) { @@ -58,15 +56,20 @@ public ArrayList loadTasks() { System.out.println("Save file created successfully at " + this.filePath); } - List lines; - try { - lines = Files.readAllLines(file.toPath()); + List lines = Files.readAllLines(file.toPath()); + return getTasks(lines); } catch (IOException e) { System.out.println("An error occurred while loading tasks."); return null; } + } + + private LocalDateTime parseSavedDateTime(String dateTimeString){ + return LocalDateTime.parse(dateTimeString, SAVE_DATE_TIME_FORMATTER); + } + private ArrayList getTasks(List lines) { ArrayList tasks = new ArrayList<>(); for (String line : lines) { @@ -85,7 +88,7 @@ public ArrayList loadTasks() { break; } } - return tasks; // Return the loaded list of tasks. + return tasks; } // ... Other storage-related methods ... From 866c83031986ad82c484e3c17885ff60383da88c Mon Sep 17 00:00:00 2001 From: Chen1x Date: Fri, 22 Sep 2023 00:29:37 +0800 Subject: [PATCH 20/29] Add Level-9 --- src/main/java/jarvis/command/FindCommand.java | 29 +++++++++++++++++++ src/main/java/jarvis/parser/Parser.java | 7 +++++ src/main/java/jarvis/tasklist/TaskList.java | 16 ++++++++++ src/main/java/jarvis/ui/Ui.java | 19 ++++++++++++ text-ui-test/EXPECTED.TXT | 5 ++++ text-ui-test/input.txt | 1 + 6 files changed, 77 insertions(+) create mode 100644 src/main/java/jarvis/command/FindCommand.java diff --git a/src/main/java/jarvis/command/FindCommand.java b/src/main/java/jarvis/command/FindCommand.java new file mode 100644 index 0000000000..6105a9b777 --- /dev/null +++ b/src/main/java/jarvis/command/FindCommand.java @@ -0,0 +1,29 @@ +package jarvis.command; + + +import jarvis.storage.Storage; +import jarvis.task.Task; +import jarvis.tasklist.TaskList; +import jarvis.ui.Ui; + +import java.util.ArrayList; + +public class FindCommand extends Command { + + private String keyword; + + /** + * Constructor for FindCommand. + * + * @param keyword The keyword to search for. + */ + public FindCommand(String keyword) { + this.keyword = keyword; + } + + @Override + public void execute(TaskList tasks, Ui ui, Storage storage) { + ArrayList matchingTasks = tasks.find(keyword); + ui.displayMatchingTasks(matchingTasks); + } +} \ No newline at end of file diff --git a/src/main/java/jarvis/parser/Parser.java b/src/main/java/jarvis/parser/Parser.java index 395a30538b..9cf13be394 100644 --- a/src/main/java/jarvis/parser/Parser.java +++ b/src/main/java/jarvis/parser/Parser.java @@ -39,6 +39,8 @@ public Command parse(String fullCommand) throws JarvisException { return parseMark(parts); case "unmark": return parseUnmark(parts); + case "find": + return parseFind(parts); default: throw new JarvisUnrecognisedCommandException(); } @@ -112,4 +114,9 @@ private Command parseUnmark(String[] parts) throws JarvisException { throw new JarvisException("Please provide a valid task index."); } } + + private Command parseFind(String[] parts) throws JarvisException { + ensureValidParts(parts, "keyword", "find"); + return new FindCommand(parts[1]); + } } \ No newline at end of file diff --git a/src/main/java/jarvis/tasklist/TaskList.java b/src/main/java/jarvis/tasklist/TaskList.java index 10deacc4e1..a3295eae5d 100644 --- a/src/main/java/jarvis/tasklist/TaskList.java +++ b/src/main/java/jarvis/tasklist/TaskList.java @@ -40,4 +40,20 @@ public int size() { public ArrayList getTasks() { return tasks; } + + /** + * Returns a list of tasks that contain the specified keyword in their description. + * + * @param keyword The keyword to search for. + * @return A list of tasks that match the keyword. + */ + public ArrayList find(String keyword) { + ArrayList matchingTasks = new ArrayList<>(); + for (Task task : tasks) { + if (task.getDescription().contains(keyword)) { + matchingTasks.add(task); + } + } + return matchingTasks; + } } \ No newline at end of file diff --git a/src/main/java/jarvis/ui/Ui.java b/src/main/java/jarvis/ui/Ui.java index 12380e7747..172a0d5449 100644 --- a/src/main/java/jarvis/ui/Ui.java +++ b/src/main/java/jarvis/ui/Ui.java @@ -3,6 +3,7 @@ import jarvis.task.Task; import jarvis.tasklist.TaskList; +import java.util.ArrayList; import java.util.Scanner; public class Ui { @@ -62,4 +63,22 @@ public void displayList(TaskList tasks) { } System.out.println("____________________________________________________________"); } + + /** + * Displays tasks that match a search query. + * + * @param tasks The list of tasks that match the search query. + */ + public void displayMatchingTasks(ArrayList tasks) { + System.out.println("____________________________________________________________"); + if (tasks.isEmpty()) { + System.out.println("No tasks matched your search query."); + } else { + System.out.println("Here are the matching tasks in your list:"); + for (int i = 0; i < tasks.size(); i++) { + System.out.println((i + 1) + "." + tasks.get(i)); + } + } + System.out.println("____________________________________________________________"); + } } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 8b58a8547a..e039355228 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -65,6 +65,11 @@ Here are the tasks in your list: 3.[E][X] project meeting (from: Sep 2 2022 1200 to: Sep 2 2022 1600) ____________________________________________________________ ____________________________________________________________ +Here are the matching tasks in your list: +1.[T][X] borrow book +2.[D][ ] return book (by: Sep 1 2023 1800) +____________________________________________________________ +____________________________________________________________ OOPS!!! The task index of unmark cannot be empty. ____________________________________________________________ ____________________________________________________________ diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 779095863a..c33dc28d44 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -14,6 +14,7 @@ mark mark 1 mark 3 list +find book unmark unmark 1 list From 8120cb9113e828b7160a3c8a9efa42f36a575e5b Mon Sep 17 00:00:00 2001 From: Chen1x Date: Fri, 22 Sep 2023 00:42:23 +0800 Subject: [PATCH 21/29] Resolve conflicts caused by merging --- src/main/java/jarvis/command/FindCommand.java | 8 ++++++++ src/main/java/jarvis/storage/Storage.java | 11 ----------- src/main/java/jarvis/tasklist/TaskList.java | 6 +++--- 3 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/main/java/jarvis/command/FindCommand.java b/src/main/java/jarvis/command/FindCommand.java index 6105a9b777..fa9c5f35a3 100644 --- a/src/main/java/jarvis/command/FindCommand.java +++ b/src/main/java/jarvis/command/FindCommand.java @@ -21,6 +21,14 @@ public FindCommand(String keyword) { this.keyword = keyword; } + /** + * Executes the FindCommand. + * Finds all tasks that contain the keyword, and displays them to the user. + * + * @param tasks The list of tasks. + * @param ui The Ui object, for displaying the matching tasks to the user. + * @param storage The Storage object, not used here. + */ @Override public void execute(TaskList tasks, Ui ui, Storage storage) { ArrayList matchingTasks = tasks.find(keyword); diff --git a/src/main/java/jarvis/storage/Storage.java b/src/main/java/jarvis/storage/Storage.java index b540940163..e2ebd23268 100644 --- a/src/main/java/jarvis/storage/Storage.java +++ b/src/main/java/jarvis/storage/Storage.java @@ -74,10 +74,6 @@ public ArrayList loadTasks() { System.out.println("Save file created successfully at " + this.filePath); } -<<<<<<< HEAD -======= - List lines; ->>>>>>> branch-A-JavaDoc try { List lines = Files.readAllLines(file.toPath()); return getTasks(lines); @@ -85,7 +81,6 @@ public ArrayList loadTasks() { System.out.println("An error occurred while loading tasks."); return null; } -<<<<<<< HEAD } private LocalDateTime parseSavedDateTime(String dateTimeString){ @@ -93,12 +88,6 @@ private LocalDateTime parseSavedDateTime(String dateTimeString){ } private ArrayList getTasks(List lines) { -======= - return getTasks(lines); // Return the loaded list of tasks. - } - - private static ArrayList getTasks(List lines) { ->>>>>>> branch-A-JavaDoc ArrayList tasks = new ArrayList<>(); for (String line : lines) { diff --git a/src/main/java/jarvis/tasklist/TaskList.java b/src/main/java/jarvis/tasklist/TaskList.java index 7d71f31d56..d90ba181e6 100644 --- a/src/main/java/jarvis/tasklist/TaskList.java +++ b/src/main/java/jarvis/tasklist/TaskList.java @@ -38,10 +38,10 @@ public void add(Task task) { } /** - * Retrieves a task from the list based on its index. + * Removes a task from the list based on its index. * - * @param index The index of the task to be retrieved. - * @return The task at the specified index. + * @param index The index of the task to be removed. + * @return The task that was removed. */ public Task remove(int index){ return tasks.remove(index); From 4c5628141fe89f05198c4eb510175fadd3dc6f32 Mon Sep 17 00:00:00 2001 From: Chen1x Date: Fri, 22 Sep 2023 01:15:03 +0800 Subject: [PATCH 22/29] Add A-CheckStyle --- build.gradle | 7 +- config/checkstyle/checkstyle.xml | 434 ++++++++++++++++++ config/checkstyle/suppressions.xml | 10 + src/main/java/jarvis/Jarvis.java | 2 +- src/main/java/jarvis/command/Command.java | 4 +- .../java/jarvis/command/DeleteCommand.java | 4 +- src/main/java/jarvis/command/FindCommand.java | 9 +- src/main/java/jarvis/command/ListCommand.java | 4 +- src/main/java/jarvis/command/MarkCommand.java | 6 +- .../java/jarvis/command/UnmarkCommand.java | 6 +- .../jarvis/exception/JarvisException.java | 2 +- src/main/java/jarvis/parser/Parser.java | 19 +- src/main/java/jarvis/storage/Storage.java | 22 +- src/main/java/jarvis/task/Task.java | 5 +- src/main/java/jarvis/task/Todo.java | 5 +- src/main/java/jarvis/tasklist/TaskList.java | 8 +- src/main/java/jarvis/ui/Ui.java | 8 +- src/test/java/jarvis/task/DeadlineTest.java | 6 +- src/test/java/jarvis/task/EventTest.java | 6 +- 19 files changed, 516 insertions(+), 51 deletions(-) create mode 100644 config/checkstyle/checkstyle.xml create mode 100644 config/checkstyle/suppressions.xml diff --git a/build.gradle b/build.gradle index 27924c9b35..345bc61766 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,11 @@ plugins { id 'java' id 'application' id 'com.github.johnrengelman.shadow' version '7.1.2' + id 'checkstyle' +} + +checkstyle { + toolVersion = '10.2' } repositories { @@ -39,4 +44,4 @@ shadowJar { run{ standardInput = System.in -} +} \ No newline at end of file diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000000..eb761a9b9a --- /dev/null +++ b/config/checkstyle/checkstyle.xml @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml new file mode 100644 index 0000000000..39efb6e4ac --- /dev/null +++ b/config/checkstyle/suppressions.xml @@ -0,0 +1,10 @@ + + + + + + + + diff --git a/src/main/java/jarvis/Jarvis.java b/src/main/java/jarvis/Jarvis.java index 1177656765..7f44a5461a 100644 --- a/src/main/java/jarvis/Jarvis.java +++ b/src/main/java/jarvis/Jarvis.java @@ -56,4 +56,4 @@ public void run() { public static void main(String[] args) { new Jarvis("./data/jarvis.txt").run(); } -} \ No newline at end of file +} diff --git a/src/main/java/jarvis/command/Command.java b/src/main/java/jarvis/command/Command.java index 41fff2dc46..da4c11a1bb 100644 --- a/src/main/java/jarvis/command/Command.java +++ b/src/main/java/jarvis/command/Command.java @@ -1,9 +1,9 @@ package jarvis.command; +import jarvis.exception.JarvisException; import jarvis.storage.Storage; import jarvis.tasklist.TaskList; import jarvis.ui.Ui; -import jarvis.exception.JarvisException; /** * Represents an abstract command that can be executed by Jarvis. @@ -31,4 +31,4 @@ public abstract class Command { public boolean isExit() { return isExit; } -} \ No newline at end of file +} diff --git a/src/main/java/jarvis/command/DeleteCommand.java b/src/main/java/jarvis/command/DeleteCommand.java index 57366a58a9..cac577648a 100644 --- a/src/main/java/jarvis/command/DeleteCommand.java +++ b/src/main/java/jarvis/command/DeleteCommand.java @@ -1,11 +1,11 @@ package jarvis.command; +import jarvis.exception.JarvisException; +import jarvis.exception.JarvisInvalidIndexException; import jarvis.storage.Storage; import jarvis.task.Task; import jarvis.tasklist.TaskList; import jarvis.ui.Ui; -import jarvis.exception.JarvisException; -import jarvis.exception.JarvisInvalidIndexException; /** * Represents a command to delete a task from the task list. diff --git a/src/main/java/jarvis/command/FindCommand.java b/src/main/java/jarvis/command/FindCommand.java index fa9c5f35a3..bd57f7123d 100644 --- a/src/main/java/jarvis/command/FindCommand.java +++ b/src/main/java/jarvis/command/FindCommand.java @@ -1,13 +1,16 @@ package jarvis.command; +import java.util.ArrayList; import jarvis.storage.Storage; import jarvis.task.Task; import jarvis.tasklist.TaskList; import jarvis.ui.Ui; -import java.util.ArrayList; - +/** + * Represents a command to find tasks that contain a keyword. + * Contains the keyword to search for. + */ public class FindCommand extends Command { private String keyword; @@ -34,4 +37,4 @@ public void execute(TaskList tasks, Ui ui, Storage storage) { ArrayList matchingTasks = tasks.find(keyword); ui.displayMatchingTasks(matchingTasks); } -} \ No newline at end of file +} diff --git a/src/main/java/jarvis/command/ListCommand.java b/src/main/java/jarvis/command/ListCommand.java index a6e9a5431b..a0196a1bc7 100644 --- a/src/main/java/jarvis/command/ListCommand.java +++ b/src/main/java/jarvis/command/ListCommand.java @@ -1,9 +1,9 @@ package jarvis.command; +import jarvis.exception.JarvisException; import jarvis.storage.Storage; import jarvis.tasklist.TaskList; import jarvis.ui.Ui; -import jarvis.exception.JarvisException; /** * Represents a command to list all tasks in the task list. @@ -27,4 +27,4 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisExcepti ui.displayList(tasks); } } -} \ No newline at end of file +} diff --git a/src/main/java/jarvis/command/MarkCommand.java b/src/main/java/jarvis/command/MarkCommand.java index fb1316d204..95e9c594d8 100644 --- a/src/main/java/jarvis/command/MarkCommand.java +++ b/src/main/java/jarvis/command/MarkCommand.java @@ -1,11 +1,11 @@ package jarvis.command; +import jarvis.exception.JarvisException; +import jarvis.exception.JarvisInvalidIndexException; import jarvis.storage.Storage; import jarvis.task.Task; import jarvis.tasklist.TaskList; import jarvis.ui.Ui; -import jarvis.exception.JarvisException; -import jarvis.exception.JarvisInvalidIndexException; /** * Represents a command to mark a task in the task list as done. @@ -45,4 +45,4 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisExcepti storage.saveTasks(tasks); } -} \ No newline at end of file +} diff --git a/src/main/java/jarvis/command/UnmarkCommand.java b/src/main/java/jarvis/command/UnmarkCommand.java index f65ebbf153..5635eb4929 100644 --- a/src/main/java/jarvis/command/UnmarkCommand.java +++ b/src/main/java/jarvis/command/UnmarkCommand.java @@ -1,11 +1,11 @@ package jarvis.command; +import jarvis.exception.JarvisException; +import jarvis.exception.JarvisInvalidIndexException; import jarvis.storage.Storage; import jarvis.task.Task; import jarvis.tasklist.TaskList; import jarvis.ui.Ui; -import jarvis.exception.JarvisException; -import jarvis.exception.JarvisInvalidIndexException; /** * Represents a command to unmark a task in the task list as done. @@ -45,4 +45,4 @@ public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisExcepti storage.saveTasks(tasks); } -} \ No newline at end of file +} diff --git a/src/main/java/jarvis/exception/JarvisException.java b/src/main/java/jarvis/exception/JarvisException.java index 8da31901af..b11a00cffb 100644 --- a/src/main/java/jarvis/exception/JarvisException.java +++ b/src/main/java/jarvis/exception/JarvisException.java @@ -13,4 +13,4 @@ public class JarvisException extends Exception { public JarvisException(String message) { super(message); } -} \ No newline at end of file +} diff --git a/src/main/java/jarvis/parser/Parser.java b/src/main/java/jarvis/parser/Parser.java index f0f28dd0a5..7129b7b6f5 100644 --- a/src/main/java/jarvis/parser/Parser.java +++ b/src/main/java/jarvis/parser/Parser.java @@ -1,6 +1,17 @@ package jarvis.parser; -import jarvis.command.*; +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; + +import jarvis.command.AddCommand; +import jarvis.command.Command; +import jarvis.command.DeleteCommand; +import jarvis.command.ExitCommand; +import jarvis.command.FindCommand; +import jarvis.command.ListCommand; +import jarvis.command.MarkCommand; +import jarvis.command.UnmarkCommand; import jarvis.exception.JarvisException; import jarvis.exception.JarvisMissingValueException; import jarvis.exception.JarvisUnrecognisedCommandException; @@ -9,10 +20,6 @@ import jarvis.task.Event; import jarvis.task.Todo; -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; -import java.time.format.DateTimeParseException; - /** * The Parser class is responsible for interpreting user inputs * and converting them into executable Command objects for the Jarvis application. @@ -133,4 +140,4 @@ private Command parseFind(String[] parts) throws JarvisException { ensureValidParts(parts, "keyword", "find"); return new FindCommand(parts[1]); } -} \ No newline at end of file +} diff --git a/src/main/java/jarvis/storage/Storage.java b/src/main/java/jarvis/storage/Storage.java index e2ebd23268..3942d3074d 100644 --- a/src/main/java/jarvis/storage/Storage.java +++ b/src/main/java/jarvis/storage/Storage.java @@ -1,11 +1,5 @@ package jarvis.storage; -import jarvis.tasklist.TaskList; -import jarvis.task.Deadline; -import jarvis.task.Event; -import jarvis.task.Task; -import jarvis.task.Todo; - import java.io.File; import java.io.FileWriter; import java.io.IOException; @@ -15,6 +9,12 @@ import java.util.ArrayList; import java.util.List; +import jarvis.task.Deadline; +import jarvis.task.Event; +import jarvis.task.Task; +import jarvis.task.Todo; +import jarvis.tasklist.TaskList; + /** * The Storage class is responsible for saving and loading the task list to and from the hard disk. */ @@ -63,7 +63,7 @@ public ArrayList loadTasks() { if (!file.exists()) { System.out.println("No save file detected. Attempting to create one..."); if (file.getParentFile() != null) { - file.getParentFile().mkdirs(); // This creates the directory structure if it doesn't exist + file.getParentFile().mkdirs(); // This creates the directory structure if it doesn't exist } try { file.createNewFile(); @@ -75,7 +75,7 @@ public ArrayList loadTasks() { } try { - List lines = Files.readAllLines(file.toPath()); + List lines = Files.readAllLines(file.toPath()); return getTasks(lines); } catch (IOException e) { System.out.println("An error occurred while loading tasks."); @@ -83,7 +83,7 @@ public ArrayList loadTasks() { } } - private LocalDateTime parseSavedDateTime(String dateTimeString){ + private LocalDateTime parseSavedDateTime(String dateTimeString) { return LocalDateTime.parse(dateTimeString, SAVE_DATE_TIME_FORMATTER); } @@ -104,8 +104,10 @@ private ArrayList getTasks(List lines) { case "E": tasks.add(new Event(parts[2], isMarked, parseSavedDateTime(parts[3]), parseSavedDateTime(parts[4]))); break; + default: + break; } } return tasks; } -} \ No newline at end of file +} diff --git a/src/main/java/jarvis/task/Task.java b/src/main/java/jarvis/task/Task.java index 28042ac3cf..3867630cc2 100644 --- a/src/main/java/jarvis/task/Task.java +++ b/src/main/java/jarvis/task/Task.java @@ -3,7 +3,8 @@ /** * Represents a generic task. * - * This class serves as a parent for more specific types of tasks such as {@code Todo}, {@code Deadline}, and {@code Event}. + * This class serves as a parent for more specific types of tasks such as + * {@code Todo}, {@code Deadline}, and {@code Event}. */ public class Task { @@ -73,4 +74,4 @@ public String toSaveString() { public String toString() { return "[" + this.getStatusIcon() + "] " + this.description; } -} \ No newline at end of file +} diff --git a/src/main/java/jarvis/task/Todo.java b/src/main/java/jarvis/task/Todo.java index d6e096b103..87400d8bc2 100644 --- a/src/main/java/jarvis/task/Todo.java +++ b/src/main/java/jarvis/task/Todo.java @@ -3,7 +3,7 @@ /** * Represents a Todo task. * - * The Todo class is a type of task that only contains a description without any specific time or date associated with it. + * It is a type of task that only contains a description without any specific time or date associated with it. */ public class Todo extends Task { @@ -40,7 +40,8 @@ public String toSaveString() { /** * Returns a string representation of the Todo object. - * The representation includes an identifier for the task type ("T") followed by the string representation of the parent Task class. + * The representation includes an identifier for the task type ("T") + * followed by the string representation of the parent Task class. * * @return A string representation of the Todo object. */ diff --git a/src/main/java/jarvis/tasklist/TaskList.java b/src/main/java/jarvis/tasklist/TaskList.java index d90ba181e6..f7a0c950c2 100644 --- a/src/main/java/jarvis/tasklist/TaskList.java +++ b/src/main/java/jarvis/tasklist/TaskList.java @@ -1,9 +1,9 @@ package jarvis.tasklist; -import jarvis.task.Task; - import java.util.ArrayList; +import jarvis.task.Task; + /** * Represents a list of tasks, providing utility methods for managing tasks. * This class provides a convenient way to handle tasks, such as adding, removing, and retrieving tasks. @@ -43,7 +43,7 @@ public void add(Task task) { * @param index The index of the task to be removed. * @return The task that was removed. */ - public Task remove(int index){ + public Task remove(int index) { return tasks.remove(index); } @@ -90,4 +90,4 @@ public ArrayList find(String keyword) { } return matchingTasks; } -} \ No newline at end of file +} diff --git a/src/main/java/jarvis/ui/Ui.java b/src/main/java/jarvis/ui/Ui.java index da925aa457..bfd740cd94 100644 --- a/src/main/java/jarvis/ui/Ui.java +++ b/src/main/java/jarvis/ui/Ui.java @@ -1,10 +1,11 @@ package jarvis.ui; +import java.util.ArrayList; +import java.util.Scanner; + import jarvis.task.Task; import jarvis.tasklist.TaskList; -import java.util.ArrayList; -import java.util.Scanner; /** * Represents the user interface for interacting with the user. @@ -27,8 +28,9 @@ public Ui() { */ public void display(String... text) { System.out.println("____________________________________________________________"); - for (String i : text) + for (String i : text) { System.out.println(i); + } System.out.println("____________________________________________________________"); } diff --git a/src/test/java/jarvis/task/DeadlineTest.java b/src/test/java/jarvis/task/DeadlineTest.java index e1ab634d24..e60c389977 100644 --- a/src/test/java/jarvis/task/DeadlineTest.java +++ b/src/test/java/jarvis/task/DeadlineTest.java @@ -1,10 +1,10 @@ package jarvis.task; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.time.LocalDateTime; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; public class DeadlineTest { @@ -31,4 +31,4 @@ public void testGetByString() { Deadline deadline = new Deadline("return book", LocalDateTime.of(2023, 9, 20, 12, 0)); assertEquals("Sep 20 2023 1200", deadline.getByString()); } -} \ No newline at end of file +} diff --git a/src/test/java/jarvis/task/EventTest.java b/src/test/java/jarvis/task/EventTest.java index c823de76ae..2fb2ab54c4 100644 --- a/src/test/java/jarvis/task/EventTest.java +++ b/src/test/java/jarvis/task/EventTest.java @@ -1,10 +1,10 @@ package jarvis.task; -import org.junit.jupiter.api.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.time.LocalDateTime; -import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; public class EventTest { @@ -30,4 +30,4 @@ public void testToSaveString() { LocalDateTime.of(2023, 11, 25, 21, 0)); assertEquals("E | 0 | Dinner | Nov 25 2023 1900 | Nov 25 2023 2100", event.toSaveString()); } -} \ No newline at end of file +} From 6d977512a06b71d71049c57f983f453c1c9dfcc9 Mon Sep 17 00:00:00 2001 From: Chen1x Date: Fri, 22 Sep 2023 12:32:14 +0800 Subject: [PATCH 23/29] Add Level-10 --- build.gradle | 14 ++++ data/tasks.txt | 0 src/main/java/jarvis/DialogBox.java | 61 +++++++++++++++ src/main/java/jarvis/Jarvis.java | 36 ++++----- src/main/java/jarvis/Launcher.java | 12 +++ src/main/java/jarvis/Main.java | 31 ++++++++ src/main/java/jarvis/MainWindow.java | 65 ++++++++++++++++ src/main/java/jarvis/command/AddCommand.java | 9 ++- src/main/java/jarvis/command/Command.java | 2 +- .../java/jarvis/command/DeleteCommand.java | 6 +- src/main/java/jarvis/command/ExitCommand.java | 4 +- src/main/java/jarvis/command/FindCommand.java | 4 +- src/main/java/jarvis/command/ListCommand.java | 6 +- src/main/java/jarvis/command/MarkCommand.java | 7 +- .../java/jarvis/command/UnmarkCommand.java | 7 +- src/main/java/jarvis/ui/Ui.java | 70 ++++++++---------- src/main/resources/images/Jarvis.jpg | Bin 0 -> 83276 bytes src/main/resources/images/Users.jpg | Bin 0 -> 297345 bytes src/main/resources/view/DialogBox.fxml | 16 ++++ src/main/resources/view/MainWindow.fxml | 19 +++++ 20 files changed, 287 insertions(+), 82 deletions(-) create mode 100644 data/tasks.txt create mode 100644 src/main/java/jarvis/DialogBox.java create mode 100644 src/main/java/jarvis/Launcher.java create mode 100644 src/main/java/jarvis/Main.java create mode 100644 src/main/java/jarvis/MainWindow.java create mode 100644 src/main/resources/images/Jarvis.jpg create mode 100644 src/main/resources/images/Users.jpg create mode 100644 src/main/resources/view/DialogBox.fxml create mode 100644 src/main/resources/view/MainWindow.fxml diff --git a/build.gradle b/build.gradle index 345bc61766..9e36d21584 100644 --- a/build.gradle +++ b/build.gradle @@ -14,6 +14,20 @@ repositories { } dependencies { + String javaFxVersion = '17.0.7' + + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux' testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.10.0' testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.10.0' } diff --git a/data/tasks.txt b/data/tasks.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/main/java/jarvis/DialogBox.java b/src/main/java/jarvis/DialogBox.java new file mode 100644 index 0000000000..c8d59ee9ba --- /dev/null +++ b/src/main/java/jarvis/DialogBox.java @@ -0,0 +1,61 @@ +package jarvis; + +import java.io.IOException; +import java.util.Collections; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.geometry.Pos; +import javafx.scene.Node; +import javafx.scene.control.Label; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; + +/** + * An example of a custom control using FXML. + * This control represents a dialog box consisting of an ImageView to represent the speaker's face and a label + * containing text from the speaker. + */ +public class DialogBox extends HBox { + @FXML + private Label dialog; + @FXML + private ImageView displayPicture; + + private DialogBox(String text, Image img) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(MainWindow.class.getResource("/view/DialogBox.fxml")); + fxmlLoader.setController(this); + fxmlLoader.setRoot(this); + fxmlLoader.load(); + } catch (IOException e) { + e.printStackTrace(); + } + + dialog.setText(text); + displayPicture.setImage(img); + } + + /** + * Flips the dialog box such that the ImageView is on the left and text on the right. + */ + private void flip() { + ObservableList tmp = FXCollections.observableArrayList(this.getChildren()); + Collections.reverse(tmp); + getChildren().setAll(tmp); + setAlignment(Pos.TOP_LEFT); + } + + public static DialogBox getUserDialog(String text, Image img) { + return new DialogBox(text, img); + } + + public static DialogBox getJarvisDialog(String text, Image img) { + var db = new DialogBox(text, img); + db.flip(); + return db; + } +} diff --git a/src/main/java/jarvis/Jarvis.java b/src/main/java/jarvis/Jarvis.java index 7f44a5461a..a3e1bfba9c 100644 --- a/src/main/java/jarvis/Jarvis.java +++ b/src/main/java/jarvis/Jarvis.java @@ -17,6 +17,7 @@ public class Jarvis { private Storage storage; private Parser parser; private TaskList tasks; + private boolean isExit; /** * Constructs a Jarvis object. @@ -31,29 +32,30 @@ public Jarvis(String filePath) { } /** - * Runs the Jarvis application until the user exits the application. + * You should have your own function to generate a response to user input. + * Replace this stub with your completed method. */ - public void run() { - ui.greet(); - boolean isExit = false; - while (!isExit) { - try { - String fullCommand = ui.readCommand(); - Command c = parser.parse(fullCommand); - c.execute(tasks, ui, storage); - isExit = c.isExit(); - } catch (JarvisException e) { - ui.display(e.getMessage()); - } + public String getResponse(String fullCommand) { + try { + Command c = parser.parse(fullCommand); + String response = c.execute(tasks, ui, storage); + this.isExit = c.isExit(); + return response; + } catch (JarvisException e) { + return e.getMessage(); } } /** - * The main method to launch the Jarvis application. + * Gets the greeting message to be displayed to the user. * - * @param args The command-line arguments. Not used in this application. + * @return The greeting message to be displayed to the user. */ - public static void main(String[] args) { - new Jarvis("./data/jarvis.txt").run(); + public String getGreeting() { + return ui.greet(); + } + + public boolean hasExited() { + return this.isExit; } } diff --git a/src/main/java/jarvis/Launcher.java b/src/main/java/jarvis/Launcher.java new file mode 100644 index 0000000000..2ac3bfcdae --- /dev/null +++ b/src/main/java/jarvis/Launcher.java @@ -0,0 +1,12 @@ +package jarvis; + +import javafx.application.Application; + +/** + * A launcher class to workaround classpath issues. + */ +public class Launcher { + public static void main(String[] args) { + Application.launch(Main.class, args); + } +} diff --git a/src/main/java/jarvis/Main.java b/src/main/java/jarvis/Main.java new file mode 100644 index 0000000000..656705b6e9 --- /dev/null +++ b/src/main/java/jarvis/Main.java @@ -0,0 +1,31 @@ +package jarvis; + +import java.io.IOException; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.layout.AnchorPane; +import javafx.stage.Stage; + +/** + * A GUI for Duke using FXML. + */ +public class Main extends Application { + + private Jarvis jarvis = new Jarvis("data/tasks.txt"); + + @Override + public void start(Stage stage) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(Main.class.getResource("/view/MainWindow.fxml")); + AnchorPane ap = fxmlLoader.load(); + Scene scene = new Scene(ap); + stage.setScene(scene); + fxmlLoader.getController().setJarvis(jarvis); + stage.show(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/jarvis/MainWindow.java b/src/main/java/jarvis/MainWindow.java new file mode 100644 index 0000000000..c80d49a7ec --- /dev/null +++ b/src/main/java/jarvis/MainWindow.java @@ -0,0 +1,65 @@ +package jarvis; + +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.ScrollPane; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.VBox; + +/** + * Controller for MainWindow. Provides the layout for the other controls. + */ +public class MainWindow extends AnchorPane { + @FXML + private ScrollPane scrollPane; + @FXML + private VBox dialogContainer; + @FXML + private TextField userInput; + @FXML + private Button sendButton; + + private Jarvis jarvis; + + private Image userImage = new Image(this.getClass().getResourceAsStream("/images/Users.jpg")); + private Image jarvisImage = new Image(this.getClass().getResourceAsStream("/images/Jarvis.jpg")); + + /** + * Initializes the MainWindow. + */ + @FXML + public void initialize() { + scrollPane.vvalueProperty().bind(dialogContainer.heightProperty()); + } + + /** + * Sets the Jarvis object. + * + * @param d The Jarvis object. + */ + public void setJarvis(Jarvis d) { + jarvis = d; + dialogContainer.getChildren().addAll( + DialogBox.getJarvisDialog(jarvis.getGreeting(), jarvisImage) + ); + } + + /** + * Creates two dialog boxes, one echoing user input and the other containing Jarvis's reply and then appends them to + * the dialog container. Clears the user input after processing. + */ + @FXML + private void handleUserInput() { + if (!jarvis.hasExited()) { + String input = userInput.getText(); + String response = jarvis.getResponse(input); + dialogContainer.getChildren().addAll( + DialogBox.getUserDialog(input, userImage), + DialogBox.getJarvisDialog(response, jarvisImage) + ); + userInput.clear(); + } + } +} diff --git a/src/main/java/jarvis/command/AddCommand.java b/src/main/java/jarvis/command/AddCommand.java index dccc38d122..4e8409a6fc 100644 --- a/src/main/java/jarvis/command/AddCommand.java +++ b/src/main/java/jarvis/command/AddCommand.java @@ -25,14 +25,15 @@ public AddCommand(Task task) { * Executes the AddCommand. * Adds the task to the task list, displays the added task, and saves the updated task list to storage. * - * @param tasks The list of tasks. - * @param ui The Ui object, for displaying the added task to the user. + * @param tasks The list of tasks. + * @param ui The Ui object, for displaying the added task to the user. * @param storage The Storage object, for saving the updated task list. + * @return */ @Override - public void execute(TaskList tasks, Ui ui, Storage storage) { + public String execute(TaskList tasks, Ui ui, Storage storage) { tasks.add(taskToAdd); - ui.displayAddedTask(taskToAdd, tasks); storage.saveTasks(tasks); + return ui.displayAddedTask(taskToAdd, tasks); } } diff --git a/src/main/java/jarvis/command/Command.java b/src/main/java/jarvis/command/Command.java index da4c11a1bb..5165a13c58 100644 --- a/src/main/java/jarvis/command/Command.java +++ b/src/main/java/jarvis/command/Command.java @@ -21,7 +21,7 @@ public abstract class Command { * @param storage The Storage object to read or save tasks to disk. * @throws JarvisException If there is any error during the command execution. */ - public abstract void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException; + public abstract String execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException; /** * Checks if this command should cause Jarvis to exit. diff --git a/src/main/java/jarvis/command/DeleteCommand.java b/src/main/java/jarvis/command/DeleteCommand.java index cac577648a..168d4a731d 100644 --- a/src/main/java/jarvis/command/DeleteCommand.java +++ b/src/main/java/jarvis/command/DeleteCommand.java @@ -33,16 +33,14 @@ public DeleteCommand(int taskIndexToDelete) { * @throws JarvisInvalidIndexException If the task index is invalid. */ @Override - public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { + public String execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (taskIndexToDelete <= 0 || taskIndexToDelete > tasks.size()) { throw new JarvisInvalidIndexException(taskIndexToDelete); } Task deletedTask = tasks.get(taskIndexToDelete - 1); // Lists are 0-indexed, but users see a 1-indexed list. tasks.remove(taskIndexToDelete - 1); - - ui.displayDeletedTask(deletedTask, tasks); - storage.saveTasks(tasks); + return ui.displayDeletedTask(deletedTask, tasks); } } diff --git a/src/main/java/jarvis/command/ExitCommand.java b/src/main/java/jarvis/command/ExitCommand.java index e3b2ed5f14..1059b8e0f7 100644 --- a/src/main/java/jarvis/command/ExitCommand.java +++ b/src/main/java/jarvis/command/ExitCommand.java @@ -18,8 +18,8 @@ public class ExitCommand extends Command { * @param storage The Storage object, not used in this command. */ @Override - public void execute(TaskList tasks, Ui ui, Storage storage) { - ui.farewell(); + public String execute(TaskList tasks, Ui ui, Storage storage) { isExit = true; + return ui.farewell(); } } diff --git a/src/main/java/jarvis/command/FindCommand.java b/src/main/java/jarvis/command/FindCommand.java index bd57f7123d..00b6fc27d7 100644 --- a/src/main/java/jarvis/command/FindCommand.java +++ b/src/main/java/jarvis/command/FindCommand.java @@ -33,8 +33,8 @@ public FindCommand(String keyword) { * @param storage The Storage object, not used here. */ @Override - public void execute(TaskList tasks, Ui ui, Storage storage) { + public String execute(TaskList tasks, Ui ui, Storage storage) { ArrayList matchingTasks = tasks.find(keyword); - ui.displayMatchingTasks(matchingTasks); + return ui.displayMatchingTasks(matchingTasks); } } diff --git a/src/main/java/jarvis/command/ListCommand.java b/src/main/java/jarvis/command/ListCommand.java index a0196a1bc7..9f4c562fc6 100644 --- a/src/main/java/jarvis/command/ListCommand.java +++ b/src/main/java/jarvis/command/ListCommand.java @@ -20,11 +20,11 @@ public class ListCommand extends Command { * @throws JarvisException If there is any error during the command execution. */ @Override - public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { + public String execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (tasks.size() == 0) { - ui.displayEmptyList(); + return ui.displayEmptyList(); } else { - ui.displayList(tasks); + return ui.displayList(tasks); } } } diff --git a/src/main/java/jarvis/command/MarkCommand.java b/src/main/java/jarvis/command/MarkCommand.java index 95e9c594d8..28907ff719 100644 --- a/src/main/java/jarvis/command/MarkCommand.java +++ b/src/main/java/jarvis/command/MarkCommand.java @@ -33,16 +33,15 @@ public MarkCommand(int taskIndexToMark) { * @throws JarvisInvalidIndexException If the task index is invalid. */ @Override - public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { + public String execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (taskIndexToMark <= 0 || taskIndexToMark > tasks.size()) { throw new JarvisInvalidIndexException(taskIndexToMark); } Task taskToMark = tasks.get(taskIndexToMark - 1); taskToMark.mark(); - - ui.displayMarkedTask(taskToMark); - storage.saveTasks(tasks); + return ui.displayMarkedTask(taskToMark); + } } diff --git a/src/main/java/jarvis/command/UnmarkCommand.java b/src/main/java/jarvis/command/UnmarkCommand.java index 5635eb4929..c254ef92af 100644 --- a/src/main/java/jarvis/command/UnmarkCommand.java +++ b/src/main/java/jarvis/command/UnmarkCommand.java @@ -33,16 +33,15 @@ public UnmarkCommand(int taskIndexToUnmark) { * @throws JarvisInvalidIndexException If the task index is invalid. */ @Override - public void execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { + public String execute(TaskList tasks, Ui ui, Storage storage) throws JarvisException { if (taskIndexToUnmark <= 0 || taskIndexToUnmark > tasks.size()) { throw new JarvisInvalidIndexException(taskIndexToUnmark); } Task taskToUnmark = tasks.get(taskIndexToUnmark - 1); taskToUnmark.unmark(); - - ui.displayUnmarkedTask(taskToUnmark); - storage.saveTasks(tasks); + return ui.displayUnmarkedTask(taskToUnmark); + } } diff --git a/src/main/java/jarvis/ui/Ui.java b/src/main/java/jarvis/ui/Ui.java index bfd740cd94..c96ba6d964 100644 --- a/src/main/java/jarvis/ui/Ui.java +++ b/src/main/java/jarvis/ui/Ui.java @@ -1,7 +1,6 @@ package jarvis.ui; import java.util.ArrayList; -import java.util.Scanner; import jarvis.task.Task; import jarvis.tasklist.TaskList; @@ -12,13 +11,11 @@ * The class is responsible for displaying messages to the user and reading user input. */ public class Ui { - private Scanner scanner; /** * Initializes the Ui class and prepares it to read user input. */ public Ui() { - this.scanner = new Scanner(System.in); } /** @@ -26,26 +23,26 @@ public Ui() { * * @param text The messages to be displayed to the user. */ - public void display(String... text) { - System.out.println("____________________________________________________________"); + public String display(String... text) { + String response = ""; for (String i : text) { - System.out.println(i); + response += i + "\n"; } - System.out.println("____________________________________________________________"); + return response; } /** * Displays a greeting message to the user. */ - public void greet() { - display("Hello Master! I'm Jarvis, your AI personal assistant.", "What can I do for you?"); + public String greet() { + return display("Hello Master! I'm Jarvis, your AI personal assistant.", "What can I do for you?"); } /** * Displays a farewell message to the user. */ - public void farewell() { - display("Bye. Hope to see you again soon!"); + public String farewell() { + return display("Bye. Hope to see you again soon!"); } /** @@ -54,8 +51,8 @@ public void farewell() { * @param task The task that has been added. * @param tasks The current task list. */ - public void displayAddedTask(Task task, TaskList tasks) { - display("Got it. I've added this task:", task.toString(), + public String displayAddedTask(Task task, TaskList tasks) { + return display("Got it. I've added this task:", task.toString(), "Now you have " + tasks.size() + " tasks in the list."); } @@ -65,8 +62,8 @@ public void displayAddedTask(Task task, TaskList tasks) { * @param task The task that has been deleted. * @param tasks The current task list. */ - public void displayDeletedTask(Task task, TaskList tasks) { - display("Got it. I've removed this task:", task.toString(), + public String displayDeletedTask(Task task, TaskList tasks) { + return display("Got it. I've removed this task:", task.toString(), "Now you have " + tasks.size() + " tasks in the list."); } @@ -75,8 +72,8 @@ public void displayDeletedTask(Task task, TaskList tasks) { * * @param task The task that has been marked. */ - public void displayMarkedTask(Task task) { - display("Nice! I've marked this task as done:", task.toString()); + public String displayMarkedTask(Task task) { + return display("Nice! I've marked this task as done:", task.toString()); } /** @@ -84,24 +81,15 @@ public void displayMarkedTask(Task task) { * * @param task The task that has been unmarked. */ - public void displayUnmarkedTask(Task task) { - display("OK, I've marked this task as not done yet:", task.toString()); + public String displayUnmarkedTask(Task task) { + return display("OK, I've marked this task as not done yet:", task.toString()); } /** * Displays a message informing the user that their task list is currently empty. */ - public void displayEmptyList() { - display("You currently have no tasks in your list."); - } - - /** - * Reads a command from the user. - * - * @return The user's input as a String. - */ - public String readCommand() { - return scanner.nextLine().trim(); + public String displayEmptyList() { + return display("You currently have no tasks in your list."); } /** @@ -109,13 +97,13 @@ public String readCommand() { * * @param tasks The user's current task list. */ - public void displayList(TaskList tasks) { - System.out.println("____________________________________________________________"); - System.out.println("Here are the tasks in your list:"); + public String displayList(TaskList tasks) { + String response = ""; + response += "Here are the tasks in your list:\n"; for (int i = 0; i < tasks.size(); i++) { - System.out.println((i + 1) + "." + tasks.get(i)); + response += (i + 1) + "." + tasks.get(i) + "\n"; } - System.out.println("____________________________________________________________"); + return response; } /** @@ -123,16 +111,16 @@ public void displayList(TaskList tasks) { * * @param tasks The list of tasks that match the search query. */ - public void displayMatchingTasks(ArrayList tasks) { - System.out.println("____________________________________________________________"); + public String displayMatchingTasks(ArrayList tasks) { if (tasks.isEmpty()) { - System.out.println("No tasks matched your search query."); + return display("No tasks matched your search query."); } else { - System.out.println("Here are the matching tasks in your list:"); + String response = ""; + response += "Here are the matching tasks in your list:\n"; for (int i = 0; i < tasks.size(); i++) { - System.out.println((i + 1) + "." + tasks.get(i)); + response += (i + 1) + "." + tasks.get(i) + "\n"; } + return response; } - System.out.println("____________________________________________________________"); } } diff --git a/src/main/resources/images/Jarvis.jpg b/src/main/resources/images/Jarvis.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6d0203d27f9a7a68a048dad94c72e15db38fecc7 GIT binary patch literal 83276 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
cn?#8SC{W%S?A7gkYhG4Md#ywvBJR`1bU$C2N6; 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 z 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 + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml new file mode 100644 index 0000000000..a86a02b144 --- /dev/null +++ b/src/main/resources/view/MainWindow.fxml @@ -0,0 +1,19 @@ + + + + + + + + + + + +

ZTvhfea&JAaP!g{95dQiA^`DnyC1Xk3q>-CY* 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 z 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 R?-3*hE^pqi9wGkD{vYpQm&O19 literal 0 HcmV?d00001 diff --git a/src/main/resources/images/Users.jpg b/src/main/resources/images/Users.jpg new file mode 100644 index 0000000000000000000000000000000000000000..08466ebf6d812b9d2642769a50050f76bf0d5f7e GIT binary patch literal 297345 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%0DO!L7cO6#j^$7N@gHrbyWR~a(|01SYZw^3K@5p! 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