From 93ff7fc3ddd749ec4fd9abd49f8ff44b4893d492 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Sun, 16 Sep 2018 00:00:52 +0800 Subject: [PATCH 001/739] AboutUs.adoc: Update content to current group --- docs/AboutUs.adoc | 43 ++++++++++++++++--------------------- docs/images/damithc.jpg | Bin 6910 -> 0 bytes docs/images/julius.jpg | Bin 0 -> 56664 bytes docs/images/kohchihao.jpg | Bin 0 -> 30203 bytes docs/images/lejolly.jpg | Bin 26764 -> 0 bytes docs/images/m133225.jpg | Bin 80341 -> 0 bytes docs/images/monika.jpg | Bin 0 -> 124190 bytes docs/images/rahul.jpg | Bin 0 -> 126067 bytes docs/images/tanjinying.jpg | Bin 0 -> 206842 bytes docs/images/yijinl.jpg | Bin 13946 -> 0 bytes docs/images/yl_coder.jpg | Bin 7203 -> 0 bytes 11 files changed, 19 insertions(+), 24 deletions(-) delete mode 100644 docs/images/damithc.jpg create mode 100644 docs/images/julius.jpg create mode 100644 docs/images/kohchihao.jpg delete mode 100644 docs/images/lejolly.jpg delete mode 100644 docs/images/m133225.jpg create mode 100644 docs/images/monika.jpg create mode 100644 docs/images/rahul.jpg create mode 100644 docs/images/tanjinying.jpg delete mode 100644 docs/images/yijinl.jpg delete mode 100644 docs/images/yl_coder.jpg diff --git a/docs/AboutUs.adoc b/docs/AboutUs.adoc index e647ed1e715a..1eef8ab42dc6 100644 --- a/docs/AboutUs.adoc +++ b/docs/AboutUs.adoc @@ -4,53 +4,48 @@ :imagesDir: images :stylesDir: stylesheets -AddressBook - Level 4 was developed by the https://se-edu.github.io/docs/Team.html[se-edu] team. + -_{The dummy content given below serves as a placeholder to be used by future forks of the project.}_ + -{empty} + +FoodZoom was developed by Team https://github.com/CS2103-AY1819S1-T16-3[T16-3] team. + + We are a team based in the http://www.comp.nus.edu.sg[School of Computing, National University of Singapore]. == Project Team -=== John Doe -image::damithc.jpg[width="150", align="left"] -{empty}[http://www.comp.nus.edu.sg/~damithch[homepage]] [https://github.com/damithc[github]] [<>] +=== Rahul +image::rahul.jpg[width="150", align="left"] +{empty}[https://github.com/rrtheonlyone[github]] [https://www.linkedin.com/in/rahul-rajesh-979919110/[portfolio]] -Role: Project Advisor +Role: Developer ''' -=== John Roe -image::lejolly.jpg[width="150", align="left"] -{empty}[http://github.com/lejolly[github]] [<>] +=== Julius Sander +image::julius.jpg[width="150", align="left"] +{empty}[https://github.com/juxd[github]] [<>] -Role: Team Lead + -Responsibilities: UI +Role: Developer + ''' -=== Johnny Doe -image::yijinl.jpg[width="150", align="left"] -{empty}[http://github.com/yijinl[github]] [<>] +=== Monika Manuela +image::monika.jpg[width="150", align="left"] +{empty}[http://github.com/yijinl[github]] [https://www.linkedin.com/in/monika-manuela-hengki-a9383a54[portfolio]] Role: Developer + -Responsibilities: Data ''' -=== Johnny Roe -image::m133225.jpg[width="150", align="left"] -{empty}[http://github.com/m133225[github]] [<>] +=== Koh Chi Hao +image::kohchihao.jpg[width="150", align="left"] +{empty}[https://github.com/kohchihao[github]] [https://www.kohchihao.com/[portfolio]] Role: Developer + -Responsibilities: Dev Ops + Threading ''' -=== Benson Meier -image::yl_coder.jpg[width="150", align="left"] -{empty}[http://github.com/yl-coder[github]] [<>] +=== Tan Jin Ying +image::tanjinying.jpg[width="150", align="left"] +{empty}[https://github.com/jinyingtan[github]] [https://www.tanjinying.com/[portfolio]] Role: Developer + -Responsibilities: UI ''' diff --git a/docs/images/damithc.jpg b/docs/images/damithc.jpg deleted file mode 100644 index 12754388389328dc115e74b5d7e75d21ea3e3979..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6910 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 diff --git a/docs/images/julius.jpg b/docs/images/julius.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c727880bc85f3e6c8d5a3d131244a6ab514c0284 GIT binary patch literal 56664 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 NCn5g;wm7U$|JfM(>w^FQ literal 0 HcmV?d00001 diff --git a/docs/images/lejolly.jpg b/docs/images/lejolly.jpg deleted file mode 100644 index 2d1d94e0cf5da12a39a2e0f675d65dbda314936c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26764 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 EKME?T1ONa4 diff --git a/docs/images/m133225.jpg b/docs/images/m133225.jpg deleted file mode 100644 index fd14fb94593a11bd949304e9b707469e6d36f49d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80341 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 ~h=Jzgswfn#~fDj(k6%m#~toA_C$;FhdB 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

unhEs*m-qvc~~Q}umnAu-1hw{vtvRf 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 diff --git a/docs/images/monika.jpg b/docs/images/monika.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fe03a81e7e29500c801c986fc673b40e1f4476b5 GIT binary patch literal 124190 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%0DoeUl0ZR~D)(&BR}MjPCbXA*xlDwVz0<8+TxjFf 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%0D$${UBWGq!ZR7_?*nWvTmU{i+>J2Gbu! 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%0Ai_igpqQW_F$0i^kWh$_{*D7^|KUVK`XAi? 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 W@yAUT&3Kr&-m1PFTp|AV^Zx=|&doId diff --git a/docs/images/yl_coder.jpg b/docs/images/yl_coder.jpg deleted file mode 100644 index 17b48a732272464c97607e12bf494bb286cb3484..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7203 zcmbW52T)YYw)gii149_{07DpZj*>w#2t&?URAk5!9CDN-K_us-3_0f@C@3I9Q~}BH z2#6#>GNLGtbMIHT&bjwheeb>Q+PiDls_Omg)xG~~uXQzd^$DQR*3i-bK-b;&x&v3g z0Tx|#m0PT)4rpf&Pd85|7YA=vEf2IXtGTG~4N>4~5qJy`;uAm#@Cl&=P$EJ?A{d+$ zMnVEZP*Rb>k@U>WO!Q2QtenC;tn32pj7+>zyaFPk;u7L4+%obqV)DXb;-VlzA|eZbNz2IIRJ*0Ffzs5{HZe6bx3ILbM%z0$Iyt+zdi(hL`3D3BMLmv=iH&;_ zpO&7HnU$TBn^#;?T2@|BSykQK(%RPkqNDR=-`jrNz~IpE$j8a4>6zKN`GwWB_0Jn$ zHn+BS4v&scPS4K2U;LoFM#h6cz!2!4$RIrb>kCW?!DkaCpi(h{-p5e0i$xH^Ra1+a zdWks1jSpz-ye5cgIVD!P4*#V72lW4pIr9Gm{V(Q!Az$?Xl!U-BfCGcB=_x^AO3>8; z00V=rAHbA=5^(+l;03UF;l%%k0ffw?XlXPvO4I6rgZjTeU2BLwF&=uELFdiJRucWx z_Lnja2pniQJUSV9tJ@kWvH3u=;$VIDlFvrasOkI9H5#QiO^pShsSU3%Vqsc21?c+o zZ21&i{oH6puD<--6%dGESsB`7iG|zvIaO@uWoA{mW?Q>YS(xvOHQ(yZ_-)#6{r^Fi z-(3^IJ(KQhmP~s7v~q{lt9pGj?h0r{h22*UVkTWHWci-l@1=B>RKgp51#CR#v9}Gf z4YO9$9^~Wfc^Gh3D%O?!{5zJwliy2*JtwyAYdmocMd>E8ve9No9=!fur|)KLuJc#- z&m8Z=nFyFm#wQwCGz0wCDqTUX14zee+RaB#>W-R8ht30M4Xecy@YGL3XhewS_fh{kg2scfLbRh7v)f*l z(O&XPC2Iqf(m=ubul+5wJn4CA0z-qyEj+5yUwm;-uE9f=tHKM$+0@W=tU}g1bW*t2 zWAdqV2s9&w9$2b21!k$u@{J(Mg=%L~pht)dvJ19dt4qbe+pC1OXaL_SbKMT{&bCEYr zuTy#*7+JVKNL_H8E3J5jjiiUhYY);aI{UPCp~%7(~xz z9^k?jWC(H7`lbw%h1T6*s$lU;i6%|%#(}wG9;Ouym@=gnI4y)L7JesR3zXCo|EaXc z;u?uK${+j2%26#{dBUF4u3-Kjr(1)~G)o4YrU!(~9~KVmt_hjmUJ(8Lp_%iRcd}@* z`4vE%HL5+Bt@({_SkBaBE(_HP?!n>v? zd70@1kzYjFj|-eC6+a!CvY-CjVZgkhz0`Qkd=TB6WSDJ%9)9e<`Hk{~)1%`!Nn1$60qo=yB*iQ zWzN74_qZF&JcYCUlJb>wvYf9-v}QIBqQ_!T##XW&HlJ>m_U$d*4B5L;mm31BSXL zofEygr=ofxIGWM{uG5>)=5$mt8N`;WhiixqvS>r^Co+P=Zzx$?FetZ|CE=w#$|y+V zQ)#+8F>aq=Y^)wE6{ib>>hss5`0Pj(Eg0MP?wR1!@-*V}8%Gy4qP?STIbpPEdDm&G zA~C~iy z$*i#^`oUeJsc9i{r4(wu6YFBazO3zCO&11pT2k(h8szsaKlt6`o7`cjz99W9f?R}e zpVR0MJXD)$?M_JJX>U#2IJ*@cx1+pm#8n-f_$1`{7>;^@nUPMI{ z_GMHznod;8OW`389~;Ude*30XzVD<-FreIK>0mU(SN|L_(^e)Y&fmJ9L>7?XrXhMa z-YJ{Qj%(M{F(~%yc_?XNKO<)c7i{ZLP)D6Bz zH5xFqC`=*NiGX~rxn@08IZA$N$IZP8yRR_^XPg|u^`{` z=pcc0FsL{9-Oi&O*$8)`{>1e3^HTJ}OW6#4GdlK}{8Fu8?uX_y-;#=3p548ZcwZ;y zge6uE)@KYRNkM1c)RTTrjtN9^f;1ga0Pr~o#tss=a zr1ckz91RZRhoz^3ZiaJ=7)y1$>e~B$$@=9*2@S!{2zx+up)8x$J7}XJ*PT5a%4DXp zLuJiu)!;G!9b)or(9YNo%q&8~>dD)Dm=clxeeLRpD={BC6KVH|Y{fqWlq$x~``Z6q zn3+X>qO{st`$-CyJI5;6i*J``K4%7n@b0ONJMa1+WwVy8Vu)ylrTu*Sq$KJEA;Xbk zLEe_fmRm-h&@#L@R2p}YEK@=37Y z5~zdpD1~tGL*Ne+Hn-43bIrenBG8vVn0;K@SYU7cJ;{z8*jy04rW_YeG-AS}EQ;G_ zKleY1U+T)#em;?kpE|MJ%Oa%U-4aOI(Y4K!utOa2GwGq(_i9rWi8y#>Dl%T%yIE@? zn8XT;sx}%go*v#A=(+)~m!rk+4;bnx-ZCdwLAiu8XFb=+_+xFm!Zo|p{fotCU|(K_-!bwO0w&Tb2qtg z^LbLsS;)a?w=Bi>d~TdAS&#^FK+mTncPqJSC+_cmI`R!`p}3Wz8l4Kk=CW4T znl`3NL5)Cg9cH?Esy0Z1m&YLYxq>H}t0E2^X{e$F$W|M7dDzbi*7{qxG__v=EjaH{ zwE%$FrZkbd?(ID4{bqP1L*RsA`;iCs1i=<`lJU3_0ZmwKQ99i1@t3SzQ z4o~wJclI#JX%7)B*j}2=*~AL(>9=|}ZMu`?y4tC~r_G=3ah?v^7?+^OLd$n5#$!W`4@{Rz8(@(DYO|(OWUs>!X3pYs8I89!I(4hMAXW8IC-kYL6$E z;$?U4*;Kn?6rZ`k+&j<3Nu4d!{;FRnJP3}yoo8(ADy4_F zu&g7?D?j6w*pP(T5y_h==_hN(tY$DK8Ps`8&#lY|-5HF)Q4)B~K7rpHT-Y== zM~vF~a=&=<3QfcKZm+ftQUA5b88w3S8{D>RsTbW)5b4DboRZE5;PcagW|Q>Vhu$4qFCu(6=W zJ_c&@t#W9WvfH=b!YF8eJby4(MyAOba_VwC<<@PT`&VIx_}{3*b)^g`TEVL>T_nd{ z=9igKRW1hQ4|cMNjiv{XL7L*d^-wx`tLMd4?@0*)V#HpiH|?viWYUJKvY81NG9@syu0L&nMiHkcHu~o((r?2P&G3Z5T`0 z-(#M}XqY&>A>V#MHz{boWwo?kL9*}K$+TgwU4>9RQV7#;iSHW`aE9}1U@=SQlDiuG z{6mKuJUo7u)tvv4fRYKUsYm>jw@6KX>DT5xlWbD{xUH#|ua}_Xa}cG&T*bvhIdj2z zn*Arf{QBM|cJGE;8@J5tQ{hKuw}I&@OFgz3hC5R%Lbat0rH>0|VmW_M+Z}IH>A%@F zk^U%VUXh0rVAlyI+|&L_hUr3 zYvQv(nIui|P_fM@v3I0zu*T(xS9H1mlkdWO`KR&D)JLNxO@=B3!5E#4?lbP+)2##3 zeyOkcg?K0za5{B&+}VyD+H?3mh!NaIMiUdId}&u_6f!ZIjuYJ;b8;mYkxSg%Dydl4 z$0V31P-WjCEeI)5s39x6+wXKzO)c5QQt|86-6(;a)nB`zP=i^TMOA4hT6S|(74ZqV z%ztdyKk5hI$iuTI8@j$Ez873dUEr3WSuWS0Wuy}UG%CDdOX$&W zDnx2DW>7BFy74Ii|3d&%)UOA(m#y-IElLyfgLBF!Uyliz<6@NkY$O>dztZgIJ`&QF z(_Et+U+A~nugda}D;&soA-X@=y~row^~VtN>Ri2-`0T++?Y_%?uQhkt0LK#}z);Ry zFJ+!YD`wI7iJcPR+OM2C-ri6!3nt&aTgK~EGE$@H=s7c> z@}D{RpNTsCBc4p#iH+1LF+6GTmOekf3)O1p2E+Sej==T`A6+j6R8u`4s%e?X#{prJ z5ETC zKFDgQw$ji2wF@h{0-U}0?K_Jn3`3fAkFDSZk;IKVI7bR1tB~1towM-ca9$RN~ z@8n#ARnyYAmfM8fm~+2&g{@{jt)h^NH}mk?sN7^Ln}dDwkC|yC&6d3baJ#aR-VyzH z)z6Q7^HW_cx8zBwg-#Y?$mZbeKhso{u)iL(z}h+op9FCR=~Clv#ypvhKqj+ygCD2; zE!X|i$M$KQI=M*0-~vN@l4q7Yw1?lW0GA|uz&Oupe~RcW{s|N>Tp*`i(E@Rb0}L2G z8A1itgiuQe9lPaIQG z@0W3DIt8DW`6)ols*C!PhfLccHFPpcnL22-cT_s;YQ))T8pPE%(_D-5{Z!q#{QS=t zLV_F%k$EXr1e^CSb%XLwi^w$Rjw%!bZPG}>3O+SLQ(r{owL0Fpy&E^Uv_coPG;KrD z{vu_GJTvlzFHfF7rCrXy;;EX#JHybk&2d;BFxD}(+!5_ZZZeYsf2SwzneI)!oa9XJ zz^X}yF?w}e1biQhPrpq+v?caXgpJq zr84~V5_Qxd)dpn=l4DL}xLo=ALiP$^O|nRx=}aoxsTof&resYZ6V(c*fCA)wrD)Yv ztpPsR*ATv<&;*j7t+==K9BNm9;MDn#ypw~IKsxcImAu!kwWvm zi%TrpfPMaYiYTMyL(F)*tzc7aj>lvFQpi)u>6ac>@>9qh$7lVPPfg+~#j28j)z@51 zcF1pR2lUGhe@Y|;6Q0cJ8J39fx?H4cI!++mvRV_|e(cV4 zTRSKr#3oaW8`)^3H>VPLGRMpthR?xG0|HZ%|rFfD2lUTx{P&2NkC1N%3_PAe%rNHr@)eM-Yx@#P|l;7|Ao5~KL``63eB zVQKpr2ci+*4aG*PD|E8`z(LWEM4NlhA`wf6YuX!gorA>cfSI5)jN??_>nQe`=Q zQKZ;SKP+T`7sOZwux8sr){)(=eh8ah*mrRi_+#%F!w0g9)eP=#gQ5VZ>!SZd0D)I6 zN9c#gJ&nN2!Hb6okWGQ$Pg-1{`*}bBwCsk!Fg;`~Wl;H%(Eu;S8PX-8O0o$WqULgf zB`EPg+>g>E5;9U#{D{(zg^xcK(_+2^&xP@$8<%%iQiw9g6!^lC-Bmy#f1xX2JS2+) z*}~+)`0@JafT(z3T1tmaTSl{&EMeL%(N8jb%2`t%iYn8HaEcC71AgU1z2~(X{#zME+YYn~mfu*0uBvcDxq`fK%a%QZJnu=jP zVf?A#aG(PRu&#wuoWg;`NjT80PzhpbI>7?mm)GSn8n`&dCj0Xn_ zvqOL{5S{Sr-n&?xDJPTI+b;B?mz-=k?S1jA@0692-`;-zh;qtW_+q*ItXW_G@(Ng= zwv!u%=28nhBrIi1H4uhtk;!?OBP3$&P$_7V)WW+{_;EiB4Vl&PIC=+>>a1|&Xu>0S zPyL(Dd}Ok=nqZQKOPs1K7UF=w0ea3wYUE{v1S5)JqZfu?<=(Y$_&A;q7J>x~0cYS0 z3$5(If|`<|j<8@qe8A|C#QorRaqv?s%oPyA030jLw{I7sX6lI6|c&cz+xZk^Zw4X27TPN;&4jB`E_a=KQ?}@MPs~E0a;O zD)~huAEmSSg(D_-$^Zh+o(pHn!nJ_(-<0olHm-ndt*{fY9?^5XpJJ8LH-9|OXO+1E zUT?>pO;WjgX18gQQgTlooncFPG76Wmc7%UUL^q=AgT+6(ekmbL>(>H+zLoQ{6$Haz iJ9`iiZ%u~=z8i|xb_{m9p$kB0t1H;nMAhkP{=Wc9t8^#; From 07880a7cb5c94c2a88bb0812f2a1a22c73ce5a99 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Sun, 16 Sep 2018 09:52:21 +0800 Subject: [PATCH 002/739] AboutUs.adoc: Update profile image names to github username --- docs/AboutUs.adoc | 8 ++++---- docs/images/{tanjinying.jpg => jinyingtan.jpg} | Bin docs/images/{julius.jpg => juxd.jpg} | Bin docs/images/{monika.jpg => monmanuela.jpg} | Bin docs/images/{rahul.jpg => rrtheonlyone.jpg} | Bin 5 files changed, 4 insertions(+), 4 deletions(-) rename docs/images/{tanjinying.jpg => jinyingtan.jpg} (100%) rename docs/images/{julius.jpg => juxd.jpg} (100%) rename docs/images/{monika.jpg => monmanuela.jpg} (100%) rename docs/images/{rahul.jpg => rrtheonlyone.jpg} (100%) diff --git a/docs/AboutUs.adoc b/docs/AboutUs.adoc index 1eef8ab42dc6..5bcc203ee74d 100644 --- a/docs/AboutUs.adoc +++ b/docs/AboutUs.adoc @@ -11,7 +11,7 @@ We are a team based in the http://www.comp.nus.edu.sg[School of Computing, Natio == Project Team === Rahul -image::rahul.jpg[width="150", align="left"] +image::rrtheonlyone.jpg[width="150", align="left"] {empty}[https://github.com/rrtheonlyone[github]] [https://www.linkedin.com/in/rahul-rajesh-979919110/[portfolio]] Role: Developer @@ -19,7 +19,7 @@ Role: Developer ''' === Julius Sander -image::julius.jpg[width="150", align="left"] +image::juxd.jpg[width="150", align="left"] {empty}[https://github.com/juxd[github]] [<>] Role: Developer + @@ -27,7 +27,7 @@ Role: Developer + ''' === Monika Manuela -image::monika.jpg[width="150", align="left"] +image::monmanuela.jpg[width="150", align="left"] {empty}[http://github.com/yijinl[github]] [https://www.linkedin.com/in/monika-manuela-hengki-a9383a54[portfolio]] Role: Developer + @@ -43,7 +43,7 @@ Role: Developer + ''' === Tan Jin Ying -image::tanjinying.jpg[width="150", align="left"] +image::jinyingtan.jpg[width="150", align="left"] {empty}[https://github.com/jinyingtan[github]] [https://www.tanjinying.com/[portfolio]] Role: Developer + diff --git a/docs/images/tanjinying.jpg b/docs/images/jinyingtan.jpg similarity index 100% rename from docs/images/tanjinying.jpg rename to docs/images/jinyingtan.jpg diff --git a/docs/images/julius.jpg b/docs/images/juxd.jpg similarity index 100% rename from docs/images/julius.jpg rename to docs/images/juxd.jpg diff --git a/docs/images/monika.jpg b/docs/images/monmanuela.jpg similarity index 100% rename from docs/images/monika.jpg rename to docs/images/monmanuela.jpg diff --git a/docs/images/rahul.jpg b/docs/images/rrtheonlyone.jpg similarity index 100% rename from docs/images/rahul.jpg rename to docs/images/rrtheonlyone.jpg From 49b063da58915f3268848cc857763fd7f9fe58d8 Mon Sep 17 00:00:00 2001 From: Julius S Date: Sun, 16 Sep 2018 13:01:00 +0800 Subject: [PATCH 003/739] Update doc badges --- README.adoc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.adoc b/README.adoc index 450054624f48..00f1201ed053 100644 --- a/README.adoc +++ b/README.adoc @@ -1,10 +1,9 @@ = Address Book (Level 4) ifdef::env-github,env-browser[:relfileprefix: docs/] -https://travis-ci.org/se-edu/addressbook-level4[image:https://travis-ci.org/se-edu/addressbook-level4.svg?branch=master[Build Status]] +https://travis-ci.org/CS2103-AY1819S1-T16-3/main[image:https://travis-ci.org/CS2103-AY1819S1-T16-3/main.svg?branch=master[Build Status]] https://ci.appveyor.com/project/damithc/addressbook-level4[image:https://ci.appveyor.com/api/projects/status/3boko2x2vr5cc3w2?svg=true[Build status]] https://coveralls.io/github/se-edu/addressbook-level4?branch=master[image:https://coveralls.io/repos/github/se-edu/addressbook-level4/badge.svg?branch=master[Coverage Status]] -https://www.codacy.com/app/damith/addressbook-level4?utm_source=github.com&utm_medium=referral&utm_content=se-edu/addressbook-level4&utm_campaign=Badge_Grade[image:https://api.codacy.com/project/badge/Grade/fc0b7775cf7f4fdeaf08776f3d8e364a[Codacy Badge]] https://gitter.im/se-edu/Lobby[image:https://badges.gitter.im/se-edu/Lobby.svg[Gitter chat]] ifdef::env-github[] From a4e937a8a8bb904c97f4a0737a097f3d143eb742 Mon Sep 17 00:00:00 2001 From: Jin Ying Date: Sun, 16 Sep 2018 18:41:54 +0800 Subject: [PATCH 004/739] UserGuide.adoc: Update user guide to current group (Introduction, Features, Command Summary) --- docs/UserGuide.adoc | 386 ++++++++++++++++++++++++++++++-------------- 1 file changed, 263 insertions(+), 123 deletions(-) diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index 7e0070e12f49..22c7e6283f29 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -18,7 +18,7 @@ By: `Team SE-EDU` Since: `Jun 2016` Licence: `MIT` == Introduction -AddressBook Level 4 (AB4) is for those who *prefer to use a desktop app for managing contacts*. More importantly, AB4 is *optimized for those who prefer to work with a Command Line Interface* (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, AB4 can get your contact management tasks done faster than traditional GUI apps. Interested? Jump to the <> to get started. Enjoy! +FoodZoom is a food delivery management platform targeted at food business looking to streamline their delivery process. It is responsive and quick, allowing manager to plan their routes and dispatch orders to delivery man *using a Command Line Interface* (CLI) while having the benefits of a Graphical User Interface (GUI). The delivery man can also this application to view their delivery routes and increase their efficiency. == Quick Start @@ -47,194 +47,306 @@ e.g. typing *`help`* and pressing kbd:[Enter] will open the help window. *Command Format* * Words in `UPPER_CASE` are the parameters to be supplied by the user e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. -* Items in square brackets are optional e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`. +* Items in square brackets are optional e.g `n/NAME [p/PHONE]` can be used as `n/John Doe p/9112` or as `n/John Doe`. * Items with `…`​ after them can be used multiple times including zero times e.g. `[t/TAG]...` can be used as `{nbsp}` (i.e. 0 times), `t/friend`, `t/friend t/family` etc. -* Parameters can be in any order e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable. +* Parameters can be in any order e.g. if the command specifies `n/NAME a/ADDRESS`, `a/ADDRESS n/NAME` is also acceptable. ==== -=== Viewing help : `help` +=== Manager + +==== Viewing help : `/help` Format: `help` -=== Adding a person: `add` +==== Login to system : `/login` + +Format: `/login u/USERNAME p/PASSWORD` + +Examples: + +* `/login u/manager p/password` -Adds a person to the address book + -Format: `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]...` +==== Logout from system : `/logout` -[TIP] -A person can have any number of tags (including 0) +Format: `/logout` + +==== Adding an order : `/order add` + +Adds an order to the list of orders + +Format: `/order add f/FOOD n/NAME p/PHONE a/ADDRESS` + +**** +* All fields need to have at least a value. e.g. `n/` is not allowed. +* Able to add more than 1 food items, seperated by a comma. e.g. `f/Roti Prata, Ice Milo`. +**** Examples: -* `add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` -* `add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/1234567 t/criminal` +* `/order add f/Roti Prata n/John Smith p/12345678 a/block 123, Clementi Drive, #01-01` +* `/order add a/block 55 Computing Drive n/Harry f/Tissue Prata, Nasi Briyani p/81889111` -=== Listing all persons : `list` +==== Listing all orders : `/order` -Shows a list of all persons in the address book. + -Format: `list` +Shows a list of all orders in chronological order + +Format: `/order` -=== Editing a person : `edit` +==== Editing an order : `/order edit` -Edits an existing person in the address book. + -Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]...` +Edits an existing order in the list of orders. + +Format: `/order edit INDEX [f/FOOD] [n/NAME] [p/PHONE] [a/address]` **** -* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index *must be a positive integer* 1, 2, 3, ... +* Edits the order at the specified `INDEX`. The index refers to the index number shown by `/order`. The index *must be a positive integer* 1, 2, 3, ... * At least one of the optional fields must be provided. * Existing values will be updated to the input values. -* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative. -* You can remove all the person's tags by typing `t/` without specifying any tags after it. +* When a parameter is specified, e.g. `f/`, `n/`, empty fields are not allowed. Value must be specified. **** Examples: -* `edit 1 p/91234567 e/johndoe@example.com` + -Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively. -* `edit 2 n/Betsy Crower t/` + -Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags. +* `/order` + +`/order edit 1 p/91234567 n/Jonathan` + +Edits the phone number and name of the 1st order to be `91234567` and `Jonathan` respectively. +* `/order` + +`/order edit 2 f/Maggi Goreng, Ice Milo` + +Edits the food of the 2nd order to be `Maggi Goreng, Ice Milo`. -=== Locating persons by name: `find` +==== Finding orders by name or phone : `/order find` -Finds persons whose names contain any of the given keywords. + -Format: `find KEYWORD [MORE_KEYWORDS]` +Find orders whose name or phone contain in the given parameter. + +Format: `/order find [n/NAME] [p/PHONE]` + **** -* The search is case insensitive. e.g `hans` will match `Hans` -* The order of the keywords does not matter. e.g. `Hans Bo` will match `Bo Hans` -* Only the name is searched. -* Only full words will be matched e.g. `Han` will not match `Hans` -* Persons matching at least one keyword will be returned (i.e. `OR` search). e.g. `Hans Bo` will return `Hans Gruber`, `Bo Yang` +* p/ will only match with phone numbers. +* n/ will only match with names. +* At least one of the optional fields must be provided. +* The search is case insensitive. e.g `tom` will match `Tom` +* Partial match is allowed e.g. `9112` will match `91122113`. Likewise, `tom` will match `tommy` **** Examples: -* `find John` + +* `/order find n/john` + Returns `john` and `John Doe` -* `find Betsy Tim John` + -Returns any person having names `Betsy`, `Tim`, or `John` +* `/order find p/9112` + +Returns `9112` and `91122113` -=== Deleting a person : `delete` +==== Deleting an order : `/order delete` -Deletes the specified person from the address book. + -Format: `delete INDEX` +Deletes the specified order from the list of order. + +Format: `/order delete INDEX` **** -* Deletes the person at the specified `INDEX`. -* The index refers to the index number shown in the displayed person list. +* Deletes an order at the specified `INDEX`. +* The index refers to the index number shown in the displayed order list. * The index *must be a positive integer* 1, 2, 3, ... **** Examples: -* `list` + -`delete 2` + -Deletes the 2nd person in the address book. -* `find Betsy` + +* `/order` + +`/order delete 2` + +Deletes the 2nd order in the list of orders. +* `find tom` + `delete 1` + -Deletes the 1st person in the results of the `find` command. +Deletes the 1st order in the results of the `find` command. + +==== Clearing all order entries : `/order clear` + +Clears all entries from the list of orders. + +Format: `/order clear` + +==== Adding a delivery man : /deliveryman add + +Adds a delivery man to the list of delivery men + +Format: `/deliveryman add n/NAME p/PHONE [a/ADDRESS]` + +Examples: + +* `/deliveryman add n/John Smith p/12345678 a/block 123, Clementi Drive, #01-01` +* `/deliveryman add a/block 55 Computing Drive n/Harry p/81889111` +* `/deliveryman add n/Willy p/23456789` -=== Selecting a person : `select` +==== Listing all delivery men : `/deliveryman` -Selects the person identified by the index number used in the displayed person list. + -Format: `select INDEX` +Shows a list of all delivery men in chronological order + +Format: `/deliveryman` + +==== Editing a delivery man : `/deliveryman edit` + +Edits an existing delivery man in the list of delivery men. + +Format: `/delivery man edit INDEX [n/NAME] [p/PHONE] [a/ADDRESS]` **** -* Selects the person and loads the Google search page the person at the specified `INDEX`. -* The index refers to the index number shown in the displayed person list. -* The index *must be a positive integer* `1, 2, 3, ...` +* Edits the delivery man at the specified `INDEX`. The index refers to the index number shown by `/deilveryman`. The index *must be a positive integer* 1, 2, 3, ... +* At least one of the optional fields must be provided. +* Existing values will be updated to the input values. +* When a parameter is specified, e.g. `n/`, `p/` empty fields are not allowed. A value must be specified. **** Examples: -* `list` + -`select 2` + -Selects the 2nd person in the address book. -* `find Betsy` + -`select 1` + -Selects the 1st person in the results of the `find` command. +* `/deliveryman` + +`/deliveryman edit 1 n/John Doe p/12345678` + +Edits the name and phone number of the 1st delivery man to be `John Doe` and `12345678` respectively. -=== Listing entered commands : `history` +==== Finding delivery man by name : `/deliveryman find` -Lists all the commands that you have entered in reverse chronological order. + -Format: `history` +Find delivery men whose name contain in the given parameter. + +Format: `/order find NAME [MORE NAMES] + -[NOTE] -==== -Pressing the kbd:[↑] and kbd:[↓] arrows will display the previous and next input respectively in the command box. -==== +**** +* The search is case insensitive. e.g `tom` will match `Tom` +* Multiple names must be seperated by a comma. e.g. `/order find john, hilary`. +* The order of the keywords does not matter. e.g. `Alice Smith` will match `Smith Alice` +* Partial match is allowed e.g. `tom` will match `tommy` +**** -// tag::undoredo[] -=== Undoing previous command : `undo` +Examples: -Restores the address book to the state before the previous _undoable_ command was executed. + -Format: `undo` +* `/deliveryman find john` + +Returns `john` and `John Doe` +* `/order find john, alice, tom` + +Returns `john`, `alice`, `tom` -[NOTE] -==== -Undoable commands: those commands that modify the address book's content (`add`, `delete`, `edit` and `clear`). -==== +==== Deleting a delivery man : `/deliveryman delete` + +Deletes the specified delivery man from the list of delivery men + +Format: `/deliveryman delete INDEX` + +**** +* Deletes a delivery at the specified `INDEX`. +* The index refers to the index number shown in the displayed delivery men list. +* The index *must be a positive integer* 1, 2, 3, ... +**** Examples: -* `delete 1` + -`list` + -`undo` (reverses the `delete 1` command) + +* `/deliveryman` + +`/deliveryman delete 2` + +Deletes the 2nd delivery man in the list of delivery men. +* `/deliveryman find tom` + +`delete 1` + +Deletes the 1st delivery man in the results of the `find` command. + +==== Clearing all delivery men entries : `/deliveryman clear` + +Clears all entries from the list of delivery men. + +Format: `/deliveryman clear` + +==== Creating a route : `/route create` + +Creates a new route and add it to the list of routes + +Format: `/route create` + +==== Listing all delivery men : `/route` + +Shows a list of all existing routes and assigned delivery men + +Format: `/route` + +==== Deleting a route: `/route delete` + +Deletes the specified route from the list of routes + +Format: `/route delete INDEX` -* `select 1` + -`list` + -`undo` + -The `undo` command fails as there are no undoable commands executed previously. +**** +* Deletes a route at the specified `INDEX`. +* The index refers to the index number shown by `/route`. +* The index *must be a positive integer* 1, 2, 3, ... +**** + +Examples: -* `delete 1` + -`clear` + -`undo` (reverses the `clear` command) + -`undo` (reverses the `delete 1` command) + +* `/route` + +`/route delete 2` + +Deletes the 2nd route in the list of routes. -=== Redoing the previously undone command : `redo` +==== Clearing all routes : `/route clear` -Reverses the most recent `undo` command. + -Format: `redo` +Clears all entries from the list of routes. + +Format: `/route clear` + +==== Adding an order to a route : `/plan` + +Add an existing order to an existing route + +Format: `/plan` o/ORDER_INDEX r/ROUTE_INDEX Examples: -* `delete 1` + -`undo` (reverses the `delete 1` command) + -`redo` (reapplies the `delete 1` command) + +* `/route` + +`/order` + +`/plan o/2 r/1` + +Adds the 2nd order to the 1st route. +* `/order` + +`/route` + +`/plan o/3 r/4` + +Adds the 3rd order to the 4th route. -* `delete 1` + -`redo` + -The `redo` command fails as there are no `undo` commands executed previously. +==== Assign route to delivery man : `/assign` -* `delete 1` + -`clear` + -`undo` (reverses the `clear` command) + -`undo` (reverses the `delete 1` command) + -`redo` (reapplies the `delete 1` command) + -`redo` (reapplies the `clear` command) + -// end::undoredo[] +Assign a delivery man to an existing route + +Format: `/assign d/DELIVERYMAN_INDEX r/ROUTE_INDEX` -=== Clearing all entries : `clear` +Examples: -Clears all entries from the address book. + -Format: `clear` +* `/route` + +`/deliveryman` + +`/plan d/2 r/1` + +Add the 2nd delivery man to the 1st route. +* `/deliveryman` + +`/route` + +`/plan o/3 r/4` + +Add the 3rd delivery man to the 4th route. -=== Exiting the program : `exit` +==== Exiting the program : `/exit` Exits the program. + -Format: `exit` +Format: `/exit` -=== Saving the data +==== Saving the data -Address book data are saved in the hard disk automatically after any command that changes the data. + +FoodZoom data are saved in the hard disk automatically after any command that changes the data. + There is no need to save manually. // tag::dataencryption[] -=== Encrypting data files `[coming in v2.0]` +==== Encrypting data files `[coming in v2.0]` _{explain how the user can enable/disable data encryption}_ // end::dataencryption[] +=== Delivery Man + +==== Viewing help : `/help` + +Format: `help` + +==== Login to system : /login + +Format: `/login u/USERNAME p/PASSWORD` + +Examples: + +* `/login u/deliveryman p/password` + +==== Logout from system : /logout + +Format: `/logout` + +==== Show delivery route : `/route` + +View the assigned route + +Format: `/route` + +==== Listing assigned orders : `/order` + +List details of assigned order/s + +Format: `/order` + +==== Exiting the program : `/exit` + +Exits the program. + +Format: `/exit` + == FAQ *Q*: How do I transfer my data to another Computer? + @@ -242,19 +354,47 @@ _{explain how the user can enable/disable data encryption}_ == Command Summary -* *Add* `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]...` + -e.g. `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague` -* *Clear* : `clear` -* *Delete* : `delete INDEX` + -e.g. `delete 3` -* *Edit* : `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]...` + -e.g. `edit 2 n/James Lee e/jameslee@example.com` -* *Find* : `find KEYWORD [MORE_KEYWORDS]` + -e.g. `find James Jake` -* *List* : `list` -* *Help* : `help` -* *Select* : `select INDEX` + -e.g.`select 2` -* *History* : `history` -* *Undo* : `undo` -* *Redo* : `redo` +=== Manager +* *Login* : `/login u/USERNAME p/PASSWORD` + +e.g. `/login u/manager p/password` +* *Logout* : `/logout` +* *Add order* : `/order add f/FOOD n/NAME p/PHONE_NUMBER` + +e.g. `/order add f/Roti Prata n/James Ho p/22224444 a/block 123, Clementi Rd, 1234665` +* *Clear order* : `/order clear` +* *Delete order* : `/order delete INDEX` + +e.g. `/order delete 3` +* *Edit order* : `/order edit INDEX [f/FOOD] [n/NAME] [p/PHONE_NUMBER]` + +e.g. `/order edit 2 n/James Lee` +* *Find order* : `/order find [n/NAME] [p/PHONE]` + +e.g. `/order find n/James Jake` +* *Listing orders* : `/order` +* *Add delivery man* : `/deliveryman add n/NAME p/PHONE_NUMBER [a/ADDRESS]` + +e.g. `/deliveryman add n/James Ho p/22224444 a/block 123, Clementi Rd, 1234665` +* *Clear delivery men* : `/deliveryman clear` +* *Delete delivery man* : `/deliveryman delete INDEX` + +e.g. `/deliveryman delete 3` +* *Edit delivery man* : `/deliveryman edit INDEX [n/NAME] [p/PHONE_NUMBER] [a/ADDRESS]` + +e.g. `/deliveryman edit 2 n/James Lee` +* *Find delivery man* : `/deliveryman find [n/NAME] [p/PHONE]` + +e.g. `/deliveryman find n/James Jake` +* *Listing delivery men* : `/deliveryman` +* *Create a route* : `/route create` +* *Delete a route* : `/route delete INDEX` + +e.g. `/route delete 1` +* *Listing all routes* : `/route` +* *Clear routes* : `/route clear` +* *Add order to route* : `/plan o/ORDER_INDEX r/ROUTE_INDEX` + +e.g. `/plan o/1 r/1` +* *Assign route to delivery man* : `/assign d/DELIVERYMAN_INDEX r/ROUTE_INDEX` + +e.g. `/assign d/1 r/1` +* *Help* : `/help` +* *Exit the program* : `/exit` + +=== Delivery man +* *Login* : `/login u/USERNAME p/PASSWORD` + +e.g. `/login u/deliveryman p/password` +* *Logout* : `/logout` +* *View delivery route* : `/route` +* *View assigned orders* : `/order` +* *Help* : `/help` +* *Exit the program* : `/exit` \ No newline at end of file From 3411d3b6c1da095e3e4a2bade822b02950580bfe Mon Sep 17 00:00:00 2001 From: Jin Ying Date: Sun, 16 Sep 2018 18:46:58 +0800 Subject: [PATCH 005/739] UserGuide.adoc: Update login and logout command layout for deliveryman --- docs/UserGuide.adoc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index 22c7e6283f29..36c1f1d2169b 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -320,7 +320,7 @@ _{explain how the user can enable/disable data encryption}_ Format: `help` -==== Login to system : /login +==== Login to system : `/login` Format: `/login u/USERNAME p/PASSWORD` @@ -328,7 +328,7 @@ Examples: * `/login u/deliveryman p/password` -==== Logout from system : /logout +==== Logout from system : `/logout` Format: `/logout` From 4777a147e31217dd3b1c8867a76c7627afc1044b Mon Sep 17 00:00:00 2001 From: Jin Ying Date: Sun, 16 Sep 2018 18:57:52 +0800 Subject: [PATCH 006/739] UserGuide.adoc: Add new line at EOF --- docs/UserGuide.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index 36c1f1d2169b..49a65c445d09 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -397,4 +397,4 @@ e.g. `/login u/deliveryman p/password` * *View delivery route* : `/route` * *View assigned orders* : `/order` * *Help* : `/help` -* *Exit the program* : `/exit` \ No newline at end of file +* *Exit the program* : `/exit` From d464ae145cf28894c5c3e19ea2138d128e1a62f7 Mon Sep 17 00:00:00 2001 From: Monika Date: Mon, 17 Sep 2018 21:41:57 +0800 Subject: [PATCH 007/739] Update FoodZoom introduction on README.adoc --- .classpath | 30 ++++++++++++++++++++++++++++++ .project | 23 +++++++++++++++++++++++ README.adoc | 17 ++++++++--------- 3 files changed, 61 insertions(+), 9 deletions(-) create mode 100644 .classpath create mode 100644 .project diff --git a/.classpath b/.classpath new file mode 100644 index 000000000000..e1504452f97a --- /dev/null +++ b/.classpath @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 000000000000..00a110d8d873 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + foodzoom + Project foodzoom created by Buildship. + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.buildship.core.gradleprojectbuilder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.buildship.core.gradleprojectnature + + diff --git a/README.adoc b/README.adoc index 00f1201ed053..4dc455c0ff03 100644 --- a/README.adoc +++ b/README.adoc @@ -1,4 +1,4 @@ -= Address Book (Level 4) += FoodZoom ifdef::env-github,env-browser[:relfileprefix: docs/] https://travis-ci.org/CS2103-AY1819S1-T16-3/main[image:https://travis-ci.org/CS2103-AY1819S1-T16-3/main.svg?branch=master[Build Status]] @@ -14,19 +14,17 @@ ifndef::env-github[] image::images/Ui.png[width="600"] endif::[] -* This is a desktop Address Book application. It has a GUI but most of the user interactions happen using a CLI (Command Line Interface). -* It is a Java sample application intended for students learning Software Engineering while using Java as the main programming language. -* It is *written in OOP fashion*. It provides a *reasonably well-written* code example that is *significantly bigger* (around 6 KLoC)than what students usually write in beginner-level SE modules. -* What's different from https://github.com/se-edu/addressbook-level3[level 3]: -** A more sophisticated GUI that includes a list panel and an in-built Browser. -** More test cases, including automated GUI testing. -** Support for _Build Automation_ using Gradle and for _Continuous Integration_ using Travis CI. +Welcome to FoodZoom! FoodZoom is a desktop food delivery management application designed for food businesses +to streamline their delivery process. FoodZoom is responsive and quick, allowing managers to plan routes for order delivery +and dispatch them to delivery men using a Command Line Interface (CLI). The delivery men can also use this +application to view their delivery routes and increase their efficiency. + +Make your food delivery system more seamless today with FoodZoom! == Site Map * <> * <> -* <> * <> * <> @@ -35,5 +33,6 @@ endif::[] * Some parts of this sample application were inspired by the excellent http://code.makery.ch/library/javafx-8-tutorial/[Java FX tutorial] by _Marco Jakob_. * Libraries used: https://github.com/TestFX/TestFX[TextFX], https://bitbucket.org/controlsfx/controlsfx/[ControlsFX], https://github.com/FasterXML/jackson[Jackson], https://github.com/google/guava[Guava], https://github.com/junit-team/junit5[JUnit5] +* The project is built upon source code based on SE-EDU initiative at https://github.com/se-edu/ == Licence : link:LICENSE[MIT] From 3a6c3078285e1f5294b9a4ed217cf399e06227ab Mon Sep 17 00:00:00 2001 From: Monika Date: Mon, 17 Sep 2018 21:54:31 +0800 Subject: [PATCH 008/739] Removed files added from my vscode --- .classpath | 30 ------------------------------ .project | 23 ----------------------- 2 files changed, 53 deletions(-) delete mode 100644 .classpath delete mode 100644 .project diff --git a/.classpath b/.classpath deleted file mode 100644 index e1504452f97a..000000000000 --- a/.classpath +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/.project b/.project deleted file mode 100644 index 00a110d8d873..000000000000 --- a/.project +++ /dev/null @@ -1,23 +0,0 @@ - - - foodzoom - Project foodzoom created by Buildship. - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.buildship.core.gradleprojectbuilder - - - - - - org.eclipse.jdt.core.javanature - org.eclipse.buildship.core.gradleprojectnature - - From 2a756cb246af46e627bba5dde05ad61d3b76120c Mon Sep 17 00:00:00 2001 From: Monika Date: Mon, 17 Sep 2018 21:59:19 +0800 Subject: [PATCH 009/739] Removed LearningOutcomes.adoc --- docs/LearningOutcomes.adoc | 266 ------------------------------------- 1 file changed, 266 deletions(-) delete mode 100644 docs/LearningOutcomes.adoc diff --git a/docs/LearningOutcomes.adoc b/docs/LearningOutcomes.adoc deleted file mode 100644 index 83cda0927226..000000000000 --- a/docs/LearningOutcomes.adoc +++ /dev/null @@ -1,266 +0,0 @@ -= Learning Outcomes -:site-section: LearningOutcomes -:toc: macro -:toc-title: -:toclevels: 1 -:sectnums: -:sectnumlevels: 1 -:imagesDir: images -:stylesDir: stylesheets -:repoURL: https://github.com/se-edu/addressbook-level4/tree/master - -After studying this code and completing the corresponding exercises, you should be able to, - -toc::[] - -''' - -== Use High-Level Designs `[LO-HighLevelDesign]` - -Note how the <> describes the high-level design using an _Architecture Diagrams_ and high-level sequence diagrams. - -*Resources* - -* https://se-edu.github.io/se-book/architecture/[se-edu/se-book: Design: Architecture] -* https://se-edu.github.io/se-book/design/introduction/multilevelDesign/[se-edu/se-book: Design: Introduction: Multi-Level Design] - -''' - -== Use Event-Driven Programming `[LO-EventDriven]` - -Note how the <> uses events to communicate with components without needing a direct coupling. Also note how the link:{repoURL}/src/main/java/seedu/address/commons/core/index/EventsCenter.java[`EventsCenter.java`] acts as an event dispatcher to facilitate communication between event creators and event consumers. - -*Resources* - -* https://se-edu.github.io/se-book/architecture/architecturalStyles/eventDriven/[se-edu/se-book: Design: Architecture: Architecture Styles: Event-Driven Architectural Style] - -''' - -== Use API Design `[LO-ApiDesign]` - -Note how components of AddressBook have well-defined APIs. For example, the API of the `Logic` component is given in the link:{repoURL}/src/main/java/seedu/address/logic/Logic.java[`Logic.java`] -image:LogicClassDiagram.png[width="800"] - -*Resources* - -* https://se-edu.github.io/se-book/reuse/apis/[se-edu/se-book: Implementation: Reuse: APIs] - -''' - -== Use Assertions `[LO-Assertions]` - -Note how the AddressBook app uses Java ``assert``s to verify assumptions. - -*Resources* - -* https://se-edu.github.io/se-book/errorHandling/assertions/[se-edu/se-book: Implementation: Error Handling: Assertions] - -=== Exercise: Add more assertions - -* Make sure assertions are enabled in your IDE by forcing an assertion failure (e.g. add `assert false;` somewhere in the code and run the code to ensure the runtime reports an assertion failure). -* Add more assertions to AddressBook as you see fit. - - -''' - -== Use Logging `[LO-Logging]` - -Note <>. - -*Resources* - -* https://se-edu.github.io/se-book/errorHandling/logging/[se-edu/se-book: Implementation: Error Handling: Logging] - -=== Exercise: Add more logging - -Add more logging to AddressBook as you see fit. - - -''' - -== Use Defensive Coding `[LO-DefensiveCoding]` - -Note how AddressBook uses the `ReadOnly*` interfaces to prevent objects being modified by clients who are not supposed to modify them. - -*Resources* - -* https://se-edu.github.io/se-book/errorHandling/defensiveProgramming/[se-edu/se-book: Implementation: Error Handling: Defensive Programming] - -=== Exercise: identify more places for defensive coding - -Analyze the AddressBook code/design to identify, - -* where defensive coding is used -* where the code can be more defensive - -''' - -== Use Build Automation `[LO-BuildAutomation]` - -Note <>. - -*Resources* - -* https://se-edu.github.io/se-book/integration/buildAutomation/what/[se-edu/se-book: Implementation: Integration: Build Automation: What] - -=== Exercise: Use gradle to run tasks - -* Use gradle to do these tasks: Run all tests in headless mode, build the jar file. - -=== Exercise: Use gradle to manage dependencies - -* Note how the build script `build.gradle` file manages third party dependencies such as ControlsFx. Update that file to manage a third-party library dependency. - - -''' - -== Use Continuous Integration `[LO-ContinuousIntegration]` - -Note <>. (https://travis-ci.org/se-edu/addressbook-level4[image:https://travis-ci.org/se-edu/addressbook-level4.svg?branch=master[Build Status]]) - -*Resources* - -* https://se-edu.github.io/se-book/integration/buildAutomation/continuousIntegrationDeployment/[se-edu/se-book: Implementation: Integration: Build Automation: CI & CD] - -=== Exercise: Use Travis in your own project - -* Set up Travis to perform CI on your own fork. - - -''' - -== Use Code Coverage `[LO-CodeCoverage]` - -Note how our CI server <>. (https://coveralls.io/github/se-edu/addressbook-level4?branch=master[image:https://coveralls.io/repos/github/se-edu/addressbook-level4/badge.svg?branch=master[Coverage Status]]) After <> for your project, you can visit Coveralls website to find details about the coverage of code pushed to your repo. https://coveralls.io/github/se-edu/addressbook-level4?branch=master[Here] is an example. - -*Resources* - -* https://se-edu.github.io/se-book/testing/testCoverage/[se-edu/se-book: QA: Testing: Test Coverage] - -=== Exercise: Use the IDE to measure coverage locally - -* Use the IDE to measure code coverage of your tests. - -''' - -== Apply Test Case Design Heuristics `[LO-TestCaseDesignHeuristics]` - -The link:{repoURL}/src/test/java/seedu/address/commons/util/StringUtilTest.java[`StringUtilTest.java`] -class gives some examples of how to use _Equivalence Partitions_, _Boundary Value Analysis_, and _Test Input Combination Heuristics_ to improve the efficiency and effectiveness of test cases testing the link:../src/main/java/seedu/address/commons/util/StringUtil.java[`StringUtil.java`] class. - -*Resources* - -* https://se-edu.github.io/se-book/testCaseDesign/[se-edu/se-book: QA: Test Case Design] - -=== Exercise: Apply Test Case Design Heuristics to other places - -* Use the test case design heuristics mentioned above to improve test cases in other places. - -''' - -== Write Integration Tests `[LO-IntegrationTests]` - -Consider the link:{repoURL}/src/test/java/seedu/address/storage/StorageManagerTest.java[`StorageManagerTest.java`] class. - -* Test methods `prefsReadSave()` and `addressBookReadSave()` are integration tests. Note how they simply test if The `StorageManager` class is correctly wired to its dependencies. -* Test method `handleAddressBookChangedEvent_exceptionThrown_eventRaised()` is a unit test because it uses _dependency injection_ to isolate the SUT `StorageManager#handleAddressBookChangedEvent(...)` from its dependencies. - -Compare the above with link:{repoURL}/src/test/java/seedu/address/logic/LogicManagerTest.java[`LogicManagerTest`]. Some of the tests in that class (e.g. `execute_*` methods) are neither integration nor unit tests. They are _integration + unit_ tests because they not only check if the LogicManager is correctly wired to its dependencies, but also checks the working of its dependencies. For example, the following two lines test the `LogicManager` but also the `Parser`. - -[source,java] ----- -@Test -public void execute_invalidCommandFormat_throwsParseException() { - ... - assertParseException(invalidCommand, MESSAGE_UNKNOWN_COMMAND); - assertHistoryCorrect(invalidCommand); -} ----- - -*Resources* - -* https://se-edu.github.io/se-book/testing/testingTypes/[se-edu/se-book: QA: Testing: Testing Types] - -=== Exercise: Write unit and integration tests for the same method. - -* Write a unit test for a high-level method somewhere in the code base (or a new method you wrote). -* Write an integration test for the same method. - -''' - -== Write System Tests `[LO-SystemTesting]` - -Note how tests below `src/test/java/systemtests` package (e.g link:{repoURL}/src/test/java/systemtests/AddCommandSystemTest.java[`AddCommandSystemTest.java`]) are system tests because they test the entire system end-to-end. - -*Resources* - -* https://se-edu.github.io/se-book/testing/testingTypes/[se-edu/se-book: QA: Testing: Testing Types] - -=== Exercise: Write more system tests - -* Write system tests for the new features you add. - -''' - -== Automate GUI Testing `[LO-AutomateGuiTesting]` - -Note how this project uses TextFX library to automate GUI testing, including <>. - -=== Exercise: Write more automated GUI tests - -* Covered by `[LO-SystemTesting]` - -''' - -== Apply Design Patterns `[LO-DesignPatterns]` - -Here are some example design patterns used in the code base. - -* *Singleton Pattern* : link:{repoURL}/src/main/java/seedu/address/commons/core/EventsCenter.java[`EventsCenter.java`] is Singleton class. Its single instance can be accessed using the `EventsCenter.getInstance()` method. -* *Facade Pattern* : link:{repoURL}/src/main/java/seedu/address/storage/StorageManager.java[`StorageManager.java`] is not only shielding the internals of the Storage component from outsiders, it is mostly redirecting method calls to its internal components (i.e. minimal logic in the class itself). Therefore, `StorageManager` can be considered a Facade class. -* *Command Pattern* : The link:{repoURL}/src/main/java/seedu/address/logic/commands/Command.java[`Command.java`] and its sub classes implement the Command Pattern. -* *Observer Pattern* : The <> used by this code base employs the Observer pattern. For example, objects that are interested in events need to have the `@Subscribe` annotation in the class (this is similar to implementing an `\<>` interface) and register with the `EventsCenter`. When something noteworthy happens, an event is raised and the `EventsCenter` notifies all relevant subscribers. Unlike in the Observer pattern in which the `\<>` class is notifying all `\<>` objects, here the `\<>` classes simply raises an event and the `EventsCenter` takes care of the notifications. -* *MVC Pattern* : -** The 'View' part of the application is mostly in the `.fxml` files in the `src/main/resources/view` folder. -** `Model` component contains the 'Model'. However, note that it is possible to view the `Logic` as the model because it hides the `Model` behind it and the view has to go through the `Logic` to access the `Model`. -** Sub classes of link:{repoURL}/src/main/java/seedu/address/ui/UiPart.java[`UiPart`] (e.g. `PersonListPanel` ) act as 'Controllers', each controlling some part of the UI and communicating with the 'Model' (via the `Logic` component which sits between the 'Controller' and the 'Model'). -* *Abstraction Occurrence Pattern* : Not currently used in the app. - -*Resources* - -* https://se-edu.github.io/se-book/designPatterns/[se-edu/se-book: Design: Design Patterns] - -=== Exercise: Discover other possible applications of the patterns - -* Find other possible applications of the patterns to improve the current design. e.g. where else in the design can you apply the Singleton pattern? -* Discuss pros and cons of applying the pattern in each of the situations you found in the previous step. - -=== Exercise: Find more applicable patterns - -* Learn other _Gang of Four_ Design patterns to see if they are applicable to the app. - -''' - -== Use Static Analysis `[LO-StaticAnalysis]` - -Note how this project uses the http://checkstyle.sourceforge.net/[CheckStyle] static analysis tool to confirm compliance with the coding standard. - -*Resources* - -* https://se-edu.github.io/se-book/qualityAssurance/staticAnalysis/[se-edu/se-book: QA: Static Analysis] - -=== Exercise: Use CheckStyle locally to check style compliance - -* Install the CheckStyle plugin for your IDE and use it to check compliance of your code with our style rules (given in `/config/checkstyle/checkstyle.xml`). - -''' - -== Do Code Reviews `[LO-CodeReview]` - -* Note how some PRs in this project have been reviewed by other developers. Here is an https://github.com/se-edu/addressbook-level4/pull/147[example]. -* Also note how we have used https://www.codacy.com[Codacy] to do automate some part of the code review workload (https://www.codacy.com/app/damith/addressbook-level4?utm_source=github.com&utm_medium=referral&utm_content=se-edu/addressbook-level4&utm_campaign=Badge_Grade[image:https://api.codacy.com/project/badge/Grade/fc0b7775cf7f4fdeaf08776f3d8e364a[Codacy Badge]]) - - -=== Exercise: Review a PR - -* Review PRs created by team members. From a524a3012152b9e8da52ca221656f66af6f054c8 Mon Sep 17 00:00:00 2001 From: Monika Date: Mon, 17 Sep 2018 22:04:42 +0800 Subject: [PATCH 010/739] Remove trailing whitespace --- README.adoc | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.adoc b/README.adoc index 4dc455c0ff03..6d23e14f06de 100644 --- a/README.adoc +++ b/README.adoc @@ -14,10 +14,7 @@ ifndef::env-github[] image::images/Ui.png[width="600"] endif::[] -Welcome to FoodZoom! FoodZoom is a desktop food delivery management application designed for food businesses -to streamline their delivery process. FoodZoom is responsive and quick, allowing managers to plan routes for order delivery -and dispatch them to delivery men using a Command Line Interface (CLI). The delivery men can also use this -application to view their delivery routes and increase their efficiency. +Welcome to FoodZoom! FoodZoom is a desktop food delivery management application designed for food businesses to streamline their delivery process. FoodZoom is responsive and quick, allowing managers to plan routes for order delivery and dispatch them to delivery men using a Command Line Interface (CLI). The delivery men can also use this application to view their delivery routes and increase their efficiency. Make your food delivery system more seamless today with FoodZoom! From ce913837bec07656e99060ff1ec227b54b039bec Mon Sep 17 00:00:00 2001 From: Monika Date: Tue, 18 Sep 2018 14:44:30 +0800 Subject: [PATCH 011/739] Update gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 823d175eb670..e1bc6f46c6a9 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,7 @@ classes/ /bin/ src/main/resources/docs/ out/ + +# VSCode +.project +.classpath From eac75a34815e8b0fa4802aa3354a3fc66c97bee1 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Tue, 18 Sep 2018 13:03:22 +0800 Subject: [PATCH 012/739] Updated team name and date in developer guide --- docs/DeveloperGuide.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 817ec81d7832..60f3964a59f4 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -15,7 +15,7 @@ ifdef::env-github[] endif::[] :repoURL: https://github.com/se-edu/addressbook-level4/tree/master -By: `Team SE-EDU`      Since: `Jun 2016`      Licence: `MIT` +By: `Team T16-3`      Since: `Oct 2018`      Licence: `MIT` == Setting up From 4dad3c7a92f103171eb42fd421716e2b3dcdfd84 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Tue, 18 Sep 2018 13:39:22 +0800 Subject: [PATCH 013/739] Updated Appendix C - User Stories in developer guide --- docs/DeveloperGuide.adoc | 55 ++++++++++++++++++++++++++++++++++------ 1 file changed, 47 insertions(+), 8 deletions(-) diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 60f3964a59f4..5d8140564303 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -836,20 +836,59 @@ Priorities: High (must have) - `* * \*`, Medium (nice to have) - `* \*`, Low (un [width="59%",cols="22%,<23%,<25%,<30%",options="header",] |======================================================================= |Priority |As a ... |I want to ... |So that I can... -|`* * *` |new user |see usage instructions |refer to instructions when I forget how to use the App -|`* * *` |user |add a new person | -|`* * *` |user |delete a person |remove entries that I no longer need +|`* * *` |new manager |see usage instructions |refer to instructions when I forget how to use the App -|`* * *` |user |find a person by name |locate details of persons without having to go through the entire list +|`* * *` |manager |login/logout of application |able to protect my data and access it when I need do -|`* *` |user |hide <> by default |minimize chance of someone else seeing them by accident +|`* * *` |manager |add a new customer order | can track the current orders I +have -|`*` |user with many persons in the address book |sort persons by name |locate a person easily -|======================================================================= +|`* * *` |manager |add or remove a deliveryman | can manage the deliverymen available to dispatch orders -_{More to be added}_ +|`* * *` |manager |assign orders to available deliverymen | can send out orders and fulfil customer requests + +|`* * *` |manager |delete an order | can cancel orders that should not be in the queue + +|`* * *` |manager |find an order using phone number | can find specific orders quickly + +|`* *` |manager |update my menu (add/remove food items) | can manage the food items I have and expand by business + +|`* *` |manager |view a basic route for order | have a clearer idea on how to dispatch my deliverymen + +|`* *` |manager |find orders by more files (name, food item etc.) | have more options to locate specific orders + +|`* *` |manager |trace status of orders (estimated timeline) | can have visibility on when orders will be delivered + +|`* *` |manager |have a dashboard to view succesful and failed orders | can have insights on how my outlet is doing + +|`* *` |manager |have a dynamic indication of which deliveryman is available | can send out multiple orders to many deliverymen and have improved service + +|`* *` |manager |view individual customer order history | gain insights on +what specific customers are ordering + +|`* *` |manager |see a thumbnail of deliveryman | can easily tell who is who in one glance + +|`*` |manager |sms confirmation on succesful order | have visibility on how my order delivery service is doing + +|`*` |manager |view a map with placeholders showing orders/deliverymen routes | have immediate view on delivery status and gain insights on my service + +|`* * *` |new deliveryman |see usage instructions |refer to instructions when I forget how to use the App + +|`* * *` |deliveryman |login/logout of application |able to protect my data and access it when I need do + +|`* * *` |deliveryman |list assigned orders |can tell what are the jobs I need to complete + +|`* * *` |deliveryman |get customer contact for orders |can contact customer if there is a need (delivery delay/incorrect address/queries etc.) + +|`* *` |deliveryman |view delivery route for orders |dont have to consult external service to know how to reach the destination + +|`* *` |deliveryman |confirm succesful order in system |the manager can track the completion of orders + +|`*` |deliveryman |send feedback on delivery process |the manager can relate and improve the dispatch service + +|======================================================================= [appendix] == Use Cases From f8eac214b12fc9a05aaef7ca08f1d88da074a38a Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Tue, 18 Sep 2018 13:42:13 +0800 Subject: [PATCH 014/739] Updated Appendix B - Product Scope in developer guide --- docs/DeveloperGuide.adoc | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 5d8140564303..42c439cb39c2 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -820,13 +820,15 @@ See this https://github.com/se-edu/addressbook-level4/pull/599[PR] for the step- *Target user profile*: -* has a need to manage a significant number of contacts -* prefer desktop apps over other types -* can type fast -* prefers typing over mouse input +* Business Owners and Delivery Man +* Needs to manage a large collection of orders +* Needs to dispatch orders to relevant delivery man +* Wants to view route information and calculate timings +* Wants insights on purchases and order history * is reasonably comfortable using CLI apps -*Value proposition*: manage contacts faster than a typical mouse/GUI driven app + +*Value proposition*: Integrate end-to-end systems and streamline food delivery management [appendix] == User Stories From 124c2784bcef9adef9f9a1dfaf6e384fd0d10626 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Tue, 18 Sep 2018 13:44:57 +0800 Subject: [PATCH 015/739] Updated Appendix E - Non Functional Requirements in developer guide --- docs/DeveloperGuide.adoc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 42c439cb39c2..04b8fe10b6be 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -929,10 +929,13 @@ _{More to be added}_ == Non Functional Requirements . Should work on any <> as long as it has Java `9` or higher installed. -. Should be able to hold up to 1000 persons without a noticeable sluggishness in performance for typical usage. -. A user with above average typing speed for regular English text (i.e. not code, not system admin commands) should be able to accomplish most of the tasks faster using commands than using the mouse. +. Should be able to hold up to 1000 orders and should respond within 2 seconds +. The system should be useable by a user by a first timer with the help of the user guide. +. The system should work on both 32-bit and 64-bit environments. +. The system should only show data to the people with the appropriate roles +. The system should persist data about orders for the past year + -_{More to be added}_ [appendix] == Glossary From bb9d09c47d10475d96e17617542144f3aef9157e Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Tue, 18 Sep 2018 13:47:51 +0800 Subject: [PATCH 016/739] Updated Appendix F and E (glossary and NFR) for developer guide --- docs/DeveloperGuide.adoc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 04b8fe10b6be..bccaf263d5df 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -930,9 +930,8 @@ _{More to be added}_ . Should work on any <> as long as it has Java `9` or higher installed. . Should be able to hold up to 1000 orders and should respond within 2 seconds -. The system should be useable by a user by a first timer with the help of the user guide. . The system should work on both 32-bit and 64-bit environments. -. The system should only show data to the people with the appropriate roles +. The system should only show data to the people with the <> . The system should persist data about orders for the past year @@ -943,8 +942,9 @@ _{More to be added}_ [[mainstream-os]] Mainstream OS:: Windows, Linux, Unix, OS-X -[[private-contact-detail]] Private contact detail:: -A contact detail that is not meant to be shared with others +[[appropriate-roles]] Appropriate roles:: +Manager, Delivery Men + [appendix] == Product Survey From 660190ff504a68ba1f10b39a1ab5687ce0d18b75 Mon Sep 17 00:00:00 2001 From: Julius S Date: Tue, 18 Sep 2018 14:51:33 +0800 Subject: [PATCH 017/739] Update Appendix D: Add Use Cases --- docs/DeveloperGuide.adoc | 113 ++++++++++++++++++++++++++++++++++----- 1 file changed, 100 insertions(+), 13 deletions(-) diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index bccaf263d5df..c6e7674c7f5f 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -895,35 +895,122 @@ what specific customers are ordering [appendix] == Use Cases -(For all use cases below, the *System* is the `AddressBook` and the *Actor* is the `user`, unless specified otherwise) +(For all use cases below, the *System* is FoodZoom and the *Actor* is the `user`, unless specified otherwise) [discrete] -=== Use case: Delete person +=== Use Case: Add Order *MSS* -1. User requests to list persons -2. AddressBook shows a list of persons -3. User requests to delete a specific person in the list -4. AddressBook deletes the person +1. Manager requests to add order to the FoodZoom +2. FoodZoom checks the format of the add command +3. FoodZoom adds the order to the database +4. FoodZoom shows success message to the manager + Use case ends. *Extensions* -[none] -* 2a. The list is empty. +* 2a. Add command is invalid +* 2b. FoodZoom shows an error message to the manager + Use case ends. -* 3a. The given index is invalid. + +[discrete] +=== Use Case: Find orders by phone number + +*MSS* + +1. Manager request to list orders by phone number +2. FoodZoom shows a list of orders and their status +3. Use case ends. + +*Extensions* + +* 1a. The phone number not found in the list of orders. + -[none] -** 3a1. AddressBook shows an error message. +Use case ends. + +[discrete] +=== Use Case: Assign Order to Delivery man + +*MSS* + +1. Manager requests to view pending orders +2. FoodZoom lists all orders +3. Manager adds pending orders to planner +4. FoodZoom shows travel route and timing details to Manager for all orders added +5. Manager requests to add route to available deliverymen +6. FoodZoom adds route to delivery man and displays on same screen +7. Manager requests to show routing information +8. Manager shown a screen showing what each deliveryman is assigned + -Use case resumes at step 2. +Use case ends. -_{More to be added}_ +*Extension* + +* 2a. No available orders ++ +Use case ends. + +* 4a. Travel Details cannot be fetched +** 4b. FoodZoom shows relevant error message to user ++ +Use case ends. + +* 5a. No available delivery-men +** 5b. FoodZoom shows error message ++ +Use case ends. + +[discrete] +=== Use Case: Delete Order + +*MSS* + +1. Manager requests to find the order by phone number +2. FoodZoom shows the order +3. Manager requests to delete the order +4. FoodZoom deletes the order +5. FoodZoom shows message order successfully deleted ++ +Use case ends. + +*Extension* + +* The order does not exist. +** 1a. FoodZoom shows message that order does not exist ++ +Use case ends + +[discrete] +=== Use Case: View Assigned Route + +*MSS* + +1. Delivery man logs in to the app +2. FoodZoom shows if delivery man has routes available +3. Delivery man requests for assigned route +4. FoodZoom shows the assigned route +5. Delivery man looks through each destination and checks address info +6. Delivery man checks for status of food +7. Deliveryman logs out to collect food & leave for delivery ++ +Use case ends. + +*Extensions* + +* 2a. Delivery man doesn't have any routes ++ +Use case ends + +* 4a. Location info is unclear to deliveryman +** 4b. Delivery man searches for order to get customer's contact +** 4c. Delivery man contacts customer to clarify location ++ +Use case ends + [appendix] == Non Functional Requirements From 7d25822144413a9556801f1d9040b395f1677109 Mon Sep 17 00:00:00 2001 From: Julius S Date: Tue, 18 Sep 2018 15:41:36 +0800 Subject: [PATCH 018/739] Remove trailing whitespace --- docs/DeveloperGuide.adoc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index c6e7674c7f5f..03fc09943d5a 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -922,7 +922,7 @@ Use case ends. *MSS* -1. Manager request to list orders by phone number +1. Manager request to list orders by phone number 2. FoodZoom shows a list of orders and their status 3. Use case ends. @@ -938,7 +938,7 @@ Use case ends. *MSS* 1. Manager requests to view pending orders -2. FoodZoom lists all orders +2. FoodZoom lists all orders 3. Manager adds pending orders to planner 4. FoodZoom shows travel route and timing details to Manager for all orders added 5. Manager requests to add route to available deliverymen @@ -963,7 +963,7 @@ Use case ends. ** 5b. FoodZoom shows error message + Use case ends. - + [discrete] === Use Case: Delete Order @@ -985,19 +985,19 @@ Use case ends. Use case ends [discrete] -=== Use Case: View Assigned Route +=== Use Case: View Assigned Route *MSS* 1. Delivery man logs in to the app -2. FoodZoom shows if delivery man has routes available +2. FoodZoom shows if delivery man has routes available 3. Delivery man requests for assigned route 4. FoodZoom shows the assigned route 5. Delivery man looks through each destination and checks address info 6. Delivery man checks for status of food 7. Deliveryman logs out to collect food & leave for delivery + -Use case ends. +Use case ends. *Extensions* @@ -1010,7 +1010,7 @@ Use case ends ** 4c. Delivery man contacts customer to clarify location + Use case ends - + [appendix] == Non Functional Requirements From f7afe3ba7b61f41f476f223a4790cb2cbc618f29 Mon Sep 17 00:00:00 2001 From: Monika Date: Tue, 18 Sep 2018 20:49:44 +0800 Subject: [PATCH 019/739] Change UI mockup image --- docs/images/Ui.png | Bin 86102 -> 656703 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/images/Ui.png b/docs/images/Ui.png index 5ec9c527b49c5c32c294ad629a8ee895a33ce0c7..c5aa50e1e726ede216ea963a0a971bcd0fda351b 100644 GIT binary patch literal 656703 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%0A1S4g%>E&8}pVMJ1CAUF}1oRH$y(frDOi7ez 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%0Ay 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

5PG| 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

&#$Z#! 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

7rH9-`EdaJ(V0KYR}F9_OA@6IDZh;#=G9 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'Z~F%m>sw3>x_7((`yxG}@JZJz{&73Y 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 z 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

K;Bx1wSdK;#dj@bQ+U*EOl)p*$`Gwr;WMC%u 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

?OW)`d;a_hU)|2%4);wT-!x0rZ; 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%0DTpzX&y8@ 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 From 5838c6e86c8c076b98bc71def953c75eae1d621d Mon Sep 17 00:00:00 2001 From: Jin Ying Date: Wed, 19 Sep 2018 11:15:30 +0800 Subject: [PATCH 020/739] UserGuide.adoc: Update features and Group Info --- docs/UserGuide.adoc | 95 +++++++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 42 deletions(-) diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index 49a65c445d09..f1cbcbee2f16 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -14,7 +14,7 @@ ifdef::env-github[] endif::[] :repoURL: https://github.com/se-edu/addressbook-level4 -By: `Team SE-EDU` Since: `Jun 2016` Licence: `MIT` +By: `T16-3` Since: `Aug 2018` Licence: `MIT` == Introduction @@ -33,10 +33,10 @@ image::Ui.png[width="790"] e.g. typing *`help`* and pressing kbd:[Enter] will open the help window. . Some example commands you can try: -* *`list`* : lists all contacts -* **`add`**`n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01` : adds a contact named `John Doe` to the Address Book. -* **`delete`**`3` : deletes the 3rd contact shown in the current list -* *`exit`* : exits the app +* *`/order`* : lists all orders +* **`/order add`**`f/Roti Prata n/John Smith p/12345678 a/block 123, Clementi Drive, #01-01` : adds the food `Roti Prata`, customers phone number `12345678` and customer address `block 123, Clementi Drive, #01-01` to the list of orders. +* **`/order delete`**`3` : deletes the 3rd order shown in the current list of orders +* *`/exit`* : exits the app . Refer to <> for details of each command. @@ -48,7 +48,6 @@ e.g. typing *`help`* and pressing kbd:[Enter] will open the help window. * Words in `UPPER_CASE` are the parameters to be supplied by the user e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`. * Items in square brackets are optional e.g `n/NAME [p/PHONE]` can be used as `n/John Doe p/9112` or as `n/John Doe`. -* Items with `…`​ after them can be used multiple times including zero times e.g. `[t/TAG]...` can be used as `{nbsp}` (i.e. 0 times), `t/friend`, `t/friend t/family` etc. * Parameters can be in any order e.g. if the command specifies `n/NAME a/ADDRESS`, `a/ADDRESS n/NAME` is also acceptable. ==== @@ -56,7 +55,7 @@ e.g. typing *`help`* and pressing kbd:[Enter] will open the help window. ==== Viewing help : `/help` -Format: `help` +Format: `/help` ==== Login to system : `/login` @@ -75,10 +74,10 @@ Format: `/logout` Adds an order to the list of orders + Format: `/order add f/FOOD n/NAME p/PHONE a/ADDRESS` -**** -* All fields need to have at least a value. e.g. `n/` is not allowed. -* Able to add more than 1 food items, seperated by a comma. e.g. `f/Roti Prata, Ice Milo`. -**** +[NOTE] +==== +Able to add more than 1 food items, seperated by a comma. e.g. `f/Roti Prata, Ice Milo`. +==== Examples: @@ -93,7 +92,7 @@ Format: `/order` ==== Editing an order : `/order edit` Edits an existing order in the list of orders. + -Format: `/order edit INDEX [f/FOOD] [n/NAME] [p/PHONE] [a/address]` +Format: `/order edit INDEX [f/FOOD] [n/NAME] [p/PHONE] [a/ADDRESS]` **** * Edits the order at the specified `INDEX`. The index refers to the index number shown by `/order`. The index *must be a positive integer* 1, 2, 3, ... @@ -117,8 +116,6 @@ Find orders whose name or phone contain in the given parameter. + Format: `/order find [n/NAME] [p/PHONE]` + **** -* p/ will only match with phone numbers. -* n/ will only match with names. * At least one of the optional fields must be provided. * The search is case insensitive. e.g `tom` will match `Tom` * Partial match is allowed e.g. `9112` will match `91122113`. Likewise, `tom` will match `tommy` @@ -193,21 +190,19 @@ Edits the name and phone number of the 1st delivery man to be `John Doe` and `12 ==== Finding delivery man by name : `/deliveryman find` Find delivery men whose name contain in the given parameter. + -Format: `/order find NAME [MORE NAMES] + +Format: `/deliveryman find n/NAME + **** * The search is case insensitive. e.g `tom` will match `Tom` -* Multiple names must be seperated by a comma. e.g. `/order find john, hilary`. +* Only search one name at a time * The order of the keywords does not matter. e.g. `Alice Smith` will match `Smith Alice` * Partial match is allowed e.g. `tom` will match `tommy` **** Examples: -* `/deliveryman find john` + +* `/deliveryman find n/john` + Returns `john` and `John Doe` -* `/order find john, alice, tom` + -Returns `john`, `alice`, `tom` ==== Deleting a delivery man : `/deliveryman delete` @@ -244,6 +239,27 @@ Format: `/route create` Shows a list of all existing routes and assigned delivery men + Format: `/route` +==== Adding an order to a route : `/route add` + +Add an existing orders to an existing route + +Format: `/route add r/ROUTE_INDEX o/ORDER_INDEX` + +**** +* All fields need to have at least a value. e.g. `o/` is not allowed. +* Able to add more than 1 orders, seperated by a comma. e.g. `o/1, 2, 3`. +**** + +Examples: + +* `/route` + +`/order` + +`/route add o/2 r/1` + +Adds the 2nd order to the 1st route. +* `/order` + +`/route` + +`/route add r/3 o/4, 5, 6` + +Adds the 4th, 5th, 6th orders to the 3rd route. + ==== Deleting a route: `/route delete` Deletes the specified route from the list of routes + @@ -266,22 +282,6 @@ Deletes the 2nd route in the list of routes. Clears all entries from the list of routes. + Format: `/route clear` -==== Adding an order to a route : `/plan` - -Add an existing order to an existing route + -Format: `/plan` o/ORDER_INDEX r/ROUTE_INDEX - -Examples: - -* `/route` + -`/order` + -`/plan o/2 r/1` + -Adds the 2nd order to the 1st route. -* `/order` + -`/route` + -`/plan o/3 r/4` + -Adds the 3rd order to the 4th route. - ==== Assign route to delivery man : `/assign` Assign a delivery man to an existing route + @@ -291,13 +291,23 @@ Examples: * `/route` + `/deliveryman` + -`/plan d/2 r/1` + +`/assign d/2 r/1` + Add the 2nd delivery man to the 1st route. * `/deliveryman` + `/route` + -`/plan o/3 r/4` + +`/assign r/4 d/3` + Add the 3rd delivery man to the 4th route. +==== Listing entered commands : `/history` + +Lists all the commands that you have entered in reverse chronological order. + +Format: `/history` + +[NOTE] +==== +Pressing the kbd:[↑] and kbd:[↓] arrows will display the previous and next input respectively in the command box. +==== + ==== Exiting the program : `/exit` Exits the program. + @@ -318,7 +328,7 @@ _{explain how the user can enable/disable data encryption}_ ==== Viewing help : `/help` -Format: `help` +Format: `/help` ==== Login to system : `/login` @@ -334,7 +344,7 @@ Format: `/logout` ==== Show delivery route : `/route` -View the assigned route + +View the assigned route/s + Format: `/route` ==== Listing assigned orders : `/order` @@ -375,7 +385,7 @@ e.g. `/deliveryman add n/James Ho p/22224444 a/block 123, Clementi Rd, 1234665` e.g. `/deliveryman delete 3` * *Edit delivery man* : `/deliveryman edit INDEX [n/NAME] [p/PHONE_NUMBER] [a/ADDRESS]` + e.g. `/deliveryman edit 2 n/James Lee` -* *Find delivery man* : `/deliveryman find [n/NAME] [p/PHONE]` + +* *Find delivery man* : `/deliveryman find n/NAME` + e.g. `/deliveryman find n/James Jake` * *Listing delivery men* : `/deliveryman` * *Create a route* : `/route create` @@ -383,10 +393,11 @@ e.g. `/deliveryman find n/James Jake` e.g. `/route delete 1` * *Listing all routes* : `/route` * *Clear routes* : `/route clear` -* *Add order to route* : `/plan o/ORDER_INDEX r/ROUTE_INDEX` + -e.g. `/plan o/1 r/1` +* *Add order to route* : `/route add r/ROUTE_INDEX o/ORDER_INDEX` + +e.g. `/route add o/1, 2, 3 r/1` * *Assign route to delivery man* : `/assign d/DELIVERYMAN_INDEX r/ROUTE_INDEX` + e.g. `/assign d/1 r/1` +* *History* : `/history` * *Help* : `/help` * *Exit the program* : `/exit` From c08ee8d6093fa5a70b7ac647d9959ba8b805af7d Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 19 Sep 2018 14:15:01 +0800 Subject: [PATCH 021/739] ContactUs.adoc: Update contact and issue tracker url --- docs/ContactUs.adoc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/ContactUs.adoc b/docs/ContactUs.adoc index 5de5363abffd..454edc084162 100644 --- a/docs/ContactUs.adoc +++ b/docs/ContactUs.adoc @@ -2,6 +2,7 @@ :site-section: ContactUs :stylesDir: stylesheets -* *Bug reports, Suggestions* : Post in our https://github.com/se-edu/addressbook-level4/issues[issue tracker] if you noticed bugs or have suggestions on how to improve. +* *Bug reports, Suggestions* : Post in our https://github.com/CS2103-AY1819S1-T16-3/main/issues[issue tracker] if you +noticed bugs or have suggestions on how to improve. * *Contributing* : We welcome pull requests. Follow the process described https://github.com/oss-generic/process[here] -* *Email us* : You can also reach us at `damith [at] comp.nus.edu.sg` +* *Email us* : You can also reach us at `e0176905 [at] comp.nus.edu.sg` From 9ebcaa1a32915a889a134674bbfcc89e08b14b6f Mon Sep 17 00:00:00 2001 From: Julius S Date: Wed, 19 Sep 2018 19:45:55 +0800 Subject: [PATCH 022/739] Change "users" to Managers & Deliverymen --- docs/DeveloperGuide.adoc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 03fc09943d5a..48d6220f44ef 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -895,7 +895,7 @@ what specific customers are ordering [appendix] == Use Cases -(For all use cases below, the *System* is FoodZoom and the *Actor* is the `user`, unless specified otherwise) +(For the use cases below, the *System* is FoodZoom and the *Actor* is the Managers) [discrete] === Use Case: Add Order @@ -984,6 +984,8 @@ Use case ends. + Use case ends +(For the use cases below, the *System* is FoodZoom and the *Actor* is the Delivery-men) + [discrete] === Use Case: View Assigned Route From b57d7aecca70d97eb44970541a03b8ce652b403f Mon Sep 17 00:00:00 2001 From: Julius S Date: Tue, 25 Sep 2018 10:23:21 +0800 Subject: [PATCH 023/739] Update repo URLs and add roles --- docs/AboutUs.adoc | 10 +++++----- docs/DeveloperGuide.adoc | 2 +- docs/UserGuide.adoc | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/AboutUs.adoc b/docs/AboutUs.adoc index 5bcc203ee74d..fde5866be2be 100644 --- a/docs/AboutUs.adoc +++ b/docs/AboutUs.adoc @@ -14,7 +14,7 @@ We are a team based in the http://www.comp.nus.edu.sg[School of Computing, Natio image::rrtheonlyone.jpg[width="150", align="left"] {empty}[https://github.com/rrtheonlyone[github]] [https://www.linkedin.com/in/rahul-rajesh-979919110/[portfolio]] -Role: Developer +Roles: Integration, code quality ''' @@ -22,7 +22,7 @@ Role: Developer image::juxd.jpg[width="150", align="left"] {empty}[https://github.com/juxd[github]] [<>] -Role: Developer + +Roles: Code quality and testing + ''' @@ -30,7 +30,7 @@ Role: Developer + image::monmanuela.jpg[width="150", align="left"] {empty}[http://github.com/yijinl[github]] [https://www.linkedin.com/in/monika-manuela-hengki-a9383a54[portfolio]] -Role: Developer + +Roles: Team lead, UI + ''' @@ -38,7 +38,7 @@ Role: Developer + image::kohchihao.jpg[width="150", align="left"] {empty}[https://github.com/kohchihao[github]] [https://www.kohchihao.com/[portfolio]] -Role: Developer + +Roles: Scheduling and tracking deliverables and deadlines + ''' @@ -46,6 +46,6 @@ Role: Developer + image::jinyingtan.jpg[width="150", align="left"] {empty}[https://github.com/jinyingtan[github]] [https://www.tanjinying.com/[portfolio]] -Role: Developer + +Role: Documentation, UI + ''' diff --git a/docs/DeveloperGuide.adoc b/docs/DeveloperGuide.adoc index 48d6220f44ef..80e1a7cb7791 100644 --- a/docs/DeveloperGuide.adoc +++ b/docs/DeveloperGuide.adoc @@ -13,7 +13,7 @@ ifdef::env-github[] :warning-caption: :warning: :experimental: endif::[] -:repoURL: https://github.com/se-edu/addressbook-level4/tree/master +:repoURL: https://github.com/CS2103-AY1819S1-T16-3/main By: `Team T16-3`      Since: `Oct 2018`      Licence: `MIT` diff --git a/docs/UserGuide.adoc b/docs/UserGuide.adoc index f1cbcbee2f16..187583eddf2b 100644 --- a/docs/UserGuide.adoc +++ b/docs/UserGuide.adoc @@ -12,7 +12,7 @@ ifdef::env-github[] :tip-caption: :bulb: :note-caption: :information_source: endif::[] -:repoURL: https://github.com/se-edu/addressbook-level4 +:repoURL: https://github.com/CS2103-AY1819S1-T16-3/main By: `T16-3` Since: `Aug 2018` Licence: `MIT` From 93562db9e39455979605e0e9e7ec510d25cedfb7 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Tue, 25 Sep 2018 22:48:19 +0800 Subject: [PATCH 024/739] Add Username.java --- .../seedu/address/model/person/Username.java | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 src/main/java/seedu/address/model/person/Username.java diff --git a/src/main/java/seedu/address/model/person/Username.java b/src/main/java/seedu/address/model/person/Username.java new file mode 100644 index 000000000000..b806d3011d31 --- /dev/null +++ b/src/main/java/seedu/address/model/person/Username.java @@ -0,0 +1,53 @@ +package seedu.address.model.person; + +import static java.util.Objects.requireNonNull; + +public class Username { + + public static final String MESSAGE_USERNAME_CONSTRAINTS = + "Username should only contain alphanumeric characters and it should not be blank"; + + /* + * The first character of the username must not be a whitespace, + * otherwise " " (a blank string) becomes a valid input. + */ + public static final String USERNAME_VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum}]*"; + public final String value; + + + /** + * Constructs a {@code Username}. + * + * @param username A valid username. + */ + public Username(String username) { + requireNonNull(username); + isValidUsername(username); + value = username; + } + + + /** + * Returns true if a given string is a valid username. + */ + public static boolean isValidUsername(String test) { + return test.matches(USERNAME_VALIDATION_REGEX); + } + + @Override + public String toString() { + return value; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof Username // instanceof handles nulls + && value.equals(((Username) other).value)); // state check + } + + @Override + public int hashCode() { + return value.hashCode(); + } +} From 101200fca6965f2e40025e36247789c9680cf187 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Tue, 25 Sep 2018 22:48:53 +0800 Subject: [PATCH 025/739] Add UsernameTest.java for Username.java --- .../address/model/person/UsernameTest.java | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 src/test/java/seedu/address/model/person/UsernameTest.java diff --git a/src/test/java/seedu/address/model/person/UsernameTest.java b/src/test/java/seedu/address/model/person/UsernameTest.java new file mode 100644 index 000000000000..6631383ebf6c --- /dev/null +++ b/src/test/java/seedu/address/model/person/UsernameTest.java @@ -0,0 +1,27 @@ +package seedu.address.model.person; + +import org.junit.jupiter.api.Test; +import seedu.address.testutil.Assert; + +import static org.junit.Assert.assertFalse; +import static org.junit.jupiter.api.Assertions.*; + +class UsernameTest { + + @Test + void isValidUsername() { + // null phone number + Assert.assertThrows(NullPointerException.class, () -> Username.isValidUsername(null)); + + //invalid username + assertFalse(Username.isValidUsername("")); // empty string + assertFalse(Username.isValidUsername(" ")); // spaces only + assertFalse(Username.isValidUsername("manager12@`")); //alphanumeric with special character + assertFalse(Username.isValidUsername("koh chi hao 12")); //alphanumeric with spacing + assertFalse(Username.isValidUsername("koh chi hao 12@/~")); //alphanumeric, spacing and special character + assertFalse(Username.isValidUsername("@`/&*^%$#@")); //special character + + //valid username + assertTrue(Username.isValidUsername("manager")); //alphanumeric + } +} \ No newline at end of file From cb0ef1000f5fd62b5cb869c12106b7b9b3757abc Mon Sep 17 00:00:00 2001 From: marcus koh Date: Tue, 25 Sep 2018 23:26:09 +0800 Subject: [PATCH 026/739] Username.java: Add class Javadoc --- src/main/java/seedu/address/model/person/Username.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/seedu/address/model/person/Username.java b/src/main/java/seedu/address/model/person/Username.java index b806d3011d31..9dfd5edb2d5f 100644 --- a/src/main/java/seedu/address/model/person/Username.java +++ b/src/main/java/seedu/address/model/person/Username.java @@ -2,6 +2,10 @@ import static java.util.Objects.requireNonNull; +/** + * Represents a Person's username in FoodZoom. + * Guarantees: immutable; is valid as declared in {@link #isValidUsername(String)} + */ public class Username { public static final String MESSAGE_USERNAME_CONSTRAINTS = From 64142b1b907dd2f6fe38dbfaf279637cedbb15fe Mon Sep 17 00:00:00 2001 From: marcus koh Date: Tue, 25 Sep 2018 23:27:04 +0800 Subject: [PATCH 027/739] UsernameTest.java: Update import styles --- .../java/seedu/address/model/person/UsernameTest.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/test/java/seedu/address/model/person/UsernameTest.java b/src/test/java/seedu/address/model/person/UsernameTest.java index 6631383ebf6c..31401367a12a 100644 --- a/src/test/java/seedu/address/model/person/UsernameTest.java +++ b/src/test/java/seedu/address/model/person/UsernameTest.java @@ -1,10 +1,11 @@ package seedu.address.model.person; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + import org.junit.jupiter.api.Test; -import seedu.address.testutil.Assert; -import static org.junit.Assert.assertFalse; -import static org.junit.jupiter.api.Assertions.*; +import seedu.address.testutil.Assert; class UsernameTest { @@ -24,4 +25,4 @@ void isValidUsername() { //valid username assertTrue(Username.isValidUsername("manager")); //alphanumeric } -} \ No newline at end of file +} From d11c7ce27dfe10ca99c21a4cfae77530d9325021 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Tue, 25 Sep 2018 23:28:35 +0800 Subject: [PATCH 028/739] UsernameTest.java: Update isValidUsername() method comments --- src/test/java/seedu/address/model/person/UsernameTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/seedu/address/model/person/UsernameTest.java b/src/test/java/seedu/address/model/person/UsernameTest.java index 31401367a12a..d1ec4544974b 100644 --- a/src/test/java/seedu/address/model/person/UsernameTest.java +++ b/src/test/java/seedu/address/model/person/UsernameTest.java @@ -11,7 +11,7 @@ class UsernameTest { @Test void isValidUsername() { - // null phone number + // null username Assert.assertThrows(NullPointerException.class, () -> Username.isValidUsername(null)); //invalid username From e5aa948e9b49cd3db19c7ffd3ae07a6f9b03d75c Mon Sep 17 00:00:00 2001 From: marcus koh Date: Tue, 25 Sep 2018 23:44:47 +0800 Subject: [PATCH 029/739] UsernameTest.java: Update isValidUsername() with more test --- src/test/java/seedu/address/model/person/UsernameTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/seedu/address/model/person/UsernameTest.java b/src/test/java/seedu/address/model/person/UsernameTest.java index d1ec4544974b..8d6324f6fe1f 100644 --- a/src/test/java/seedu/address/model/person/UsernameTest.java +++ b/src/test/java/seedu/address/model/person/UsernameTest.java @@ -24,5 +24,6 @@ void isValidUsername() { //valid username assertTrue(Username.isValidUsername("manager")); //alphanumeric + assertTrue(Username.isValidUsername("manager12")); //alphanumeric } } From d66d7e7fdb2560668bd3c5481fd8928999350366 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Tue, 25 Sep 2018 23:48:41 +0800 Subject: [PATCH 030/739] Add Password.java --- .../seedu/address/model/person/Password.java | 58 +++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 src/main/java/seedu/address/model/person/Password.java diff --git a/src/main/java/seedu/address/model/person/Password.java b/src/main/java/seedu/address/model/person/Password.java new file mode 100644 index 000000000000..5edf5780a091 --- /dev/null +++ b/src/main/java/seedu/address/model/person/Password.java @@ -0,0 +1,58 @@ +package seedu.address.model.person; + +import static java.util.Objects.requireNonNull; + +/** + * Represents a Person's password in FoodZoom. + * Guarantees: immutable; is valid as declared in {@link #isValidPassword(String)} + */ +public class Password { + + public static final String MESSAGE_PASSWORD_CONSTRAINTS = + "Password should only contain alphanumeric characters , should be at least 6 characters " + + "and it should not be blank"; + + /* + * The first character of the username must not be a whitespace, + * otherwise " " (a blank string) becomes a valid input. + */ + public static final String PASSWORD_VALIDATION_REGEX = "[\\p{Alnum}]{6,}"; + public final String value; + + + /** + * Constructs a {@code Password}. + * + * @param password A valid username. + */ + public Password(String password) { + requireNonNull(password); + isValidPassword(password); + value = password; + } + + + /** + * Returns true if a given string is a valid username. + */ + public static boolean isValidPassword(String test) { + return test.matches(PASSWORD_VALIDATION_REGEX); + } + + @Override + public String toString() { + return value; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof Password // instanceof handles nulls + && value.equals(((Password) other).value)); // state check + } + + @Override + public int hashCode() { + return value.hashCode(); + } +} From 1787db88d962448edc3cd7804c9ab985bbf2dbc4 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Tue, 25 Sep 2018 23:49:10 +0800 Subject: [PATCH 031/739] Add PasswordTest.java for Password.java --- .../address/model/person/PasswordTest.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 src/test/java/seedu/address/model/person/PasswordTest.java diff --git a/src/test/java/seedu/address/model/person/PasswordTest.java b/src/test/java/seedu/address/model/person/PasswordTest.java new file mode 100644 index 000000000000..20b636723c09 --- /dev/null +++ b/src/test/java/seedu/address/model/person/PasswordTest.java @@ -0,0 +1,33 @@ +package seedu.address.model.person; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import org.junit.jupiter.api.Test; + +import seedu.address.testutil.Assert; + +class PasswordTest { + + @Test + void isValidPassword() { + // null password + Assert.assertThrows(NullPointerException.class, () -> Password.isValidPassword(null)); + + //invalid password + assertFalse(Password.isValidPassword("")); // empty string + assertFalse(Password.isValidPassword(" ")); // spaces only + assertFalse(Password.isValidPassword("mana")); //4 characters only + assertFalse(Password.isValidPassword("mana@@")); //6 characters with special character + assertFalse(Password.isValidPassword("manager12@`")); //alphanumeric with special character + assertFalse(Password.isValidPassword("koh chi hao 12")); //alphanumeric with spacing + assertFalse(Password.isValidPassword("koh chi hao 12@/~")); //alphanumeric, spacing and special character + assertFalse(Password.isValidPassword("@`/&*^%$#@")); //special character + + //valid password + assertTrue(Password.isValidPassword("manage")); //6 alphabet character + assertTrue(Password.isValidPassword("managerpass12")); //more than 6 characters + assertTrue(Password.isValidPassword("mana12")); // 6 alphanumeric character + assertTrue(Password.isValidPassword("123456")); //6 digits only + } +} From 70c4230ac7d8870f07871f6cd95bdd908a44aa8a Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 00:06:58 +0800 Subject: [PATCH 032/739] Password.java: Update javadocs --- src/main/java/seedu/address/model/person/Password.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/seedu/address/model/person/Password.java b/src/main/java/seedu/address/model/person/Password.java index 5edf5780a091..9f55b1ef4a6b 100644 --- a/src/main/java/seedu/address/model/person/Password.java +++ b/src/main/java/seedu/address/model/person/Password.java @@ -13,7 +13,7 @@ public class Password { + "and it should not be blank"; /* - * The first character of the username must not be a whitespace, + * The first character of the password must not be a whitespace, * otherwise " " (a blank string) becomes a valid input. */ public static final String PASSWORD_VALIDATION_REGEX = "[\\p{Alnum}]{6,}"; @@ -23,7 +23,7 @@ public class Password { /** * Constructs a {@code Password}. * - * @param password A valid username. + * @param password A valid password. */ public Password(String password) { requireNonNull(password); @@ -33,7 +33,7 @@ public Password(String password) { /** - * Returns true if a given string is a valid username. + * Returns true if a given string is a valid password. */ public static boolean isValidPassword(String test) { return test.matches(PASSWORD_VALIDATION_REGEX); From b3ec734dc857a0f5dff55ce0fb8f329b8c15059c Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 09:24:07 +0800 Subject: [PATCH 033/739] Add User.java and Manager.java --- .../seedu/address/model/user/Manager.java | 23 +++++ .../java/seedu/address/model/user/User.java | 85 +++++++++++++++++++ 2 files changed, 108 insertions(+) create mode 100644 src/main/java/seedu/address/model/user/Manager.java create mode 100644 src/main/java/seedu/address/model/user/User.java diff --git a/src/main/java/seedu/address/model/user/Manager.java b/src/main/java/seedu/address/model/user/Manager.java new file mode 100644 index 000000000000..633f48bdfd9c --- /dev/null +++ b/src/main/java/seedu/address/model/user/Manager.java @@ -0,0 +1,23 @@ +package seedu.address.model.user; + +import seedu.address.model.person.Name; +import seedu.address.model.person.Password; +import seedu.address.model.person.Username; + + +public class Manager extends User{ + + /** + * Every field must be present and not null. + * + * @param name + * @param username + * @param password + */ + public Manager(Name name, Username username, Password password) { + super(name, username, password); + } + + +} + diff --git a/src/main/java/seedu/address/model/user/User.java b/src/main/java/seedu/address/model/user/User.java new file mode 100644 index 000000000000..aeb24a7e6360 --- /dev/null +++ b/src/main/java/seedu/address/model/user/User.java @@ -0,0 +1,85 @@ +package seedu.address.model.user; + +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + +import java.util.Objects; + +import seedu.address.model.person.Name; +import seedu.address.model.person.Password; +import seedu.address.model.person.Person; +import seedu.address.model.person.Username; + +/** + * Represents a User in the FoodZoom. + * Guarantees: details are present and not null, field values are validated, immutable. + */ +public abstract class User { + + // Identity fields + private final Name name; + private final Username username; + private final Password password; + + /** + * Every field must be present and not null. + */ + public User(Name name, Username username, Password password) { + requireAllNonNull(name, username, password); + this.name = name; + this.username = username; + this.password = password; + } + + public Name getName() { + return name; + } + + public Username getUsername() { + return username; + } + + private Password getPassword() { + return password; + } + + + /** + * Returns true if both persons have the same identity and data fields. + * This defines a stronger notion of equality between two persons. + */ + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof Person)) { + return false; + } + + User otherPerson = (User) other; + return otherPerson.getName().equals(getName()) + && otherPerson.getUsername().equals(getUsername()) + && otherPerson.getPassword().equals(getPassword()); + + } + + @Override + public int hashCode() { + // use this method for custom fields hashing instead of implementing your own + return Objects.hash(name, username, password); + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append(getName()) + .append(" Username: ") + .append(getUsername()) + .append(" Password: ") + .append(getPassword()); + + return builder.toString(); + } + +} From acc704c160a9b97c03e6c32bc7531f4053383982 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 09:25:04 +0800 Subject: [PATCH 034/739] CliSyntax.java: Update with username and password syntax --- src/main/java/seedu/address/logic/parser/CliSyntax.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java index 75b1a9bf1190..fef25708a1fb 100644 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ b/src/main/java/seedu/address/logic/parser/CliSyntax.java @@ -12,4 +12,8 @@ public class CliSyntax { public static final Prefix PREFIX_ADDRESS = new Prefix("a/"); public static final Prefix PREFIX_TAG = new Prefix("t/"); + + public static final Prefix PREFIX_USERNAME = new Prefix("u/"); + public static final Prefix PREFIX_PASSWORD = new Prefix("pw/"); + } From 7355c5157a7132a4364eb13288deb1e677c146bc Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 09:26:15 +0800 Subject: [PATCH 035/739] Add SignUpCommand.java --- .../address/logic/commands/SignUpCommand.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 src/main/java/seedu/address/logic/commands/SignUpCommand.java diff --git a/src/main/java/seedu/address/logic/commands/SignUpCommand.java b/src/main/java/seedu/address/logic/commands/SignUpCommand.java new file mode 100644 index 000000000000..462d1b627582 --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/SignUpCommand.java @@ -0,0 +1,38 @@ +package seedu.address.logic.commands; + +import seedu.address.logic.CommandHistory; +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Model; +import seedu.address.model.person.Person; +import seedu.address.model.user.User; + +import static java.util.Objects.requireNonNull; +import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_PASSWORD; +import static seedu.address.logic.parser.CliSyntax.PREFIX_USERNAME; + +public class SignUpCommand extends Command { + + public static final String COMMAND_WORD = "/signup"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a user to FoodZoom. " + + "Parameters: " + + PREFIX_NAME + "NAME " + + PREFIX_USERNAME + "USERNAME " + + PREFIX_PASSWORD + "PASSWORD \n" + + "Example: " + COMMAND_WORD + " " + + PREFIX_NAME + "John Doe " + + PREFIX_USERNAME + "johndoe " + + PREFIX_PASSWORD + "johndoepassword"; + + public static final String MESSAGE_SUCCESS = "New person added: %1$s"; + public static final String MESSAGE_DUPLICATE_USER = "This user already exists in FoodZoom."; + + + + @Override + public CommandResult execute(Model model, CommandHistory history) throws CommandException { + + return null; + } +} From 6af819f03cde65a55c01b12ec13c43e2439cf161 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 09:27:58 +0800 Subject: [PATCH 036/739] AddressBookParser.java: Add new SignUp command --- .../address/logic/parser/AddressBookParser.java | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index b7d57f5db86a..8db6a25bbd78 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -1,11 +1,5 @@ package seedu.address.logic.parser; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; - -import java.util.regex.Matcher; -import java.util.regex.Pattern; - import seedu.address.logic.commands.AddCommand; import seedu.address.logic.commands.ClearCommand; import seedu.address.logic.commands.Command; @@ -18,9 +12,16 @@ import seedu.address.logic.commands.ListCommand; import seedu.address.logic.commands.RedoCommand; import seedu.address.logic.commands.SelectCommand; +import seedu.address.logic.commands.SignUpCommand; import seedu.address.logic.commands.UndoCommand; import seedu.address.logic.parser.exceptions.ParseException; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; + /** * Parses user input. */ @@ -84,6 +85,9 @@ public Command parseCommand(String userInput) throws ParseException { case RedoCommand.COMMAND_WORD: return new RedoCommand(); + case SignUpCommand.COMMAND_WORD: + return new HelpCommand(); + default: throw new ParseException(MESSAGE_UNKNOWN_COMMAND); } From f02f9ea1d9bc88c680618681f593015fd829d275 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 09:37:30 +0800 Subject: [PATCH 037/739] ParserUtil.java: Add arePrefixesPresent() static method --- src/main/java/seedu/address/logic/parser/ParserUtil.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/address/logic/parser/ParserUtil.java index 76daf40807e2..89df5b646dc3 100644 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/address/logic/parser/ParserUtil.java @@ -5,6 +5,7 @@ import java.util.Collection; import java.util.HashSet; import java.util.Set; +import java.util.stream.Stream; import seedu.address.commons.core.index.Index; import seedu.address.commons.util.StringUtil; @@ -121,4 +122,12 @@ public static Set parseTags(Collection tags) throws ParseException } return tagSet; } + + /** + * Returns true if none of the prefixes contains empty {@code Optional} values in the given + * {@code ArgumentMultimap}. + */ + public static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) { + return Stream.of(prefixes).allMatch(prefix -> argumentMultimap.getValue(prefix).isPresent()); + } } From c5da0d6eae548e90c89a939539d6d6954c997e89 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 09:38:03 +0800 Subject: [PATCH 038/739] AddCommandParser.java: Remove arePrefixesPrent() method --- .../seedu/address/logic/parser/AddCommandParser.java | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java index 3b8bfa035e83..7740b936f3f4 100644 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddCommandParser.java @@ -33,7 +33,7 @@ public AddCommand parse(String args) throws ParseException { ArgumentMultimap argMultimap = ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); - if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL) + if (!ParserUtil.arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL) || !argMultimap.getPreamble().isEmpty()) { throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); } @@ -48,13 +48,4 @@ public AddCommand parse(String args) throws ParseException { return new AddCommand(person); } - - /** - * Returns true if none of the prefixes contains empty {@code Optional} values in the given - * {@code ArgumentMultimap}. - */ - private static boolean arePrefixesPresent(ArgumentMultimap argumentMultimap, Prefix... prefixes) { - return Stream.of(prefixes).allMatch(prefix -> argumentMultimap.getValue(prefix).isPresent()); - } - } From 3b6ba30ead63a23dfdd94dc3ea329f7aea1af146 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 09:49:15 +0800 Subject: [PATCH 039/739] ParserUtil.java: Add parseUsername() and parsePassword() method --- .../address/logic/parser/ParserUtil.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/address/logic/parser/ParserUtil.java index 89df5b646dc3..79c69127e12a 100644 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/address/logic/parser/ParserUtil.java @@ -13,7 +13,9 @@ import seedu.address.model.person.Address; import seedu.address.model.person.Email; import seedu.address.model.person.Name; +import seedu.address.model.person.Password; import seedu.address.model.person.Phone; +import seedu.address.model.person.Username; import seedu.address.model.tag.Tag; /** @@ -123,6 +125,36 @@ public static Set parseTags(Collection tags) throws ParseException return tagSet; } + /** + * Parses a {@code String username} into an {@code Username}. + * Leading and trailing whitespaces will be trimmed. + * + * @throws ParseException if the given {@code username} is invalid. + */ + public static Username parseUsername(String username) throws ParseException { + requireNonNull(username); + String trimmedUsername = username.trim(); + if (!Username.isValidUsername(trimmedUsername)) { + throw new ParseException(Username.MESSAGE_USERNAME_CONSTRAINTS); + } + return new Username(trimmedUsername); + } + + /** + * Parses a {@code String password} into an {@code Password}. + * Leading and trailing whitespaces will be trimmed. + * + * @throws ParseException if the given {@code password} is invalid. + */ + public static Password parsePassword(String password) throws ParseException { + requireNonNull(password); + String trimmedPassword = password.trim(); + if (!Password.isValidPassword(trimmedPassword)) { + throw new ParseException(Password.MESSAGE_PASSWORD_CONSTRAINTS); + } + return new Password(trimmedPassword); + } + /** * Returns true if none of the prefixes contains empty {@code Optional} values in the given * {@code ArgumentMultimap}. From 1f99194652c88dd9e8228d7c95a78f922d4addd5 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 09:50:06 +0800 Subject: [PATCH 040/739] SignUpCommand.java: Add constructor --- .../java/seedu/address/logic/commands/SignUpCommand.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/seedu/address/logic/commands/SignUpCommand.java b/src/main/java/seedu/address/logic/commands/SignUpCommand.java index 462d1b627582..1b4fe9d4efe8 100644 --- a/src/main/java/seedu/address/logic/commands/SignUpCommand.java +++ b/src/main/java/seedu/address/logic/commands/SignUpCommand.java @@ -4,6 +4,7 @@ import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; import seedu.address.model.person.Person; +import seedu.address.model.user.Manager; import seedu.address.model.user.User; import static java.util.Objects.requireNonNull; @@ -28,7 +29,15 @@ public class SignUpCommand extends Command { public static final String MESSAGE_SUCCESS = "New person added: %1$s"; public static final String MESSAGE_DUPLICATE_USER = "This user already exists in FoodZoom."; + private final Manager toAdd; + /** + * Creates an SignUpCommand to add the specified {@code Manager} + */ + public SignUpCommand(Manager manager) { + requireNonNull(manager); + toAdd = manager; + } @Override public CommandResult execute(Model model, CommandHistory history) throws CommandException { From cc8dbe9cc08fd6d7e52f0010eb49ba25dbb681de Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 09:50:53 +0800 Subject: [PATCH 041/739] Add SignUpCommandParser.java --- .../logic/parser/SignUpCommandParser.java | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/main/java/seedu/address/logic/parser/SignUpCommandParser.java diff --git a/src/main/java/seedu/address/logic/parser/SignUpCommandParser.java b/src/main/java/seedu/address/logic/parser/SignUpCommandParser.java new file mode 100644 index 000000000000..71df66d83034 --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/SignUpCommandParser.java @@ -0,0 +1,37 @@ +package seedu.address.logic.parser; + +import seedu.address.logic.commands.SignUpCommand; +import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.person.Name; +import seedu.address.model.person.Password; +import seedu.address.model.person.Username; +import seedu.address.model.user.Manager; +import seedu.address.model.user.User; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_PASSWORD; +import static seedu.address.logic.parser.CliSyntax.PREFIX_USERNAME; + +public class SignUpCommandParser implements Parser{ + + @Override + public SignUpCommand parse(String args) throws ParseException { + + ArgumentMultimap argMultimap = + ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_USERNAME, PREFIX_PASSWORD); + + if (!ParserUtil.arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_USERNAME, PREFIX_PASSWORD) + || !argMultimap.getPreamble().isEmpty()) { + throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, SignUpCommand.MESSAGE_USAGE)); + } + + Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()); + Username username = ParserUtil.parseUsername(argMultimap.getValue(PREFIX_USERNAME).get()); + Password password = ParserUtil.parsePassword(argMultimap.getValue(PREFIX_PASSWORD).get()); + + Manager manager = new Manager(name, username, password); + + return new SignUpCommand(manager); + } +} From 1955ade537c07925268f6d72d8a9dc441d6206bc Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 09:57:34 +0800 Subject: [PATCH 042/739] SignUpCommandParser.java: Update style and javadocs --- .../logic/parser/SignUpCommandParser.java | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/main/java/seedu/address/logic/parser/SignUpCommandParser.java b/src/main/java/seedu/address/logic/parser/SignUpCommandParser.java index 71df66d83034..f11bc1436bd9 100644 --- a/src/main/java/seedu/address/logic/parser/SignUpCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/SignUpCommandParser.java @@ -1,19 +1,21 @@ package seedu.address.logic.parser; +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_PASSWORD; +import static seedu.address.logic.parser.CliSyntax.PREFIX_USERNAME; + import seedu.address.logic.commands.SignUpCommand; import seedu.address.logic.parser.exceptions.ParseException; import seedu.address.model.person.Name; import seedu.address.model.person.Password; import seedu.address.model.person.Username; import seedu.address.model.user.Manager; -import seedu.address.model.user.User; - -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PASSWORD; -import static seedu.address.logic.parser.CliSyntax.PREFIX_USERNAME; -public class SignUpCommandParser implements Parser{ +/** + * Parses input arguments and creates a new SignUpCommand object + */ +public class SignUpCommandParser implements Parser { @Override public SignUpCommand parse(String args) throws ParseException { From e10beb281700d152265e9579316b1414e4856a27 Mon Sep 17 00:00:00 2001 From: marcus koh Date: Wed, 26 Sep 2018 09:58:53 +0800 Subject: [PATCH 043/739] AddressBookParser.java: Update SignUpCommand --- src/main/java/seedu/address/logic/parser/AddressBookParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 8db6a25bbd78..0852440ad9c6 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -86,7 +86,7 @@ public Command parseCommand(String userInput) throws ParseException { return new RedoCommand(); case SignUpCommand.COMMAND_WORD: - return new HelpCommand(); + return new SignUpCommandParser().parse(arguments); default: throw new ParseException(MESSAGE_UNKNOWN_COMMAND); From 762ae23de741e9b8991bac2abca2934a80942669 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 20:47:54 +0800 Subject: [PATCH 044/739] User.java: Update getPassword() access --- src/main/java/seedu/address/model/user/User.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/model/user/User.java b/src/main/java/seedu/address/model/user/User.java index aeb24a7e6360..953831998a39 100644 --- a/src/main/java/seedu/address/model/user/User.java +++ b/src/main/java/seedu/address/model/user/User.java @@ -38,7 +38,7 @@ public Username getUsername() { return username; } - private Password getPassword() { + public Password getPassword() { return password; } From 6478b9ff5981b9d5ac39d0fc617d0323424693b0 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 20:48:44 +0800 Subject: [PATCH 045/739] Add XmlAdapterUser.java --- .../address/storage/user/XmlAdaptedUser.java | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 src/main/java/seedu/address/storage/user/XmlAdaptedUser.java diff --git a/src/main/java/seedu/address/storage/user/XmlAdaptedUser.java b/src/main/java/seedu/address/storage/user/XmlAdaptedUser.java new file mode 100644 index 000000000000..1ad7a8444f5d --- /dev/null +++ b/src/main/java/seedu/address/storage/user/XmlAdaptedUser.java @@ -0,0 +1,106 @@ +package seedu.address.storage.user; + +import java.util.Objects; + +import javax.xml.bind.annotation.XmlElement; + +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.model.person.Name; +import seedu.address.model.person.Password; +import seedu.address.model.person.Username; +import seedu.address.model.user.Manager; +import seedu.address.model.user.User; + +/** + * JAXB-friendly version of the User. + */ +public class XmlAdaptedUser { + + public static final String MISSING_FIELD_MESSAGE_FORMAT = "User's %s field is missing!"; + + @XmlElement(required = true) + private String name; + @XmlElement(required = true) + private String username; + @XmlElement(required = true) + private String password; + + /** + * Constructs an XmlAdaptedUser. + * This is the no-arg constructor that is required by JAXB. + */ + public XmlAdaptedUser() { + } + + + /** + * Constructs an {@code XmlAdaptedUser} with the given person details. + */ + public XmlAdaptedUser(String name, String username, String password) { + this.name = name; + this.username = username; + this.password = password; + } + + /** + * Converts a given User into this class for JAXB use. + * + * @param source future changes to this will not affect the created XmlAdaptedUser + */ + public XmlAdaptedUser(User source) { + name = source.getName().fullName; + username = source.getUsername().value; + password = source.getPassword().value; + } + + /** + * Converts this jaxb-friendly adapted person object into the model's User object. + * + * @throws IllegalValueException if there were any data constraints violated in the adapted user + */ + public User toModelType() throws IllegalValueException { + + if (name == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName())); + } + if (!Name.isValidName(name)) { + throw new IllegalValueException(Name.MESSAGE_NAME_CONSTRAINTS); + } + final Name modelName = new Name(name); + + if (username == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, + Username.class.getSimpleName())); + } + if (!Username.isValidUsername(username)) { + throw new IllegalValueException(Username.MESSAGE_USERNAME_CONSTRAINTS); + } + final Username modelUsername = new Username(username); + + if (password == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, + Password.class.getSimpleName())); + } + if (!Password.isValidPassword(password)) { + throw new IllegalValueException(Password.MESSAGE_PASSWORD_CONSTRAINTS); + } + final Password modelPassword = new Password(password); + return new Manager(modelName, modelUsername, modelPassword); + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof XmlAdaptedUser)) { + return false; + } + + XmlAdaptedUser otherUser = (XmlAdaptedUser) other; + return Objects.equals(name, otherUser.name) + && Objects.equals(username, otherUser.username) + && Objects.equals(password, otherUser.password); + } +} From 81e4ac36c47c9987a65ceed18707cf327d328965 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 20:56:52 +0800 Subject: [PATCH 046/739] Add ReadOnlyUsers.java --- .../java/seedu/address/model/ReadOnlyUsers.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 src/main/java/seedu/address/model/ReadOnlyUsers.java diff --git a/src/main/java/seedu/address/model/ReadOnlyUsers.java b/src/main/java/seedu/address/model/ReadOnlyUsers.java new file mode 100644 index 000000000000..d2729aa3366c --- /dev/null +++ b/src/main/java/seedu/address/model/ReadOnlyUsers.java @@ -0,0 +1,16 @@ +package seedu.address.model; + +import javafx.collections.ObservableList; +import seedu.address.model.user.User; + +/** + * Unmodifiable view of users + */ +public interface ReadOnlyUsers { + + /** + * Returns an unmodifiable view of the user list. + * This list will not contain any duplicate users. + */ + ObservableList getUserList(); +} From d6f171e6b748b1d9cc2c601ee6cd76ce139504fd Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 21:04:01 +0800 Subject: [PATCH 047/739] User.java: add IsSameUser() method --- src/main/java/seedu/address/model/user/User.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/java/seedu/address/model/user/User.java b/src/main/java/seedu/address/model/user/User.java index 953831998a39..8e17c98f8231 100644 --- a/src/main/java/seedu/address/model/user/User.java +++ b/src/main/java/seedu/address/model/user/User.java @@ -42,6 +42,20 @@ public Password getPassword() { return password; } + /** + * Returns true if both users of the same name have at least one other identity field that is the same. + * This defines a weaker notion of equality between two persons. + */ + public boolean isSameUser(User otherUser) { + if (otherUser == this) { + return true; + } + + return otherUser != null + && otherUser.getName().equals(getName()) + && otherUser.getUsername().equals(getUsername()); + } + /** * Returns true if both persons have the same identity and data fields. From 7515515b72ddfca9ad8c0b8fad0768b3a30fec27 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 21:11:04 +0800 Subject: [PATCH 048/739] Add UniqueUserList.java --- ...dOnlyUsers.java => ReadOnlyUsersList.java} | 0 .../address/model/user/UniqueUserList.java | 127 ++++++++++++++++++ 2 files changed, 127 insertions(+) rename src/main/java/seedu/address/model/{ReadOnlyUsers.java => ReadOnlyUsersList.java} (100%) create mode 100644 src/main/java/seedu/address/model/user/UniqueUserList.java diff --git a/src/main/java/seedu/address/model/ReadOnlyUsers.java b/src/main/java/seedu/address/model/ReadOnlyUsersList.java similarity index 100% rename from src/main/java/seedu/address/model/ReadOnlyUsers.java rename to src/main/java/seedu/address/model/ReadOnlyUsersList.java diff --git a/src/main/java/seedu/address/model/user/UniqueUserList.java b/src/main/java/seedu/address/model/user/UniqueUserList.java new file mode 100644 index 000000000000..4f0d1f3286ad --- /dev/null +++ b/src/main/java/seedu/address/model/user/UniqueUserList.java @@ -0,0 +1,127 @@ +package seedu.address.model.user; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + +import java.util.Iterator; +import java.util.List; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.person.exceptions.DuplicatePersonException; +import seedu.address.model.person.exceptions.PersonNotFoundException; + +/** + * A list of unique users + */ +public class UniqueUserList implements Iterable { + + private final ObservableList internalList = FXCollections.observableArrayList(); + + /** + * Returns true if the list contains an equivalent person as the given argument. + */ + public boolean contains(User toCheck) { + requireNonNull(toCheck); + return internalList.stream().anyMatch(toCheck::isSameUser); + } + + /** + * Adds a user to the list. + * The user must not already exist in the list. + */ + public void add(User toAdd) { + requireNonNull(toAdd); + if (contains(toAdd)) { + throw new DuplicatePersonException(); + } + internalList.add(toAdd); + } + + /** + * Replaces the person {@code target} in the list with {@code editedPerson}. + * {@code target} must exist in the list. + * The person identity of {@code editedPerson} must not be the same as another existing person in the list. + */ + public void setPerson(User target, User editedPerson) { + requireAllNonNull(target, editedPerson); + + int index = internalList.indexOf(target); + if (index == -1) { + throw new PersonNotFoundException(); + } + + if (!target.isSameUser(editedPerson) && contains(editedPerson)) { + throw new DuplicatePersonException(); + } + + internalList.set(index, editedPerson); + } + + /** + * Removes the equivalent person from the list. + * The person must exist in the list. + */ + public void remove(User toRemove) { + requireNonNull(toRemove); + if (!internalList.remove(toRemove)) { + throw new PersonNotFoundException(); + } + } + + public void setPersons(UniqueUserList replacement) { + requireNonNull(replacement); + internalList.setAll(replacement.internalList); + } + + /** + * Replaces the contents of this list with {@code persons}. + * {@code persons} must not contain duplicate persons. + */ + public void setPersons(List users) { + requireAllNonNull(users); + if (!personsAreUnique(users)) { + throw new DuplicatePersonException(); + } + + internalList.setAll(users); + } + + /** + * Returns the backing list as an unmodifiable {@code ObservableList}. + */ + public ObservableList asUnmodifiableObservableList() { + return FXCollections.unmodifiableObservableList(internalList); + } + + @Override + public Iterator iterator() { + return internalList.iterator(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof UniqueUserList // instanceof handles nulls + && internalList.equals(((UniqueUserList) other).internalList)); + } + + @Override + public int hashCode() { + return internalList.hashCode(); + } + + /** + * Returns true if {@code persons} contains only unique users. + */ + private boolean personsAreUnique(List users) { + for (int i = 0; i < users.size() - 1; i++) { + for (int j = i + 1; j < users.size(); j++) { + if (users.get(i).isSameUser(users.get(j))) { + return false; + } + } + } + return true; + } +} From f127b4ef617eb74bb23256047d639f9e8778d1fd Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 21:14:31 +0800 Subject: [PATCH 049/739] UniqueUserList.java: Update methods name --- .../seedu/address/model/user/UniqueUserList.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/seedu/address/model/user/UniqueUserList.java b/src/main/java/seedu/address/model/user/UniqueUserList.java index 4f0d1f3286ad..4d290634c0fd 100644 --- a/src/main/java/seedu/address/model/user/UniqueUserList.java +++ b/src/main/java/seedu/address/model/user/UniqueUserList.java @@ -39,11 +39,11 @@ public void add(User toAdd) { } /** - * Replaces the person {@code target} in the list with {@code editedPerson}. + * Replaces the user {@code target} in the list with {@code editedPerson}. * {@code target} must exist in the list. * The person identity of {@code editedPerson} must not be the same as another existing person in the list. */ - public void setPerson(User target, User editedPerson) { + public void setUser(User target, User editedPerson) { requireAllNonNull(target, editedPerson); int index = internalList.indexOf(target); @@ -69,7 +69,7 @@ public void remove(User toRemove) { } } - public void setPersons(UniqueUserList replacement) { + public void setUsers(UniqueUserList replacement) { requireNonNull(replacement); internalList.setAll(replacement.internalList); } @@ -78,9 +78,9 @@ public void setPersons(UniqueUserList replacement) { * Replaces the contents of this list with {@code persons}. * {@code persons} must not contain duplicate persons. */ - public void setPersons(List users) { + public void setUsers(List users) { requireAllNonNull(users); - if (!personsAreUnique(users)) { + if (!usersAreUnique(users)) { throw new DuplicatePersonException(); } @@ -114,7 +114,7 @@ public int hashCode() { /** * Returns true if {@code persons} contains only unique users. */ - private boolean personsAreUnique(List users) { + private boolean usersAreUnique(List users) { for (int i = 0; i < users.size() - 1; i++) { for (int j = i + 1; j < users.size(); j++) { if (users.get(i).isSameUser(users.get(j))) { From 3d01bc87f3dfaecd510ee7c3884410c0ec4e5a24 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 21:19:51 +0800 Subject: [PATCH 050/739] Add UsersList.java --- .../java/seedu/address/model/UsersList.java | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 src/main/java/seedu/address/model/UsersList.java diff --git a/src/main/java/seedu/address/model/UsersList.java b/src/main/java/seedu/address/model/UsersList.java new file mode 100644 index 000000000000..018068deb78d --- /dev/null +++ b/src/main/java/seedu/address/model/UsersList.java @@ -0,0 +1,106 @@ +package seedu.address.model; + +import static java.util.Objects.requireNonNull; + +import java.util.List; + +import javafx.collections.ObservableList; +import seedu.address.model.user.UniqueUserList; +import seedu.address.model.user.User; + +public class UsersList implements ReadOnlyUsersList { + + private final UniqueUserList users; + + { + users = new UniqueUserList(); + } + + public UsersList() { + } + + /** + * Creates an UsersList using the User in the {@code toBeCopied} + */ + public UsersList(ReadOnlyUsersList toBeCopied) { + this(); + resetData(toBeCopied); + } + + /** + * Replaces the contents of the user list with {@code users}. + * {@code persons} must not contain duplicate user. + */ + public void setUsers(List users) { + this.users.setUsers(users); + } + + /** + * Resets the existing data of this {@code UsersList} with {@code newData}. + */ + public void resetData(ReadOnlyUsersList newData) { + requireNonNull(newData); + setUsers(newData.getUserList()); + } + + /** + * Returns true if a user with the same identity as {@code user} exists in the usersList. + */ + public boolean hasUser(User user) { + requireNonNull(user); + return users.contains(user); + } + + /** + * Adds a user to the user list. + * The user must not already exist in the user list. + */ + public void addUser(User u) { + users.add(u); + } + + /** + * Replaces the given person {@code target} in the list with {@code editedUser}. + * {@code target} must exist in the users list. + * The person identity of {@code editedPerson} must not be the same as another existing user in the users list. + */ + public void updateUser(User target, User editedUser) { + requireNonNull(editedUser); + users.setUser(target, editedUser); + } + + /** + * Removes {@code key} from this {@code UsersList}. + * {@code key} must exist in the userslist. + */ + public void removeUser(User key) { + users.remove(key); + } + + //// util methods + + @Override + public String toString() { + return users.asUnmodifiableObservableList().size() + " users"; + // TODO: refine later + } + + @Override + public ObservableList getUserList() { + return users.asUnmodifiableObservableList(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof UsersList // instanceof handles nulls + && users.equals(((UsersList) other).users)); + } + + @Override + public int hashCode() { + return users.hashCode(); + } + +} + From 34d8a93b359e346e95813ea3a9c65250ffb7d256 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 21:20:43 +0800 Subject: [PATCH 051/739] Update class name to ReadOnlyUsersList.java --- src/main/java/seedu/address/model/ReadOnlyUsersList.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/model/ReadOnlyUsersList.java b/src/main/java/seedu/address/model/ReadOnlyUsersList.java index d2729aa3366c..b6c137c1ede3 100644 --- a/src/main/java/seedu/address/model/ReadOnlyUsersList.java +++ b/src/main/java/seedu/address/model/ReadOnlyUsersList.java @@ -6,7 +6,7 @@ /** * Unmodifiable view of users */ -public interface ReadOnlyUsers { +public interface ReadOnlyUsersList { /** * Returns an unmodifiable view of the user list. From a9fed732669e02d3c9120dbb66b85bf189b63ec5 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 21:23:30 +0800 Subject: [PATCH 052/739] Add XmlSerializableUsersList.java --- .../user/XmlSerializableUsersList.java | 73 +++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 src/main/java/seedu/address/storage/user/XmlSerializableUsersList.java diff --git a/src/main/java/seedu/address/storage/user/XmlSerializableUsersList.java b/src/main/java/seedu/address/storage/user/XmlSerializableUsersList.java new file mode 100644 index 000000000000..095279a34fea --- /dev/null +++ b/src/main/java/seedu/address/storage/user/XmlSerializableUsersList.java @@ -0,0 +1,73 @@ +package seedu.address.storage.user; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.model.ReadOnlyUsersList; +import seedu.address.model.UsersList; +import seedu.address.model.user.User; + +/** + * An Immutable User that is serializable to XML format + */ +@XmlRootElement(name = "userslist") +public class XmlSerializableUsersList { + + public static final String MESSAGE_DUPLICATE_USER = "User list contains duplicate user(s)."; + + @XmlElement + private List users; + + /** + * Creates an empty XmlSerializableAddressBook. + * This empty constructor is required for marshalling. + */ + public XmlSerializableUsersList() { + users = new ArrayList<>(); + } + + /** + * Conversion + */ + public XmlSerializableUsersList(ReadOnlyUsersList src) { + this(); + users.addAll(src.getUserList().stream().map(XmlAdaptedUser::new).collect(Collectors.toList())); + } + + + /** + * Converts this addressbook into the model's {@code AddressBook} object. + * + * @throws IllegalValueException if there were any data constraints violated or duplicates in the + * {@code XmlAdaptedPerson}. + */ + public UsersList toModelType() throws IllegalValueException { + UsersList usersList = new UsersList(); + for (XmlAdaptedUser u : users) { + User user = u.toModelType(); + if (usersList.hasUser(user)) { + throw new IllegalValueException(MESSAGE_DUPLICATE_USER); + } + usersList.addUser(user); + } + return usersList; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof XmlSerializableUsersList)) { + return false; + } + return users.equals(((XmlSerializableUsersList) other).users); + } + +} From 3e769a20415b0d9cf2e38e198676432c049571f9 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 21:26:56 +0800 Subject: [PATCH 053/739] Add UsersListStorage.java interface --- .../storage/user/UsersListStorage.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/main/java/seedu/address/storage/user/UsersListStorage.java diff --git a/src/main/java/seedu/address/storage/user/UsersListStorage.java b/src/main/java/seedu/address/storage/user/UsersListStorage.java new file mode 100644 index 000000000000..fc1a80066f4f --- /dev/null +++ b/src/main/java/seedu/address/storage/user/UsersListStorage.java @@ -0,0 +1,45 @@ +package seedu.address.storage.user; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.Optional; + +import seedu.address.commons.exceptions.DataConversionException; +import seedu.address.model.ReadOnlyUsersList; + +/** + * Represents a storage for {@link seedu.address.model.UsersList}. + */ +public interface UsersListStorage { + /** + * Returns the file path of the data file. + */ + Path getUsersListFilePath(); + + /** + * Returns UsersList data as a {@link ReadOnlyUsersList}. + * Returns {@code Optional.empty()} if storage file is not found. + * + * @throws DataConversionException if the data in storage is not in the expected format. + * @throws IOException if there was any problem when reading from the storage. + */ + Optional readUsersList() throws DataConversionException, IOException; + + /** + * @see #getUsersListFilePath() + */ + Optional readUsersList(Path filePath) throws DataConversionException, IOException; + + /** + * Saves the given {@link ReadOnlyUsersList} to the storage. + * + * @param usersList cannot be null. + * @throws IOException if there was any problem writing to the file. + */ + void saveUsersList(ReadOnlyUsersList usersList) throws IOException; + + /** + * @see #saveUsersList(ReadOnlyUsersList) + */ + void saveUsersList(ReadOnlyUsersList usersList, Path filePath) throws IOException; +} From ea8d928ff793c2096e93b4420edb2fae56010c70 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 21:33:12 +0800 Subject: [PATCH 054/739] XmlFileStorage.java: Add saveUsersDataToFile() and loadUsersDataFromSaveFile() --- .../seedu/address/storage/XmlFileStorage.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/main/java/seedu/address/storage/XmlFileStorage.java b/src/main/java/seedu/address/storage/XmlFileStorage.java index d8f65dc036ab..28c6b1b81378 100644 --- a/src/main/java/seedu/address/storage/XmlFileStorage.java +++ b/src/main/java/seedu/address/storage/XmlFileStorage.java @@ -7,6 +7,7 @@ import seedu.address.commons.exceptions.DataConversionException; import seedu.address.commons.util.XmlUtil; +import seedu.address.storage.user.XmlSerializableUsersList; /** * Stores addressbook data in an XML file @@ -36,4 +37,28 @@ public static XmlSerializableAddressBook loadDataFromSaveFile(Path file) throws } } + /** + * Saves the given users list data to the specified file. + */ + public static void saveUsersDataToFile(Path file, XmlSerializableUsersList usersList) + throws FileNotFoundException { + try { + XmlUtil.saveDataToFile(file, usersList); + } catch (JAXBException e) { + throw new AssertionError("Unexpected exception " + e.getMessage(), e); + } + } + + /** + * Returns users list in the file or an empty users list. + */ + public static XmlSerializableUsersList loadUsersDataFromSaveFile(Path file) throws DataConversionException, + FileNotFoundException { + try { + return XmlUtil.getDataFromFile(file, XmlSerializableUsersList.class); + } catch (JAXBException e) { + throw new DataConversionException(e); + } + } + } From 9583ae33ed7d4c0549c96654c799178bda85cafe Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 21:34:59 +0800 Subject: [PATCH 055/739] Add XmlUsersListStorage.java --- .../storage/user/XmlUsersListStorage.java | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/main/java/seedu/address/storage/user/XmlUsersListStorage.java diff --git a/src/main/java/seedu/address/storage/user/XmlUsersListStorage.java b/src/main/java/seedu/address/storage/user/XmlUsersListStorage.java new file mode 100644 index 000000000000..c9add17bb8cf --- /dev/null +++ b/src/main/java/seedu/address/storage/user/XmlUsersListStorage.java @@ -0,0 +1,83 @@ +package seedu.address.storage.user; + +import static java.util.Objects.requireNonNull; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Optional; +import java.util.logging.Logger; + +import seedu.address.commons.core.LogsCenter; +import seedu.address.commons.exceptions.DataConversionException; +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.commons.util.FileUtil; +import seedu.address.model.ReadOnlyUsersList; +import seedu.address.storage.XmlFileStorage; + +/** + * A class to access UsersList data stored as an xml file on the hard disk. + */ +public class XmlUsersListStorage implements UsersListStorage { + + private static final Logger logger = LogsCenter.getLogger(XmlUsersListStorage.class); + + private Path filePath; + + public XmlUsersListStorage(Path filePath) { + this.filePath = filePath; + } + + @Override + public Path getUsersListFilePath() { + return filePath; + } + + @Override + public Optional readUsersList() throws DataConversionException, IOException { + return readUsersList(filePath); + } + + /** + * Similar to {@link #readUsersList()} + * + * @param filePath location of the data. Cannot be null + * @throws DataConversionException if the file is not in the correct format. + */ + @Override + public Optional readUsersList(Path filePath) throws DataConversionException, IOException { + requireNonNull(filePath); + + if (!Files.exists(filePath)) { + logger.info("UsersList file " + filePath + " not found"); + return Optional.empty(); + } + + XmlSerializableUsersList xmlUsersList = XmlFileStorage.loadUsersDataFromSaveFile(filePath); + try { + return Optional.of(xmlUsersList.toModelType()); + } catch (IllegalValueException ive) { + logger.info("Illegal values found in " + filePath + ": " + ive.getMessage()); + throw new DataConversionException(ive); + } + } + + @Override + public void saveUsersList(ReadOnlyUsersList usersList) throws IOException { + saveUsersList(usersList, filePath); + } + + /** + * Similar to {@link #saveUsersList(ReadOnlyUsersList)} + * + * @param filePath location of the data. Cannot be null + */ + @Override + public void saveUsersList(ReadOnlyUsersList usersList, Path filePath) throws IOException { + requireNonNull(usersList); + requireNonNull(filePath); + + FileUtil.createIfMissing(filePath); + XmlFileStorage.saveUsersDataToFile(filePath, new XmlSerializableUsersList(usersList)); + } +} From 8660d9467f87af813e447217a3d710c6859ac226 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 21:43:51 +0800 Subject: [PATCH 056/739] UserPrefs.java: Add UsersList filePath --- src/main/java/seedu/address/model/UserPrefs.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java index 980b2b388852..fc3b48843745 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/address/model/UserPrefs.java @@ -13,6 +13,7 @@ public class UserPrefs { private GuiSettings guiSettings; private Path addressBookFilePath = Paths.get("data" , "addressbook.xml"); + private Path usersListFilePath = Paths.get("data", "users.xml"); public UserPrefs() { setGuiSettings(500, 500, 0, 0); @@ -38,6 +39,14 @@ public void setAddressBookFilePath(Path addressBookFilePath) { this.addressBookFilePath = addressBookFilePath; } + public Path getUsersListFilePath() { + return usersListFilePath; + } + + public void setUsersListFilePath(Path usersListFilePath) { + this.usersListFilePath = usersListFilePath; + } + @Override public boolean equals(Object other) { if (other == this) { @@ -63,6 +72,7 @@ public String toString() { StringBuilder sb = new StringBuilder(); sb.append("Gui Settings : " + guiSettings.toString()); sb.append("\nLocal data file location : " + addressBookFilePath); + sb.append("\nLocal data file location : " + usersListFilePath); return sb.toString(); } From 31b1e16e5e2a16b778e803b3c2a4b789197f2e12 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 21:55:55 +0800 Subject: [PATCH 057/739] Storage.java: Add UsersListStorage methods --- src/main/java/seedu/address/storage/Storage.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/storage/Storage.java b/src/main/java/seedu/address/storage/Storage.java index 28791127999b..96ab830063f3 100644 --- a/src/main/java/seedu/address/storage/Storage.java +++ b/src/main/java/seedu/address/storage/Storage.java @@ -8,12 +8,14 @@ import seedu.address.commons.events.storage.DataSavingExceptionEvent; import seedu.address.commons.exceptions.DataConversionException; import seedu.address.model.ReadOnlyAddressBook; +import seedu.address.model.ReadOnlyUsersList; import seedu.address.model.UserPrefs; +import seedu.address.storage.user.UsersListStorage; /** * API of the Storage component */ -public interface Storage extends AddressBookStorage, UserPrefsStorage { +public interface Storage extends AddressBookStorage, UserPrefsStorage, UsersListStorage { @Override Optional readUserPrefs() throws DataConversionException, IOException; @@ -36,4 +38,13 @@ public interface Storage extends AddressBookStorage, UserPrefsStorage { * Raises {@link DataSavingExceptionEvent} if there was an error during saving. */ void handleAddressBookChangedEvent(AddressBookChangedEvent abce); + + @Override + Path getUsersListFilePath(); + + @Override + Optional readUsersList() throws DataConversionException, IOException; + + @Override + void saveUsersList(ReadOnlyUsersList usersList) throws IOException; } From fde63505ea5d4f4f550cc7a3de39d7bef729f127 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Fri, 28 Sep 2018 22:04:06 +0800 Subject: [PATCH 058/739] StorageManager.java: Update with usersList method --- .../seedu/address/storage/StorageManager.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/main/java/seedu/address/storage/StorageManager.java b/src/main/java/seedu/address/storage/StorageManager.java index b0df908a76a7..2344225ced2a 100644 --- a/src/main/java/seedu/address/storage/StorageManager.java +++ b/src/main/java/seedu/address/storage/StorageManager.java @@ -13,7 +13,9 @@ import seedu.address.commons.events.storage.DataSavingExceptionEvent; import seedu.address.commons.exceptions.DataConversionException; import seedu.address.model.ReadOnlyAddressBook; +import seedu.address.model.ReadOnlyUsersList; import seedu.address.model.UserPrefs; +import seedu.address.storage.user.UsersListStorage; /** * Manages storage of AddressBook data in local storage. @@ -23,6 +25,7 @@ public class StorageManager extends ComponentManager implements Storage { private static final Logger logger = LogsCenter.getLogger(StorageManager.class); private AddressBookStorage addressBookStorage; private UserPrefsStorage userPrefsStorage; + private UsersListStorage usersListStorage; public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) { @@ -31,6 +34,44 @@ public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage us this.userPrefsStorage = userPrefsStorage; } + public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage, + UsersListStorage usersListStorage) { + super(); + this.addressBookStorage = addressBookStorage; + this.userPrefsStorage = userPrefsStorage; + this.usersListStorage = usersListStorage; + } + + // ================ UsersList methods ============================== + + @Override + public Path getUsersListFilePath() { + return usersListStorage.getUsersListFilePath(); + } + + @Override + public Optional readUsersList() throws DataConversionException, IOException { + return readUsersList(usersListStorage.getUsersListFilePath()); + } + + @Override + public Optional readUsersList(Path filePath) throws DataConversionException, IOException { + logger.fine("Attempting to read data from file: " + filePath); + return usersListStorage.readUsersList(filePath); + } + + @Override + public void saveUsersList(ReadOnlyUsersList usersList) throws IOException { + saveUsersList(usersList, usersListStorage.getUsersListFilePath()); + } + + @Override + public void saveUsersList(ReadOnlyUsersList usersList, Path filePath) throws IOException { + logger.fine("Attempting to write to data file: " + filePath); + usersListStorage.saveUsersList(usersList, filePath); + } + + // ================ UserPrefs methods ============================== @Override From 5cdc81095e2a6d304bd58b53261d18cb821a01bf Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 13:48:00 +0800 Subject: [PATCH 059/739] MainApp.java: Add userListStorage for StorageManager --- src/main/java/seedu/address/MainApp.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/MainApp.java b/src/main/java/seedu/address/MainApp.java index ecdd043a4f81..6498dd82f2d6 100644 --- a/src/main/java/seedu/address/MainApp.java +++ b/src/main/java/seedu/address/MainApp.java @@ -24,6 +24,7 @@ import seedu.address.model.Model; import seedu.address.model.ModelManager; import seedu.address.model.ReadOnlyAddressBook; +import seedu.address.model.ReadOnlyUsersList; import seedu.address.model.UserPrefs; import seedu.address.model.util.SampleDataUtil; import seedu.address.storage.AddressBookStorage; @@ -32,6 +33,8 @@ import seedu.address.storage.StorageManager; import seedu.address.storage.UserPrefsStorage; import seedu.address.storage.XmlAddressBookStorage; +import seedu.address.storage.user.UsersListStorage; +import seedu.address.storage.user.XmlUsersListStorage; import seedu.address.ui.Ui; import seedu.address.ui.UiManager; @@ -63,7 +66,8 @@ public void init() throws Exception { UserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(config.getUserPrefsFilePath()); userPrefs = initPrefs(userPrefsStorage); AddressBookStorage addressBookStorage = new XmlAddressBookStorage(userPrefs.getAddressBookFilePath()); - storage = new StorageManager(addressBookStorage, userPrefsStorage); + UsersListStorage usersListStorage = new XmlUsersListStorage(userPrefs.getUsersListFilePath()); + storage = new StorageManager(addressBookStorage, userPrefsStorage, usersListStorage); initLogging(config); From aece3ab470c1716b36e5576a62d30e54b23dd444 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 14:00:28 +0800 Subject: [PATCH 060/739] Add VersionedUsersList.java --- .../address/model/VersionedUsersList.java | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/main/java/seedu/address/model/VersionedUsersList.java diff --git a/src/main/java/seedu/address/model/VersionedUsersList.java b/src/main/java/seedu/address/model/VersionedUsersList.java new file mode 100644 index 000000000000..52c25e75786c --- /dev/null +++ b/src/main/java/seedu/address/model/VersionedUsersList.java @@ -0,0 +1,109 @@ +package seedu.address.model; + +import java.util.ArrayList; +import java.util.List; + +/** + * {@code UsersList} that keeps track of its own history. + */ +public class VersionedUsersList extends UsersList { + + private final List usersListState; + private int currentStatePointer; + + public VersionedUsersList(ReadOnlyUsersList initialState) { + super(initialState); + + usersListState = new ArrayList<>(); + usersListState.add(new UsersList(initialState)); + currentStatePointer = 0; + } + + /** + * Saves a copy of the current {@code UsersList} state at the end of the state list. + * Undone states are removed from the state list. + */ + public void commit() { + removeStatesAfterCurrentPointer(); + usersListState.add(new UsersList(this)); + currentStatePointer++; + } + + private void removeStatesAfterCurrentPointer() { + usersListState.subList(currentStatePointer + 1, usersListState.size()).clear(); + } + + + /** + * Restores the users list to its previous state. + */ + public void undo() { + if (!canUndo()) { + throw new NoUndoableStateException(); + } + currentStatePointer--; + resetData(usersListState.get(currentStatePointer)); + } + + /** + * Restores the users list to its previously undone state. + */ + public void redo() { + if (!canRedo()) { + throw new NoRedoableStateException(); + } + currentStatePointer++; + resetData(usersListState.get(currentStatePointer)); + } + + /** + * Returns true if {@code undo()} has users list states to undo. + */ + public boolean canUndo() { + return currentStatePointer > 0; + } + + /** + * Returns true if {@code redo()} has users list states to redo. + */ + public boolean canRedo() { + return currentStatePointer < usersListState.size() - 1; + } + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof VersionedUsersList)) { + return false; + } + + VersionedUsersList otherVersionedUsersList = (VersionedUsersList) other; + + // state check + return super.equals(otherVersionedUsersList) + && usersListState.equals(otherVersionedUsersList.usersListState) + && currentStatePointer == otherVersionedUsersList.currentStatePointer; + } + /** + * Thrown when trying to {@code undo()} but can't. + */ + public static class NoUndoableStateException extends RuntimeException { + private NoUndoableStateException() { + super("Current state pointer at start of usersListState list, unable to undo."); + } + } + + /** + * Thrown when trying to {@code redo()} but can't. + */ + public static class NoRedoableStateException extends RuntimeException { + private NoRedoableStateException() { + super("Current state pointer at end of usersListState list, unable to redo."); + } + } +} From bdca963749388674a4173276965ad9215cea8e7e Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 14:20:09 +0800 Subject: [PATCH 061/739] Model.java: Add hasUser(), addUser() and commitUsersList() --- src/main/java/seedu/address/model/Model.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index ac4521f33199..ff5976660686 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -4,6 +4,7 @@ import javafx.collections.ObservableList; import seedu.address.model.person.Person; +import seedu.address.model.user.User; /** * The API of the Model component. @@ -75,4 +76,20 @@ public interface Model { * Saves the current address book state for undo/redo. */ void commitAddressBook(); + + + /** {@code Predicate} that always evaluate to true */ + Predicate PREDICATE_SHOW_ALL_USERS = unused -> true; + + boolean hasUser(User user); + + void addUser(User user); + + void commitUsersList(); + + /** + * Updates the filter of the filtered user list to filter by the given {@code predicate}. + * @throws NullPointerException if {@code predicate} is null. + */ + void updateFilteredUsersList(Predicate predicate); } From ed0ee9139b476f90d0de076b4ab07c5c3e153519 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 14:20:35 +0800 Subject: [PATCH 062/739] ModelManager.java: Implemented hasUser(), addUser() and commitUsersList() --- .../seedu/address/model/ModelManager.java | 48 +++++++++++++++++-- 1 file changed, 43 insertions(+), 5 deletions(-) diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index a664602ef5b1..64319d9d2b15 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -13,6 +13,7 @@ import seedu.address.commons.core.LogsCenter; import seedu.address.commons.events.model.AddressBookChangedEvent; import seedu.address.model.person.Person; +import seedu.address.model.user.User; /** * Represents the in-memory model of the address book data. @@ -23,21 +24,30 @@ public class ModelManager extends ComponentManager implements Model { private final VersionedAddressBook versionedAddressBook; private final FilteredList filteredPersons; + private final VersionedUsersList versionedUsersList; + private final FilteredList filteredUsers; + /** - * Initializes a ModelManager with the given addressBook and userPrefs. + * Initializes a ModelManager with the given addressBook, usersList and userPrefs. */ - public ModelManager(ReadOnlyAddressBook addressBook, UserPrefs userPrefs) { + public ModelManager(ReadOnlyAddressBook addressBook, ReadOnlyUsersList usersList, UserPrefs userPrefs) { super(); requireAllNonNull(addressBook, userPrefs); - logger.fine("Initializing with address book: " + addressBook + " and user prefs " + userPrefs); + logger.fine("Initializing with address book: " + addressBook + + " and users list " + + usersList + + " and user prefs " + + userPrefs); versionedAddressBook = new VersionedAddressBook(addressBook); filteredPersons = new FilteredList<>(versionedAddressBook.getPersonList()); + versionedUsersList = new VersionedUsersList(usersList); + filteredUsers = new FilteredList<>(versionedUsersList.getUserList()); } public ModelManager() { - this(new AddressBook(), new UserPrefs()); + this(new AddressBook(), new UsersList(), new UserPrefs()); } @Override @@ -51,7 +61,9 @@ public ReadOnlyAddressBook getAddressBook() { return versionedAddressBook; } - /** Raises an event to indicate the model has changed */ + /** + * Raises an event to indicate the model has changed + */ private void indicateAddressBookChanged() { raise(new AddressBookChangedEvent(versionedAddressBook)); } @@ -129,6 +141,32 @@ public void commitAddressBook() { versionedAddressBook.commit(); } + + //=========== Filtered User List Accessors ============================================================= + @Override + public boolean hasUser(User user) { + requireNonNull(user); + return versionedUsersList.hasUser(user); + } + + @Override + public void addUser(User user) { + versionedUsersList.addUser(user); + updateFilteredUsersList(PREDICATE_SHOW_ALL_USERS); + //TODO indicateUsersListChanged(); + } + + @Override + public void commitUsersList() { + versionedUsersList.commit(); + } + + @Override + public void updateFilteredUsersList(Predicate predicate) { + requireNonNull(predicate); + filteredUsers.setPredicate(predicate); + } + @Override public boolean equals(Object obj) { // short circuit if same object From 85bdd14181758e6066a8af298599bdf5acc6451e Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 14:21:29 +0800 Subject: [PATCH 063/739] MainApp.java: Update intiModelManager() with usersList --- src/main/java/seedu/address/MainApp.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/MainApp.java b/src/main/java/seedu/address/MainApp.java index 6498dd82f2d6..b4e106c0f019 100644 --- a/src/main/java/seedu/address/MainApp.java +++ b/src/main/java/seedu/address/MainApp.java @@ -26,6 +26,7 @@ import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.ReadOnlyUsersList; import seedu.address.model.UserPrefs; +import seedu.address.model.UsersList; import seedu.address.model.util.SampleDataUtil; import seedu.address.storage.AddressBookStorage; import seedu.address.storage.JsonUserPrefsStorage; @@ -87,22 +88,28 @@ public void init() throws Exception { */ private Model initModelManager(Storage storage, UserPrefs userPrefs) { Optional addressBookOptional; + Optional usersListOptional; ReadOnlyAddressBook initialData; + ReadOnlyUsersList initialUser; try { addressBookOptional = storage.readAddressBook(); + usersListOptional = storage.readUsersList(); if (!addressBookOptional.isPresent()) { logger.info("Data file not found. Will be starting with a sample AddressBook"); } initialData = addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook); + initialUser = usersListOptional.get(); } catch (DataConversionException e) { logger.warning("Data file not in the correct format. Will be starting with an empty AddressBook"); initialData = new AddressBook(); + initialUser = new UsersList(); } catch (IOException e) { logger.warning("Problem while reading from the file. Will be starting with an empty AddressBook"); initialData = new AddressBook(); + initialUser = new UsersList(); } - return new ModelManager(initialData, userPrefs); + return new ModelManager(initialData, initialUser, userPrefs); } private void initLogging(Config config) { From 124a14e041b020e93c3a2702520d52a6314791e3 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 14:33:24 +0800 Subject: [PATCH 064/739] Add UsersListChangedEvent.java --- .../events/model/UsersListChangedEvent.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java diff --git a/src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java b/src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java new file mode 100644 index 000000000000..1b4407260697 --- /dev/null +++ b/src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java @@ -0,0 +1,18 @@ +package seedu.address.commons.events.model; + +import seedu.address.commons.events.BaseEvent; +import seedu.address.model.ReadOnlyUsersList; + +public class UsersListChangedEvent extends BaseEvent { + + public final ReadOnlyUsersList data; + + public UsersListChangedEvent(ReadOnlyUsersList data) { + this.data = data; + } + + @Override + public String toString() { + return "number of users " + data.getUserList().size(); + } +} \ No newline at end of file From 364d1499ed211edffa23bcbe2e6aeb72600f08c4 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 14:37:56 +0800 Subject: [PATCH 065/739] Storage.java: Add handleUsersListChangedEvent() --- src/main/java/seedu/address/storage/Storage.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/seedu/address/storage/Storage.java b/src/main/java/seedu/address/storage/Storage.java index 96ab830063f3..bed259793fe3 100644 --- a/src/main/java/seedu/address/storage/Storage.java +++ b/src/main/java/seedu/address/storage/Storage.java @@ -5,6 +5,7 @@ import java.util.Optional; import seedu.address.commons.events.model.AddressBookChangedEvent; +import seedu.address.commons.events.model.UsersListChangedEvent; import seedu.address.commons.events.storage.DataSavingExceptionEvent; import seedu.address.commons.exceptions.DataConversionException; import seedu.address.model.ReadOnlyAddressBook; @@ -47,4 +48,11 @@ public interface Storage extends AddressBookStorage, UserPrefsStorage, UsersList @Override void saveUsersList(ReadOnlyUsersList usersList) throws IOException; + + /** + * Saves the current version of the UsersList to the hard disk. + * Creates the data file if it is missing. + * Raises {@link DataSavingExceptionEvent} if there was an error during saving. + */ + void handleUsersListChangedEvent(UsersListChangedEvent ulce); } From 75a7b337422e68e8b25700e300b10501a71e2d85 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 14:38:28 +0800 Subject: [PATCH 066/739] StorageManager.java: Implement handleUsersListChangedEvent() method --- .../java/seedu/address/storage/StorageManager.java | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/java/seedu/address/storage/StorageManager.java b/src/main/java/seedu/address/storage/StorageManager.java index 2344225ced2a..3f4b088eeeb7 100644 --- a/src/main/java/seedu/address/storage/StorageManager.java +++ b/src/main/java/seedu/address/storage/StorageManager.java @@ -10,6 +10,7 @@ import seedu.address.commons.core.ComponentManager; import seedu.address.commons.core.LogsCenter; import seedu.address.commons.events.model.AddressBookChangedEvent; +import seedu.address.commons.events.model.UsersListChangedEvent; import seedu.address.commons.events.storage.DataSavingExceptionEvent; import seedu.address.commons.exceptions.DataConversionException; import seedu.address.model.ReadOnlyAddressBook; @@ -71,6 +72,16 @@ public void saveUsersList(ReadOnlyUsersList usersList, Path filePath) throws IOE usersListStorage.saveUsersList(usersList, filePath); } + @Override + public void handleUsersListChangedEvent(UsersListChangedEvent event) { + logger.info(LogsCenter.getEventHandlingLogMessage(event, "Local data changed, saving to file")); + try { + saveUsersList(event.data); + } catch (IOException e) { + raise(new DataSavingExceptionEvent(e)); + } + } + // ================ UserPrefs methods ============================== From 2dd1fb6a6fd16c3c3b2f3644f423ac4c75aa6cfd Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 14:40:57 +0800 Subject: [PATCH 067/739] ModelManager.java: Update addUser() with indicateUsersListChanged() --- src/main/java/seedu/address/model/ModelManager.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 64319d9d2b15..382a005c032a 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -12,6 +12,7 @@ import seedu.address.commons.core.ComponentManager; import seedu.address.commons.core.LogsCenter; import seedu.address.commons.events.model.AddressBookChangedEvent; +import seedu.address.commons.events.model.UsersListChangedEvent; import seedu.address.model.person.Person; import seedu.address.model.user.User; @@ -153,7 +154,7 @@ public boolean hasUser(User user) { public void addUser(User user) { versionedUsersList.addUser(user); updateFilteredUsersList(PREDICATE_SHOW_ALL_USERS); - //TODO indicateUsersListChanged(); + indicateUsersListChanged(); } @Override @@ -167,6 +168,13 @@ public void updateFilteredUsersList(Predicate predicate) { filteredUsers.setPredicate(predicate); } + /** + * Raises an event to indicate the model has changed + */ + private void indicateUsersListChanged() { + raise(new UsersListChangedEvent(versionedUsersList)); + } + @Override public boolean equals(Object obj) { // short circuit if same object From f252348afe2bef74d82ba866de17a4ec4637b15d Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 14:42:05 +0800 Subject: [PATCH 068/739] UsersListChangedEvent.java: Update javadocs --- .../address/commons/events/model/UsersListChangedEvent.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java b/src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java index 1b4407260697..19c9d81cf99c 100644 --- a/src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java +++ b/src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java @@ -3,6 +3,7 @@ import seedu.address.commons.events.BaseEvent; import seedu.address.model.ReadOnlyUsersList; +/** Indicates the UsersList in the model has changed*/ public class UsersListChangedEvent extends BaseEvent { public final ReadOnlyUsersList data; From a3413929ab5463d42bd5b80d9d05015493e65be5 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 14:55:51 +0800 Subject: [PATCH 069/739] StorageManager.java: Add subscribe event for handleUsersListChangedEvent() --- src/main/java/seedu/address/storage/StorageManager.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/seedu/address/storage/StorageManager.java b/src/main/java/seedu/address/storage/StorageManager.java index 3f4b088eeeb7..b16bcd6f3e49 100644 --- a/src/main/java/seedu/address/storage/StorageManager.java +++ b/src/main/java/seedu/address/storage/StorageManager.java @@ -73,6 +73,7 @@ public void saveUsersList(ReadOnlyUsersList usersList, Path filePath) throws IOE } @Override + @Subscribe public void handleUsersListChangedEvent(UsersListChangedEvent event) { logger.info(LogsCenter.getEventHandlingLogMessage(event, "Local data changed, saving to file")); try { From 320f17a1814aa5b6b6f128138c87633a92542b73 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 14:56:31 +0800 Subject: [PATCH 070/739] SignUpCommand.java: Implement execute() method --- .../seedu/address/logic/commands/SignUpCommand.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/SignUpCommand.java b/src/main/java/seedu/address/logic/commands/SignUpCommand.java index 1b4fe9d4efe8..73df57b6bd12 100644 --- a/src/main/java/seedu/address/logic/commands/SignUpCommand.java +++ b/src/main/java/seedu/address/logic/commands/SignUpCommand.java @@ -41,7 +41,13 @@ public SignUpCommand(Manager manager) { @Override public CommandResult execute(Model model, CommandHistory history) throws CommandException { - - return null; + requireNonNull(model); + if (model.hasUser(toAdd)) { + throw new CommandException(MESSAGE_DUPLICATE_USER); + } + + model.addUser(toAdd); + model.commitUsersList(); + return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd)); } } From bf14d82eaed5c38ddeebdf5b3b6b5b06c57fcdeb Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 15:53:39 +0800 Subject: [PATCH 071/739] Add LoginCommand.java --- .../address/logic/commands/LoginCommand.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/main/java/seedu/address/logic/commands/LoginCommand.java diff --git a/src/main/java/seedu/address/logic/commands/LoginCommand.java b/src/main/java/seedu/address/logic/commands/LoginCommand.java new file mode 100644 index 000000000000..e0748a61648c --- /dev/null +++ b/src/main/java/seedu/address/logic/commands/LoginCommand.java @@ -0,0 +1,18 @@ +package seedu.address.logic.commands; + +import seedu.address.logic.CommandHistory; +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Model; +import seedu.address.model.user.Manager; + +public class LoginCommand extends Command { + + public static final String COMMAND_WORD = "/login"; + + public static final String MESSAGE_SUCCESS = "Login Success for %1$s"; + + @Override + public CommandResult execute(Model model, CommandHistory history) throws CommandException { + return null; + } +} From 3906ea682e69b6cacb5c35e7b7b2533bc42a28ab Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 15:56:59 +0800 Subject: [PATCH 072/739] SignUpCommand.java: Update variable typo --- src/main/java/seedu/address/logic/commands/SignUpCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/commands/SignUpCommand.java b/src/main/java/seedu/address/logic/commands/SignUpCommand.java index 73df57b6bd12..f24f81c621d7 100644 --- a/src/main/java/seedu/address/logic/commands/SignUpCommand.java +++ b/src/main/java/seedu/address/logic/commands/SignUpCommand.java @@ -26,7 +26,7 @@ public class SignUpCommand extends Command { + PREFIX_USERNAME + "johndoe " + PREFIX_PASSWORD + "johndoepassword"; - public static final String MESSAGE_SUCCESS = "New person added: %1$s"; + public static final String MESSAGE_SUCCESS = "New user added: %1$s"; public static final String MESSAGE_DUPLICATE_USER = "This user already exists in FoodZoom."; private final Manager toAdd; From 83e82c54b8fab2317a1defbca3b3b3b559a0e0a9 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 15:58:19 +0800 Subject: [PATCH 073/739] AddressBookParser.java: Add /login command --- .../java/seedu/address/logic/parser/AddressBookParser.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 0852440ad9c6..4e6443c2fc74 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -10,6 +10,7 @@ import seedu.address.logic.commands.HelpCommand; import seedu.address.logic.commands.HistoryCommand; import seedu.address.logic.commands.ListCommand; +import seedu.address.logic.commands.LoginCommand; import seedu.address.logic.commands.RedoCommand; import seedu.address.logic.commands.SelectCommand; import seedu.address.logic.commands.SignUpCommand; @@ -88,6 +89,9 @@ public Command parseCommand(String userInput) throws ParseException { case SignUpCommand.COMMAND_WORD: return new SignUpCommandParser().parse(arguments); + case LoginCommand.COMMAND_WORD: + return new HelpCommand(); + default: throw new ParseException(MESSAGE_UNKNOWN_COMMAND); } From 48b9d3a1e608821fe8ae19eb0f7c53c0b84a9316 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 16:17:27 +0800 Subject: [PATCH 074/739] Model.java: Add getFilteredUsersList() method --- src/main/java/seedu/address/model/Model.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index ff5976660686..dcbd02b7d769 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -92,4 +92,8 @@ public interface Model { * @throws NullPointerException if {@code predicate} is null. */ void updateFilteredUsersList(Predicate predicate); + + + /** Returns an unmodifiable view of the filtered users list */ + ObservableList getFilteredUsersList(); } From 09941d6bd2d16c01f513658482b05ac87a695d8c Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 16:17:52 +0800 Subject: [PATCH 075/739] ModelManager.java: Implement getFilteredUsersList() method --- src/main/java/seedu/address/model/ModelManager.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 382a005c032a..0a81e86273d1 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -168,6 +168,11 @@ public void updateFilteredUsersList(Predicate predicate) { filteredUsers.setPredicate(predicate); } + @Override + public ObservableList getFilteredUsersList() { + return FXCollections.unmodifiableObservableList(filteredUsers); + } + /** * Raises an event to indicate the model has changed */ From 0d4a5987f7d0dca3cda96ce2e7f5ce070dbddf90 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 16:19:02 +0800 Subject: [PATCH 076/739] SignUpCommand.java: Update imports --- .../seedu/address/logic/commands/SignUpCommand.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/SignUpCommand.java b/src/main/java/seedu/address/logic/commands/SignUpCommand.java index f24f81c621d7..5a832e2124e5 100644 --- a/src/main/java/seedu/address/logic/commands/SignUpCommand.java +++ b/src/main/java/seedu/address/logic/commands/SignUpCommand.java @@ -1,17 +1,15 @@ package seedu.address.logic.commands; -import seedu.address.logic.CommandHistory; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Model; -import seedu.address.model.person.Person; -import seedu.address.model.user.Manager; -import seedu.address.model.user.User; - import static java.util.Objects.requireNonNull; import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; import static seedu.address.logic.parser.CliSyntax.PREFIX_PASSWORD; import static seedu.address.logic.parser.CliSyntax.PREFIX_USERNAME; +import seedu.address.logic.CommandHistory; +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Model; +import seedu.address.model.user.Manager; + public class SignUpCommand extends Command { public static final String COMMAND_WORD = "/signup"; From 0494a26bb42e856154938e65f85234bb7b89f2c2 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 16:28:22 +0800 Subject: [PATCH 077/739] Add LoginCommandParser.java --- .../logic/parser/LoginCommandParser.java | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 src/main/java/seedu/address/logic/parser/LoginCommandParser.java diff --git a/src/main/java/seedu/address/logic/parser/LoginCommandParser.java b/src/main/java/seedu/address/logic/parser/LoginCommandParser.java new file mode 100644 index 000000000000..0c832814f479 --- /dev/null +++ b/src/main/java/seedu/address/logic/parser/LoginCommandParser.java @@ -0,0 +1,35 @@ +package seedu.address.logic.parser; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.parser.CliSyntax.PREFIX_PASSWORD; +import static seedu.address.logic.parser.CliSyntax.PREFIX_USERNAME; + +import seedu.address.logic.commands.LoginCommand; +import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.person.Password; +import seedu.address.model.person.Username; +import seedu.address.model.user.Manager; + +/** + * Parses input arguments and creates a new LoginCommand object + */ +public class LoginCommandParser implements Parser { + @Override + public LoginCommand parse(String args) throws ParseException { + ArgumentMultimap argMultimap = + ArgumentTokenizer.tokenize(args, PREFIX_USERNAME, PREFIX_PASSWORD); + + if (!ParserUtil.arePrefixesPresent(argMultimap, PREFIX_USERNAME, PREFIX_PASSWORD) + || !argMultimap.getPreamble().isEmpty()) { + throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, LoginCommand.MESSAGE_USAGE)); + } + + + Username username = ParserUtil.parseUsername(argMultimap.getValue(PREFIX_USERNAME).get()); + Password password = ParserUtil.parsePassword(argMultimap.getValue(PREFIX_PASSWORD).get()); + + Manager manager = new Manager(username, password); + + return new LoginCommand(manager); + } +} From 6ded55a396d7e3d7c2910b01c7dca8e56894df34 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 16:28:55 +0800 Subject: [PATCH 078/739] Manager.java: Add new constructor for login --- src/main/java/seedu/address/model/user/Manager.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/address/model/user/Manager.java b/src/main/java/seedu/address/model/user/Manager.java index 633f48bdfd9c..a163ecc1283c 100644 --- a/src/main/java/seedu/address/model/user/Manager.java +++ b/src/main/java/seedu/address/model/user/Manager.java @@ -5,7 +5,7 @@ import seedu.address.model.person.Username; -public class Manager extends User{ +public class Manager extends User { /** * Every field must be present and not null. @@ -18,6 +18,8 @@ public Manager(Name name, Username username, Password password) { super(name, username, password); } - + public Manager(Username username, Password password) { + super(new Name(""), username, password); + } } From dcfac26cdc63c413a06db9fbf2d6df4da805f040 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 17:02:50 +0800 Subject: [PATCH 079/739] User.java: Add isSameExistingUser() for login --- .../java/seedu/address/model/user/User.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/main/java/seedu/address/model/user/User.java b/src/main/java/seedu/address/model/user/User.java index 8e17c98f8231..197145407035 100644 --- a/src/main/java/seedu/address/model/user/User.java +++ b/src/main/java/seedu/address/model/user/User.java @@ -16,7 +16,7 @@ public abstract class User { // Identity fields - private final Name name; + private Name name; private final Username username; private final Password password; @@ -30,6 +30,12 @@ public User(Name name, Username username, Password password) { this.password = password; } + public User(Username username, Password password) { + requireAllNonNull(username, password); + this.username = username; + this.password = password; + } + public Name getName() { return name; } @@ -56,6 +62,19 @@ public boolean isSameUser(User otherUser) { && otherUser.getUsername().equals(getUsername()); } + /** + * Returns true if both users of the same username and password. + */ + public boolean isSameExistingUser(User otherUser) { + if (otherUser == this) { + return true; + } + + return otherUser != null + && otherUser.getUsername().equals(getUsername()) + && otherUser.getPassword().equals(getPassword()); + } + /** * Returns true if both persons have the same identity and data fields. @@ -75,7 +94,6 @@ public boolean equals(Object other) { return otherPerson.getName().equals(getName()) && otherPerson.getUsername().equals(getUsername()) && otherPerson.getPassword().equals(getPassword()); - } @Override From f5029d3a42c7a4ef0d42b044becd8053c48c99bd Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 17:03:23 +0800 Subject: [PATCH 080/739] Manager.java: Add additional constructor --- src/main/java/seedu/address/model/user/Manager.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/model/user/Manager.java b/src/main/java/seedu/address/model/user/Manager.java index a163ecc1283c..09d262372370 100644 --- a/src/main/java/seedu/address/model/user/Manager.java +++ b/src/main/java/seedu/address/model/user/Manager.java @@ -19,7 +19,7 @@ public Manager(Name name, Username username, Password password) { } public Manager(Username username, Password password) { - super(new Name(""), username, password); + super(username, password); } } From 37ddd7e589756ca93ebc9cb0eb5d134cdde557e6 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 17:12:31 +0800 Subject: [PATCH 081/739] UniqueUserList.java: Add check() method for login --- .../java/seedu/address/model/user/UniqueUserList.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/seedu/address/model/user/UniqueUserList.java b/src/main/java/seedu/address/model/user/UniqueUserList.java index 4d290634c0fd..4c148ba108f0 100644 --- a/src/main/java/seedu/address/model/user/UniqueUserList.java +++ b/src/main/java/seedu/address/model/user/UniqueUserList.java @@ -26,6 +26,14 @@ public boolean contains(User toCheck) { return internalList.stream().anyMatch(toCheck::isSameUser); } + /** + * Returns true if the list contains an equivalent person as the given username and password. + */ + public boolean check(User toCheck) { + requireNonNull(toCheck); + return internalList.stream().anyMatch(toCheck::isSameExistingUser); + } + /** * Adds a user to the list. * The user must not already exist in the list. From e0b9ad299b29a9ed1692f372e25cc08e0c29acaa Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 17:13:03 +0800 Subject: [PATCH 082/739] UsersList.java: Add login() method --- src/main/java/seedu/address/model/UsersList.java | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/java/seedu/address/model/UsersList.java b/src/main/java/seedu/address/model/UsersList.java index 018068deb78d..84c9ffc73b14 100644 --- a/src/main/java/seedu/address/model/UsersList.java +++ b/src/main/java/seedu/address/model/UsersList.java @@ -51,6 +51,14 @@ public boolean hasUser(User user) { return users.contains(user); } + /** + * Returns true if a user with the same identity as {@code user} exists in the usersList. + */ + public boolean login(User toLogin) { + requireNonNull(toLogin); + return users.check(toLogin); + } + /** * Adds a user to the user list. * The user must not already exist in the user list. From 66f6c0359b7d6827f70535d0d2e0afda4a927c5a Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 17:14:10 +0800 Subject: [PATCH 083/739] Model.java: Add loginUser() method --- src/main/java/seedu/address/model/Model.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index dcbd02b7d769..2989bebee480 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -96,4 +96,6 @@ public interface Model { /** Returns an unmodifiable view of the filtered users list */ ObservableList getFilteredUsersList(); + + boolean loginUser(User user); } From ffe3eae8cb7ba2272623546faf164549662fb657 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 17:14:34 +0800 Subject: [PATCH 084/739] ModelManager.java: Implement loginUser() method --- src/main/java/seedu/address/model/ModelManager.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 0a81e86273d1..077bf6549e08 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -173,6 +173,12 @@ public ObservableList getFilteredUsersList() { return FXCollections.unmodifiableObservableList(filteredUsers); } + @Override + public boolean loginUser(User user) { + requireNonNull(user); + return versionedUsersList.login(user); + } + /** * Raises an event to indicate the model has changed */ From 8c3f18fedd6862f8cada5706919d8bc3d03c9bc4 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 17:16:25 +0800 Subject: [PATCH 085/739] AddressBookParser.java: Update LoginCommand --- src/main/java/seedu/address/logic/parser/AddressBookParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index 4e6443c2fc74..e540372c6b7e 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -90,7 +90,7 @@ public Command parseCommand(String userInput) throws ParseException { return new SignUpCommandParser().parse(arguments); case LoginCommand.COMMAND_WORD: - return new HelpCommand(); + return new LoginCommandParser().parse(arguments); default: throw new ParseException(MESSAGE_UNKNOWN_COMMAND); From aea195515361eacdb578bf96c2cf2987cc9bf788 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 17:17:15 +0800 Subject: [PATCH 086/739] LoginCommand.java: Update execute() method --- .../address/logic/commands/LoginCommand.java | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/logic/commands/LoginCommand.java b/src/main/java/seedu/address/logic/commands/LoginCommand.java index e0748a61648c..3f09549b02f9 100644 --- a/src/main/java/seedu/address/logic/commands/LoginCommand.java +++ b/src/main/java/seedu/address/logic/commands/LoginCommand.java @@ -1,5 +1,9 @@ package seedu.address.logic.commands; +import static java.util.Objects.requireNonNull; +import static seedu.address.logic.parser.CliSyntax.PREFIX_PASSWORD; +import static seedu.address.logic.parser.CliSyntax.PREFIX_USERNAME; + import seedu.address.logic.CommandHistory; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; @@ -11,8 +15,33 @@ public class LoginCommand extends Command { public static final String MESSAGE_SUCCESS = "Login Success for %1$s"; + public static final String MESSAGE_FAILURE = "Login Failure for %1$s"; + + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Login to FoodZoom. " + + "Parameters: " + + PREFIX_USERNAME + "USERNAME " + + PREFIX_PASSWORD + "PASSWORD \n" + + "Example: " + COMMAND_WORD + " " + + PREFIX_USERNAME + "johndoe " + + PREFIX_PASSWORD + "johndoepassword"; + + private final Manager toLogin; + + /** + * Creates an LoginCommand to add the specified {@code Manager} + */ + public LoginCommand(Manager manager) { + requireNonNull(manager); + toLogin = manager; + } + @Override public CommandResult execute(Model model, CommandHistory history) throws CommandException { - return null; + requireNonNull(model); + if (model.loginUser(toLogin)) { + return new CommandResult(String.format(MESSAGE_SUCCESS, toLogin)); + } else { + return new CommandResult(String.format(MESSAGE_FAILURE, toLogin)); + } } } From 6ea0ee4627c5caa99bbde83dd893c5b50569740a Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 17:51:34 +0800 Subject: [PATCH 087/739] UsersListChangedEvent.java: Add EOF --- .../address/commons/events/model/UsersListChangedEvent.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java b/src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java index 19c9d81cf99c..20890a8ac62f 100644 --- a/src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java +++ b/src/main/java/seedu/address/commons/events/model/UsersListChangedEvent.java @@ -16,4 +16,4 @@ public UsersListChangedEvent(ReadOnlyUsersList data) { public String toString() { return "number of users " + data.getUserList().size(); } -} \ No newline at end of file +} From e778237ad8f88eef8b0b538d0a159405da78e177 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Sat, 29 Sep 2018 18:28:15 +0800 Subject: [PATCH 088/739] Updated javadocs and styles --- .../seedu/address/logic/commands/LoginCommand.java | 3 +++ .../seedu/address/logic/commands/SignUpCommand.java | 3 +++ .../seedu/address/logic/parser/AddCommandParser.java | 1 - .../address/logic/parser/AddressBookParser.java | 12 ++++++------ src/main/java/seedu/address/model/Model.java | 7 +++---- src/main/java/seedu/address/model/UsersList.java | 4 ++++ src/main/java/seedu/address/model/user/Manager.java | 4 +++- 7 files changed, 22 insertions(+), 12 deletions(-) diff --git a/src/main/java/seedu/address/logic/commands/LoginCommand.java b/src/main/java/seedu/address/logic/commands/LoginCommand.java index 3f09549b02f9..9cd403a33c58 100644 --- a/src/main/java/seedu/address/logic/commands/LoginCommand.java +++ b/src/main/java/seedu/address/logic/commands/LoginCommand.java @@ -9,6 +9,9 @@ import seedu.address.model.Model; import seedu.address.model.user.Manager; +/** + * Login the user into FoodZoom. + */ public class LoginCommand extends Command { public static final String COMMAND_WORD = "/login"; diff --git a/src/main/java/seedu/address/logic/commands/SignUpCommand.java b/src/main/java/seedu/address/logic/commands/SignUpCommand.java index 5a832e2124e5..161288671eb5 100644 --- a/src/main/java/seedu/address/logic/commands/SignUpCommand.java +++ b/src/main/java/seedu/address/logic/commands/SignUpCommand.java @@ -10,6 +10,9 @@ import seedu.address.model.Model; import seedu.address.model.user.Manager; +/** + * Sign up the user into FoodZoom. + */ public class SignUpCommand extends Command { public static final String COMMAND_WORD = "/signup"; diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java index 7740b936f3f4..efecb7d31937 100644 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddCommandParser.java @@ -8,7 +8,6 @@ import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; import java.util.Set; -import java.util.stream.Stream; import seedu.address.logic.commands.AddCommand; import seedu.address.logic.parser.exceptions.ParseException; diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/AddressBookParser.java index e540372c6b7e..0d8754e6b0df 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/AddressBookParser.java @@ -1,5 +1,11 @@ package seedu.address.logic.parser; +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import seedu.address.logic.commands.AddCommand; import seedu.address.logic.commands.ClearCommand; import seedu.address.logic.commands.Command; @@ -17,12 +23,6 @@ import seedu.address.logic.commands.UndoCommand; import seedu.address.logic.parser.exceptions.ParseException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; - /** * Parses user input. */ diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index 2989bebee480..df1579efc57e 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -13,6 +13,9 @@ public interface Model { /** {@code Predicate} that always evaluate to true */ Predicate PREDICATE_SHOW_ALL_PERSONS = unused -> true; + /** {@code Predicate} that always evaluate to true */ + Predicate PREDICATE_SHOW_ALL_USERS = unused -> true; + /** Clears existing backing model and replaces with the provided new data. */ void resetData(ReadOnlyAddressBook newData); @@ -77,10 +80,6 @@ public interface Model { */ void commitAddressBook(); - - /** {@code Predicate} that always evaluate to true */ - Predicate PREDICATE_SHOW_ALL_USERS = unused -> true; - boolean hasUser(User user); void addUser(User user); diff --git a/src/main/java/seedu/address/model/UsersList.java b/src/main/java/seedu/address/model/UsersList.java index 84c9ffc73b14..1433d4d70547 100644 --- a/src/main/java/seedu/address/model/UsersList.java +++ b/src/main/java/seedu/address/model/UsersList.java @@ -8,6 +8,10 @@ import seedu.address.model.user.UniqueUserList; import seedu.address.model.user.User; +/** + * Wraps all data at the users list. + * Duplicates are not allowed. + */ public class UsersList implements ReadOnlyUsersList { private final UniqueUserList users; diff --git a/src/main/java/seedu/address/model/user/Manager.java b/src/main/java/seedu/address/model/user/Manager.java index 09d262372370..8160573b22cb 100644 --- a/src/main/java/seedu/address/model/user/Manager.java +++ b/src/main/java/seedu/address/model/user/Manager.java @@ -4,7 +4,9 @@ import seedu.address.model.person.Password; import seedu.address.model.person.Username; - +/** + * Represents a User in the FoodZoom. + */ public class Manager extends User { /** From fce2516dfb235ae6385b3b159730efa64c2129e1 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 13:30:23 +0800 Subject: [PATCH 089/739] Add UserBuilder.java --- .../seedu/address/testutil/UserBuilder.java | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 src/test/java/seedu/address/testutil/UserBuilder.java diff --git a/src/test/java/seedu/address/testutil/UserBuilder.java b/src/test/java/seedu/address/testutil/UserBuilder.java new file mode 100644 index 000000000000..e4461326e3ad --- /dev/null +++ b/src/test/java/seedu/address/testutil/UserBuilder.java @@ -0,0 +1,64 @@ +package seedu.address.testutil; + +import seedu.address.model.person.Name; +import seedu.address.model.person.Password; +import seedu.address.model.person.Username; +import seedu.address.model.user.Manager; +import seedu.address.model.user.User; + +public class UserBuilder { + + public static final String DEFAULT_NAME = "Alice Pauline"; + public static final String DEFAULT_USERNAME = "alicepauline"; + public static final String DEFAULT_PASSWORD = "alicepauline01"; + + private Name name; + private Username username; + private Password password; + + + public UserBuilder() { + name = new Name(DEFAULT_NAME); + username = new Username(DEFAULT_USERNAME); + password = new Password(DEFAULT_PASSWORD); + } + + + /** + * Initializes the UserBuilder with the data of {@code userToCopy}. + */ + public UserBuilder(User userToCopy) { + name = userToCopy.getName(); + username = userToCopy.getUsername(); + password = userToCopy.getPassword(); + } + + /** + * Sets the {@code Name} of the {@code User} that we are building. + */ + public UserBuilder withName(String name) { + this.name = new Name(name); + return this; + } + + /** + * Sets the {@code Username} of the {@code User} that we are building. + */ + public UserBuilder withUsername(String username) { + this.username = new Username(username); + return this; + } + + /** + * Sets the {@code Password} of the {@code User} that we are building. + */ + public UserBuilder withPassword(String password) { + this.password = new Password(password); + return this; + } + + public User build() { + return new Manager(name, username, password); + } + +} From f5c2f8faf9e4c968d077feda48323c48855a7b85 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 13:33:59 +0800 Subject: [PATCH 090/739] UserBuilder.java: Change package location --- .../java/seedu/address/testutil/{ => user}/UserBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/test/java/seedu/address/testutil/{ => user}/UserBuilder.java (97%) diff --git a/src/test/java/seedu/address/testutil/UserBuilder.java b/src/test/java/seedu/address/testutil/user/UserBuilder.java similarity index 97% rename from src/test/java/seedu/address/testutil/UserBuilder.java rename to src/test/java/seedu/address/testutil/user/UserBuilder.java index e4461326e3ad..e96855b95dd1 100644 --- a/src/test/java/seedu/address/testutil/UserBuilder.java +++ b/src/test/java/seedu/address/testutil/user/UserBuilder.java @@ -1,4 +1,4 @@ -package seedu.address.testutil; +package seedu.address.testutil.user; import seedu.address.model.person.Name; import seedu.address.model.person.Password; From a5a303acb3e79ab71604fed1270f48262c0541d6 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 13:39:41 +0800 Subject: [PATCH 091/739] Add TypicalUsers.java --- .../address/testutil/user/TypicalUsers.java | 45 +++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 src/test/java/seedu/address/testutil/user/TypicalUsers.java diff --git a/src/test/java/seedu/address/testutil/user/TypicalUsers.java b/src/test/java/seedu/address/testutil/user/TypicalUsers.java new file mode 100644 index 000000000000..33a979c53832 --- /dev/null +++ b/src/test/java/seedu/address/testutil/user/TypicalUsers.java @@ -0,0 +1,45 @@ +package seedu.address.testutil.user; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import seedu.address.model.UsersList; +import seedu.address.model.user.User; + +public class TypicalUsers { + public static final User ALICE = new UserBuilder() + .withName("Alice Pauline") + .withUsername("alicepauline") + .withPassword("alicepauline01") + .build(); + + public static final User BENSON = new UserBuilder() + .withName("Benson Meier") + .withUsername("bensonmeier") + .withPassword("bensonmeier02") + .build(); + + public static final User CARL = new UserBuilder() + .withName("Carl Kurz") + .withUsername("carlkurz") + .withPassword("carlkurz03") + .build(); + + private TypicalUsers() {} // prevents instantiation + + /** + * Returns an {@code UsersList} with all the typical users. + */ + public static UsersList getTypicalUsersList() { + UsersList usersList = new UsersList(); + for (User user : getTypicalUsers()) { + usersList.addUser(user); + } + return usersList; + } + + public static List getTypicalUsers() { + return new ArrayList<>(Arrays.asList(ALICE, BENSON, CARL)); + } +} From 0852853998b9d16a0fd2a0a920a8d5215e12bf05 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 13:48:47 +0800 Subject: [PATCH 092/739] RedoCommandTest.java: Update with new ModelManager() --- .../java/seedu/address/logic/commands/RedoCommandTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/address/logic/commands/RedoCommandTest.java b/src/test/java/seedu/address/logic/commands/RedoCommandTest.java index c8aaf714b890..3495855aa23d 100644 --- a/src/test/java/seedu/address/logic/commands/RedoCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/RedoCommandTest.java @@ -4,6 +4,7 @@ import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson; import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; import org.junit.Before; import org.junit.Test; @@ -15,8 +16,9 @@ public class RedoCommandTest { - private final Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - private final Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private final Model model = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); + private final Model expectedModel = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), + new UserPrefs()); private final CommandHistory commandHistory = new CommandHistory(); @Before From 1154db794e6e06ed8c7dc3edd16f8702aea47d9c Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 14:29:48 +0800 Subject: [PATCH 093/739] AddCommandTest.java: Update ModelStub class --- .../logic/commands/AddCommandTest.java | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/test/java/seedu/address/logic/commands/AddCommandTest.java b/src/test/java/seedu/address/logic/commands/AddCommandTest.java index c7077829f434..043d66297c64 100644 --- a/src/test/java/seedu/address/logic/commands/AddCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/AddCommandTest.java @@ -20,6 +20,7 @@ import seedu.address.model.Model; import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.person.Person; +import seedu.address.model.user.User; import seedu.address.testutil.PersonBuilder; public class AddCommandTest { @@ -152,6 +153,36 @@ public void redoAddressBook() { public void commitAddressBook() { throw new AssertionError("This method should not be called."); } + + @Override + public boolean hasUser(User user) { + throw new AssertionError("This method should not be called."); + } + + @Override + public void addUser(User user) { + throw new AssertionError("This method should not be called."); + } + + @Override + public void commitUsersList() { + throw new AssertionError("This method should not be called."); + } + + @Override + public void updateFilteredUsersList(Predicate predicate) { + throw new AssertionError("This method should not be called."); + } + + @Override + public ObservableList getFilteredUsersList() { + throw new AssertionError("This method should not be called."); + } + + @Override + public boolean loginUser(User user) { + throw new AssertionError("This method should not be called."); + } } /** From 0b8167bc601930249b401f80acae43556c3f7c4c Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Mon, 1 Oct 2018 14:59:01 +0800 Subject: [PATCH 094/739] Add base model for order --- .../java/seedu/address/model/order/Food.java | 59 ++++++++++ .../java/seedu/address/model/order/Order.java | 111 ++++++++++++++++++ 2 files changed, 170 insertions(+) create mode 100644 src/main/java/seedu/address/model/order/Food.java create mode 100644 src/main/java/seedu/address/model/order/Order.java diff --git a/src/main/java/seedu/address/model/order/Food.java b/src/main/java/seedu/address/model/order/Food.java new file mode 100644 index 000000000000..a4ec6b551076 --- /dev/null +++ b/src/main/java/seedu/address/model/order/Food.java @@ -0,0 +1,59 @@ +package seedu.address.model.order; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.AppUtil.checkArgument; + +/** + * Represents a Food's name in the order book. + * Guarantees: immutable; is valid as declared in {@link #isValidFoodName(String)} + */ +public class Food { + + public static final String MESSAGE_NAME_CONSTRAINTS = + "Food should only contain alphanumeric characters and spaces, and it should not be blank"; + + /* + * The first character of the food must not be a whitespace, + * otherwise " " (a blank string) becomes a valid input. + */ + public static final String FOOD_VALIDATION_REGEX = "[\\p{Alnum}][\\p{Alnum} ]*"; + + public final String foodName; + + /** + * Constructs a {@code Food}. + * + * @param name A valid name. + */ + public Food(String name) { + requireNonNull(name); + checkArgument(isValidFood(name), MESSAGE_NAME_CONSTRAINTS); + foodName = name; + } + + /** + * Returns true if a given string is a valid Food. + */ + public static boolean isValidFood(String test) { + return test.matches(FOOD_VALIDATION_REGEX); + } + + + @Override + public String toString() { + return foodName; + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof Food // instanceof handles nulls + && foodName.equals(((Food) other).foodName)); // state check + } + + @Override + public int hashCode() { + return foodName.hashCode(); + } + +} diff --git a/src/main/java/seedu/address/model/order/Order.java b/src/main/java/seedu/address/model/order/Order.java new file mode 100644 index 000000000000..04d57bffb4d0 --- /dev/null +++ b/src/main/java/seedu/address/model/order/Order.java @@ -0,0 +1,111 @@ +package seedu.address.model.order; + +import seedu.address.model.person.Address; +import seedu.address.model.person.Name; +import seedu.address.model.person.Phone; +import seedu.address.model.tag.Tag; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Objects; +import java.util.Set; + +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + +/** + * Represents an Order in the order book. + * Guarantees: details are present and not null, field values are validated, immutable. + */ +public class Order { + + // Identity fields + private final Name name; + private final Phone phone; + private final Address address; + private final Set food = new HashSet<>(); + + /** + * Every field must be present and not null. + */ + public Order(Name name, Phone phone, Address address, Set food) { + requireAllNonNull(name, phone, address, food); + this.name = name; + this.phone = phone; + this.address = address; + this.food.addAll(food); + } + + public Name getName() { + return name; + } + + public Phone getPhone() { + return phone; + } + + public Address getAddress() { + return address; + } + + /** + * Returns a food set + */ + public Set getFood() { + return food; + } + + /** + * Returns true if both orders of the same name have at least one other identity field that is the same. + * This defines a weaker notion of equality between two orders. + */ + public boolean isSameOrder(Order otherOrder) { + if (otherOrder == this) { + return true; + } + + return otherOrder != null + && otherOrder.getName().equals(getName()) + && (otherOrder.getPhone().equals(getPhone())); + } + + /** + * Returns true if both orders have the same identity and data fields. + * This defines a stronger notion of equality between two orders. + */ + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof Order)) { + return false; + } + + Order otherOrder = (Order) other; + return otherOrder.getName().equals(getName()) + && otherOrder.getPhone().equals(getPhone()) + && otherOrder.getAddress().equals(getAddress()) + && otherOrder.getFood().equals(getFood()); + } + + @Override + public int hashCode() { + // use this method for custom fields hashing instead of implementing your own + return Objects.hash(name, phone, address, food); + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append(getName()) + .append(" Phone: ") + .append(getPhone()) + .append(" Address: ") + .append(getAddress()) + .append(" Food: "); + getFood().forEach(builder::append); + return builder.toString(); + } + +} From 3e340e64376a16b74e4624e7d65e5f60b04610c7 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Mon, 1 Oct 2018 14:59:42 +0800 Subject: [PATCH 095/739] Add tests for order model --- .../address/model/util/SampleDataUtil.java | 10 +++ .../logic/commands/CommandTestUtil.java | 1 + .../seedu/address/model/order/FoodTest.java | 41 ++++++++++ .../seedu/address/model/order/OrderTest.java | 82 +++++++++++++++++++ .../seedu/address/testutil/OrderBuilder.java | 80 ++++++++++++++++++ .../seedu/address/testutil/TypicalOrders.java | 25 ++++++ 6 files changed, 239 insertions(+) create mode 100644 src/test/java/seedu/address/model/order/FoodTest.java create mode 100644 src/test/java/seedu/address/model/order/OrderTest.java create mode 100644 src/test/java/seedu/address/testutil/OrderBuilder.java create mode 100644 src/test/java/seedu/address/testutil/TypicalOrders.java diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java index 1806da4facfa..f09c24583d25 100644 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ b/src/main/java/seedu/address/model/util/SampleDataUtil.java @@ -12,6 +12,7 @@ import seedu.address.model.person.Person; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; +import seedu.address.model.order.Food; /** * Contains utility methods for populating {@code AddressBook} with sample data. @@ -57,4 +58,13 @@ public static Set getTagSet(String... strings) { .collect(Collectors.toSet()); } + + /** + * Returns a food set containing the list of strings given. + */ + public static Set getFoodSet(String... strings) { + return Arrays.stream(strings) + .map(Food::new) + .collect(Collectors.toSet()); + } } diff --git a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java index bf861fcb36c3..ca1c3b029bdd 100644 --- a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java +++ b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java @@ -36,6 +36,7 @@ public class CommandTestUtil { public static final String VALID_ADDRESS_BOB = "Block 123, Bobby Street 3"; public static final String VALID_TAG_HUSBAND = "husband"; public static final String VALID_TAG_FRIEND = "friend"; + public static final String VALID_FOOD_BURGER = "burger"; public static final String NAME_DESC_AMY = " " + PREFIX_NAME + VALID_NAME_AMY; public static final String NAME_DESC_BOB = " " + PREFIX_NAME + VALID_NAME_BOB; diff --git a/src/test/java/seedu/address/model/order/FoodTest.java b/src/test/java/seedu/address/model/order/FoodTest.java new file mode 100644 index 000000000000..d1a986a3c956 --- /dev/null +++ b/src/test/java/seedu/address/model/order/FoodTest.java @@ -0,0 +1,41 @@ +package seedu.address.model.order; + +import org.junit.Test; +import seedu.address.model.order.Food; +import seedu.address.testutil.Assert; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class FoodTest { + + @Test + public void constructor_null_throwsNullPointerException() { + Assert.assertThrows(NullPointerException.class, () -> new Food(null)); + } + + @Test + public void constructor_invalidName_throwsIllegalArgumentException() { + String invalidName = ""; + Assert.assertThrows(IllegalArgumentException.class, () -> new Food(invalidName)); + } + + @Test + public void isValidFood() { + // null name + Assert.assertThrows(NullPointerException.class, () -> Food.isValidFood(null)); + + // invalid food + assertFalse(Food.isValidFood("")); // empty string + assertFalse(Food.isValidFood(" ")); // spaces only + assertFalse(Food.isValidFood("^")); // only non-alphanumeric characters + assertFalse(Food.isValidFood("peter*")); // contains non-alphanumeric characters + + // valid food + assertTrue(Food.isValidFood("roti prata")); // alphabets only + assertTrue(Food.isValidFood("chocolate milkshake")); // numbers only + assertTrue(Food.isValidFood("ice-tea")); // alphanumeric characters + assertTrue(Food.isValidFood("rojak")); // with capital letters + assertTrue(Food.isValidFood("lasagna")); // long names + } +} diff --git a/src/test/java/seedu/address/model/order/OrderTest.java b/src/test/java/seedu/address/model/order/OrderTest.java new file mode 100644 index 000000000000..ba41b827ed79 --- /dev/null +++ b/src/test/java/seedu/address/model/order/OrderTest.java @@ -0,0 +1,82 @@ +package seedu.address.model.order; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static seedu.address.testutil.TypicalOrders.ALICE; +import static seedu.address.testutil.TypicalOrders.BENSON; +import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; +import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; +import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; +import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_BURGER; + +import org.junit.Test; +import seedu.address.testutil.OrderBuilder; + +public class OrderTest { + + @Test + public void isSameOrder() { + // same object -> returns true + assertTrue(ALICE.isSameOrder(ALICE)); + + // null -> returns false + assertFalse(ALICE.isSameOrder(null)); + + // different phone -> returns false + Order editedAlice = new OrderBuilder(ALICE).withPhone(VALID_PHONE_BOB).build(); + assertFalse(ALICE.isSameOrder(editedAlice)); + + // different name -> returns false + editedAlice = new OrderBuilder(ALICE).withName(VALID_NAME_BOB).build(); + assertFalse(ALICE.isSameOrder(editedAlice)); + + // same name, same phone, different address and food -> returns true + editedAlice = new OrderBuilder(ALICE).withAddress(VALID_ADDRESS_BOB) + .withFood(VALID_FOOD_BURGER).build(); + assertTrue(ALICE.isSameOrder(editedAlice)); + + // same name, different food -> returns true + editedAlice = new OrderBuilder(ALICE) + .withFood(VALID_FOOD_BURGER).build(); + assertTrue(ALICE.isSameOrder(editedAlice)); + } + + @Test + public void equals() { + // same values -> returns true + Order aliceCopy = new OrderBuilder(ALICE).build(); + assertTrue(ALICE.equals(aliceCopy)); + + // same object -> returns true + assertTrue(ALICE.equals(ALICE)); + + // null -> returns false + assertFalse(ALICE.equals(null)); + + // different type -> returns false + assertFalse(ALICE.equals(5)); + + // different person -> returns false + assertFalse(ALICE.equals(BENSON)); + + // different name -> returns false + Order editedAlice = new OrderBuilder(ALICE).withName(VALID_NAME_BOB).build(); + assertFalse(ALICE.equals(editedAlice)); + + // different phone -> returns false + editedAlice = new OrderBuilder(ALICE).withPhone(VALID_PHONE_BOB).build(); + assertFalse(ALICE.equals(editedAlice)); + + // different email -> returns false + editedAlice = new OrderBuilder(ALICE).build(); + assertFalse(ALICE.equals(editedAlice)); + + // different address -> returns false + editedAlice = new OrderBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).build(); + assertFalse(ALICE.equals(editedAlice)); + + // different tags -> returns false + editedAlice = new OrderBuilder(ALICE).withFood(VALID_FOOD_BURGER).build(); + assertFalse(ALICE.equals(editedAlice)); + } +} diff --git a/src/test/java/seedu/address/testutil/OrderBuilder.java b/src/test/java/seedu/address/testutil/OrderBuilder.java new file mode 100644 index 000000000000..248b28de7fb6 --- /dev/null +++ b/src/test/java/seedu/address/testutil/OrderBuilder.java @@ -0,0 +1,80 @@ +package seedu.address.testutil; + +import seedu.address.model.person.*; +import seedu.address.model.order.Food; +import seedu.address.model.order.Order; +import seedu.address.model.util.SampleDataUtil; + +import java.util.HashSet; +import java.util.Set; + +/** + * A utility class to help with building Order objects. + */ +public class OrderBuilder { + + public static final String DEFAULT_NAME = "Alice Pauline"; + public static final String DEFAULT_PHONE = "85355255"; + public static final String DEFAULT_ADDRESS = "123, Jurong West Ave 6, #08-111"; + public static final String DEFAULT_FOOD = "Fried Rice"; + + private Name name; + private Phone phone; + private Address address; + private Set food; + + public OrderBuilder() { + name = new Name(DEFAULT_NAME); + phone = new Phone(DEFAULT_PHONE); + address = new Address(DEFAULT_ADDRESS); + food = SampleDataUtil.getFoodSet(DEFAULT_FOOD); + } + + /** + * Initializes the OrderBuilder with the data of {@code orderToCopy}. + */ + public OrderBuilder(Order orderToCopy) { + name = orderToCopy.getName(); + phone = orderToCopy.getPhone(); + address = orderToCopy.getAddress(); + food = new HashSet<>(orderToCopy.getFood()); + } + + /** + * Sets the {@code Name} of the {@code Order} that we are building. + */ + public OrderBuilder withName(String name) { + this.name = new Name(name); + return this; + } + + /** + * Parses the {@code food} into a {@code Set} and set it to the {@code Order} that we are building. + */ + public OrderBuilder withFood(String ... food) { + this.food = SampleDataUtil.getFoodSet(food); + return this; + } + + /** + * Sets the {@code Address} of the {@code Person} that we are building. + */ + public OrderBuilder withAddress(String address) { + this.address = new Address(address); + return this; + } + + /** + * Sets the {@code Phone} of the {@code Person} that we are building. + */ + public OrderBuilder withPhone(String phone) { + this.phone = new Phone(phone); + return this; + } + + + public Order build() { + return new Order(name, phone, address, food); + } + +} diff --git a/src/test/java/seedu/address/testutil/TypicalOrders.java b/src/test/java/seedu/address/testutil/TypicalOrders.java new file mode 100644 index 000000000000..0ebee01d9256 --- /dev/null +++ b/src/test/java/seedu/address/testutil/TypicalOrders.java @@ -0,0 +1,25 @@ +package seedu.address.testutil; + +import seedu.address.model.order.Order; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +/** + * A utility class containing a list of {@code Order} objects to be used in tests. + */ +public class TypicalOrders { + public static final Order ALICE = new OrderBuilder().withName("Alice Pauline") + .withAddress("123, Jurong West Ave 6, #08-111") + .withPhone("94351253") + .withFood("Roti Prata").build(); + + public static final Order BENSON = new OrderBuilder().withName("Benson Meier") + .withAddress("311, Clementi Ave 2, #02-25") + .withPhone("98765432") + .withFood("Egg-Fried Rice", "Milo").build(); + + + private TypicalOrders() {} // prevents instantiation +} From 454da8c56b3afa0fc443a2dde7dd0a966935d8b5 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 20:48:51 +0800 Subject: [PATCH 096/739] Add UsersListBuilder.java --- .../testutil/user/UsersListBuilder.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/test/java/seedu/address/testutil/user/UsersListBuilder.java diff --git a/src/test/java/seedu/address/testutil/user/UsersListBuilder.java b/src/test/java/seedu/address/testutil/user/UsersListBuilder.java new file mode 100644 index 000000000000..eec1bcb8029b --- /dev/null +++ b/src/test/java/seedu/address/testutil/user/UsersListBuilder.java @@ -0,0 +1,34 @@ +package seedu.address.testutil.user; + +import seedu.address.model.UsersList; +import seedu.address.model.user.User; + +/** + * A utility class to help with building UsersList objects. + * Example usage:
+ * {@code UsersList usersList = new UsersListBuilder().withUsers("John", "Doe").build();} + */ +public class UsersListBuilder { + + private UsersList usersList; + + public UsersListBuilder() { + this.usersList = usersList; + } + + public UsersListBuilder(UsersList usersList) { + this.usersList = usersList; + } + + /** + * Adds a new {@code Person} to the {@code AddressBook} that we are building. + */ + public UsersListBuilder withUser(User user) { + usersList.addUser(user); + return this; + } + + public UsersList build() { + return usersList; + } +} From b7fd640b0f8be4c09f38d3e8eca7c4b4a015f86d Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 20:49:41 +0800 Subject: [PATCH 097/739] UsersListBuilder.java: Update withUser() javadoc --- src/test/java/seedu/address/testutil/user/UsersListBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/seedu/address/testutil/user/UsersListBuilder.java b/src/test/java/seedu/address/testutil/user/UsersListBuilder.java index eec1bcb8029b..0c24ae5d2956 100644 --- a/src/test/java/seedu/address/testutil/user/UsersListBuilder.java +++ b/src/test/java/seedu/address/testutil/user/UsersListBuilder.java @@ -21,7 +21,7 @@ public UsersListBuilder(UsersList usersList) { } /** - * Adds a new {@code Person} to the {@code AddressBook} that we are building. + * Adds a new {@code User} to the {@code UsersListBuilder} that we are building. */ public UsersListBuilder withUser(User user) { usersList.addUser(user); From 1aff2a8b46d28358ab6b8496fa9182b1663ca34c Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 20:52:08 +0800 Subject: [PATCH 098/739] TypicalUsers.java: Update constant name --- .../java/seedu/address/testutil/user/TypicalUsers.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/test/java/seedu/address/testutil/user/TypicalUsers.java b/src/test/java/seedu/address/testutil/user/TypicalUsers.java index 33a979c53832..f57f1a9a6af8 100644 --- a/src/test/java/seedu/address/testutil/user/TypicalUsers.java +++ b/src/test/java/seedu/address/testutil/user/TypicalUsers.java @@ -8,19 +8,19 @@ import seedu.address.model.user.User; public class TypicalUsers { - public static final User ALICE = new UserBuilder() + public static final User ALICE_MANAGER = new UserBuilder() .withName("Alice Pauline") .withUsername("alicepauline") .withPassword("alicepauline01") .build(); - public static final User BENSON = new UserBuilder() + public static final User BENSON_MANAGER = new UserBuilder() .withName("Benson Meier") .withUsername("bensonmeier") .withPassword("bensonmeier02") .build(); - public static final User CARL = new UserBuilder() + public static final User CARL_MANAGER = new UserBuilder() .withName("Carl Kurz") .withUsername("carlkurz") .withPassword("carlkurz03") @@ -40,6 +40,6 @@ public static UsersList getTypicalUsersList() { } public static List getTypicalUsers() { - return new ArrayList<>(Arrays.asList(ALICE, BENSON, CARL)); + return new ArrayList<>(Arrays.asList(ALICE_MANAGER, BENSON_MANAGER, CARL_MANAGER)); } } From 371780cfdd5631dabaac7bf5bcf30a46dd782cf1 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 20:56:07 +0800 Subject: [PATCH 099/739] Model.java: Add getUsersList() method --- src/main/java/seedu/address/model/Model.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index df1579efc57e..9cd1f76213d4 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -97,4 +97,7 @@ public interface Model { ObservableList getFilteredUsersList(); boolean loginUser(User user); + + /** Returns the UsersList */ + ReadOnlyUsersList getUsersList(); } From e25a23f44ae4dcfddb5a192432064ee7f611c39c Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 20:56:59 +0800 Subject: [PATCH 100/739] ModelManager.java: Implement getUsersList() --- src/main/java/seedu/address/model/ModelManager.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index 077bf6549e08..6917a5f89992 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -179,6 +179,11 @@ public boolean loginUser(User user) { return versionedUsersList.login(user); } + @Override + public ReadOnlyUsersList getUsersList() { + return versionedUsersList; + } + /** * Raises an event to indicate the model has changed */ From ddf00dd05e7f7a4702e18a7d6b72f152f694d7bb Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 20:58:55 +0800 Subject: [PATCH 101/739] AddCommandTest.java: Update ModelStub class with new method --- .../java/seedu/address/logic/commands/AddCommandTest.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/test/java/seedu/address/logic/commands/AddCommandTest.java b/src/test/java/seedu/address/logic/commands/AddCommandTest.java index 043d66297c64..1bc3200d5c7d 100644 --- a/src/test/java/seedu/address/logic/commands/AddCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/AddCommandTest.java @@ -19,6 +19,7 @@ import seedu.address.model.AddressBook; import seedu.address.model.Model; import seedu.address.model.ReadOnlyAddressBook; +import seedu.address.model.ReadOnlyUsersList; import seedu.address.model.person.Person; import seedu.address.model.user.User; import seedu.address.testutil.PersonBuilder; @@ -183,6 +184,11 @@ public ObservableList getFilteredUsersList() { public boolean loginUser(User user) { throw new AssertionError("This method should not be called."); } + + @Override + public ReadOnlyUsersList getUsersList() { + throw new AssertionError("This method should not be called."); + } } /** From 05a1ba1a300cb8f80ba31499c16d357b6204582e Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 21:00:53 +0800 Subject: [PATCH 102/739] UndoCommandTest.java: Update ModelManager --- .../java/seedu/address/logic/commands/UndoCommandTest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/address/logic/commands/UndoCommandTest.java b/src/test/java/seedu/address/logic/commands/UndoCommandTest.java index 0a706b8eb823..ba20df523f79 100644 --- a/src/test/java/seedu/address/logic/commands/UndoCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/UndoCommandTest.java @@ -4,6 +4,7 @@ import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson; import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; import org.junit.Before; import org.junit.Test; @@ -15,8 +16,9 @@ public class UndoCommandTest { - private final Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - private final Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private final Model model = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); + private final Model expectedModel = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), + new UserPrefs()); private final CommandHistory commandHistory = new CommandHistory(); @Before From 86fd87b87d089a8f296cb977fd684f545a34f0d2 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 21:02:04 +0800 Subject: [PATCH 103/739] AddCommandIntegrationTest.java: Update ModelManager --- .../address/logic/commands/AddCommandIntegrationTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java b/src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java index 771480d0e9a6..407f9ce779a2 100644 --- a/src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java +++ b/src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java @@ -3,6 +3,7 @@ import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure; import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; import org.junit.Before; import org.junit.Test; @@ -24,14 +25,14 @@ public class AddCommandIntegrationTest { @Before public void setUp() { - model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + model = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); } @Test public void execute_newPerson_success() { Person validPerson = new PersonBuilder().build(); - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + Model expectedModel = new ModelManager(model.getAddressBook(), model.getUsersList(), new UserPrefs()); expectedModel.addPerson(validPerson); expectedModel.commitAddressBook(); From 74db023d2d41410f29b46f36682d3a98d2df8ab5 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 21:04:13 +0800 Subject: [PATCH 104/739] DeleteCommandTest.java: Update ModelManager --- .../address/logic/commands/DeleteCommandTest.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/test/java/seedu/address/logic/commands/DeleteCommandTest.java b/src/test/java/seedu/address/logic/commands/DeleteCommandTest.java index f5c987bdceed..9b9d105bfd05 100644 --- a/src/test/java/seedu/address/logic/commands/DeleteCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/DeleteCommandTest.java @@ -9,6 +9,7 @@ import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; import org.junit.Test; @@ -26,7 +27,7 @@ */ public class DeleteCommandTest { - private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private Model model = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); private CommandHistory commandHistory = new CommandHistory(); @Test @@ -36,7 +37,7 @@ public void execute_validIndexUnfilteredList_success() { String expectedMessage = String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS, personToDelete); - ModelManager expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + ModelManager expectedModel = new ModelManager(model.getAddressBook(), model.getUsersList(), new UserPrefs()); expectedModel.deletePerson(personToDelete); expectedModel.commitAddressBook(); @@ -60,7 +61,7 @@ public void execute_validIndexFilteredList_success() { String expectedMessage = String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS, personToDelete); - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + Model expectedModel = new ModelManager(model.getAddressBook(), model.getUsersList(), new UserPrefs()); expectedModel.deletePerson(personToDelete); expectedModel.commitAddressBook(); showNoPerson(expectedModel); @@ -85,7 +86,7 @@ public void execute_invalidIndexFilteredList_throwsCommandException() { public void executeUndoRedo_validIndexUnfilteredList_success() throws Exception { Person personToDelete = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_PERSON); - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + Model expectedModel = new ModelManager(model.getAddressBook(), model.getUsersList(), new UserPrefs()); expectedModel.deletePerson(personToDelete); expectedModel.commitAddressBook(); @@ -124,7 +125,7 @@ public void executeUndoRedo_invalidIndexUnfilteredList_failure() { @Test public void executeUndoRedo_validIndexFilteredList_samePersonDeleted() throws Exception { DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_PERSON); - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + Model expectedModel = new ModelManager(model.getAddressBook(), model.getUsersList(), new UserPrefs()); showPersonAtIndex(model, INDEX_SECOND_PERSON); Person personToDelete = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); From c7152af37cb36704db79c808999064878ab9b003 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 21:06:29 +0800 Subject: [PATCH 105/739] EditCommandTest.java: Update ModelManager --- .../logic/commands/EditCommandTest.java | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/test/java/seedu/address/logic/commands/EditCommandTest.java b/src/test/java/seedu/address/logic/commands/EditCommandTest.java index d8aa24426698..4873bb22bc97 100644 --- a/src/test/java/seedu/address/logic/commands/EditCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/EditCommandTest.java @@ -14,6 +14,7 @@ import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; import org.junit.Test; @@ -34,7 +35,7 @@ */ public class EditCommandTest { - private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private Model model = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); private CommandHistory commandHistory = new CommandHistory(); @Test @@ -45,7 +46,8 @@ public void execute_allFieldsSpecifiedUnfilteredList_success() { String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); + Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), model.getUsersList(), + new UserPrefs()); expectedModel.updatePerson(model.getFilteredPersonList().get(0), editedPerson); expectedModel.commitAddressBook(); @@ -67,7 +69,8 @@ public void execute_someFieldsSpecifiedUnfilteredList_success() { String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); + Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), model.getUsersList(), + new UserPrefs()); expectedModel.updatePerson(lastPerson, editedPerson); expectedModel.commitAddressBook(); @@ -81,7 +84,8 @@ public void execute_noFieldSpecifiedUnfilteredList_success() { String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); + Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), model.getUsersList(), + new UserPrefs()); expectedModel.commitAddressBook(); assertCommandSuccess(editCommand, model, commandHistory, expectedMessage, expectedModel); @@ -98,7 +102,8 @@ public void execute_filteredList_success() { String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); + Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), model.getUsersList(), + new UserPrefs()); expectedModel.updatePerson(model.getFilteredPersonList().get(0), editedPerson); expectedModel.commitAddressBook(); @@ -158,7 +163,8 @@ public void executeUndoRedo_validIndexUnfilteredList_success() throws Exception Person personToEdit = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(editedPerson).build(); EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, descriptor); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); + Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), model.getUsersList(), + new UserPrefs()); expectedModel.updatePerson(personToEdit, editedPerson); expectedModel.commitAddressBook(); @@ -200,7 +206,8 @@ public void executeUndoRedo_validIndexFilteredList_samePersonEdited() throws Exc Person editedPerson = new PersonBuilder().build(); EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(editedPerson).build(); EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, descriptor); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); + Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), model.getUsersList(), + new UserPrefs()); showPersonAtIndex(model, INDEX_SECOND_PERSON); Person personToEdit = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); From 0d2df54afcf8781ab8c0d26efd38d57bfe7ca178 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 21:06:56 +0800 Subject: [PATCH 106/739] ListCommandTest.java: Update ModelManager --- .../java/seedu/address/logic/commands/ListCommandTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/address/logic/commands/ListCommandTest.java b/src/test/java/seedu/address/logic/commands/ListCommandTest.java index e5235fe4b266..99624b250f1c 100644 --- a/src/test/java/seedu/address/logic/commands/ListCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/ListCommandTest.java @@ -4,6 +4,7 @@ import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex; import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; import org.junit.Before; import org.junit.Test; @@ -24,8 +25,8 @@ public class ListCommandTest { @Before public void setUp() { - model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + model = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); + expectedModel = new ModelManager(model.getAddressBook(), model.getUsersList(), new UserPrefs()); } @Test From dca535f9a57678a19444d3a535e26bb27f40bda7 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 21:07:55 +0800 Subject: [PATCH 107/739] SelectCommandTest.java: Update ModelManager --- .../java/seedu/address/logic/commands/SelectCommandTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/address/logic/commands/SelectCommandTest.java b/src/test/java/seedu/address/logic/commands/SelectCommandTest.java index d345189362da..a6656a93c07b 100644 --- a/src/test/java/seedu/address/logic/commands/SelectCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/SelectCommandTest.java @@ -10,6 +10,7 @@ import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON; import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; import org.junit.Rule; import org.junit.Test; @@ -30,8 +31,8 @@ public class SelectCommandTest { @Rule public final EventsCollectorRule eventsCollectorRule = new EventsCollectorRule(); - private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - private Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private Model model = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); + private Model expectedModel = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); private CommandHistory commandHistory = new CommandHistory(); @Test From 1af3c7e2f4f5aa6c6c15376c8dbe905f756d32b9 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 21:08:48 +0800 Subject: [PATCH 108/739] TestApp.java: Update ModelManager --- src/test/java/seedu/address/TestApp.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/seedu/address/TestApp.java b/src/test/java/seedu/address/TestApp.java index 74fe55a2e430..1b640d6d99f8 100644 --- a/src/test/java/seedu/address/TestApp.java +++ b/src/test/java/seedu/address/TestApp.java @@ -92,7 +92,7 @@ public Path getStorageSaveLocation() { * Returns a defensive copy of the model. */ public Model getModel() { - Model copy = new ModelManager((model.getAddressBook()), new UserPrefs()); + Model copy = new ModelManager(model.getAddressBook(), model.getUsersList(), new UserPrefs()); ModelHelper.setFilteredList(copy, model.getFilteredPersonList()); return copy; } From 4e9a472f48079a01504b6ecff409475aaea186c2 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 21:09:32 +0800 Subject: [PATCH 109/739] ModelManagerTest.java: Update ModelManager --- .../seedu/address/model/ModelManagerTest.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/test/java/seedu/address/model/ModelManagerTest.java b/src/test/java/seedu/address/model/ModelManagerTest.java index 7eab39d5de43..9030abf9028d 100644 --- a/src/test/java/seedu/address/model/ModelManagerTest.java +++ b/src/test/java/seedu/address/model/ModelManagerTest.java @@ -5,6 +5,8 @@ import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; import static seedu.address.testutil.TypicalPersons.ALICE; import static seedu.address.testutil.TypicalPersons.BENSON; +import static seedu.address.testutil.user.TypicalUsers.ALICE_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.CARL_MANAGER; import java.nio.file.Paths; import java.util.Arrays; @@ -15,6 +17,7 @@ import seedu.address.model.person.NameContainsKeywordsPredicate; import seedu.address.testutil.AddressBookBuilder; +import seedu.address.testutil.user.UsersListBuilder; public class ModelManagerTest { @Rule @@ -51,9 +54,12 @@ public void equals() { AddressBook differentAddressBook = new AddressBook(); UserPrefs userPrefs = new UserPrefs(); + UsersList usersList = new UsersListBuilder().withUser(ALICE_MANAGER).withUser(CARL_MANAGER).build(); + UsersList differentUsersList = new UsersList(); + // same values -> returns true - modelManager = new ModelManager(addressBook, userPrefs); - ModelManager modelManagerCopy = new ModelManager(addressBook, userPrefs); + modelManager = new ModelManager(addressBook, usersList, userPrefs); + ModelManager modelManagerCopy = new ModelManager(addressBook, usersList, userPrefs); assertTrue(modelManager.equals(modelManagerCopy)); // same object -> returns true @@ -66,12 +72,12 @@ public void equals() { assertFalse(modelManager.equals(5)); // different addressBook -> returns false - assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs))); + assertFalse(modelManager.equals(new ModelManager(differentAddressBook, differentUsersList, userPrefs))); // different filteredList -> returns false String[] keywords = ALICE.getName().fullName.split("\\s+"); modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords))); - assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs))); + assertFalse(modelManager.equals(new ModelManager(addressBook, usersList, userPrefs))); // resets modelManager to initial state for upcoming tests modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); @@ -79,6 +85,6 @@ public void equals() { // different userPrefs -> returns true UserPrefs differentUserPrefs = new UserPrefs(); differentUserPrefs.setAddressBookFilePath(Paths.get("differentFilePath")); - assertTrue(modelManager.equals(new ModelManager(addressBook, differentUserPrefs))); + assertTrue(modelManager.equals(new ModelManager(addressBook, usersList, differentUserPrefs))); } } From 4841c7442151207c070e4e4f63988626b98ee963 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 21:10:10 +0800 Subject: [PATCH 110/739] ClearCommandTest.java: Update ModelManager --- .../java/seedu/address/logic/commands/ClearCommandTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/address/logic/commands/ClearCommandTest.java b/src/test/java/seedu/address/logic/commands/ClearCommandTest.java index db2c7263d25d..a8e0d852ee13 100644 --- a/src/test/java/seedu/address/logic/commands/ClearCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/ClearCommandTest.java @@ -2,6 +2,7 @@ import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; import org.junit.Test; @@ -26,8 +27,8 @@ public void execute_emptyAddressBook_success() { @Test public void execute_nonEmptyAddressBook_success() { - Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + Model model = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); + Model expectedModel = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); expectedModel.resetData(new AddressBook()); expectedModel.commitAddressBook(); From 011781b38455557076bc390f865f929351420833 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 21:10:57 +0800 Subject: [PATCH 111/739] FindCommandTest.java: Update ModelManager --- .../java/seedu/address/logic/commands/FindCommandTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/seedu/address/logic/commands/FindCommandTest.java b/src/test/java/seedu/address/logic/commands/FindCommandTest.java index a3e4c78f9380..f52b119449a0 100644 --- a/src/test/java/seedu/address/logic/commands/FindCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/FindCommandTest.java @@ -9,6 +9,7 @@ import static seedu.address.testutil.TypicalPersons.ELLE; import static seedu.address.testutil.TypicalPersons.FIONA; import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; import java.util.Arrays; import java.util.Collections; @@ -25,8 +26,8 @@ * Contains integration tests (interaction with the Model) for {@code FindCommand}. */ public class FindCommandTest { - private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - private Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private Model model = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); + private Model expectedModel = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); private CommandHistory commandHistory = new CommandHistory(); @Test From 54470806cfe2b4f67bdb984b377c09d5ea38c9c5 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 21:11:29 +0800 Subject: [PATCH 112/739] LogicManagerTest.java: Update ModelManager --- src/test/java/seedu/address/logic/LogicManagerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/seedu/address/logic/LogicManagerTest.java b/src/test/java/seedu/address/logic/LogicManagerTest.java index 954c1fb04388..0e426e05b23e 100644 --- a/src/test/java/seedu/address/logic/LogicManagerTest.java +++ b/src/test/java/seedu/address/logic/LogicManagerTest.java @@ -82,7 +82,7 @@ private void assertCommandException(String inputCommand, String expectedMessage) * @see #assertCommandBehavior(Class, String, String, Model) */ private void assertCommandFailure(String inputCommand, Class expectedException, String expectedMessage) { - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + Model expectedModel = new ModelManager(model.getAddressBook(), model.getUsersList(), new UserPrefs()); assertCommandBehavior(expectedException, inputCommand, expectedMessage, expectedModel); } From db20aacbc7ea793c489e42bfd926a32ba6ce142f Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Mon, 1 Oct 2018 21:13:32 +0800 Subject: [PATCH 113/739] Refactor - Person now changed to Order --- .../events/model/AddressBookChangedEvent.java | 19 --- .../java/seedu/address/model/AddressBook.java | 120 --------------- src/main/java/seedu/address/model/Model.java | 60 ++++---- .../seedu/address/model/ModelManager.java | 102 ++++++------- .../java/seedu/address/model/OrderBook.java | 121 ++++++++++++++++ .../address/model/ReadOnlyAddressBook.java | 17 --- .../address/model/ReadOnlyOrderBook.java | 17 +++ ...dressBook.java => VersionedOrderBook.java} | 38 ++--- .../java/seedu/address/model/order/Food.java | 4 +- .../address/model/order/UniqueOrderList.java | 137 ++++++++++++++++++ .../exceptions/DuplicateOrderException.java | 11 ++ .../exceptions/OrderNotFoundException.java | 6 + .../address/model/util/SampleDataUtil.java | 45 +++--- ...BookStorage.java => OrderBookStorage.java} | 21 +-- ...kStorage.java => XmlOrderBookStorage.java} | 31 ++-- .../storage/XmlSerializableAddressBook.java | 71 --------- .../storage/XmlSerializableOrderBook.java | 72 +++++++++ 17 files changed, 515 insertions(+), 377 deletions(-) delete mode 100644 src/main/java/seedu/address/commons/events/model/AddressBookChangedEvent.java delete mode 100644 src/main/java/seedu/address/model/AddressBook.java create mode 100644 src/main/java/seedu/address/model/OrderBook.java delete mode 100644 src/main/java/seedu/address/model/ReadOnlyAddressBook.java create mode 100644 src/main/java/seedu/address/model/ReadOnlyOrderBook.java rename src/main/java/seedu/address/model/{VersionedAddressBook.java => VersionedOrderBook.java} (57%) create mode 100644 src/main/java/seedu/address/model/order/UniqueOrderList.java create mode 100644 src/main/java/seedu/address/model/order/exceptions/DuplicateOrderException.java create mode 100644 src/main/java/seedu/address/model/order/exceptions/OrderNotFoundException.java rename src/main/java/seedu/address/storage/{AddressBookStorage.java => OrderBookStorage.java} (53%) rename src/main/java/seedu/address/storage/{XmlAddressBookStorage.java => XmlOrderBookStorage.java} (64%) delete mode 100644 src/main/java/seedu/address/storage/XmlSerializableAddressBook.java create mode 100644 src/main/java/seedu/address/storage/XmlSerializableOrderBook.java diff --git a/src/main/java/seedu/address/commons/events/model/AddressBookChangedEvent.java b/src/main/java/seedu/address/commons/events/model/AddressBookChangedEvent.java deleted file mode 100644 index b72ad4740e5a..000000000000 --- a/src/main/java/seedu/address/commons/events/model/AddressBookChangedEvent.java +++ /dev/null @@ -1,19 +0,0 @@ -package seedu.address.commons.events.model; - -import seedu.address.commons.events.BaseEvent; -import seedu.address.model.ReadOnlyAddressBook; - -/** Indicates the AddressBook in the model has changed*/ -public class AddressBookChangedEvent extends BaseEvent { - - public final ReadOnlyAddressBook data; - - public AddressBookChangedEvent(ReadOnlyAddressBook data) { - this.data = data; - } - - @Override - public String toString() { - return "number of persons " + data.getPersonList().size(); - } -} diff --git a/src/main/java/seedu/address/model/AddressBook.java b/src/main/java/seedu/address/model/AddressBook.java deleted file mode 100644 index 7f85c8b9258b..000000000000 --- a/src/main/java/seedu/address/model/AddressBook.java +++ /dev/null @@ -1,120 +0,0 @@ -package seedu.address.model; - -import static java.util.Objects.requireNonNull; - -import java.util.List; - -import javafx.collections.ObservableList; -import seedu.address.model.person.Person; -import seedu.address.model.person.UniquePersonList; - -/** - * Wraps all data at the address-book level - * Duplicates are not allowed (by .isSamePerson comparison) - */ -public class AddressBook implements ReadOnlyAddressBook { - - private final UniquePersonList persons; - - /* - * The 'unusual' code block below is an non-static initialization block, sometimes used to avoid duplication - * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html - * - * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication - * among constructors. - */ - { - persons = new UniquePersonList(); - } - - public AddressBook() {} - - /** - * Creates an AddressBook using the Persons in the {@code toBeCopied} - */ - public AddressBook(ReadOnlyAddressBook toBeCopied) { - this(); - resetData(toBeCopied); - } - - //// list overwrite operations - - /** - * Replaces the contents of the person list with {@code persons}. - * {@code persons} must not contain duplicate persons. - */ - public void setPersons(List persons) { - this.persons.setPersons(persons); - } - - /** - * Resets the existing data of this {@code AddressBook} with {@code newData}. - */ - public void resetData(ReadOnlyAddressBook newData) { - requireNonNull(newData); - - setPersons(newData.getPersonList()); - } - - //// person-level operations - - /** - * Returns true if a person with the same identity as {@code person} exists in the address book. - */ - public boolean hasPerson(Person person) { - requireNonNull(person); - return persons.contains(person); - } - - /** - * Adds a person to the address book. - * The person must not already exist in the address book. - */ - public void addPerson(Person p) { - persons.add(p); - } - - /** - * Replaces the given person {@code target} in the list with {@code editedPerson}. - * {@code target} must exist in the address book. - * The person identity of {@code editedPerson} must not be the same as another existing person in the address book. - */ - public void updatePerson(Person target, Person editedPerson) { - requireNonNull(editedPerson); - - persons.setPerson(target, editedPerson); - } - - /** - * Removes {@code key} from this {@code AddressBook}. - * {@code key} must exist in the address book. - */ - public void removePerson(Person key) { - persons.remove(key); - } - - //// util methods - - @Override - public String toString() { - return persons.asUnmodifiableObservableList().size() + " persons"; - // TODO: refine later - } - - @Override - public ObservableList getPersonList() { - return persons.asUnmodifiableObservableList(); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof AddressBook // instanceof handles nulls - && persons.equals(((AddressBook) other).persons)); - } - - @Override - public int hashCode() { - return persons.hashCode(); - } -} diff --git a/src/main/java/seedu/address/model/Model.java b/src/main/java/seedu/address/model/Model.java index ac4521f33199..65470904e538 100644 --- a/src/main/java/seedu/address/model/Model.java +++ b/src/main/java/seedu/address/model/Model.java @@ -3,76 +3,76 @@ import java.util.function.Predicate; import javafx.collections.ObservableList; -import seedu.address.model.person.Person; +import seedu.address.model.order.Order; /** * The API of the Model component. */ public interface Model { /** {@code Predicate} that always evaluate to true */ - Predicate PREDICATE_SHOW_ALL_PERSONS = unused -> true; + Predicate PREDICATE_SHOW_ALL_ORDERS = unused -> true; /** Clears existing backing model and replaces with the provided new data. */ - void resetData(ReadOnlyAddressBook newData); + void resetData(ReadOnlyOrderBook newData); - /** Returns the AddressBook */ - ReadOnlyAddressBook getAddressBook(); + /** Returns the OrderBook */ + ReadOnlyOrderBook getOrderBook(); /** - * Returns true if a person with the same identity as {@code person} exists in the address book. + * Returns true if a person with the same identity as {@code order} exists in the order book. */ - boolean hasPerson(Person person); + boolean hasOrder(Order order); /** - * Deletes the given person. - * The person must exist in the address book. + * Deletes the given order. + * The order must exist in the address book. */ - void deletePerson(Person target); + void deleteOrder(Order target); /** - * Adds the given person. - * {@code person} must not already exist in the address book. + * Adds the given order. + * {@code order} must not already exist in the address book. */ - void addPerson(Person person); + void addOrder(Order order); /** - * Replaces the given person {@code target} with {@code editedPerson}. + * Replaces the given order {@code target} with {@code editedOrder}. * {@code target} must exist in the address book. - * The person identity of {@code editedPerson} must not be the same as another existing person in the address book. + * The order identity of {@code editedOrder} must not be the same as another existing order in the order book. */ - void updatePerson(Person target, Person editedPerson); + void updateOrder(Order target, Order editedOrder); - /** Returns an unmodifiable view of the filtered person list */ - ObservableList getFilteredPersonList(); + /** Returns an unmodifiable view of the filtered order list */ + ObservableList getFilteredOrderList(); /** - * Updates the filter of the filtered person list to filter by the given {@code predicate}. + * Updates the filter of the filtered order list to filter by the given {@code predicate}. * @throws NullPointerException if {@code predicate} is null. */ - void updateFilteredPersonList(Predicate predicate); + void updateFilteredOrderList(Predicate predicate); /** - * Returns true if the model has previous address book states to restore. + * Returns true if the model has previous order book states to restore. */ - boolean canUndoAddressBook(); + boolean canUndoOrderBook(); /** - * Returns true if the model has undone address book states to restore. + * Returns true if the model has undone order book states to restore. */ - boolean canRedoAddressBook(); + boolean canRedoOrderBook(); /** - * Restores the model's address book to its previous state. + * Restores the model's order book to its previous state. */ - void undoAddressBook(); + void undoOrderBook(); /** - * Restores the model's address book to its previously undone state. + * Restores the model's order book to its previously undone state. */ - void redoAddressBook(); + void redoOrderBook(); /** - * Saves the current address book state for undo/redo. + * Saves the current order book state for undo/redo. */ - void commitAddressBook(); + void commitOrderBook(); } diff --git a/src/main/java/seedu/address/model/ModelManager.java b/src/main/java/seedu/address/model/ModelManager.java index a664602ef5b1..4e416885023b 100644 --- a/src/main/java/seedu/address/model/ModelManager.java +++ b/src/main/java/seedu/address/model/ModelManager.java @@ -11,8 +11,8 @@ import javafx.collections.transformation.FilteredList; import seedu.address.commons.core.ComponentManager; import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.events.model.AddressBookChangedEvent; -import seedu.address.model.person.Person; +import seedu.address.commons.events.model.OrderBookChangedEvent; +import seedu.address.model.order.Order; /** * Represents the in-memory model of the address book data. @@ -20,113 +20,113 @@ public class ModelManager extends ComponentManager implements Model { private static final Logger logger = LogsCenter.getLogger(ModelManager.class); - private final VersionedAddressBook versionedAddressBook; - private final FilteredList filteredPersons; + private final VersionedOrderBook versionedOrderBook; + private final FilteredList filteredOrders; /** * Initializes a ModelManager with the given addressBook and userPrefs. */ - public ModelManager(ReadOnlyAddressBook addressBook, UserPrefs userPrefs) { + public ModelManager(ReadOnlyOrderBook orderBook, UserPrefs userPrefs) { super(); - requireAllNonNull(addressBook, userPrefs); + requireAllNonNull(orderBook, userPrefs); - logger.fine("Initializing with address book: " + addressBook + " and user prefs " + userPrefs); + logger.fine("Initializing with order book: " + orderBook + " and user prefs " + userPrefs); - versionedAddressBook = new VersionedAddressBook(addressBook); - filteredPersons = new FilteredList<>(versionedAddressBook.getPersonList()); + versionedOrderBook = new VersionedOrderBook(orderBook); + filteredOrders = new FilteredList<>(versionedOrderBook.getOrderList()); } public ModelManager() { - this(new AddressBook(), new UserPrefs()); + this(new OrderBook(), new UserPrefs()); } @Override - public void resetData(ReadOnlyAddressBook newData) { - versionedAddressBook.resetData(newData); - indicateAddressBookChanged(); + public void resetData(ReadOnlyOrderBook newData) { + versionedOrderBook.resetData(newData); + indicateOrderBookChanged(); } @Override - public ReadOnlyAddressBook getAddressBook() { - return versionedAddressBook; + public ReadOnlyOrderBook getOrderBook() { + return versionedOrderBook; } /** Raises an event to indicate the model has changed */ - private void indicateAddressBookChanged() { - raise(new AddressBookChangedEvent(versionedAddressBook)); + private void indicateOrderBookChanged() { + raise(new OrderBookChangedEvent(versionedOrderBook)); } @Override - public boolean hasPerson(Person person) { - requireNonNull(person); - return versionedAddressBook.hasPerson(person); + public boolean hasOrder(Order order) { + requireNonNull(order); + return versionedOrderBook.hasOrder(order); } @Override - public void deletePerson(Person target) { - versionedAddressBook.removePerson(target); - indicateAddressBookChanged(); + public void deleteOrder(Order target) { + versionedOrderBook.removeOrder(target); + indicateOrderBookChanged(); } @Override - public void addPerson(Person person) { - versionedAddressBook.addPerson(person); - updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); - indicateAddressBookChanged(); + public void addOrder(Order order) { + versionedOrderBook.addOrder(order); + updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS); + indicateOrderBookChanged(); } @Override - public void updatePerson(Person target, Person editedPerson) { - requireAllNonNull(target, editedPerson); + public void updateOrder(Order target, Order editedOrder) { + requireAllNonNull(target, editedOrder); - versionedAddressBook.updatePerson(target, editedPerson); - indicateAddressBookChanged(); + versionedOrderBook.updateOrder(target, editedOrder); + indicateOrderBookChanged(); } - //=========== Filtered Person List Accessors ============================================================= + //=========== Filtered Orders List Accessors ============================================================= /** - * Returns an unmodifiable view of the list of {@code Person} backed by the internal list of + * Returns an unmodifiable view of the list of {@code Order} backed by the internal list of * {@code versionedAddressBook} */ @Override - public ObservableList getFilteredPersonList() { - return FXCollections.unmodifiableObservableList(filteredPersons); + public ObservableList getFilteredOrderList() { + return FXCollections.unmodifiableObservableList(filteredOrders); } @Override - public void updateFilteredPersonList(Predicate predicate) { + public void updateFilteredOrderList(Predicate predicate) { requireNonNull(predicate); - filteredPersons.setPredicate(predicate); + filteredOrders.setPredicate(predicate); } //=========== Undo/Redo ================================================================================= @Override - public boolean canUndoAddressBook() { - return versionedAddressBook.canUndo(); + public boolean canUndoOrderBook() { + return versionedOrderBook.canUndo(); } @Override - public boolean canRedoAddressBook() { - return versionedAddressBook.canRedo(); + public boolean canRedoOrderBook() { + return versionedOrderBook.canRedo(); } @Override - public void undoAddressBook() { - versionedAddressBook.undo(); - indicateAddressBookChanged(); + public void undoOrderBook() { + versionedOrderBook.undo(); + indicateOrderBookChanged(); } @Override - public void redoAddressBook() { - versionedAddressBook.redo(); - indicateAddressBookChanged(); + public void redoOrderBook() { + versionedOrderBook.redo(); + indicateOrderBookChanged(); } @Override - public void commitAddressBook() { - versionedAddressBook.commit(); + public void commitOrderBook() { + versionedOrderBook.commit(); } @Override @@ -143,8 +143,8 @@ public boolean equals(Object obj) { // state check ModelManager other = (ModelManager) obj; - return versionedAddressBook.equals(other.versionedAddressBook) - && filteredPersons.equals(other.filteredPersons); + return versionedOrderBook.equals(other.versionedOrderBook) + && filteredOrders.equals(other.filteredOrders); } } diff --git a/src/main/java/seedu/address/model/OrderBook.java b/src/main/java/seedu/address/model/OrderBook.java new file mode 100644 index 000000000000..b12a379fda3a --- /dev/null +++ b/src/main/java/seedu/address/model/OrderBook.java @@ -0,0 +1,121 @@ +package seedu.address.model; + +import static java.util.Objects.requireNonNull; + +import java.util.List; + +import javafx.collections.ObservableList; +import seedu.address.model.order.UniqueOrderList; +import seedu.address.model.order.Order; + + +/** + * Wraps all data at the address-book level + * Duplicates are not allowed (by .isSamePerson comparison) + */ +public class OrderBook implements ReadOnlyOrderBook { + + private final UniqueOrderList orders; + + /* + * The 'unusual' code block below is an non-static initialization block, sometimes used to avoid duplication + * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html + * + * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication + * among constructors. + */ + { + orders = new UniqueOrderList(); + } + + public OrderBook() {} + + /** + * Creates an OrderBook using the Orders in the {@code toBeCopied} + */ + public OrderBook(ReadOnlyOrderBook toBeCopied) { + this(); + resetData(toBeCopied); + } + + //// list overwrite operations + + /** + * Replaces the contents of the order list with {@code orders}. + * {@code orders} must not contain duplicate orders. + */ + public void setOrders(List orders) { + this.orders.setOrder(orders); + } + + /** + * Resets the existing data of this {@code OrderBook} with {@code newData}. + */ + public void resetData(ReadOnlyOrderBook newData) { + requireNonNull(newData); + + setOrders(newData.getOrderList()); + } + + //// person-level operations + + /** + * Returns true if an order with the same identity as {@code order} exists in the order book. + */ + public boolean hasOrder(Order person) { + requireNonNull(person); + return orders.contains(person); + } + + /** + * Adds an order to the order book. + * The order must not already exist in the order book. + */ + public void addOrder(Order o) { + orders.add(o); + } + + /** + * Replaces the given order {@code target} in the list with {@code editedOrder}. + * {@code target} must exist in the order book. + * The order identity of {@code editedOrder} must not be the same as another existing order in the order book. + */ + public void updateOrder(Order target, Order editedOrder) { + requireNonNull(editedOrder); + + orders.setOrder(target, editedOrder); + } + + /** + * Removes {@code key} from this {@code OrderBook}. + * {@code key} must exist in the address book. + */ + public void removeOrder(Order key) { + orders.remove(key); + } + + //// util methods + + @Override + public String toString() { + return orders.asUnmodifiableObservableList().size() + " orders"; + // TODO: refine later + } + + @Override + public ObservableList getOrderList() { + return orders.asUnmodifiableObservableList(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof OrderBook // instanceof handles nulls + && orders.equals(((OrderBook) other).orders)); + } + + @Override + public int hashCode() { + return orders.hashCode(); + } +} diff --git a/src/main/java/seedu/address/model/ReadOnlyAddressBook.java b/src/main/java/seedu/address/model/ReadOnlyAddressBook.java deleted file mode 100644 index 6ddc2cd9a290..000000000000 --- a/src/main/java/seedu/address/model/ReadOnlyAddressBook.java +++ /dev/null @@ -1,17 +0,0 @@ -package seedu.address.model; - -import javafx.collections.ObservableList; -import seedu.address.model.person.Person; - -/** - * Unmodifiable view of an address book - */ -public interface ReadOnlyAddressBook { - - /** - * Returns an unmodifiable view of the persons list. - * This list will not contain any duplicate persons. - */ - ObservableList getPersonList(); - -} diff --git a/src/main/java/seedu/address/model/ReadOnlyOrderBook.java b/src/main/java/seedu/address/model/ReadOnlyOrderBook.java new file mode 100644 index 000000000000..7ecd089c37d4 --- /dev/null +++ b/src/main/java/seedu/address/model/ReadOnlyOrderBook.java @@ -0,0 +1,17 @@ +package seedu.address.model; + +import javafx.collections.ObservableList; +import seedu.address.model.order.Order; + +/** + * Unmodifiable view of an order book + */ +public interface ReadOnlyOrderBook { + + /** + * Returns an unmodifiable view of the orders list. + * This list will not contain any duplicate orders. + */ + ObservableList getOrderList(); + +} diff --git a/src/main/java/seedu/address/model/VersionedAddressBook.java b/src/main/java/seedu/address/model/VersionedOrderBook.java similarity index 57% rename from src/main/java/seedu/address/model/VersionedAddressBook.java rename to src/main/java/seedu/address/model/VersionedOrderBook.java index 227a335045d7..77f477f61ae4 100644 --- a/src/main/java/seedu/address/model/VersionedAddressBook.java +++ b/src/main/java/seedu/address/model/VersionedOrderBook.java @@ -4,33 +4,33 @@ import java.util.List; /** - * {@code AddressBook} that keeps track of its own history. + * {@code OrderBook} that keeps track of its own history. */ -public class VersionedAddressBook extends AddressBook { +public class VersionedOrderBook extends OrderBook { - private final List addressBookStateList; + private final List orderBookStateList; private int currentStatePointer; - public VersionedAddressBook(ReadOnlyAddressBook initialState) { + public VersionedOrderBook(ReadOnlyOrderBook initialState) { super(initialState); - addressBookStateList = new ArrayList<>(); - addressBookStateList.add(new AddressBook(initialState)); + orderBookStateList = new ArrayList<>(); + orderBookStateList.add(new OrderBook(initialState)); currentStatePointer = 0; } /** - * Saves a copy of the current {@code AddressBook} state at the end of the state list. + * Saves a copy of the current {@code OrderBook} state at the end of the state list. * Undone states are removed from the state list. */ public void commit() { removeStatesAfterCurrentPointer(); - addressBookStateList.add(new AddressBook(this)); + orderBookStateList.add(new OrderBook(this)); currentStatePointer++; } private void removeStatesAfterCurrentPointer() { - addressBookStateList.subList(currentStatePointer + 1, addressBookStateList.size()).clear(); + orderBookStateList.subList(currentStatePointer + 1, orderBookStateList.size()).clear(); } /** @@ -41,7 +41,7 @@ public void undo() { throw new NoUndoableStateException(); } currentStatePointer--; - resetData(addressBookStateList.get(currentStatePointer)); + resetData(orderBookStateList.get(currentStatePointer)); } /** @@ -52,7 +52,7 @@ public void redo() { throw new NoRedoableStateException(); } currentStatePointer++; - resetData(addressBookStateList.get(currentStatePointer)); + resetData(orderBookStateList.get(currentStatePointer)); } /** @@ -66,7 +66,7 @@ public boolean canUndo() { * Returns true if {@code redo()} has address book states to redo. */ public boolean canRedo() { - return currentStatePointer < addressBookStateList.size() - 1; + return currentStatePointer < orderBookStateList.size() - 1; } @Override @@ -77,16 +77,16 @@ public boolean equals(Object other) { } // instanceof handles nulls - if (!(other instanceof VersionedAddressBook)) { + if (!(other instanceof VersionedOrderBook)) { return false; } - VersionedAddressBook otherVersionedAddressBook = (VersionedAddressBook) other; + VersionedOrderBook otherVersionedOrderBook = (VersionedOrderBook) other; // state check - return super.equals(otherVersionedAddressBook) - && addressBookStateList.equals(otherVersionedAddressBook.addressBookStateList) - && currentStatePointer == otherVersionedAddressBook.currentStatePointer; + return super.equals(otherVersionedOrderBook) + && orderBookStateList.equals(otherVersionedOrderBook.orderBookStateList) + && currentStatePointer == otherVersionedOrderBook.currentStatePointer; } /** @@ -94,7 +94,7 @@ public boolean equals(Object other) { */ public static class NoUndoableStateException extends RuntimeException { private NoUndoableStateException() { - super("Current state pointer at start of addressBookState list, unable to undo."); + super("Current state pointer at start of orderBookState list, unable to undo."); } } @@ -103,7 +103,7 @@ private NoUndoableStateException() { */ public static class NoRedoableStateException extends RuntimeException { private NoRedoableStateException() { - super("Current state pointer at end of addressBookState list, unable to redo."); + super("Current state pointer at end of orderBookState list, unable to redo."); } } } diff --git a/src/main/java/seedu/address/model/order/Food.java b/src/main/java/seedu/address/model/order/Food.java index a4ec6b551076..39fa5ebcd342 100644 --- a/src/main/java/seedu/address/model/order/Food.java +++ b/src/main/java/seedu/address/model/order/Food.java @@ -9,7 +9,7 @@ */ public class Food { - public static final String MESSAGE_NAME_CONSTRAINTS = + public static final String MESSAGE_FOOD_CONSTRAINTS = "Food should only contain alphanumeric characters and spaces, and it should not be blank"; /* @@ -27,7 +27,7 @@ public class Food { */ public Food(String name) { requireNonNull(name); - checkArgument(isValidFood(name), MESSAGE_NAME_CONSTRAINTS); + checkArgument(isValidFood(name), MESSAGE_FOOD_CONSTRAINTS); foodName = name; } diff --git a/src/main/java/seedu/address/model/order/UniqueOrderList.java b/src/main/java/seedu/address/model/order/UniqueOrderList.java new file mode 100644 index 000000000000..d5d09e20114f --- /dev/null +++ b/src/main/java/seedu/address/model/order/UniqueOrderList.java @@ -0,0 +1,137 @@ +package seedu.address.model.order; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.order.Order; + +import seedu.address.model.order.exceptions.DuplicateOrderException; +import seedu.address.model.order.exceptions.OrderNotFoundException; + +import java.util.Iterator; +import java.util.List; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + +/** + * A list of orders that enforces uniqueness between its elements and does not allow nulls. + * An order is considered unique by comparing using {@code Order#isSameOrder(Order)}. As such, adding and updating of + * orders uses Order#isSameOrder(Order) for equality so as to ensure that the Order being added or updated is + * unique in terms of identity in the UniqueOrderList. However, the removal of an Order uses Order#equals(Object) so + * as to ensure that the order with exactly the same fields will be removed. + * + * Supports a minimal set of list operations. + * + * @see Order#isSameOrder(Order) + */ +public class UniqueOrderList implements Iterable { + + private final ObservableList internalList = FXCollections.observableArrayList(); + + /** + * Returns true if the list contains an equivalent order as the given argument. + */ + public boolean contains(Order toCheck) { + requireNonNull(toCheck); + return internalList.stream().anyMatch(toCheck::isSameOrder); + } + + /** + * Adds an Order to the list. + * The order must not already exist in the list. + */ + public void add(Order toAdd) { + requireNonNull(toAdd); + if (contains(toAdd)) { + throw new DuplicateOrderException(); + } + internalList.add(toAdd); + } + + /** + * Replaces the order {@code target} in the list with {@code editedOrder}. + * {@code target} must exist in the list. + * The order identity of {@code editedOrder} must not be the same as another existing order in the list. + */ + public void setOrder(Order target, Order editedOrder) { + requireAllNonNull(target, editedOrder); + + int index = internalList.indexOf(target); + if (index == -1) { + throw new OrderNotFoundException(); + } + + if (!target.isSameOrder(editedOrder) && contains(editedOrder)) { + throw new DuplicateOrderException(); + } + + internalList.set(index, editedOrder); + } + + /** + * Removes the equivalent order from the list. + * The order must exist in the list. + */ + public void remove(Order toRemove) { + requireNonNull(toRemove); + if (!internalList.remove(toRemove)) { + throw new OrderNotFoundException(); + } + } + + public void setOrder(UniqueOrderList replacement) { + requireNonNull(replacement); + internalList.setAll(replacement.internalList); + } + + /** + * Replaces the contents of this list with {@code orders}. + * {@code orders} must not contain duplicate persons. + */ + public void setOrder(List orders) { + requireAllNonNull(orders); + if (!ordersAreUnique(orders)) { + throw new DuplicateOrderException(); + } + + internalList.setAll(orders); + } + + /** + * Returns the backing list as an unmodifiable {@code ObservableList}. + */ + public ObservableList asUnmodifiableObservableList() { + return FXCollections.unmodifiableObservableList(internalList); + } + + @Override + public Iterator iterator() { + return internalList.iterator(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof UniqueOrderList // instanceof handles nulls + && internalList.equals(((UniqueOrderList) other).internalList)); + } + + @Override + public int hashCode() { + return internalList.hashCode(); + } + + /** + * Returns true if {@code orders} contains only unique orders. + */ + private boolean ordersAreUnique(List orders) { + for (int i = 0; i < orders.size() - 1; i++) { + for (int j = i + 1; j < orders.size(); j++) { + if (orders.get(i).isSameOrder(orders.get(j))) { + return false; + } + } + } + return true; + } +} diff --git a/src/main/java/seedu/address/model/order/exceptions/DuplicateOrderException.java b/src/main/java/seedu/address/model/order/exceptions/DuplicateOrderException.java new file mode 100644 index 000000000000..d6b2597d7ed3 --- /dev/null +++ b/src/main/java/seedu/address/model/order/exceptions/DuplicateOrderException.java @@ -0,0 +1,11 @@ +package seedu.address.model.order.exceptions; + +/** + * Signals that the operation will result in duplicate Order (Orders are considered duplicates if they have the same + * identity). + */ +public class DuplicateOrderException extends RuntimeException { + public DuplicateOrderException() { + super("Operation would result in duplicate orders"); + } +} diff --git a/src/main/java/seedu/address/model/order/exceptions/OrderNotFoundException.java b/src/main/java/seedu/address/model/order/exceptions/OrderNotFoundException.java new file mode 100644 index 000000000000..6f2d5a38d73e --- /dev/null +++ b/src/main/java/seedu/address/model/order/exceptions/OrderNotFoundException.java @@ -0,0 +1,6 @@ +package seedu.address.model.order.exceptions; + +/** + * Signals that the operation is unable to find the specified order. + */ +public class OrderNotFoundException extends RuntimeException {} diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java index f09c24583d25..f8a689d9e3b3 100644 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ b/src/main/java/seedu/address/model/util/SampleDataUtil.java @@ -4,47 +4,46 @@ import java.util.Set; import java.util.stream.Collectors; -import seedu.address.model.AddressBook; -import seedu.address.model.ReadOnlyAddressBook; +import seedu.address.model.OrderBook; +import seedu.address.model.ReadOnlyOrderBook; import seedu.address.model.person.Address; -import seedu.address.model.person.Email; import seedu.address.model.person.Name; -import seedu.address.model.person.Person; +import seedu.address.model.order.Order; import seedu.address.model.person.Phone; import seedu.address.model.tag.Tag; import seedu.address.model.order.Food; /** - * Contains utility methods for populating {@code AddressBook} with sample data. + * Contains utility methods for populating {@code OrderBook} with sample data. */ public class SampleDataUtil { - public static Person[] getSamplePersons() { - return new Person[] { - new Person(new Name("Alex Yeoh"), new Phone("87438807"), new Email("alexyeoh@example.com"), + public static Order[] getSampleOrders() { + return new Order[] { + new Order(new Name("Alex Yeoh"), new Phone("87438807"), new Address("Blk 30 Geylang Street 29, #06-40"), - getTagSet("friends")), - new Person(new Name("Bernice Yu"), new Phone("99272758"), new Email("berniceyu@example.com"), + getFoodSet("Ice Tea")), + new Order(new Name("Bernice Yu"), new Phone("99272758"), new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), - getTagSet("colleagues", "friends")), - new Person(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Email("charlotte@example.com"), + getFoodSet("colleagues", "Chicken Rice")), + new Order(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), - getTagSet("neighbours")), - new Person(new Name("David Li"), new Phone("91031282"), new Email("lidavid@example.com"), + getFoodSet("Nasi Goreng")), + new Order(new Name("David Li"), new Phone("91031282"), new Address("Blk 436 Serangoon Gardens Street 26, #16-43"), - getTagSet("family")), - new Person(new Name("Irfan Ibrahim"), new Phone("92492021"), new Email("irfan@example.com"), + getFoodSet("Satay")), + new Order(new Name("Irfan Ibrahim"), new Phone("92492021"), new Address("Blk 47 Tampines Street 20, #17-35"), - getTagSet("classmates")), - new Person(new Name("Roy Balakrishnan"), new Phone("92624417"), new Email("royb@example.com"), + getFoodSet("Fish and Chips")), + new Order(new Name("Roy Balakrishnan"), new Phone("92624417"), new Address("Blk 45 Aljunied Street 85, #11-31"), - getTagSet("colleagues")) + getFoodSet("Sugercane Juice")) }; } - public static ReadOnlyAddressBook getSampleAddressBook() { - AddressBook sampleAb = new AddressBook(); - for (Person samplePerson : getSamplePersons()) { - sampleAb.addPerson(samplePerson); + public static ReadOnlyOrderBook getSampleOrderBook() { + OrderBook sampleAb = new OrderBook(); + for (Order sampleOrder : getSampleOrders()) { + sampleAb.addOrder(sampleOrder); } return sampleAb; } diff --git a/src/main/java/seedu/address/storage/AddressBookStorage.java b/src/main/java/seedu/address/storage/OrderBookStorage.java similarity index 53% rename from src/main/java/seedu/address/storage/AddressBookStorage.java rename to src/main/java/seedu/address/storage/OrderBookStorage.java index 4599182b3f92..2ed940a263eb 100644 --- a/src/main/java/seedu/address/storage/AddressBookStorage.java +++ b/src/main/java/seedu/address/storage/OrderBookStorage.java @@ -5,41 +5,42 @@ import java.util.Optional; import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.model.ReadOnlyAddressBook; +import seedu.address.model.OrderBook; +import seedu.address.model.ReadOnlyOrderBook; /** - * Represents a storage for {@link seedu.address.model.AddressBook}. + * Represents a storage for {@link OrderBook}. */ -public interface AddressBookStorage { +public interface OrderBookStorage { /** * Returns the file path of the data file. */ - Path getAddressBookFilePath(); + Path getOrderBookFilePath(); /** - * Returns AddressBook data as a {@link ReadOnlyAddressBook}. + * Returns OrderBook data as a {@link ReadOnlyOrderBook}. * Returns {@code Optional.empty()} if storage file is not found. * @throws DataConversionException if the data in storage is not in the expected format. * @throws IOException if there was any problem when reading from the storage. */ - Optional readAddressBook() throws DataConversionException, IOException; + Optional readOrderBook() throws DataConversionException, IOException; /** * @see #getAddressBookFilePath() */ - Optional readAddressBook(Path filePath) throws DataConversionException, IOException; + Optional readOrderBook(Path filePath) throws DataConversionException, IOException; /** * Saves the given {@link ReadOnlyAddressBook} to the storage. * @param addressBook cannot be null. * @throws IOException if there was any problem writing to the file. */ - void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException; + void saveOrderBook(ReadOnlyOrderBook orderBook) throws IOException; /** - * @see #saveAddressBook(ReadOnlyAddressBook) + * @see #saveOrderBook(ReadOnlyOrderBook) */ - void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException; + void saveOrderBook(ReadOnlyOrderBook orderBook, Path filePath) throws IOException; } diff --git a/src/main/java/seedu/address/storage/XmlAddressBookStorage.java b/src/main/java/seedu/address/storage/XmlOrderBookStorage.java similarity index 64% rename from src/main/java/seedu/address/storage/XmlAddressBookStorage.java rename to src/main/java/seedu/address/storage/XmlOrderBookStorage.java index ecf0e7ec23a8..61a1f690b321 100644 --- a/src/main/java/seedu/address/storage/XmlAddressBookStorage.java +++ b/src/main/java/seedu/address/storage/XmlOrderBookStorage.java @@ -14,40 +14,41 @@ import seedu.address.commons.exceptions.IllegalValueException; import seedu.address.commons.util.FileUtil; import seedu.address.model.ReadOnlyAddressBook; +import seedu.address.model.ReadOnlyOrderBook; /** - * A class to access AddressBook data stored as an xml file on the hard disk. + * A class to access OrderBook data stored as an xml file on the hard disk. */ -public class XmlAddressBookStorage implements AddressBookStorage { +public class XmlOrderBookStorage implements OrderBookStorage { private static final Logger logger = LogsCenter.getLogger(XmlAddressBookStorage.class); private Path filePath; - public XmlAddressBookStorage(Path filePath) { + public XmlOrderBookStorage(Path filePath) { this.filePath = filePath; } - public Path getAddressBookFilePath() { + public Path getOrderBookFilePath() { return filePath; } @Override - public Optional readAddressBook() throws DataConversionException, IOException { - return readAddressBook(filePath); + public Optional readOrderBook() throws DataConversionException, IOException { + return readOrderBook(filePath); } /** - * Similar to {@link #readAddressBook()} + * Similar to {@link #readOrderBook()} ()} * @param filePath location of the data. Cannot be null * @throws DataConversionException if the file is not in the correct format. */ - public Optional readAddressBook(Path filePath) throws DataConversionException, + public Optional readOrderBook(Path filePath) throws DataConversionException, FileNotFoundException { requireNonNull(filePath); if (!Files.exists(filePath)) { - logger.info("AddressBook file " + filePath + " not found"); + logger.info("OrderBook file " + filePath + " not found"); return Optional.empty(); } @@ -61,20 +62,20 @@ public Optional readAddressBook(Path filePath) throws DataC } @Override - public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException { - saveAddressBook(addressBook, filePath); + public void saveOrderBook(ReadOnlyOrderBook orderBook) throws IOException { + saveOrderBook(orderBook, filePath); } /** - * Similar to {@link #saveAddressBook(ReadOnlyAddressBook)} + * Similar to {@link #saveOrderBook(ReadOnlyOrderBook)} * @param filePath location of the data. Cannot be null */ - public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException { - requireNonNull(addressBook); + public void saveOrderBook(ReadOnlyOrderBook orderBook, Path filePath) throws IOException { + requireNonNull(orderBook); requireNonNull(filePath); FileUtil.createIfMissing(filePath); - XmlFileStorage.saveDataToFile(filePath, new XmlSerializableAddressBook(addressBook)); + XmlFileStorage.saveDataToFile(filePath, new XmlSerializableAddressBook(orderBook)); } } diff --git a/src/main/java/seedu/address/storage/XmlSerializableAddressBook.java b/src/main/java/seedu/address/storage/XmlSerializableAddressBook.java deleted file mode 100644 index b85fa4a8f07e..000000000000 --- a/src/main/java/seedu/address/storage/XmlSerializableAddressBook.java +++ /dev/null @@ -1,71 +0,0 @@ -package seedu.address.storage; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.model.AddressBook; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.person.Person; - -/** - * An Immutable AddressBook that is serializable to XML format - */ -@XmlRootElement(name = "addressbook") -public class XmlSerializableAddressBook { - - public static final String MESSAGE_DUPLICATE_PERSON = "Persons list contains duplicate person(s)."; - - @XmlElement - private List persons; - - /** - * Creates an empty XmlSerializableAddressBook. - * This empty constructor is required for marshalling. - */ - public XmlSerializableAddressBook() { - persons = new ArrayList<>(); - } - - /** - * Conversion - */ - public XmlSerializableAddressBook(ReadOnlyAddressBook src) { - this(); - persons.addAll(src.getPersonList().stream().map(XmlAdaptedPerson::new).collect(Collectors.toList())); - } - - /** - * Converts this addressbook into the model's {@code AddressBook} object. - * - * @throws IllegalValueException if there were any data constraints violated or duplicates in the - * {@code XmlAdaptedPerson}. - */ - public AddressBook toModelType() throws IllegalValueException { - AddressBook addressBook = new AddressBook(); - for (XmlAdaptedPerson p : persons) { - Person person = p.toModelType(); - if (addressBook.hasPerson(person)) { - throw new IllegalValueException(MESSAGE_DUPLICATE_PERSON); - } - addressBook.addPerson(person); - } - return addressBook; - } - - @Override - public boolean equals(Object other) { - if (other == this) { - return true; - } - - if (!(other instanceof XmlSerializableAddressBook)) { - return false; - } - return persons.equals(((XmlSerializableAddressBook) other).persons); - } -} diff --git a/src/main/java/seedu/address/storage/XmlSerializableOrderBook.java b/src/main/java/seedu/address/storage/XmlSerializableOrderBook.java new file mode 100644 index 000000000000..953b82d9cfc6 --- /dev/null +++ b/src/main/java/seedu/address/storage/XmlSerializableOrderBook.java @@ -0,0 +1,72 @@ +package seedu.address.storage; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.model.OrderBook; +import seedu.address.model.order.Order +import seedu.address.model.ReadOnlyOrderBook; +import seedu.address.model.person.Person; + +/** + * An Immutable OrderBook that is serializable to XML format + */ +@XmlRootElement(name = "orderbook") +public class XmlSerializableOrderBook { + + public static final String MESSAGE_DUPLICATE_ORDER = "Orders list contains duplicate order(s)."; + + @XmlElement + private List orders; + + /** + * Creates an empty XmlSerializableOrderBook. + * This empty constructor is required for marshalling. + */ + public XmlSerializableOrderBook() { + orders = new ArrayList<>(); + } + + /** + * Conversion + */ + public XmlSerializableOrderBook(ReadOnlyOrderBook src) { + this(); + orders.addAll(src.getOrderList().stream().map(XmlAdaptedOrder::new).collect(Collectors.toList())); + } + + /** + * Converts this orderbook into the model's {@code OrderBook} object. + * + * @throws IllegalValueException if there were any data constraints violated or duplicates in the + * {@code XmlAdaptedOrder}. + */ + public OrderBook toModelType() throws IllegalValueException { + OrderBook orderBook = new OrderBook(); + for (XmlAdaptedOrder o : orders) { + Order order = o.toModelType(); + if (orderBook.hasOrder(order)) { + throw new IllegalValueException(MESSAGE_DUPLICATE_ORDER); + } + orderBook.addOrder(order); + } + return orderBook; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof XmlSerializableOrderBook)) { + return false; + } + return orders.equals(((XmlSerializableOrderBook) other).orders); + } +} From ed23f213457d1f5bc8b8d6a4bf8e203c1394b1e4 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Mon, 1 Oct 2018 21:14:33 +0800 Subject: [PATCH 114/739] Refactor - addressbook.xml change to orderbook.xml (storage classes modified accordingly --- .../java/seedu/address/storage/Storage.java | 14 +-- .../seedu/address/storage/StorageManager.java | 38 +++--- .../seedu/address/storage/XmlAdaptedFood.java | 62 +++++++++ .../address/storage/XmlAdaptedOrder.java | 119 ++++++++++++++++++ .../seedu/address/storage/XmlFileStorage.java | 8 +- .../address/storage/XmlOrderBookStorage.java | 9 +- .../storage/XmlSerializableOrderBook.java | 2 +- 7 files changed, 216 insertions(+), 36 deletions(-) create mode 100644 src/main/java/seedu/address/storage/XmlAdaptedFood.java create mode 100644 src/main/java/seedu/address/storage/XmlAdaptedOrder.java diff --git a/src/main/java/seedu/address/storage/Storage.java b/src/main/java/seedu/address/storage/Storage.java index 28791127999b..542f15537b1d 100644 --- a/src/main/java/seedu/address/storage/Storage.java +++ b/src/main/java/seedu/address/storage/Storage.java @@ -4,16 +4,16 @@ import java.nio.file.Path; import java.util.Optional; -import seedu.address.commons.events.model.AddressBookChangedEvent; +import seedu.address.commons.events.model.OrderBookChangedEvent; import seedu.address.commons.events.storage.DataSavingExceptionEvent; import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.model.ReadOnlyAddressBook; +import seedu.address.model.ReadOnlyOrderBook; import seedu.address.model.UserPrefs; /** * API of the Storage component */ -public interface Storage extends AddressBookStorage, UserPrefsStorage { +public interface Storage extends OrderBookStorage, UserPrefsStorage { @Override Optional readUserPrefs() throws DataConversionException, IOException; @@ -22,18 +22,18 @@ public interface Storage extends AddressBookStorage, UserPrefsStorage { void saveUserPrefs(UserPrefs userPrefs) throws IOException; @Override - Path getAddressBookFilePath(); + Path getOrderBookFilePath(); @Override - Optional readAddressBook() throws DataConversionException, IOException; + Optional readOrderBook() throws DataConversionException, IOException; @Override - void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException; + void saveOrderBook(ReadOnlyOrderBook orderBook) throws IOException; /** * Saves the current version of the Address Book to the hard disk. * Creates the data file if it is missing. * Raises {@link DataSavingExceptionEvent} if there was an error during saving. */ - void handleAddressBookChangedEvent(AddressBookChangedEvent abce); + void handleOrderBookChangedEvent(OrderBookChangedEvent abce); } diff --git a/src/main/java/seedu/address/storage/StorageManager.java b/src/main/java/seedu/address/storage/StorageManager.java index b0df908a76a7..b5fd08b96253 100644 --- a/src/main/java/seedu/address/storage/StorageManager.java +++ b/src/main/java/seedu/address/storage/StorageManager.java @@ -9,25 +9,25 @@ import seedu.address.commons.core.ComponentManager; import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.events.model.AddressBookChangedEvent; +import seedu.address.commons.events.model.OrderBookChangedEvent; import seedu.address.commons.events.storage.DataSavingExceptionEvent; import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.model.ReadOnlyAddressBook; +import seedu.address.model.ReadOnlyOrderBook; import seedu.address.model.UserPrefs; /** - * Manages storage of AddressBook data in local storage. + * Manages storage of OrderBook data in local storage. */ public class StorageManager extends ComponentManager implements Storage { private static final Logger logger = LogsCenter.getLogger(StorageManager.class); - private AddressBookStorage addressBookStorage; + private OrderBookStorage orderBookStorage; private UserPrefsStorage userPrefsStorage; - public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) { + public StorageManager(OrderBookStorage orderBookStorage, UserPrefsStorage userPrefsStorage) { super(); - this.addressBookStorage = addressBookStorage; + this.orderBookStorage = orderBookStorage; this.userPrefsStorage = userPrefsStorage; } @@ -49,42 +49,42 @@ public void saveUserPrefs(UserPrefs userPrefs) throws IOException { } - // ================ AddressBook methods ============================== + // ================ OrderBook methods ============================== @Override - public Path getAddressBookFilePath() { - return addressBookStorage.getAddressBookFilePath(); + public Path getOrderBookFilePath() { + return orderBookStorage.getOrderBookFilePath(); } @Override - public Optional readAddressBook() throws DataConversionException, IOException { - return readAddressBook(addressBookStorage.getAddressBookFilePath()); + public Optional readOrderBook() throws DataConversionException, IOException { + return readOrderBook(orderBookStorage.getOrderBookFilePath()); } @Override - public Optional readAddressBook(Path filePath) throws DataConversionException, IOException { + public Optional readOrderBook(Path filePath) throws DataConversionException, IOException { logger.fine("Attempting to read data from file: " + filePath); - return addressBookStorage.readAddressBook(filePath); + return orderBookStorage.readOrderBook(filePath); } @Override - public void saveAddressBook(ReadOnlyAddressBook addressBook) throws IOException { - saveAddressBook(addressBook, addressBookStorage.getAddressBookFilePath()); + public void saveOrderBook(ReadOnlyOrderBook orderBook) throws IOException { + saveOrderBook(orderBook, orderBookStorage.getOrderBookFilePath()); } @Override - public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException { + public void saveOrderBook(ReadOnlyOrderBook orderBook, Path filePath) throws IOException { logger.fine("Attempting to write to data file: " + filePath); - addressBookStorage.saveAddressBook(addressBook, filePath); + orderBookStorage.saveOrderBook(orderBook, filePath); } @Override @Subscribe - public void handleAddressBookChangedEvent(AddressBookChangedEvent event) { + public void handleOrderBookChangedEvent(OrderBookChangedEvent event) { logger.info(LogsCenter.getEventHandlingLogMessage(event, "Local data changed, saving to file")); try { - saveAddressBook(event.data); + saveOrderBook(event.data); } catch (IOException e) { raise(new DataSavingExceptionEvent(e)); } diff --git a/src/main/java/seedu/address/storage/XmlAdaptedFood.java b/src/main/java/seedu/address/storage/XmlAdaptedFood.java new file mode 100644 index 000000000000..6ac59d2991fd --- /dev/null +++ b/src/main/java/seedu/address/storage/XmlAdaptedFood.java @@ -0,0 +1,62 @@ +package seedu.address.storage; + +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.model.order.Food; + +import javax.xml.bind.annotation.XmlValue; + +/** + * JAXB-friendly adapted version of the Food. + */ +public class XmlAdaptedFood { + + @XmlValue + private String foodName; + + /** + * Constructs an XmlAdaptedTag. + * This is the no-arg constructor that is required by JAXB. + */ + public XmlAdaptedFood() {} + + /** + * Constructs a {@code XmlAdaptedFood} with the given {@code foodName}. + */ + public XmlAdaptedFood(String foodName) { + this.foodName = foodName; + } + + /** + * Converts a given Food into this class for JAXB use. + * + * @param source future changes to this will not affect the created + */ + public XmlAdaptedFood(Food source) { + foodName = source.foodName; + } + + /** + * Converts this jaxb-friendly adapted food object into the model's Food object. + * + * @throws IllegalValueException if there were any data constraints violated in the adapted order + */ + public Food toModelType() throws IllegalValueException { + if (!Food.isValidFood(foodName)) { + throw new IllegalValueException(Food.MESSAGE_FOOD_CONSTRAINTS); + } + return new Food(foodName); + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof XmlAdaptedFood)) { + return false; + } + + return foodName.equals(((XmlAdaptedFood) other).foodName); + } +} diff --git a/src/main/java/seedu/address/storage/XmlAdaptedOrder.java b/src/main/java/seedu/address/storage/XmlAdaptedOrder.java new file mode 100644 index 000000000000..7988420739f8 --- /dev/null +++ b/src/main/java/seedu/address/storage/XmlAdaptedOrder.java @@ -0,0 +1,119 @@ +package seedu.address.storage; + +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.model.person.*; +import seedu.address.model.order.*; + +import javax.xml.bind.annotation.XmlElement; +import java.util.*; +import java.util.stream.Collectors; + +/** + * JAXB-friendly version of the Order. + */ +public class XmlAdaptedOrder { + + public static final String MISSING_FIELD_MESSAGE_FORMAT = "Order's %s field is missing!"; + + @XmlElement(required = true) + private String name; + @XmlElement(required = true) + private String phone; + @XmlElement(required = true) + private String address; + @XmlElement(required = true) + private List food = new ArrayList<>(); + + /** + * Constructs an XmlAdaptedOrder. + * This is the no-arg constructor that is required by JAXB. + */ + public XmlAdaptedOrder() {} + + /** + * Constructs an {@code XmlAdaptedOrder} with the given order details. + */ + public XmlAdaptedOrder(String name, String phone, String address, List food) { + this.name = name; + this.phone = phone; + this.address = address; + this.food = new ArrayList<>(food); + } + + /** + * Converts a given Order into this class for JAXB use. + * + * @param source future changes to this will not affect the created XmlAdaptedOrder + */ + public XmlAdaptedOrder(Order source) { + name = source.getName().fullName; + phone = source.getPhone().value; + address = source.getAddress().value; + food = source.getFood().stream() + .map(XmlAdaptedFood::new) + .collect(Collectors.toList()); + } + + /** + * Converts this jaxb-friendly adapted person object into the model's Order object. + * + * @throws IllegalValueException if there were any data constraints violated in the adapted order + */ + public Order toModelType() throws IllegalValueException { + final List foodStore = new ArrayList<>(); + for (XmlAdaptedFood foodItem : food) { + foodStore.add(foodItem.toModelType()); + } + + if (name == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName())); + } + if (!Name.isValidName(name)) { + throw new IllegalValueException(Name.MESSAGE_NAME_CONSTRAINTS); + } + final Name modelName = new Name(name); + + if (phone == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Phone.class.getSimpleName())); + } + if (!Phone.isValidPhone(phone)) { + throw new IllegalValueException(Phone.MESSAGE_PHONE_CONSTRAINTS); + } + final Phone modelPhone = new Phone(phone); + + + if (address == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName())); + } + if (!Address.isValidAddress(address)) { + throw new IllegalValueException(Address.MESSAGE_ADDRESS_CONSTRAINTS); + } + final Address modelAddress = new Address(address); + + if (foodStore.isEmpty()) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Food.class.getSimpleName())); + } + + final Set modelFood = new HashSet<>(foodStore); + + + return new Order(modelName, modelPhone, modelAddress, modelFood); + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof XmlAdaptedOrder)) { + return false; + } + + XmlAdaptedOrder otherOrder = (XmlAdaptedOrder) other; + return Objects.equals(name, otherOrder.name) + && Objects.equals(phone, otherOrder.phone) + && Objects.equals(address, otherOrder.address) + && food.equals(otherOrder.food); + } +} diff --git a/src/main/java/seedu/address/storage/XmlFileStorage.java b/src/main/java/seedu/address/storage/XmlFileStorage.java index d8f65dc036ab..d9776070902a 100644 --- a/src/main/java/seedu/address/storage/XmlFileStorage.java +++ b/src/main/java/seedu/address/storage/XmlFileStorage.java @@ -9,13 +9,13 @@ import seedu.address.commons.util.XmlUtil; /** - * Stores addressbook data in an XML file + * Stores orderbook data in an XML file */ public class XmlFileStorage { /** * Saves the given addressbook data to the specified file. */ - public static void saveDataToFile(Path file, XmlSerializableAddressBook addressBook) + public static void saveDataToFile(Path file, XmlSerializableOrderBook addressBook) throws FileNotFoundException { try { XmlUtil.saveDataToFile(file, addressBook); @@ -27,10 +27,10 @@ public static void saveDataToFile(Path file, XmlSerializableAddressBook addressB /** * Returns address book in the file or an empty address book */ - public static XmlSerializableAddressBook loadDataFromSaveFile(Path file) throws DataConversionException, + public static XmlSerializableOrderBook loadDataFromSaveFile(Path file) throws DataConversionException, FileNotFoundException { try { - return XmlUtil.getDataFromFile(file, XmlSerializableAddressBook.class); + return XmlUtil.getDataFromFile(file, XmlSerializableOrderBook.class); } catch (JAXBException e) { throw new DataConversionException(e); } diff --git a/src/main/java/seedu/address/storage/XmlOrderBookStorage.java b/src/main/java/seedu/address/storage/XmlOrderBookStorage.java index 61a1f690b321..6595d3a17f7c 100644 --- a/src/main/java/seedu/address/storage/XmlOrderBookStorage.java +++ b/src/main/java/seedu/address/storage/XmlOrderBookStorage.java @@ -13,7 +13,6 @@ import seedu.address.commons.exceptions.DataConversionException; import seedu.address.commons.exceptions.IllegalValueException; import seedu.address.commons.util.FileUtil; -import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.ReadOnlyOrderBook; /** @@ -21,7 +20,7 @@ */ public class XmlOrderBookStorage implements OrderBookStorage { - private static final Logger logger = LogsCenter.getLogger(XmlAddressBookStorage.class); + private static final Logger logger = LogsCenter.getLogger(XmlOrderBookStorage.class); private Path filePath; @@ -52,9 +51,9 @@ public Optional readOrderBook(Path filePath) throws DataConve return Optional.empty(); } - XmlSerializableAddressBook xmlAddressBook = XmlFileStorage.loadDataFromSaveFile(filePath); + XmlSerializableOrderBook xmlOrderBook = XmlFileStorage.loadDataFromSaveFile(filePath); try { - return Optional.of(xmlAddressBook.toModelType()); + return Optional.of(xmlOrderBook.toModelType()); } catch (IllegalValueException ive) { logger.info("Illegal values found in " + filePath + ": " + ive.getMessage()); throw new DataConversionException(ive); @@ -75,7 +74,7 @@ public void saveOrderBook(ReadOnlyOrderBook orderBook, Path filePath) throws IOE requireNonNull(filePath); FileUtil.createIfMissing(filePath); - XmlFileStorage.saveDataToFile(filePath, new XmlSerializableAddressBook(orderBook)); + XmlFileStorage.saveDataToFile(filePath, new XmlSerializableOrderBook(orderBook)); } } diff --git a/src/main/java/seedu/address/storage/XmlSerializableOrderBook.java b/src/main/java/seedu/address/storage/XmlSerializableOrderBook.java index 953b82d9cfc6..a89bdb4c8577 100644 --- a/src/main/java/seedu/address/storage/XmlSerializableOrderBook.java +++ b/src/main/java/seedu/address/storage/XmlSerializableOrderBook.java @@ -9,7 +9,7 @@ import seedu.address.commons.exceptions.IllegalValueException; import seedu.address.model.OrderBook; -import seedu.address.model.order.Order +import seedu.address.model.order.Order; import seedu.address.model.ReadOnlyOrderBook; import seedu.address.model.person.Person; From 5cb03e2255e2dfc1314edbd9172d27d90b7c0381 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 22:12:19 +0800 Subject: [PATCH 115/739] UsersListBuilder.java: Update constructor --- src/test/java/seedu/address/testutil/user/UsersListBuilder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/seedu/address/testutil/user/UsersListBuilder.java b/src/test/java/seedu/address/testutil/user/UsersListBuilder.java index 0c24ae5d2956..0041459e036e 100644 --- a/src/test/java/seedu/address/testutil/user/UsersListBuilder.java +++ b/src/test/java/seedu/address/testutil/user/UsersListBuilder.java @@ -13,7 +13,7 @@ public class UsersListBuilder { private UsersList usersList; public UsersListBuilder() { - this.usersList = usersList; + usersList = new UsersList(); } public UsersListBuilder(UsersList usersList) { From cd5a51e59c98bfb024b94f807298530d2c02ef6b Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 22:19:48 +0800 Subject: [PATCH 116/739] User.java: Update equals() method --- src/main/java/seedu/address/model/user/User.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/address/model/user/User.java b/src/main/java/seedu/address/model/user/User.java index 197145407035..a4a0e216bd25 100644 --- a/src/main/java/seedu/address/model/user/User.java +++ b/src/main/java/seedu/address/model/user/User.java @@ -86,7 +86,7 @@ public boolean equals(Object other) { return true; } - if (!(other instanceof Person)) { + if (!(other instanceof User)) { return false; } From 924f0e1f2a382d7fff6810045ff1b72220bebe8a Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Mon, 1 Oct 2018 22:21:47 +0800 Subject: [PATCH 117/739] Add commands for adding/deleting/listing orders --- src/main/java/seedu/address/logic/Logic.java | 6 +- .../seedu/address/logic/LogicManager.java | 14 +- .../address/logic/commands/AddCommand.java | 39 ++- .../address/logic/commands/ClearCommand.java | 10 +- .../address/logic/commands/DeleteCommand.java | 22 +- .../address/logic/commands/EditCommand.java | 228 ------------------ .../address/logic/commands/FindCommand.java | 43 ---- .../address/logic/commands/ListCommand.java | 10 +- .../address/logic/commands/RedoCommand.java | 8 +- .../address/logic/commands/SelectCommand.java | 16 +- .../address/logic/commands/UndoCommand.java | 8 +- .../logic/parser/AddCommandParser.java | 18 +- .../seedu/address/logic/parser/CliSyntax.java | 1 + .../logic/parser/EditCommandParser.java | 82 ------- .../logic/parser/FindCommandParser.java | 33 --- ...ssBookParser.java => OrderBookParser.java} | 10 +- .../address/logic/parser/ParserUtil.java | 28 +++ 17 files changed, 101 insertions(+), 475 deletions(-) delete mode 100644 src/main/java/seedu/address/logic/commands/EditCommand.java delete mode 100644 src/main/java/seedu/address/logic/commands/FindCommand.java delete mode 100644 src/main/java/seedu/address/logic/parser/EditCommandParser.java delete mode 100644 src/main/java/seedu/address/logic/parser/FindCommandParser.java rename src/main/java/seedu/address/logic/parser/{AddressBookParser.java => OrderBookParser.java} (89%) diff --git a/src/main/java/seedu/address/logic/Logic.java b/src/main/java/seedu/address/logic/Logic.java index 8b34b862039a..711889dd99e7 100644 --- a/src/main/java/seedu/address/logic/Logic.java +++ b/src/main/java/seedu/address/logic/Logic.java @@ -4,7 +4,7 @@ import seedu.address.logic.commands.CommandResult; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.Person; +import seedu.address.model.order.Order; /** * API of the Logic component @@ -19,8 +19,8 @@ public interface Logic { */ CommandResult execute(String commandText) throws CommandException, ParseException; - /** Returns an unmodifiable view of the filtered list of persons */ - ObservableList getFilteredPersonList(); + /** Returns an unmodifiable view of the filtered list of order */ + ObservableList getFilteredOrderList(); /** Returns the list of input entered by the user, encapsulated in a {@code ListElementPointer} object */ ListElementPointer getHistorySnapshot(); diff --git a/src/main/java/seedu/address/logic/LogicManager.java b/src/main/java/seedu/address/logic/LogicManager.java index 9aff86fc33dc..36e18ac9134f 100644 --- a/src/main/java/seedu/address/logic/LogicManager.java +++ b/src/main/java/seedu/address/logic/LogicManager.java @@ -8,10 +8,10 @@ import seedu.address.logic.commands.Command; import seedu.address.logic.commands.CommandResult; import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.logic.parser.AddressBookParser; +import seedu.address.logic.parser.OrderBookParser; import seedu.address.logic.parser.exceptions.ParseException; import seedu.address.model.Model; -import seedu.address.model.person.Person; +import seedu.address.model.order.Order; /** * The main LogicManager of the app. @@ -21,19 +21,19 @@ public class LogicManager extends ComponentManager implements Logic { private final Model model; private final CommandHistory history; - private final AddressBookParser addressBookParser; + private final OrderBookParser orderBookParser; public LogicManager(Model model) { this.model = model; history = new CommandHistory(); - addressBookParser = new AddressBookParser(); + orderBookParser = new OrderBookParser(); } @Override public CommandResult execute(String commandText) throws CommandException, ParseException { logger.info("----------------[USER COMMAND][" + commandText + "]"); try { - Command command = addressBookParser.parseCommand(commandText); + Command command = orderBookParser.parseCommand(commandText); return command.execute(model, history); } finally { history.add(commandText); @@ -41,8 +41,8 @@ public CommandResult execute(String commandText) throws CommandException, ParseE } @Override - public ObservableList getFilteredPersonList() { - return model.getFilteredPersonList(); + public ObservableList getFilteredOrderList() { + return model.getFilteredOrderList(); } @Override diff --git a/src/main/java/seedu/address/logic/commands/AddCommand.java b/src/main/java/seedu/address/logic/commands/AddCommand.java index d88e831ff1ce..2199300e767e 100644 --- a/src/main/java/seedu/address/logic/commands/AddCommand.java +++ b/src/main/java/seedu/address/logic/commands/AddCommand.java @@ -2,61 +2,58 @@ import static java.util.Objects.requireNonNull; import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; +import static seedu.address.logic.parser.CliSyntax.PREFIX_FOOD; import seedu.address.logic.CommandHistory; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; -import seedu.address.model.person.Person; +import seedu.address.model.order.Order; /** * Adds a person to the address book. */ public class AddCommand extends Command { - public static final String COMMAND_WORD = "add"; + public static final String COMMAND_WORD = "/order add"; - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds a person to the address book. " + public static final String MESSAGE_USAGE = COMMAND_WORD + ": Adds an order to the order book. " + "Parameters: " + PREFIX_NAME + "NAME " + PREFIX_PHONE + "PHONE " - + PREFIX_EMAIL + "EMAIL " + PREFIX_ADDRESS + "ADDRESS " - + "[" + PREFIX_TAG + "TAG]...\n" + + "[" + PREFIX_FOOD + "TAG]...\n" + "Example: " + COMMAND_WORD + " " + PREFIX_NAME + "John Doe " + PREFIX_PHONE + "98765432 " - + PREFIX_EMAIL + "johnd@example.com " + PREFIX_ADDRESS + "311, Clementi Ave 2, #02-25 " - + PREFIX_TAG + "friends " - + PREFIX_TAG + "owesMoney"; + + PREFIX_FOOD + "Roti Prata " + + PREFIX_FOOD + "Ice Milo"; - public static final String MESSAGE_SUCCESS = "New person added: %1$s"; - public static final String MESSAGE_DUPLICATE_PERSON = "This person already exists in the address book"; + public static final String MESSAGE_SUCCESS = "New order added: %1$s"; + public static final String MESSAGE_DUPLICATE_ORDER = "This order already exists in the order book"; - private final Person toAdd; + private final Order toAdd; /** - * Creates an AddCommand to add the specified {@code Person} + * Creates an AddCommand to add the specified {@code Order} */ - public AddCommand(Person person) { - requireNonNull(person); - toAdd = person; + public AddCommand(Order order) { + requireNonNull(order); + toAdd = order; } @Override public CommandResult execute(Model model, CommandHistory history) throws CommandException { requireNonNull(model); - if (model.hasPerson(toAdd)) { - throw new CommandException(MESSAGE_DUPLICATE_PERSON); + if (model.hasOrder(toAdd)) { + throw new CommandException(MESSAGE_DUPLICATE_ORDER); } - model.addPerson(toAdd); - model.commitAddressBook(); + model.addOrder(toAdd); + model.commitOrderBook(); return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd)); } diff --git a/src/main/java/seedu/address/logic/commands/ClearCommand.java b/src/main/java/seedu/address/logic/commands/ClearCommand.java index 1f85bcfe85a8..0a9fbdb5efad 100644 --- a/src/main/java/seedu/address/logic/commands/ClearCommand.java +++ b/src/main/java/seedu/address/logic/commands/ClearCommand.java @@ -3,7 +3,7 @@ import static java.util.Objects.requireNonNull; import seedu.address.logic.CommandHistory; -import seedu.address.model.AddressBook; +import seedu.address.model.OrderBook; import seedu.address.model.Model; /** @@ -11,15 +11,15 @@ */ public class ClearCommand extends Command { - public static final String COMMAND_WORD = "clear"; - public static final String MESSAGE_SUCCESS = "Address book has been cleared!"; + public static final String COMMAND_WORD = "/order clear"; + public static final String MESSAGE_SUCCESS = "Order book has been cleared!"; @Override public CommandResult execute(Model model, CommandHistory history) { requireNonNull(model); - model.resetData(new AddressBook()); - model.commitAddressBook(); + model.resetData(new OrderBook()); + model.commitOrderBook(); return new CommandResult(MESSAGE_SUCCESS); } } diff --git a/src/main/java/seedu/address/logic/commands/DeleteCommand.java b/src/main/java/seedu/address/logic/commands/DeleteCommand.java index a20e9d49eac7..42c85314380c 100644 --- a/src/main/java/seedu/address/logic/commands/DeleteCommand.java +++ b/src/main/java/seedu/address/logic/commands/DeleteCommand.java @@ -9,21 +9,21 @@ import seedu.address.logic.CommandHistory; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; -import seedu.address.model.person.Person; +import seedu.address.model.order.Order; /** - * Deletes a person identified using it's displayed index from the address book. + * Deletes an order identified using it's displayed index from the order book. */ public class DeleteCommand extends Command { - public static final String COMMAND_WORD = "delete"; + public static final String COMMAND_WORD = "/order delete"; public static final String MESSAGE_USAGE = COMMAND_WORD - + ": Deletes the person identified by the index number used in the displayed person list.\n" + + ": Deletes the order identified by the index number used in the displayed order list.\n" + "Parameters: INDEX (must be a positive integer)\n" + "Example: " + COMMAND_WORD + " 1"; - public static final String MESSAGE_DELETE_PERSON_SUCCESS = "Deleted Person: %1$s"; + public static final String MESSAGE_DELETE_ORDER_SUCCESS = "Deleted Order: %1$s"; private final Index targetIndex; @@ -34,16 +34,16 @@ public DeleteCommand(Index targetIndex) { @Override public CommandResult execute(Model model, CommandHistory history) throws CommandException { requireNonNull(model); - List lastShownList = model.getFilteredPersonList(); + List lastShownList = model.getFilteredOrderList(); if (targetIndex.getZeroBased() >= lastShownList.size()) { - throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + throw new CommandException(Messages.MESSAGE_INVALID_ORDER_DISPLAYED_INDEX); } - Person personToDelete = lastShownList.get(targetIndex.getZeroBased()); - model.deletePerson(personToDelete); - model.commitAddressBook(); - return new CommandResult(String.format(MESSAGE_DELETE_PERSON_SUCCESS, personToDelete)); + Order orderToDelete = lastShownList.get(targetIndex.getZeroBased()); + model.deleteOrder(orderToDelete); + model.commitOrderBook(); + return new CommandResult(String.format(MESSAGE_DELETE_ORDER_SUCCESS, orderToDelete)); } @Override diff --git a/src/main/java/seedu/address/logic/commands/EditCommand.java b/src/main/java/seedu/address/logic/commands/EditCommand.java deleted file mode 100644 index dc782d8e230f..000000000000 --- a/src/main/java/seedu/address/logic/commands/EditCommand.java +++ /dev/null @@ -1,228 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; -import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; - -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Optional; -import java.util.Set; - -import seedu.address.commons.core.Messages; -import seedu.address.commons.core.index.Index; -import seedu.address.commons.util.CollectionUtil; -import seedu.address.logic.CommandHistory; -import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.Model; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Person; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; - -/** - * Edits the details of an existing person in the address book. - */ -public class EditCommand extends Command { - - public static final String COMMAND_WORD = "edit"; - - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Edits the details of the person identified " - + "by the index number used in the displayed person list. " - + "Existing values will be overwritten by the input values.\n" - + "Parameters: INDEX (must be a positive integer) " - + "[" + PREFIX_NAME + "NAME] " - + "[" + PREFIX_PHONE + "PHONE] " - + "[" + PREFIX_EMAIL + "EMAIL] " - + "[" + PREFIX_ADDRESS + "ADDRESS] " - + "[" + PREFIX_TAG + "TAG]...\n" - + "Example: " + COMMAND_WORD + " 1 " - + PREFIX_PHONE + "91234567 " - + PREFIX_EMAIL + "johndoe@example.com"; - - public static final String MESSAGE_EDIT_PERSON_SUCCESS = "Edited Person: %1$s"; - public static final String MESSAGE_NOT_EDITED = "At least one field to edit must be provided."; - public static final String MESSAGE_DUPLICATE_PERSON = "This person already exists in the address book."; - - private final Index index; - private final EditPersonDescriptor editPersonDescriptor; - - /** - * @param index of the person in the filtered person list to edit - * @param editPersonDescriptor details to edit the person with - */ - public EditCommand(Index index, EditPersonDescriptor editPersonDescriptor) { - requireNonNull(index); - requireNonNull(editPersonDescriptor); - - this.index = index; - this.editPersonDescriptor = new EditPersonDescriptor(editPersonDescriptor); - } - - @Override - public CommandResult execute(Model model, CommandHistory history) throws CommandException { - requireNonNull(model); - List lastShownList = model.getFilteredPersonList(); - - if (index.getZeroBased() >= lastShownList.size()) { - throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); - } - - Person personToEdit = lastShownList.get(index.getZeroBased()); - Person editedPerson = createEditedPerson(personToEdit, editPersonDescriptor); - - if (!personToEdit.isSamePerson(editedPerson) && model.hasPerson(editedPerson)) { - throw new CommandException(MESSAGE_DUPLICATE_PERSON); - } - - model.updatePerson(personToEdit, editedPerson); - model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); - model.commitAddressBook(); - return new CommandResult(String.format(MESSAGE_EDIT_PERSON_SUCCESS, editedPerson)); - } - - /** - * Creates and returns a {@code Person} with the details of {@code personToEdit} - * edited with {@code editPersonDescriptor}. - */ - private static Person createEditedPerson(Person personToEdit, EditPersonDescriptor editPersonDescriptor) { - assert personToEdit != null; - - Name updatedName = editPersonDescriptor.getName().orElse(personToEdit.getName()); - Phone updatedPhone = editPersonDescriptor.getPhone().orElse(personToEdit.getPhone()); - Email updatedEmail = editPersonDescriptor.getEmail().orElse(personToEdit.getEmail()); - Address updatedAddress = editPersonDescriptor.getAddress().orElse(personToEdit.getAddress()); - Set updatedTags = editPersonDescriptor.getTags().orElse(personToEdit.getTags()); - - return new Person(updatedName, updatedPhone, updatedEmail, updatedAddress, updatedTags); - } - - @Override - public boolean equals(Object other) { - // short circuit if same object - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof EditCommand)) { - return false; - } - - // state check - EditCommand e = (EditCommand) other; - return index.equals(e.index) - && editPersonDescriptor.equals(e.editPersonDescriptor); - } - - /** - * Stores the details to edit the person with. Each non-empty field value will replace the - * corresponding field value of the person. - */ - public static class EditPersonDescriptor { - private Name name; - private Phone phone; - private Email email; - private Address address; - private Set tags; - - public EditPersonDescriptor() {} - - /** - * Copy constructor. - * A defensive copy of {@code tags} is used internally. - */ - public EditPersonDescriptor(EditPersonDescriptor toCopy) { - setName(toCopy.name); - setPhone(toCopy.phone); - setEmail(toCopy.email); - setAddress(toCopy.address); - setTags(toCopy.tags); - } - - /** - * Returns true if at least one field is edited. - */ - public boolean isAnyFieldEdited() { - return CollectionUtil.isAnyNonNull(name, phone, email, address, tags); - } - - public void setName(Name name) { - this.name = name; - } - - public Optional getName() { - return Optional.ofNullable(name); - } - - public void setPhone(Phone phone) { - this.phone = phone; - } - - public Optional getPhone() { - return Optional.ofNullable(phone); - } - - public void setEmail(Email email) { - this.email = email; - } - - public Optional getEmail() { - return Optional.ofNullable(email); - } - - public void setAddress(Address address) { - this.address = address; - } - - public Optional

getAddress() { - return Optional.ofNullable(address); - } - - /** - * Sets {@code tags} to this object's {@code tags}. - * A defensive copy of {@code tags} is used internally. - */ - public void setTags(Set tags) { - this.tags = (tags != null) ? new HashSet<>(tags) : null; - } - - /** - * Returns an unmodifiable tag set, which throws {@code UnsupportedOperationException} - * if modification is attempted. - * Returns {@code Optional#empty()} if {@code tags} is null. - */ - public Optional> getTags() { - return (tags != null) ? Optional.of(Collections.unmodifiableSet(tags)) : Optional.empty(); - } - - @Override - public boolean equals(Object other) { - // short circuit if same object - if (other == this) { - return true; - } - - // instanceof handles nulls - if (!(other instanceof EditPersonDescriptor)) { - return false; - } - - // state check - EditPersonDescriptor e = (EditPersonDescriptor) other; - - return getName().equals(e.getName()) - && getPhone().equals(e.getPhone()) - && getEmail().equals(e.getEmail()) - && getAddress().equals(e.getAddress()) - && getTags().equals(e.getTags()); - } - } -} diff --git a/src/main/java/seedu/address/logic/commands/FindCommand.java b/src/main/java/seedu/address/logic/commands/FindCommand.java deleted file mode 100644 index beb178e3a3f5..000000000000 --- a/src/main/java/seedu/address/logic/commands/FindCommand.java +++ /dev/null @@ -1,43 +0,0 @@ -package seedu.address.logic.commands; - -import static java.util.Objects.requireNonNull; - -import seedu.address.commons.core.Messages; -import seedu.address.logic.CommandHistory; -import seedu.address.model.Model; -import seedu.address.model.person.NameContainsKeywordsPredicate; - -/** - * Finds and lists all persons in address book whose name contains any of the argument keywords. - * Keyword matching is case insensitive. - */ -public class FindCommand extends Command { - - public static final String COMMAND_WORD = "find"; - - public static final String MESSAGE_USAGE = COMMAND_WORD + ": Finds all persons whose names contain any of " - + "the specified keywords (case-insensitive) and displays them as a list with index numbers.\n" - + "Parameters: KEYWORD [MORE_KEYWORDS]...\n" - + "Example: " + COMMAND_WORD + " alice bob charlie"; - - private final NameContainsKeywordsPredicate predicate; - - public FindCommand(NameContainsKeywordsPredicate predicate) { - this.predicate = predicate; - } - - @Override - public CommandResult execute(Model model, CommandHistory history) { - requireNonNull(model); - model.updateFilteredPersonList(predicate); - return new CommandResult( - String.format(Messages.MESSAGE_PERSONS_LISTED_OVERVIEW, model.getFilteredPersonList().size())); - } - - @Override - public boolean equals(Object other) { - return other == this // short circuit if same object - || (other instanceof FindCommand // instanceof handles nulls - && predicate.equals(((FindCommand) other).predicate)); // state check - } -} diff --git a/src/main/java/seedu/address/logic/commands/ListCommand.java b/src/main/java/seedu/address/logic/commands/ListCommand.java index 6d44824c7d1b..24f6acf48d23 100644 --- a/src/main/java/seedu/address/logic/commands/ListCommand.java +++ b/src/main/java/seedu/address/logic/commands/ListCommand.java @@ -1,25 +1,25 @@ package seedu.address.logic.commands; import static java.util.Objects.requireNonNull; -import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; +import static seedu.address.model.Model.PREDICATE_SHOW_ALL_ORDERS; import seedu.address.logic.CommandHistory; import seedu.address.model.Model; /** - * Lists all persons in the address book to the user. + * Lists all orders in the order book to the user. */ public class ListCommand extends Command { - public static final String COMMAND_WORD = "list"; + public static final String COMMAND_WORD = "/order list"; - public static final String MESSAGE_SUCCESS = "Listed all persons"; + public static final String MESSAGE_SUCCESS = "Listed all orders"; @Override public CommandResult execute(Model model, CommandHistory history) { requireNonNull(model); - model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); + model.updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS); return new CommandResult(MESSAGE_SUCCESS); } } diff --git a/src/main/java/seedu/address/logic/commands/RedoCommand.java b/src/main/java/seedu/address/logic/commands/RedoCommand.java index 227771a4eef6..f459533ca7fc 100644 --- a/src/main/java/seedu/address/logic/commands/RedoCommand.java +++ b/src/main/java/seedu/address/logic/commands/RedoCommand.java @@ -1,7 +1,7 @@ package seedu.address.logic.commands; import static java.util.Objects.requireNonNull; -import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; +import static seedu.address.model.Model.PREDICATE_SHOW_ALL_ORDERS; import seedu.address.logic.CommandHistory; import seedu.address.logic.commands.exceptions.CommandException; @@ -20,12 +20,12 @@ public class RedoCommand extends Command { public CommandResult execute(Model model, CommandHistory history) throws CommandException { requireNonNull(model); - if (!model.canRedoAddressBook()) { + if (!model.canRedoOrderBook()) { throw new CommandException(MESSAGE_FAILURE); } - model.redoAddressBook(); - model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); + model.redoOrderBook(); + model.updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS); return new CommandResult(MESSAGE_SUCCESS); } } diff --git a/src/main/java/seedu/address/logic/commands/SelectCommand.java b/src/main/java/seedu/address/logic/commands/SelectCommand.java index f5e8c1a8722e..253c1afa6fa9 100644 --- a/src/main/java/seedu/address/logic/commands/SelectCommand.java +++ b/src/main/java/seedu/address/logic/commands/SelectCommand.java @@ -11,21 +11,21 @@ import seedu.address.logic.CommandHistory; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; -import seedu.address.model.person.Person; +import seedu.address.model.order.Order; /** - * Selects a person identified using it's displayed index from the address book. + * Selects an order identified using it's displayed index from the order book. */ public class SelectCommand extends Command { public static final String COMMAND_WORD = "select"; public static final String MESSAGE_USAGE = COMMAND_WORD - + ": Selects the person identified by the index number used in the displayed person list.\n" + + ": Selects the order identified by the index number used in the displayed order list.\n" + "Parameters: INDEX (must be a positive integer)\n" + "Example: " + COMMAND_WORD + " 1"; - public static final String MESSAGE_SELECT_PERSON_SUCCESS = "Selected Person: %1$s"; + public static final String MESSAGE_SELECT_ORDER_SUCCESS = "Selected Order: %1$s"; private final Index targetIndex; @@ -37,14 +37,14 @@ public SelectCommand(Index targetIndex) { public CommandResult execute(Model model, CommandHistory history) throws CommandException { requireNonNull(model); - List filteredPersonList = model.getFilteredPersonList(); + List filteredOrderList = model.getFilteredOrderList(); - if (targetIndex.getZeroBased() >= filteredPersonList.size()) { - throw new CommandException(Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + if (targetIndex.getZeroBased() >= filteredOrderList.size()) { + throw new CommandException(Messages.MESSAGE_INVALID_ORDER_DISPLAYED_INDEX); } EventsCenter.getInstance().post(new JumpToListRequestEvent(targetIndex)); - return new CommandResult(String.format(MESSAGE_SELECT_PERSON_SUCCESS, targetIndex.getOneBased())); + return new CommandResult(String.format(MESSAGE_SELECT_ORDER_SUCCESS, targetIndex.getOneBased())); } diff --git a/src/main/java/seedu/address/logic/commands/UndoCommand.java b/src/main/java/seedu/address/logic/commands/UndoCommand.java index 40441264f346..1f5a692b77ba 100644 --- a/src/main/java/seedu/address/logic/commands/UndoCommand.java +++ b/src/main/java/seedu/address/logic/commands/UndoCommand.java @@ -1,7 +1,7 @@ package seedu.address.logic.commands; import static java.util.Objects.requireNonNull; -import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; +import static seedu.address.model.Model.PREDICATE_SHOW_ALL_ORDERS; import seedu.address.logic.CommandHistory; import seedu.address.logic.commands.exceptions.CommandException; @@ -20,12 +20,12 @@ public class UndoCommand extends Command { public CommandResult execute(Model model, CommandHistory history) throws CommandException { requireNonNull(model); - if (!model.canUndoAddressBook()) { + if (!model.canUndoOrderBook()) { throw new CommandException(MESSAGE_FAILURE); } - model.undoAddressBook(); - model.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); + model.undoOrderBook(); + model.updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS); return new CommandResult(MESSAGE_SUCCESS); } } diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java index 3b8bfa035e83..cc75731543fd 100644 --- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java +++ b/src/main/java/seedu/address/logic/parser/AddCommandParser.java @@ -1,11 +1,7 @@ package seedu.address.logic.parser; import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; +import static seedu.address.logic.parser.CliSyntax.*; import java.util.Set; import java.util.stream.Stream; @@ -13,11 +9,10 @@ import seedu.address.logic.commands.AddCommand; import seedu.address.logic.parser.exceptions.ParseException; import seedu.address.model.person.Address; -import seedu.address.model.person.Email; import seedu.address.model.person.Name; import seedu.address.model.person.Person; import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; +import seedu.address.model.order.*; /** * Parses input arguments and creates a new AddCommand object @@ -31,7 +26,7 @@ public class AddCommandParser implements Parser { */ public AddCommand parse(String args) throws ParseException { ArgumentMultimap argMultimap = - ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); + ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_ADDRESS, PREFIX_FOOD); if (!arePrefixesPresent(argMultimap, PREFIX_NAME, PREFIX_ADDRESS, PREFIX_PHONE, PREFIX_EMAIL) || !argMultimap.getPreamble().isEmpty()) { @@ -40,13 +35,12 @@ public AddCommand parse(String args) throws ParseException { Name name = ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get()); Phone phone = ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get()); - Email email = ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get()); Address address = ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get()); - Set tagList = ParserUtil.parseTags(argMultimap.getAllValues(PREFIX_TAG)); + Set foodList = ParserUtil.parseFoods(argMultimap.getAllValues(PREFIX_FOOD)); - Person person = new Person(name, phone, email, address, tagList); + Order order = new Order(name, phone, address, foodList); - return new AddCommand(person); + return new AddCommand(order); } /** diff --git a/src/main/java/seedu/address/logic/parser/CliSyntax.java b/src/main/java/seedu/address/logic/parser/CliSyntax.java index 75b1a9bf1190..9fe7145821fa 100644 --- a/src/main/java/seedu/address/logic/parser/CliSyntax.java +++ b/src/main/java/seedu/address/logic/parser/CliSyntax.java @@ -11,5 +11,6 @@ public class CliSyntax { public static final Prefix PREFIX_EMAIL = new Prefix("e/"); public static final Prefix PREFIX_ADDRESS = new Prefix("a/"); public static final Prefix PREFIX_TAG = new Prefix("t/"); + public static final Prefix PREFIX_FOOD = new Prefix("f/"); } diff --git a/src/main/java/seedu/address/logic/parser/EditCommandParser.java b/src/main/java/seedu/address/logic/parser/EditCommandParser.java deleted file mode 100644 index 845644b7dea1..000000000000 --- a/src/main/java/seedu/address/logic/parser/EditCommandParser.java +++ /dev/null @@ -1,82 +0,0 @@ -package seedu.address.logic.parser; - -import static java.util.Objects.requireNonNull; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import java.util.Collection; -import java.util.Collections; -import java.util.Optional; -import java.util.Set; - -import seedu.address.commons.core.index.Index; -import seedu.address.logic.commands.EditCommand; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.tag.Tag; - -/** - * Parses input arguments and creates a new EditCommand object - */ -public class EditCommandParser implements Parser { - - /** - * Parses the given {@code String} of arguments in the context of the EditCommand - * and returns an EditCommand object for execution. - * @throws ParseException if the user input does not conform the expected format - */ - public EditCommand parse(String args) throws ParseException { - requireNonNull(args); - ArgumentMultimap argMultimap = - ArgumentTokenizer.tokenize(args, PREFIX_NAME, PREFIX_PHONE, PREFIX_EMAIL, PREFIX_ADDRESS, PREFIX_TAG); - - Index index; - - try { - index = ParserUtil.parseIndex(argMultimap.getPreamble()); - } catch (ParseException pe) { - throw new ParseException(String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE), pe); - } - - EditPersonDescriptor editPersonDescriptor = new EditPersonDescriptor(); - if (argMultimap.getValue(PREFIX_NAME).isPresent()) { - editPersonDescriptor.setName(ParserUtil.parseName(argMultimap.getValue(PREFIX_NAME).get())); - } - if (argMultimap.getValue(PREFIX_PHONE).isPresent()) { - editPersonDescriptor.setPhone(ParserUtil.parsePhone(argMultimap.getValue(PREFIX_PHONE).get())); - } - if (argMultimap.getValue(PREFIX_EMAIL).isPresent()) { - editPersonDescriptor.setEmail(ParserUtil.parseEmail(argMultimap.getValue(PREFIX_EMAIL).get())); - } - if (argMultimap.getValue(PREFIX_ADDRESS).isPresent()) { - editPersonDescriptor.setAddress(ParserUtil.parseAddress(argMultimap.getValue(PREFIX_ADDRESS).get())); - } - parseTagsForEdit(argMultimap.getAllValues(PREFIX_TAG)).ifPresent(editPersonDescriptor::setTags); - - if (!editPersonDescriptor.isAnyFieldEdited()) { - throw new ParseException(EditCommand.MESSAGE_NOT_EDITED); - } - - return new EditCommand(index, editPersonDescriptor); - } - - /** - * Parses {@code Collection tags} into a {@code Set} if {@code tags} is non-empty. - * If {@code tags} contain only one element which is an empty string, it will be parsed into a - * {@code Set} containing zero tags. - */ - private Optional> parseTagsForEdit(Collection tags) throws ParseException { - assert tags != null; - - if (tags.isEmpty()) { - return Optional.empty(); - } - Collection tagSet = tags.size() == 1 && tags.contains("") ? Collections.emptySet() : tags; - return Optional.of(ParserUtil.parseTags(tagSet)); - } - -} diff --git a/src/main/java/seedu/address/logic/parser/FindCommandParser.java b/src/main/java/seedu/address/logic/parser/FindCommandParser.java deleted file mode 100644 index b186a967cb94..000000000000 --- a/src/main/java/seedu/address/logic/parser/FindCommandParser.java +++ /dev/null @@ -1,33 +0,0 @@ -package seedu.address.logic.parser; - -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; - -import java.util.Arrays; - -import seedu.address.logic.commands.FindCommand; -import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.NameContainsKeywordsPredicate; - -/** - * Parses input arguments and creates a new FindCommand object - */ -public class FindCommandParser implements Parser { - - /** - * Parses the given {@code String} of arguments in the context of the FindCommand - * and returns an FindCommand object for execution. - * @throws ParseException if the user input does not conform the expected format - */ - public FindCommand parse(String args) throws ParseException { - String trimmedArgs = args.trim(); - if (trimmedArgs.isEmpty()) { - throw new ParseException( - String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE)); - } - - String[] nameKeywords = trimmedArgs.split("\\s+"); - - return new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList(nameKeywords))); - } - -} diff --git a/src/main/java/seedu/address/logic/parser/AddressBookParser.java b/src/main/java/seedu/address/logic/parser/OrderBookParser.java similarity index 89% rename from src/main/java/seedu/address/logic/parser/AddressBookParser.java rename to src/main/java/seedu/address/logic/parser/OrderBookParser.java index b7d57f5db86a..0acc83c9a2b9 100644 --- a/src/main/java/seedu/address/logic/parser/AddressBookParser.java +++ b/src/main/java/seedu/address/logic/parser/OrderBookParser.java @@ -10,9 +10,7 @@ import seedu.address.logic.commands.ClearCommand; import seedu.address.logic.commands.Command; import seedu.address.logic.commands.DeleteCommand; -import seedu.address.logic.commands.EditCommand; import seedu.address.logic.commands.ExitCommand; -import seedu.address.logic.commands.FindCommand; import seedu.address.logic.commands.HelpCommand; import seedu.address.logic.commands.HistoryCommand; import seedu.address.logic.commands.ListCommand; @@ -24,7 +22,7 @@ /** * Parses user input. */ -public class AddressBookParser { +public class OrderBookParser { /** * Used for initial separation of command word and args. @@ -51,9 +49,6 @@ public Command parseCommand(String userInput) throws ParseException { case AddCommand.COMMAND_WORD: return new AddCommandParser().parse(arguments); - case EditCommand.COMMAND_WORD: - return new EditCommandParser().parse(arguments); - case SelectCommand.COMMAND_WORD: return new SelectCommandParser().parse(arguments); @@ -63,9 +58,6 @@ public Command parseCommand(String userInput) throws ParseException { case ClearCommand.COMMAND_WORD: return new ClearCommand(); - case FindCommand.COMMAND_WORD: - return new FindCommandParser().parse(arguments); - case ListCommand.COMMAND_WORD: return new ListCommand(); diff --git a/src/main/java/seedu/address/logic/parser/ParserUtil.java b/src/main/java/seedu/address/logic/parser/ParserUtil.java index 76daf40807e2..e5ff54454fe7 100644 --- a/src/main/java/seedu/address/logic/parser/ParserUtil.java +++ b/src/main/java/seedu/address/logic/parser/ParserUtil.java @@ -9,6 +9,7 @@ import seedu.address.commons.core.index.Index; import seedu.address.commons.util.StringUtil; import seedu.address.logic.parser.exceptions.ParseException; +import seedu.address.model.order.Food; import seedu.address.model.person.Address; import seedu.address.model.person.Email; import seedu.address.model.person.Name; @@ -110,6 +111,21 @@ public static Tag parseTag(String tag) throws ParseException { return new Tag(trimmedTag); } + /** + * Parses a {@code String food} into a {@code Food}. + * Leading and trailing whitespaces will be trimmed. + * + * @throws ParseException if the given {@code food} is invalid. + */ + public static Food parseFood(String food) throws ParseException { + requireNonNull(food); + String trimmedFood = food.trim(); + if (!Food.isValidFood(trimmedFood)) { + throw new ParseException(Food.MESSAGE_FOOD_CONSTRAINTS); + } + return new Food(trimmedFood); + } + /** * Parses {@code Collection tags} into a {@code Set}. */ @@ -121,4 +137,16 @@ public static Set parseTags(Collection tags) throws ParseException } return tagSet; } + + /** + * Parses {@code Collection tags} into a {@code Set}. + */ + public static Set parseFoods(Collection food) throws ParseException { + requireNonNull(food); + final Set foodSet = new HashSet<>(); + for (String foodName : food) { + foodSet.add(parseFood(foodName)); + } + return foodSet; + } } From 83249aec3fd864800b807b32cec141188894b11a Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 22:27:16 +0800 Subject: [PATCH 118/739] Add XmlAdaptedUserTest.java --- .../storage/user/XmlAdaptedUserTest.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/test/java/seedu/address/storage/user/XmlAdaptedUserTest.java diff --git a/src/test/java/seedu/address/storage/user/XmlAdaptedUserTest.java b/src/test/java/seedu/address/storage/user/XmlAdaptedUserTest.java new file mode 100644 index 000000000000..03eefa42ee35 --- /dev/null +++ b/src/test/java/seedu/address/storage/user/XmlAdaptedUserTest.java @@ -0,0 +1,75 @@ +package seedu.address.storage.user; + +import static org.junit.Assert.assertEquals; +import static seedu.address.storage.user.XmlAdaptedUser.MISSING_FIELD_MESSAGE_FORMAT; +import static seedu.address.testutil.user.TypicalUsers.CARL_MANAGER; + +import org.junit.Test; + +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.model.person.Name; +import seedu.address.model.person.Password; +import seedu.address.model.person.Username; +import seedu.address.testutil.Assert; + + +public class XmlAdaptedUserTest { + + private static final String INVALID_NAME = "R@chel"; + private static final String INVALID_USERNAME = "manager12@`"; + private static final String INVALID_PASSWORD = "man12"; + + private static final String VALID_NAME = CARL_MANAGER.getName().toString(); + private static final String VALID_USERNAME = CARL_MANAGER.getUsername().toString(); + private static final String VALID_PASSWORD = CARL_MANAGER.getPassword().toString(); + + @Test + public void toModelType_validUserDetails_returnsUser() throws Exception { + XmlAdaptedUser user = new XmlAdaptedUser(CARL_MANAGER); + assertEquals(CARL_MANAGER, user.toModelType()); + } + + @Test + public void toModelType_invalidName_throwsIllegalValueException() { + XmlAdaptedUser user = new XmlAdaptedUser(INVALID_NAME, VALID_USERNAME, VALID_PASSWORD); + String expectedMessage = Name.MESSAGE_NAME_CONSTRAINTS; + Assert.assertThrows(IllegalValueException.class, expectedMessage, user::toModelType); + } + + @Test + public void toModelType_nullName_throwsIllegalValueException() { + XmlAdaptedUser user = new XmlAdaptedUser(null, VALID_USERNAME, VALID_PASSWORD); + String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Name.class.getSimpleName()); + Assert.assertThrows(IllegalValueException.class, expectedMessage, user::toModelType); + } + + @Test + public void toModelType_invalidUsername_throwsIllegalValueException() { + XmlAdaptedUser user = new XmlAdaptedUser(VALID_NAME, INVALID_USERNAME, VALID_PASSWORD); + String expectedMessage = Username.MESSAGE_USERNAME_CONSTRAINTS; + Assert.assertThrows(IllegalValueException.class, expectedMessage, user::toModelType); + } + + @Test + public void toModelType_nullUsername_throwsIllegalValueException() { + XmlAdaptedUser user = new XmlAdaptedUser(VALID_NAME, null, VALID_PASSWORD); + String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Username.class.getSimpleName()); + Assert.assertThrows(IllegalValueException.class, expectedMessage, user::toModelType); + } + + @Test + public void toModelType_invalidPassword_throwsIllegalValueException() { + XmlAdaptedUser user = new XmlAdaptedUser(VALID_NAME, VALID_USERNAME, INVALID_PASSWORD); + String expectedMessage = Password.MESSAGE_PASSWORD_CONSTRAINTS; + Assert.assertThrows(IllegalValueException.class, expectedMessage, user::toModelType); + } + + @Test + public void toModelType_nullPassword_throwsIllegalValueException() { + XmlAdaptedUser user = new XmlAdaptedUser(VALID_NAME, VALID_USERNAME, null); + String expectedMessage = String.format(MISSING_FIELD_MESSAGE_FORMAT, Password.class.getSimpleName()); + Assert.assertThrows(IllegalValueException.class, expectedMessage, user::toModelType); + } + + +} From ce79e255192a454282d7773dbc1cdf2bc7edc438 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Mon, 1 Oct 2018 22:43:09 +0800 Subject: [PATCH 119/739] Update UI elements to point to order instead --- .../java/seedu/address/ui/MainWindow.java | 12 +-- src/main/java/seedu/address/ui/OrderCard.java | 67 +++++++++++++++ .../java/seedu/address/ui/OrderListPanel.java | 82 +++++++++++++++++++ .../java/seedu/address/ui/PersonCard.java | 2 +- .../seedu/address/ui/StatusBarFooter.java | 4 +- 5 files changed, 158 insertions(+), 9 deletions(-) create mode 100644 src/main/java/seedu/address/ui/OrderCard.java create mode 100644 src/main/java/seedu/address/ui/OrderListPanel.java diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index 0e361a4d7baf..b0cda0792f3f 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -35,7 +35,7 @@ public class MainWindow extends UiPart { // Independent Ui parts residing in this Ui container private BrowserPanel browserPanel; - private PersonListPanel personListPanel; + private OrderListPanel orderListPanel; private Config config; private UserPrefs prefs; private HelpWindow helpWindow; @@ -50,7 +50,7 @@ public class MainWindow extends UiPart { private MenuItem helpMenuItem; @FXML - private StackPane personListPanelPlaceholder; + private StackPane orderListPanelPlaceholder; @FXML private StackPane resultDisplayPlaceholder; @@ -122,8 +122,8 @@ void fillInnerParts() { browserPanel = new BrowserPanel(); browserPlaceholder.getChildren().add(browserPanel.getRoot()); - personListPanel = new PersonListPanel(logic.getFilteredPersonList()); - personListPanelPlaceholder.getChildren().add(personListPanel.getRoot()); + orderListPanel = new OrderListPanel(logic.getFilteredOrderList()); + orderListPanelPlaceholder.getChildren().add(orderListPanel.getRoot()); ResultDisplay resultDisplay = new ResultDisplay(); resultDisplayPlaceholder.getChildren().add(resultDisplay.getRoot()); @@ -187,8 +187,8 @@ private void handleExit() { raise(new ExitAppRequestEvent()); } - public PersonListPanel getPersonListPanel() { - return personListPanel; + public OrderListPanel getOrderListPanel() { + return orderListPanel; } void releaseResources() { diff --git a/src/main/java/seedu/address/ui/OrderCard.java b/src/main/java/seedu/address/ui/OrderCard.java new file mode 100644 index 000000000000..ccafef325a7e --- /dev/null +++ b/src/main/java/seedu/address/ui/OrderCard.java @@ -0,0 +1,67 @@ +package seedu.address.ui; + +import javafx.fxml.FXML; +import javafx.scene.control.Label; +import javafx.scene.layout.FlowPane; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Region; +import seedu.address.model.order.Order; + +/** + * An UI component that displays information of a {@code Order}. + */ +public class OrderCard extends UiPart { + + private static final String FXML = "OrderListCard.fxml"; + + /** + * Note: Certain keywords such as "location" and "resources" are reserved keywords in JavaFX. + * As a consequence, UI elements' variable names cannot be set to such keywords + * or an exception will be thrown by JavaFX during runtime. + * + * @see The issue on OrderBook level 4 + */ + + public final Order order; + + @FXML + private HBox cardPane; + @FXML + private Label name; + @FXML + private Label id; + @FXML + private Label phone; + @FXML + private Label address; + @FXML + private FlowPane foodList; + + public OrderCard(Order order, int displayedIndex) { + super(FXML); + this.order = order; + id.setText(displayedIndex + ". "); + name.setText(order.getName().fullName); + phone.setText(order.getPhone().value); + address.setText(order.getAddress().value); + order.getFood().forEach(food -> foodList.getChildren().add(new Label(food.foodName))); + } + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof OrderCard)) { + return false; + } + + // state check + OrderCard card = (OrderCard) other; + return id.getText().equals(card.id.getText()) + && order.equals(card.order); + } +} diff --git a/src/main/java/seedu/address/ui/OrderListPanel.java b/src/main/java/seedu/address/ui/OrderListPanel.java new file mode 100644 index 000000000000..7bbfe97cc7b8 --- /dev/null +++ b/src/main/java/seedu/address/ui/OrderListPanel.java @@ -0,0 +1,82 @@ +package seedu.address.ui; + +import com.google.common.eventbus.Subscribe; +import javafx.application.Platform; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.scene.control.ListCell; +import javafx.scene.control.ListView; +import javafx.scene.layout.Region; +import seedu.address.commons.core.LogsCenter; +import seedu.address.commons.events.ui.JumpToListRequestEvent; +import seedu.address.commons.events.ui.OrderPanelSelectionChangedEvent; +import seedu.address.model.order.Order; + +import java.util.logging.Logger; + +/** + * Panel containing the list of orders. + */ +public class OrderListPanel extends UiPart { + private static final String FXML = "PersonListPanel.fxml"; + private final Logger logger = LogsCenter.getLogger(OrderListPanel.class); + + @FXML + private ListView orderListView; + + public OrderListPanel(ObservableList orderList) { + super(FXML); + setConnections(orderList); + registerAsAnEventHandler(this); + } + + private void setConnections(ObservableList orderList) { + orderListView.setItems(orderList); + orderListView.setCellFactory(listView -> new OrderListViewCell()); + setEventHandlerForSelectionChangeEvent(); + } + + private void setEventHandlerForSelectionChangeEvent() { + orderListView.getSelectionModel().selectedItemProperty() + .addListener((observable, oldValue, newValue) -> { + if (newValue != null) { + logger.fine("Selection in order list panel changed to : '" + newValue + "'"); + raise(new OrderPanelSelectionChangedEvent(newValue)); + } + }); + } + + /** + * Scrolls to the {@code OrderCard} at the {@code index} and selects it. + */ + private void scrollTo(int index) { + Platform.runLater(() -> { + orderListView.scrollTo(index); + orderListView.getSelectionModel().clearAndSelect(index); + }); + } + + @Subscribe + private void handleJumpToListRequestEvent(JumpToListRequestEvent event) { + logger.info(LogsCenter.getEventHandlingLogMessage(event)); + scrollTo(event.targetIndex); + } + + /** + * Custom {@code ListCell} that displays the graphics of a {@code Order} using a {@code OrderCard}. + */ + class OrderListViewCell extends ListCell { + @Override + protected void updateItem(Order order, boolean empty) { + super.updateItem(order, empty); + + if (empty || order == null) { + setGraphic(null); + setText(null); + } else { + setGraphic(new OrderCard(order, getIndex() + 1).getRoot()); + } + } + } + +} diff --git a/src/main/java/seedu/address/ui/PersonCard.java b/src/main/java/seedu/address/ui/PersonCard.java index f6727ea83abd..616882720cf9 100644 --- a/src/main/java/seedu/address/ui/PersonCard.java +++ b/src/main/java/seedu/address/ui/PersonCard.java @@ -19,7 +19,7 @@ public class PersonCard extends UiPart { * As a consequence, UI elements' variable names cannot be set to such keywords * or an exception will be thrown by JavaFX during runtime. * - * @see The issue on AddressBook level 4 + * @see The issue on OrderBook level 4 */ public final Person person; diff --git a/src/main/java/seedu/address/ui/StatusBarFooter.java b/src/main/java/seedu/address/ui/StatusBarFooter.java index f6ba29502422..9f1bedd03e33 100644 --- a/src/main/java/seedu/address/ui/StatusBarFooter.java +++ b/src/main/java/seedu/address/ui/StatusBarFooter.java @@ -14,7 +14,7 @@ import javafx.fxml.FXML; import javafx.scene.layout.Region; import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.events.model.AddressBookChangedEvent; +import seedu.address.commons.events.model.OrderBookChangedEvent; /** * A ui for the status bar that is displayed at the footer of the application. @@ -74,7 +74,7 @@ private void setSyncStatus(String status) { } @Subscribe - public void handleAddressBookChangedEvent(AddressBookChangedEvent abce) { + public void handleOrderBookChangedEvent(OrderBookChangedEvent abce) { long now = clock.millis(); String lastUpdated = new Date(now).toString(); logger.info(LogsCenter.getEventHandlingLogMessage(abce, "Setting last updated status to " + lastUpdated)); From 92f9ec58daeb700574acf242120408cf513c7cec Mon Sep 17 00:00:00 2001 From: Monika Date: Mon, 1 Oct 2018 22:51:18 +0800 Subject: [PATCH 120/739] Create base model for Route --- .../java/seedu/address/model/route/Route.java | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 src/main/java/seedu/address/model/route/Route.java diff --git a/src/main/java/seedu/address/model/route/Route.java b/src/main/java/seedu/address/model/route/Route.java new file mode 100644 index 000000000000..077a40babaad --- /dev/null +++ b/src/main/java/seedu/address/model/route/Route.java @@ -0,0 +1,122 @@ +package seedu.address.model.route; + +import java.util.Objects; + +import seedu.address.model.deliveryman.Deliveryman; +import seedu.address.model.order.Order; +import seedu.address.model.person.Address; + +/** + * Represents a Route in the address book. + * Guarantees: details are present and not null, field values are validated, immutable. + */ +public class Route { + + // Identity fields + private final Address source; + private Address destination; + private Order order; + + // Data fields + private Deliveryman deliveryman; + + /** + * Creates a new instance of Route with the address of the + * restaurant as the source address. + * @param source The address of the restaurant. + */ + public Route(Address source) { + Objects.requireNonNull(source); + this.source = source; + } + + public Address getSource() { + return source; + } + + public Address getDestination() { + return destination; + } + + public Order getOrder() { + return order; + } + + public Deliveryman getDeliveryman() { + return deliveryman; + } + + /** + * Adds an order to the route. + * @param order + */ + public void addOrder(Order order) { + this.order = order; + destination = order.getAddress(); + } + + /** + * Assign the route to a deliveryman. + * @param deliveryman + */ + public void assignDeliveryman(Deliveryman deliveryman) { + this.deliveryman = deliveryman; + } + + /** + * Returns true if both routes have all the same identity fields. + * This defines a weaker notion of equality between two routes. + */ + public boolean isSameRoute(Route otherRoute) { + return false; + if (otherRoute == this) { + return true; + } + + return otherRoute != null + && otherRoute.getSource().equals(getSource()) + && otherRoute.getDestination().equals(getDestination()) + && otherRoute.getOrder().equals(getOrder()); + } + + /** + * Returns true if both routes have the same identity and data fields. + * This defines a stronger notion of equality between two routes. + */ + @Override + public boolean equals(Object other) { + return false; + if (other == this) { + return true; + } + + if (!(other instanceof Route)) { + return false; + } + + Route otherRoute = (Route) other; + return otherRoute.getSource().equals(getSource()) + && otherRoute.getDestination().equals(getDestination()) + && otherRoute.getOrder().equals(getOrder()) + && otherRoute.getDeliveryman().equals(getDeliveryman()); + } + + @Override + public int hashCode() { + // use this method for custom fields hashing instead of implementing your own + return Objects.hash(source, destination, order, deliveryman); + } + + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("Route") + .append(" Order: ") + .append(getOrder()) + .append(" Address: ") + .append(getDestination()) + .append(" Deliveryman: ") + .append(getDeliveryman()); + return builder.toString(); + } +} From f7666a82c736279b85528f60d6522e5002ceef8e Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 22:53:13 +0800 Subject: [PATCH 121/739] Add test data for userslist xml --- .../NotXmlFormatUsersList.xml | 1 + .../invalidAndValidUsersList.xml | 16 ++++++++++++++++ .../XmlUsersListStorageTest/invalidUsersList.xml | 9 +++++++++ 3 files changed, 26 insertions(+) create mode 100644 src/test/data/XmlUsersListStorageTest/NotXmlFormatUsersList.xml create mode 100644 src/test/data/XmlUsersListStorageTest/invalidAndValidUsersList.xml create mode 100644 src/test/data/XmlUsersListStorageTest/invalidUsersList.xml diff --git a/src/test/data/XmlUsersListStorageTest/NotXmlFormatUsersList.xml b/src/test/data/XmlUsersListStorageTest/NotXmlFormatUsersList.xml new file mode 100644 index 000000000000..35efc0f50820 --- /dev/null +++ b/src/test/data/XmlUsersListStorageTest/NotXmlFormatUsersList.xml @@ -0,0 +1 @@ +not xml format! diff --git a/src/test/data/XmlUsersListStorageTest/invalidAndValidUsersList.xml b/src/test/data/XmlUsersListStorageTest/invalidAndValidUsersList.xml new file mode 100644 index 000000000000..1ed8bd74326f --- /dev/null +++ b/src/test/data/XmlUsersListStorageTest/invalidAndValidUsersList.xml @@ -0,0 +1,16 @@ + + + + + Marcus Koh + manager01 + password123 + + + + + marcuskoh + kohchihao + pass + + diff --git a/src/test/data/XmlUsersListStorageTest/invalidUsersList.xml b/src/test/data/XmlUsersListStorageTest/invalidUsersList.xml new file mode 100644 index 000000000000..cb8ed649167f --- /dev/null +++ b/src/test/data/XmlUsersListStorageTest/invalidUsersList.xml @@ -0,0 +1,9 @@ + + + + + marcuskoh@@ + kohchihao + password123 + + From df9c19d471886f610a1bdc95120eddbcc0f50a2b Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 23:09:24 +0800 Subject: [PATCH 122/739] TypicalUsers.java: Add more fake users --- .../seedu/address/testutil/user/TypicalUsers.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/test/java/seedu/address/testutil/user/TypicalUsers.java b/src/test/java/seedu/address/testutil/user/TypicalUsers.java index f57f1a9a6af8..d43efd4c4067 100644 --- a/src/test/java/seedu/address/testutil/user/TypicalUsers.java +++ b/src/test/java/seedu/address/testutil/user/TypicalUsers.java @@ -26,6 +26,19 @@ public class TypicalUsers { .withPassword("carlkurz03") .build(); + // Manually added + public static final User HOON_MANAGER = new UserBuilder() + .withName("Hoon Meier") + .withUsername("hoonmeier") + .withPassword("hoonmeier04") + .build(); + + public static final User IDA_MANAGER = new UserBuilder() + .withName("Ida Mueller") + .withUsername("idamueller") + .withPassword("idamueller05") + .build(); + private TypicalUsers() {} // prevents instantiation /** From 042642a4eab5c83a6ce35099ca8143757f5aadb3 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 23:09:43 +0800 Subject: [PATCH 123/739] Add XmlUsersListStorageTest.java --- .../storage/user/XmlUsersListStorageTest.java | 131 ++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 src/test/java/seedu/address/storage/user/XmlUsersListStorageTest.java diff --git a/src/test/java/seedu/address/storage/user/XmlUsersListStorageTest.java b/src/test/java/seedu/address/storage/user/XmlUsersListStorageTest.java new file mode 100644 index 000000000000..64fa071cda92 --- /dev/null +++ b/src/test/java/seedu/address/storage/user/XmlUsersListStorageTest.java @@ -0,0 +1,131 @@ +package seedu.address.storage.user; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static seedu.address.testutil.user.TypicalUsers.ALICE_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.BENSON_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.CARL_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.HOON_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.IDA_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; + +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.rules.TemporaryFolder; + +import seedu.address.commons.exceptions.DataConversionException; +import seedu.address.model.AddressBook; +import seedu.address.model.ReadOnlyUsersList; +import seedu.address.model.UsersList; + +public class XmlUsersListStorageTest { + private static final Path TEST_DATA_FOLDER = Paths.get("src", "test", "data", + "XmlUsersListStorageTest"); + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Rule + public TemporaryFolder testFolder = new TemporaryFolder(); + + @Test + public void readUsersList_nullFilePath_throwsNullPointerException() throws Exception { + thrown.expect(NullPointerException.class); + readUsersList(null); + } + + private java.util.Optional readUsersList(String filePath) throws Exception { + return new XmlUsersListStorage(Paths.get(filePath)).readUsersList(addToTestDataPathIfNotNull(filePath)); + } + + private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) { + return prefsFileInTestDataFolder != null + ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder) + : null; + } + + @Test + public void read_missingFile_emptyResult() throws Exception { + assertFalse(readUsersList("NonExistentFile.xml").isPresent()); + } + + @Test + public void read_notXmlFormat_exceptionThrown() throws Exception { + + thrown.expect(DataConversionException.class); + readUsersList("NotXmlFormatUsersList.xml"); + + /* IMPORTANT: Any code below an exception-throwing line (like the one above) will be ignored. + * That means you should not have more than one exception test in one method + */ + } + + @Test + public void readUsersList_invalidUsersList_throwDataConversionException() throws Exception { + thrown.expect(DataConversionException.class); + readUsersList("invalidUsersList.xml"); + } + + @Test + public void readUsersList_invalidAndValidUsersList_throwDataConversionException() throws Exception { + thrown.expect(DataConversionException.class); + readUsersList("invalidAndValidUsersList.xml"); + } + + @Test + public void readAndSaveUsersList_allInOrder_success() throws Exception { + Path filePath = testFolder.getRoot().toPath().resolve("TempAddressBook.xml"); + UsersList original = getTypicalUsersList(); + XmlUsersListStorage xmlUsersListStorage = new XmlUsersListStorage(filePath); + + //Save in new file and read back + xmlUsersListStorage.saveUsersList(original, filePath); + ReadOnlyUsersList readBack = xmlUsersListStorage.readUsersList(filePath).get(); + assertEquals(original, new UsersList(readBack)); + + //Modify data, overwrite exiting file, and read back + original.addUser(HOON_MANAGER); + original.removeUser(ALICE_MANAGER); + xmlUsersListStorage.saveUsersList(original, filePath); + readBack = xmlUsersListStorage.readUsersList(filePath).get(); + assertEquals(original, new UsersList(readBack)); + + //Save and read without specifying file path + original.addUser(IDA_MANAGER); + xmlUsersListStorage.saveUsersList(original); //file path not specified + readBack = xmlUsersListStorage.readUsersList().get(); //file path not specified + assertEquals(original, new UsersList(readBack)); + + } + + @Test + public void saveUsersList_nullUsersList_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + saveUsersList(null, "SomeFile.xml"); + } + + /** + * Saves {@code usersList} at the specified {@code filePath}. + */ + private void saveUsersList(ReadOnlyUsersList usersList, String filePath) { + try { + new XmlUsersListStorage(Paths.get(filePath)) + .saveUsersList(usersList, addToTestDataPathIfNotNull(filePath)); + } catch (IOException ioe) { + throw new AssertionError("There should not be an error writing to the file.", ioe); + } + } + + @Test + public void saveUsersList_nullFilePath_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + saveUsersList(new UsersList(), null); + } + + +} From 291f3b6f320ef03d87766ed7a3868da5ed2cac4b Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 23:26:11 +0800 Subject: [PATCH 124/739] Add test data for XmlSerializableUsersListTest.java --- .../duplicateUsersList.xml | 17 ++++++++++++++ .../invalidUsersList.xml | 9 ++++++++ .../typicalUsersList.xml | 23 +++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/test/data/XmlSerializableUsersListTest/duplicateUsersList.xml create mode 100644 src/test/data/XmlSerializableUsersListTest/invalidUsersList.xml create mode 100644 src/test/data/XmlSerializableUsersListTest/typicalUsersList.xml diff --git a/src/test/data/XmlSerializableUsersListTest/duplicateUsersList.xml b/src/test/data/XmlSerializableUsersListTest/duplicateUsersList.xml new file mode 100644 index 000000000000..810ac4a1638c --- /dev/null +++ b/src/test/data/XmlSerializableUsersListTest/duplicateUsersList.xml @@ -0,0 +1,17 @@ + + + + + Marcus Koh + manager01 + password123 + + + + + Marcus Koh + manager01 + password123 + + + diff --git a/src/test/data/XmlSerializableUsersListTest/invalidUsersList.xml b/src/test/data/XmlSerializableUsersListTest/invalidUsersList.xml new file mode 100644 index 000000000000..3053249a0ec2 --- /dev/null +++ b/src/test/data/XmlSerializableUsersListTest/invalidUsersList.xml @@ -0,0 +1,9 @@ + + + + + marcuskoh + kohchihao + pa12 + + diff --git a/src/test/data/XmlSerializableUsersListTest/typicalUsersList.xml b/src/test/data/XmlSerializableUsersListTest/typicalUsersList.xml new file mode 100644 index 000000000000..de946181c1eb --- /dev/null +++ b/src/test/data/XmlSerializableUsersListTest/typicalUsersList.xml @@ -0,0 +1,23 @@ + + + + + Alice Pauline + alicepauline + alicepauline01 + + + + Benson Meier + bensonmeier + bensonmeier02 + + + + Carl Kurz + carlkurz + carlkurz03 + + + + From 41e1669e9791dd75ff1569043cf930788549d29d Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 23:26:31 +0800 Subject: [PATCH 125/739] Add XmlSerializableUsersListTest.java --- .../user/XmlSerializableUsersListTest.java | 56 +++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/test/java/seedu/address/storage/user/XmlSerializableUsersListTest.java diff --git a/src/test/java/seedu/address/storage/user/XmlSerializableUsersListTest.java b/src/test/java/seedu/address/storage/user/XmlSerializableUsersListTest.java new file mode 100644 index 000000000000..038e2d3acb78 --- /dev/null +++ b/src/test/java/seedu/address/storage/user/XmlSerializableUsersListTest.java @@ -0,0 +1,56 @@ +package seedu.address.storage.user; + +import static org.junit.Assert.assertEquals; + +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.commons.util.XmlUtil; +import seedu.address.model.UsersList; +import seedu.address.testutil.user.TypicalUsers; + +public class XmlSerializableUsersListTest { + + private static final Path TEST_DATA_FOLDER = Paths.get("src", "test", "data", + "XmlSerializableUsersListTest"); + private static final Path TYPICAL_USERS_FILE = TEST_DATA_FOLDER.resolve("typicalUsersList.xml"); + private static final Path INVALID_USER_FILE = TEST_DATA_FOLDER.resolve("invalidUsersList.xml"); + private static final Path DUPLICATE_USER_FILE = TEST_DATA_FOLDER.resolve("duplicateUsersList.xml"); + + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void toModelType_typicalUsersFile_success() throws Exception { + XmlSerializableUsersList dataFromFile = XmlUtil.getDataFromFile(TYPICAL_USERS_FILE, + XmlSerializableUsersList.class); + + UsersList usersListFromFile = dataFromFile.toModelType(); + UsersList typicalUsersList = TypicalUsers.getTypicalUsersList(); + assertEquals(usersListFromFile, typicalUsersList); + } + + @Test + public void toModelType_invalidUserFile_throwsIllegalValueException() throws Exception { + XmlSerializableUsersList dataFromFile = XmlUtil.getDataFromFile(INVALID_USER_FILE, + XmlSerializableUsersList.class); + thrown.expect(IllegalValueException.class); + dataFromFile.toModelType(); + } + + @Test + public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception { + XmlSerializableUsersList dataFromFile = XmlUtil.getDataFromFile(DUPLICATE_USER_FILE, + XmlSerializableUsersList.class); + thrown.expect(IllegalValueException.class); + thrown.expectMessage(XmlSerializableUsersList.MESSAGE_DUPLICATE_USER); + dataFromFile.toModelType(); + } + +} \ No newline at end of file From 046ebf71237536661ce01812318cecd639c49530 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Mon, 1 Oct 2018 23:52:58 +0800 Subject: [PATCH 126/739] Add UserTest.java --- .../seedu/address/model/user/UserTest.java | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 src/test/java/seedu/address/model/user/UserTest.java diff --git a/src/test/java/seedu/address/model/user/UserTest.java b/src/test/java/seedu/address/model/user/UserTest.java new file mode 100644 index 000000000000..7fc90b4af34e --- /dev/null +++ b/src/test/java/seedu/address/model/user/UserTest.java @@ -0,0 +1,71 @@ +package seedu.address.model.user; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static seedu.address.testutil.user.TypicalUsers.ALICE_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.CARL_MANAGER; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import seedu.address.testutil.user.UserBuilder; + +public class UserTest { + + public static final String VALID_USERNAME_AMY = "Amy Bee"; + public static final String VALID_PASSWORD_AMY = "amybee"; + public static final String VALID_NAME_BOB = "Bobby"; + public static final String VALID_USERNAME_BOB = "Bobby"; + public static final String VALID_PASSWORD_BOB = "bobby01"; + + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void isSameUser() { + // same object -> returns true + assertTrue(ALICE_MANAGER.isSameUser(ALICE_MANAGER)); + + // null -> returns false + assertFalse(ALICE_MANAGER.isSameUser(null)); + + // same name, different username and password -> returns false + User editedAlice = new UserBuilder(ALICE_MANAGER) + .withUsername(VALID_USERNAME_AMY) + .withPassword(VALID_PASSWORD_AMY) + .build(); + assertFalse(ALICE_MANAGER.isSameUser(editedAlice)); + + // same name, same username and different password -> returns true + editedAlice = new UserBuilder(ALICE_MANAGER) + .withPassword(VALID_PASSWORD_AMY) + .build(); + assertTrue(ALICE_MANAGER.isSameUser(editedAlice)); + } + + @Test + public void equals() { + // same values -> returns true + User aliceCopy = new UserBuilder(ALICE_MANAGER).build(); + assertTrue(ALICE_MANAGER.equals(aliceCopy)); + + // same object -> returns true + assertTrue(ALICE_MANAGER.equals(ALICE_MANAGER)); + + // null -> returns false + assertFalse(ALICE_MANAGER.equals(null)); + + // different type -> returns false + assertFalse(ALICE_MANAGER.equals(5)); + + // different person -> returns false + assertFalse(ALICE_MANAGER.equals(CARL_MANAGER)); + + // different name -> returns false + User editedAlice = new UserBuilder(ALICE_MANAGER).withName(VALID_NAME_BOB).build(); + assertFalse(ALICE_MANAGER.equals(editedAlice)); + + } +} \ No newline at end of file From 6cccc91426fd34c0b1c34852491ba1cc43675795 Mon Sep 17 00:00:00 2001 From: Monika Date: Tue, 2 Oct 2018 00:06:46 +0800 Subject: [PATCH 127/739] Route.java: Fix typo --- src/main/java/seedu/address/model/route/Route.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/seedu/address/model/route/Route.java b/src/main/java/seedu/address/model/route/Route.java index 077a40babaad..308d7d612c7a 100644 --- a/src/main/java/seedu/address/model/route/Route.java +++ b/src/main/java/seedu/address/model/route/Route.java @@ -59,7 +59,7 @@ public void addOrder(Order order) { * Assign the route to a deliveryman. * @param deliveryman */ - public void assignDeliveryman(Deliveryman deliveryman) { + public void setDeliveryman(Deliveryman deliveryman) { this.deliveryman = deliveryman; } @@ -68,7 +68,6 @@ public void assignDeliveryman(Deliveryman deliveryman) { * This defines a weaker notion of equality between two routes. */ public boolean isSameRoute(Route otherRoute) { - return false; if (otherRoute == this) { return true; } @@ -85,7 +84,6 @@ public boolean isSameRoute(Route otherRoute) { */ @Override public boolean equals(Object other) { - return false; if (other == this) { return true; } From d7c6f683edaf531aef6c82fedeb7522f08b28635 Mon Sep 17 00:00:00 2001 From: Monika Date: Tue, 2 Oct 2018 00:11:29 +0800 Subject: [PATCH 128/739] Create tests for Route model --- .../logic/commands/CommandTestUtil.java | 1 + .../seedu/address/model/route/RouteTest.java | 67 +++++++++++++++++ .../seedu/address/testutil/RouteBuilder.java | 74 +++++++++++++++++++ .../seedu/address/testutil/TypicalRoutes.java | 16 ++++ 4 files changed, 158 insertions(+) create mode 100644 src/test/java/seedu/address/model/route/RouteTest.java create mode 100644 src/test/java/seedu/address/testutil/RouteBuilder.java create mode 100644 src/test/java/seedu/address/testutil/TypicalRoutes.java diff --git a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java index bf861fcb36c3..c41b4d797bb4 100644 --- a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java +++ b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java @@ -36,6 +36,7 @@ public class CommandTestUtil { public static final String VALID_ADDRESS_BOB = "Block 123, Bobby Street 3"; public static final String VALID_TAG_HUSBAND = "husband"; public static final String VALID_TAG_FRIEND = "friend"; + public static final String VALID_ORDER_MAGGIE = "maggie"; public static final String NAME_DESC_AMY = " " + PREFIX_NAME + VALID_NAME_AMY; public static final String NAME_DESC_BOB = " " + PREFIX_NAME + VALID_NAME_BOB; diff --git a/src/test/java/seedu/address/model/route/RouteTest.java b/src/test/java/seedu/address/model/route/RouteTest.java new file mode 100644 index 000000000000..09b9b8e8d82b --- /dev/null +++ b/src/test/java/seedu/address/model/route/RouteTest.java @@ -0,0 +1,67 @@ +package seedu.address.model.route; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static seedu.address.testutil.TypicalRoutes.ALICE; +import static seedu.address.testutil.TypicalRoutes.BENNY; +import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; +import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; +import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; +import static seedu.address.logic.commands.CommandTestUtil.VALID_ORDER_MAGGIE; + +import org.junit.Test; + +import seedu.address.testutil.RouteBuilder; + +public class RouteTest { + + @Test + public void isSameRoute() { + // same object -> returns true + assertTrue(ALICE.isSameRoute(ALICE)); + + // null -> returns false + assertFalse(ALICE.isSameRoute(null)); + + // different order -> returns false + Route editedAlice = new RouteBuilder(ALICE) + .withOrder(VALID_NAME_BOB, VALID_PHONE_BOB, VALID_ADDRESS_BOB, VALID_ORDER_MAGGIE).build(); + assertFalse(ALICE.isSameRoute(editedAlice)); + + // different source -> returns false + editedAlice = new RouteBuilder(ALICE).withSource(VALID_ADDRESS_BOB).build(); + assertFalse(ALICE.isSameRoute(editedAlice)); + } + + @Test + public void equals() { + // same values -> returns true + Route aliceCopy = new RouteBuilder(ALICE).build(); + assertTrue(ALICE.equals(aliceCopy)); + + // same object -> returns true + assertTrue(ALICE.equals(ALICE)); + + // null -> returns false + assertFalse(ALICE.equals(null)); + + // different type -> returns false + assertFalse(ALICE.equals(5)); + + // different route -> returns false + assertFalse(ALICE.equals(BENNY)); + + // different source -> returns false + Route editedAlice = new RouteBuilder(ALICE).withSource(VALID_ADDRESS_BOB).build(); + assertFalse(ALICE.equals(editedAlice)); + + // different deliveryman -> returns false + editedAlice = new RouteBuilder(ALICE).withDeliveryman(VALID_NAME_BOB).build(); + assertFalse(ALICE.equals(editedAlice)); + + // different order -> returns false + editedAlice = new RouteBuilder(ALICE) + .withOrder(VALID_NAME_BOB, VALID_PHONE_BOB, VALID_ADDRESS_BOB, VALID_ORDER_MAGGIE).build(); + assertFalse(ALICE.equals(editedAlice)); + } +} diff --git a/src/test/java/seedu/address/testutil/RouteBuilder.java b/src/test/java/seedu/address/testutil/RouteBuilder.java new file mode 100644 index 000000000000..b41a25fce043 --- /dev/null +++ b/src/test/java/seedu/address/testutil/RouteBuilder.java @@ -0,0 +1,74 @@ +package seedu.address.testutil; + +import seedu.address.model.deliveryman.Deliveryman; +import seedu.address.model.order.Order; +import seedu.address.model.person.Address; +import seedu.address.model.person.Name; +import seedu.address.model.person.Phone; +import seedu.address.model.route.Route; +import seedu.address.model.util.SampleDataUtil; + +/** + * A utility class to help with building Route objects. + */ +public class RouteBuilder { + + public static final String DEFAULT_SOURCE = "12 Clementi Rd"; + public static final String DEFAULT_ORDER_NAME = "Alice Ng"; + public static final String DEFAULT_ORDER_PHONE = "84382150"; + public static final String DEFAULT_ORDER_ADDRESS = "123, Jurong West Ave 6, #08-111"; + public static final String DEFAULT_ORDER_FOOD = "Kampung Fried Rice"; + public static final String DEFAULT_ORDER_DELIVERYMAN = "Daniel Lee"; + + private Address source; + private Order order; + private Deliveryman deliveryman; + + public RouteBuilder() { + source = new Address(DEFAULT_SOURCE); + order = new Order(new Name(DEFAULT_ORDER_NAME), new Phone(DEFAULT_ORDER_PHONE), + new Address(DEFAULT_ORDER_ADDRESS), SampleDataUtil.getFoodSet(DEFAULT_ORDER_FOOD)); + deliveryman = new Deliveryman(new Name(DEFAULT_ORDER_DELIVERYMAN)); + } + + /** + * Initializes the RouteBuilder with the data of {@code routeToCopy}. + */ + public RouteBuilder(Route routeToCopy) { + source = routeToCopy.getSource(); + order = routeToCopy.getOrder(); + deliveryman = routeToCopy.getDeliveryman(); + } + + /** + * Sets the {@code source} of the {@code Route} that we are building. + */ + public RouteBuilder withSource(String source) { + this.source = new Address(source); + return this; + } + + /** + * Sets the {@code order} of the {@code Route} that we are building. + */ + public RouteBuilder withOrder(String name, String phone, String address, String... food) { + this.order = new Order(new Name(name), new Phone(phone), new Address(address), SampleDataUtil.getFoodSet(food)); + return this; + } + + /** + * Sets the {@code source} of the {@code Route} that we are building. + */ + public RouteBuilder withDeliveryman(String deliveryman) { + this.deliveryman = new Deliveryman(new Name(deliveryman)); + return this; + } + + public Route build() { + Route route = new Route(source); + route.addOrder(order); + route.setDeliveryman(deliveryman); + return route; + } + +} diff --git a/src/test/java/seedu/address/testutil/TypicalRoutes.java b/src/test/java/seedu/address/testutil/TypicalRoutes.java new file mode 100644 index 000000000000..2e9fda1460c4 --- /dev/null +++ b/src/test/java/seedu/address/testutil/TypicalRoutes.java @@ -0,0 +1,16 @@ +package seedu.address.testutil; + +import seedu.address.model.route.Route; + +/** + * A utility class containing a list of {@code Route} objects to be used in tests. + */ +public class TypicalRoutes { + public static final Route ALICE = new RouteBuilder() + .withOrder("Alice Ang", "82930465", "6th Avenue #12", "Garlic Naan", "Milo") + .withDeliveryman("Jack").build(); + + public static final Route BENNY = new RouteBuilder() + .withOrder("Benny Ng", "81730485", "31 Jalan Besar", "Kampong Fried Rice") + .withDeliveryman("John").build(); +} From 363cc6e7f6f8a0f7db5d6a389febb5815321be86 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 00:17:24 +0800 Subject: [PATCH 129/739] Add UniqueUserListTest.java --- .../model/user/UniqueUserListTest.java | 163 ++++++++++++++++++ 1 file changed, 163 insertions(+) create mode 100644 src/test/java/seedu/address/model/user/UniqueUserListTest.java diff --git a/src/test/java/seedu/address/model/user/UniqueUserListTest.java b/src/test/java/seedu/address/model/user/UniqueUserListTest.java new file mode 100644 index 000000000000..e4fafdc71ab5 --- /dev/null +++ b/src/test/java/seedu/address/model/user/UniqueUserListTest.java @@ -0,0 +1,163 @@ +package seedu.address.model.user; + +import static org.junit.jupiter.api.Assertions.*; +import static seedu.address.testutil.user.TypicalUsers.ALICE_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.BENSON_MANAGER; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import seedu.address.model.person.exceptions.DuplicatePersonException; +import seedu.address.model.person.exceptions.PersonNotFoundException; +import seedu.address.testutil.user.UserBuilder; + +public class UniqueUserListTest { + @Rule + public ExpectedException thrown = ExpectedException.none(); + + private final UniqueUserList uniqueUserList = new UniqueUserList(); + + + @Test + public void contains_nullUser_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + uniqueUserList.contains(null); + } + + @Test + public void contains_userNotInList_returnsFalse() { + assertFalse(uniqueUserList.contains(ALICE_MANAGER)); + } + + @Test + public void contains_userInList_returnsTrue() { + uniqueUserList.add(ALICE_MANAGER); + assertTrue(uniqueUserList.contains(ALICE_MANAGER)); + } + + @Test + public void contains_userWithSameIdentityFieldsInList_returnsTrue() { + uniqueUserList.add(ALICE_MANAGER); + User editedAlice = new UserBuilder(ALICE_MANAGER).build(); + assertTrue(uniqueUserList.contains(editedAlice)); + } + + @Test + public void add_nullUser_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + uniqueUserList.add(null); + } + + @Test + public void add_duplicateUser_throwsDuplicatePersonException() { + uniqueUserList.add(ALICE_MANAGER); + thrown.expect(DuplicatePersonException.class); + uniqueUserList.add(ALICE_MANAGER); + } + + @Test + public void setUser_nullTargetUser_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + uniqueUserList.setUser(null, ALICE_MANAGER); + } + + @Test + public void setUser_nullEditedUser_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + uniqueUserList.setUser(ALICE_MANAGER, null); + } + + @Test + public void setUser_targetUserNotInList_throwsPersonNotFoundException() { + thrown.expect(PersonNotFoundException.class); + uniqueUserList.setUser(ALICE_MANAGER, ALICE_MANAGER); + } + + @Test + public void setUser_editedPersonIsSameUser_success() { + uniqueUserList.add(ALICE_MANAGER); + uniqueUserList.setUser(ALICE_MANAGER, ALICE_MANAGER); + UniqueUserList expectedUniqueUserList = new UniqueUserList(); + expectedUniqueUserList.add(ALICE_MANAGER); + assertEquals(expectedUniqueUserList, uniqueUserList); + } + + @Test + public void setUser_editedUserHasSameIdentity_success() { + uniqueUserList.add(ALICE_MANAGER); + User editedAlice = new UserBuilder(ALICE_MANAGER).build(); + uniqueUserList.setUser(ALICE_MANAGER, editedAlice); + UniqueUserList expectedUniqueUserList = new UniqueUserList(); + expectedUniqueUserList.add(editedAlice); + assertEquals(expectedUniqueUserList, uniqueUserList); + } + + @Test + public void remove_nullUser_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + uniqueUserList.remove(null); + } + + @Test + public void remove_userDoesNotExist_throwsPersonNotFoundException() { + thrown.expect(PersonNotFoundException.class); + uniqueUserList.remove(ALICE_MANAGER); + } + + @Test + public void remove_existingUser_removesUser() { + uniqueUserList.add(ALICE_MANAGER); + uniqueUserList.remove(ALICE_MANAGER); + UniqueUserList expectedUniqueUserList = new UniqueUserList(); + assertEquals(expectedUniqueUserList, uniqueUserList); + } + + @Test + public void setUsers_nullUniqueUserList_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + uniqueUserList.setUsers((UniqueUserList) null); + } + + @Test + public void setUsers_uniqueUserList_replacesOwnListWithProvidedUniqueUserList() { + uniqueUserList.add(ALICE_MANAGER); + UniqueUserList expectedUniqueUserList = new UniqueUserList(); + expectedUniqueUserList.add(BENSON_MANAGER); + uniqueUserList.setUsers(expectedUniqueUserList); + assertEquals(expectedUniqueUserList, uniqueUserList); + } + + @Test + public void setUsers_nullList_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + uniqueUserList.setUsers((List) null); + } + + @Test + public void setUsers_list_replacesOwnListWithProvidedList() { + uniqueUserList.add(ALICE_MANAGER); + List userList = Collections.singletonList(BENSON_MANAGER); + uniqueUserList.setUsers(userList); + UniqueUserList expectedUniqueUserList = new UniqueUserList(); + expectedUniqueUserList.add(BENSON_MANAGER); + assertEquals(expectedUniqueUserList, uniqueUserList); + } + + @Test + public void setUsers_listWithDuplicateUsers_throwsDuplicatePersonException() { + List listWithDuplicateUsers = Arrays.asList(ALICE_MANAGER, ALICE_MANAGER); + thrown.expect(DuplicatePersonException.class); + uniqueUserList.setUsers(listWithDuplicateUsers); + } + + @Test + public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationException() { + thrown.expect(UnsupportedOperationException.class); + uniqueUserList.asUnmodifiableObservableList().remove(0); + } +} \ No newline at end of file From 7579dc7a2f568421fcf823e3f7f14644404fb8b5 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 00:32:22 +0800 Subject: [PATCH 130/739] Add UsersListTest.java --- .../seedu/address/model/UsersListTest.java | 101 ++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 src/test/java/seedu/address/model/UsersListTest.java diff --git a/src/test/java/seedu/address/model/UsersListTest.java b/src/test/java/seedu/address/model/UsersListTest.java new file mode 100644 index 000000000000..0a29555b6175 --- /dev/null +++ b/src/test/java/seedu/address/model/UsersListTest.java @@ -0,0 +1,101 @@ +package seedu.address.model; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static seedu.address.testutil.TypicalPersons.ALICE; +import static seedu.address.testutil.user.TypicalUsers.ALICE_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.person.Person; +import seedu.address.model.person.exceptions.DuplicatePersonException; +import seedu.address.model.user.User; +import seedu.address.testutil.user.UserBuilder; + +public class UsersListTest { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + private final UsersList usersList = new UsersList(); + + @Test + public void constructor() { + assertEquals(Collections.emptyList(), usersList.getUserList()); + } + + @Test + public void resetData_null_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + usersList.resetData(null); + } + + @Test + public void resetData_withValidReadOnlyUsersList_replacesData() { + UsersList newData = getTypicalUsersList(); + newData.resetData(newData); + assertEquals(newData, usersList); + } + + @Test + public void resetData_withDuplicateUsers_throwsDuplicatePersonException() { + // Two persons with the same identity fields + User editedAlice = new UserBuilder(ALICE_MANAGER).build(); + List newUsers = Arrays.asList(ALICE_MANAGER, editedAlice); + + UsersListStub newData = new UsersListStub(newUsers); + + thrown.expect(DuplicatePersonException.class); + usersList.resetData(newData); + } + + @Test + public void hasUser_nullUser_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + usersList.hasUser(null); + } + + @Test + public void hasUser_userNotInUsersList_returnsFalse() { + assertFalse(usersList.hasUser(ALICE_MANAGER)); + } + + @Test + public void hasUser_userInUsersList_returnsTrue() { + usersList.addUser(ALICE_MANAGER); + assertTrue(usersList.hasUser(ALICE_MANAGER)); + } + + @Test + public void getUserList_modifyList_throwsUnsupportedOperationException() { + thrown.expect(UnsupportedOperationException.class); + usersList.getUserList().remove(0); + } + + /** + * A stub ReadOnlyUsersList whose users list can violate interface constraints. + */ + private static class UsersListStub implements ReadOnlyUsersList { + private final ObservableList users = FXCollections.observableArrayList(); + + UsersListStub(Collection users) { + this.users.setAll(users); + } + + @Override + public ObservableList getUserList() { + return users; + } + } +} \ No newline at end of file From c3218e1e4620c620bff050dc45be006992a4dc1b Mon Sep 17 00:00:00 2001 From: Monika Date: Tue, 2 Oct 2018 00:37:31 +0800 Subject: [PATCH 131/739] Add UniqueRouteList --- .../address/model/route/UniqueRouteList.java | 135 ++++++++++++++++++ .../exceptions/DuplicateRouteException.java | 11 ++ .../exceptions/RouteNotFoundException.java | 6 + 3 files changed, 152 insertions(+) create mode 100644 src/main/java/seedu/address/model/route/UniqueRouteList.java create mode 100644 src/main/java/seedu/address/model/route/exceptions/DuplicateRouteException.java create mode 100644 src/main/java/seedu/address/model/route/exceptions/RouteNotFoundException.java diff --git a/src/main/java/seedu/address/model/route/UniqueRouteList.java b/src/main/java/seedu/address/model/route/UniqueRouteList.java new file mode 100644 index 000000000000..c0b549554698 --- /dev/null +++ b/src/main/java/seedu/address/model/route/UniqueRouteList.java @@ -0,0 +1,135 @@ +package seedu.address.model.route; + +import static java.util.Objects.requireNonNull; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + +import java.util.Iterator; +import java.util.List; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.route.exceptions.DuplicateRouteException; +import seedu.address.model.route.exceptions.RouteNotFoundException; + +/** + * A list of routes that enforces uniqueness between its elements and does not allow nulls. + * A route is considered unique by comparing using {@code Route#isSameRoute(Route)}. As such, adding and updating of + * routes uses Route#isSameRoute(Route) for equality so as to ensure that the route being added or updated is + * unique in terms of identity in the UniqueRouteList. However, the removal of a route uses Route#equals(Object) so + * as to ensure that the route with exactly the same fields will be removed. + * + * Supports a minimal set of list operations. + * + * @see Route#isSameRoute(Route) + */ +public class UniqueRouteList implements Iterable { + + private final ObservableList internalList = FXCollections.observableArrayList(); + + /** + * Returns true if the list contains an equivalent route as the given argument. + */ + public boolean contains(Route toCheck) { + requireNonNull(toCheck); + return internalList.stream().anyMatch(toCheck::isSameRoute); + } + + /** + * Adds a route to the list. + * The route must not already exist in the list. + */ + public void add(Route toAdd) { + requireNonNull(toAdd); + if (contains(toAdd)) { + throw new DuplicateRouteException(); + } + internalList.add(toAdd); + } + + /** + * Replaces the route {@code target} in the list with {@code editedRoute}. + * {@code target} must exist in the list. + * The route identity of {@code editedRoute} must not be the same as another existing route in the list. + */ + public void setRoute(Route target, Route editedRoute) { + requireAllNonNull(target, editedRoute); + + int index = internalList.indexOf(target); + if (index == -1) { + throw new RouteNotFoundException(); + } + + if (!target.isSameRoute(editedRoute) && contains(editedRoute)) { + throw new DuplicateRouteException(); + } + + internalList.set(index, editedRoute); + } + + /** + * Removes the equivalent route from the list. + * The route must exist in the list. + */ + public void remove(Route toRemove) { + requireNonNull(toRemove); + if (!internalList.remove(toRemove)) { + throw new RouteNotFoundException(); + } + } + + public void setRoutes(UniqueRouteList replacement) { + requireNonNull(replacement); + internalList.setAll(replacement.internalList); + } + + /** + * Replaces the contents of this list with {@code routes}. + * {@code routes} must not contain duplicate routes. + */ + public void setRoutes(List routes) { + requireAllNonNull(routes); + if (!routesAreUnique(routes)) { + throw new DuplicateRouteException(); + } + + internalList.setAll(routes); + } + + /** + * Returns the backing list as an unmodifiable {@code ObservableList}. + */ + public ObservableList asUnmodifiableObservableList() { + return FXCollections.unmodifiableObservableList(internalList); + } + + @Override + public Iterator iterator() { + return internalList.iterator(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof UniqueRouteList // instanceof handles nulls + && internalList.equals(((UniqueRouteList) other).internalList)); + } + + @Override + public int hashCode() { + return internalList.hashCode(); + } + + /** + * Returns true if {@code routes} contains only unique routes. + */ + private boolean routesAreUnique(List routes) { + for (int i = 0; i < routes.size() - 1; i++) { + for (int j = i + 1; j < routes.size(); j++) { + if (routes.get(i).isSameRoute(routes.get(j))) { + return false; + } + } + } + return true; + } +} diff --git a/src/main/java/seedu/address/model/route/exceptions/DuplicateRouteException.java b/src/main/java/seedu/address/model/route/exceptions/DuplicateRouteException.java new file mode 100644 index 000000000000..0c063f061bc4 --- /dev/null +++ b/src/main/java/seedu/address/model/route/exceptions/DuplicateRouteException.java @@ -0,0 +1,11 @@ +package seedu.address.model.route.exceptions; + +/** + * Signals that the operation will result in duplicate Routes (Routes are considered duplicates if they have the same + * identity). + */ +public class DuplicateRouteException extends RuntimeException { + public DuplicateRouteException() { + super("Operation would result in duplicate routes"); + } +} diff --git a/src/main/java/seedu/address/model/route/exceptions/RouteNotFoundException.java b/src/main/java/seedu/address/model/route/exceptions/RouteNotFoundException.java new file mode 100644 index 000000000000..3d0bced3a157 --- /dev/null +++ b/src/main/java/seedu/address/model/route/exceptions/RouteNotFoundException.java @@ -0,0 +1,6 @@ +package seedu.address.model.route.exceptions; + +/** + * Signals that the operation is unable to find the specified route. + */ +public class RouteNotFoundException extends RuntimeException {} From 8cc4cbd7e3e3cbf186c8bba3fd23aa4d3fa1b7d8 Mon Sep 17 00:00:00 2001 From: Monika Date: Tue, 2 Oct 2018 01:01:30 +0800 Subject: [PATCH 132/739] Add RouteList and interface ReadOnlyRouteList --- .../model/route/ReadOnlyRouteList.java | 16 +++ .../seedu/address/model/route/RouteList.java | 117 ++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 src/main/java/seedu/address/model/route/ReadOnlyRouteList.java create mode 100644 src/main/java/seedu/address/model/route/RouteList.java diff --git a/src/main/java/seedu/address/model/route/ReadOnlyRouteList.java b/src/main/java/seedu/address/model/route/ReadOnlyRouteList.java new file mode 100644 index 000000000000..ccb2df449e5f --- /dev/null +++ b/src/main/java/seedu/address/model/route/ReadOnlyRouteList.java @@ -0,0 +1,16 @@ +package seedu.address.model.route; + +import javafx.collections.ObservableList; + +/** + * Unmodifiable view of a route book + */ +public interface ReadOnlyRouteList { + + /** + * Returns an unmodifiable view of the routes list. + * This list will not contain any duplicate routes. + */ + ObservableList getRouteList(); + +} diff --git a/src/main/java/seedu/address/model/route/RouteList.java b/src/main/java/seedu/address/model/route/RouteList.java new file mode 100644 index 000000000000..f86287d71a66 --- /dev/null +++ b/src/main/java/seedu/address/model/route/RouteList.java @@ -0,0 +1,117 @@ +package seedu.address.model.route; + +import static java.util.Objects.requireNonNull; + +import java.util.List; + +import javafx.collections.ObservableList; + +/** + * Wraps all data at the route-list level + * Duplicates are not allowed (by .isSameRoute comparison) + */ +public class RouteList implements ReadOnlyRouteList { + + private final UniqueRouteList routes; + + /* + * The 'unusual' code block below is an non-static initialization block, sometimes used to avoid duplication + * between constructors. See https://docs.oracle.com/javase/tutorial/java/javaOO/initial.html + * + * Note that non-static init blocks are not recommended to use. There are other ways to avoid duplication + * among constructors. + */ + { + routes = new UniqueRouteList(); + } + + public RouteList() {} + + /** + * Creates an RouteList using the Routes in the {@code toBeCopied} + */ + public RouteList(ReadOnlyRouteList toBeCopied) { + this(); + resetData(toBeCopied); + } + + //// list overwrite operations + + /** + * Replaces the contents of the route list with {@code routes}. + * {@code routes} must not contain duplicate routes. + */ + public void setRoutes(List routes) { + this.routes.setRoutes(routes); + } + + /** + * Resets the existing data of this {@code RouteList} with {@code newData}. + */ + public void resetData(ReadOnlyRouteList newData) { + requireNonNull(newData); + + setRoutes(newData.getRouteList()); + } + + //// route-level operations + + /** + * Returns true if a route with the same identity as {@code route} exists in the route book. + */ + public boolean hasRoute(Route route) { + requireNonNull(route); + return routes.contains(route); + } + + /** + * Adds a route to the route book. + * The route must not already exist in the route book. + */ + public void addRoute(Route route) { + routes.add(route); + } + + /** + * Replaces the given route {@code target} in the list with {@code editedRoute}. + * {@code target} must exist in the route book. + * The route identity of {@code editedRoute} must not be the same as another existing route in the route book. + */ + public void updateRoute(Route target, Route editedRoute) { + requireNonNull(editedRoute); + + routes.setRoute(target, editedRoute); + } + + /** + * Removes {@code key} from this {@code RouteList}. + * {@code key} must exist in the route book. + */ + public void removeRoute(Route key) { + routes.remove(key); + } + + //// util methods + + @Override + public String toString() { + return routes.asUnmodifiableObservableList().size() + " routes"; + } + + @Override + public ObservableList getRouteList() { + return routes.asUnmodifiableObservableList(); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof RouteList // instanceof handles nulls + && routes.equals(((RouteList) other).routes)); + } + + @Override + public int hashCode() { + return routes.hashCode(); + } +} From bc7e42552c5b61509d0dabe30dacf8ffd398cfc7 Mon Sep 17 00:00:00 2001 From: Monika Date: Tue, 2 Oct 2018 01:04:50 +0800 Subject: [PATCH 133/739] Add VersionedRouteList.java --- .../model/route/VersionedRouteList.java | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 src/main/java/seedu/address/model/route/VersionedRouteList.java diff --git a/src/main/java/seedu/address/model/route/VersionedRouteList.java b/src/main/java/seedu/address/model/route/VersionedRouteList.java new file mode 100644 index 000000000000..a849d50caf5c --- /dev/null +++ b/src/main/java/seedu/address/model/route/VersionedRouteList.java @@ -0,0 +1,109 @@ +package seedu.address.model.route; + +import java.util.ArrayList; +import java.util.List; + +/** + * {@code RouteList} that keeps track of its own history. + */ +public class VersionedRouteList extends RouteList { + + private final List routeBookStateList; + private int currentStatePointer; + + public VersionedRouteList(ReadOnlyRouteList initialState) { + super(initialState); + + routeBookStateList = new ArrayList<>(); + routeBookStateList.add(new RouteList(initialState)); + currentStatePointer = 0; + } + + /** + * Saves a copy of the current {@code RouteList} state at the end of the state list. + * Undone states are removed from the state list. + */ + public void commit() { + removeStatesAfterCurrentPointer(); + routeBookStateList.add(new RouteList(this)); + currentStatePointer++; + } + + private void removeStatesAfterCurrentPointer() { + routeBookStateList.subList(currentStatePointer + 1, routeBookStateList.size()).clear(); + } + + /** + * Restores the route book to its previous state. + */ + public void undo() { + if (!canUndo()) { + throw new NoUndoableStateException(); + } + currentStatePointer--; + resetData(routeBookStateList.get(currentStatePointer)); + } + + /** + * Restores the route book to its previously undone state. + */ + public void redo() { + if (!canRedo()) { + throw new NoRedoableStateException(); + } + currentStatePointer++; + resetData(routeBookStateList.get(currentStatePointer)); + } + + /** + * Returns true if {@code undo()} has route book states to undo. + */ + public boolean canUndo() { + return currentStatePointer > 0; + } + + /** + * Returns true if {@code redo()} has route book states to redo. + */ + public boolean canRedo() { + return currentStatePointer < routeBookStateList.size() - 1; + } + + @Override + public boolean equals(Object other) { + // short circuit if same object + if (other == this) { + return true; + } + + // instanceof handles nulls + if (!(other instanceof VersionedRouteList)) { + return false; + } + + VersionedRouteList otherVersionedRouteList = (VersionedRouteList) other; + + // state check + return super.equals(otherVersionedRouteList) + && routeBookStateList.equals(otherVersionedRouteList.routeBookStateList) + && currentStatePointer == otherVersionedRouteList.currentStatePointer; + } + + /** + * Thrown when trying to {@code undo()} but can't. + */ + public static class NoUndoableStateException extends RuntimeException { + private NoUndoableStateException() { + super("Current state pointer at start of routeBookState list, unable to undo."); + } + } + + /** + * Thrown when trying to {@code redo()} but can't. + */ + public static class NoRedoableStateException extends RuntimeException { + private NoRedoableStateException() { + super("Current state pointer at end of routeBookState list, unable to redo."); + } + } +} From 6a64e119987af77ce7ef841c7afa816fd09e001f Mon Sep 17 00:00:00 2001 From: Monika Date: Tue, 2 Oct 2018 02:09:08 +0800 Subject: [PATCH 134/739] Route.java: Add overloaded constructor --- src/main/java/seedu/address/model/route/Route.java | 10 ++++++++++ src/test/java/seedu/address/testutil/RouteBuilder.java | 5 +---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/address/model/route/Route.java b/src/main/java/seedu/address/model/route/Route.java index 308d7d612c7a..ecc793d4dc57 100644 --- a/src/main/java/seedu/address/model/route/Route.java +++ b/src/main/java/seedu/address/model/route/Route.java @@ -1,5 +1,7 @@ package seedu.address.model.route; +import static seedu.address.commons.util.CollectionUtil.requireAllNonNull; + import java.util.Objects; import seedu.address.model.deliveryman.Deliveryman; @@ -30,6 +32,14 @@ public Route(Address source) { this.source = source; } + public Route(Address source, Deliveryman deliveryman, Order order) { + requireAllNonNull(source, deliveryman, order); + this.source = source; + this.destination = order.getAddress(); + this.deliveryman = deliveryman; + this.order = order; + } + public Address getSource() { return source; } diff --git a/src/test/java/seedu/address/testutil/RouteBuilder.java b/src/test/java/seedu/address/testutil/RouteBuilder.java index b41a25fce043..b2019e28b5a2 100644 --- a/src/test/java/seedu/address/testutil/RouteBuilder.java +++ b/src/test/java/seedu/address/testutil/RouteBuilder.java @@ -65,10 +65,7 @@ public RouteBuilder withDeliveryman(String deliveryman) { } public Route build() { - Route route = new Route(source); - route.addOrder(order); - route.setDeliveryman(deliveryman); - return route; + return new Route(source, deliveryman, order); } } From 66fe93e658a115593fe594fa470eeed6de80b3ac Mon Sep 17 00:00:00 2001 From: Monika Date: Tue, 2 Oct 2018 03:01:14 +0800 Subject: [PATCH 135/739] Add XML storage files for Route --- .../seedu/address/storage/XmlFileStorage.java | 27 ++++- .../storage/route/RouteListStorage.java | 45 ++++++++ .../storage/route/XmlAdaptedRoute.java | 102 ++++++++++++++++++ .../storage/route/XmlRouteListStorage.java | 81 ++++++++++++++ .../route/XmlSerializableRouteList.java | 72 +++++++++++++ 5 files changed, 326 insertions(+), 1 deletion(-) create mode 100644 src/main/java/seedu/address/storage/route/RouteListStorage.java create mode 100644 src/main/java/seedu/address/storage/route/XmlAdaptedRoute.java create mode 100644 src/main/java/seedu/address/storage/route/XmlRouteListStorage.java create mode 100644 src/main/java/seedu/address/storage/route/XmlSerializableRouteList.java diff --git a/src/main/java/seedu/address/storage/XmlFileStorage.java b/src/main/java/seedu/address/storage/XmlFileStorage.java index d8f65dc036ab..d4e75e1b826a 100644 --- a/src/main/java/seedu/address/storage/XmlFileStorage.java +++ b/src/main/java/seedu/address/storage/XmlFileStorage.java @@ -7,6 +7,7 @@ import seedu.address.commons.exceptions.DataConversionException; import seedu.address.commons.util.XmlUtil; +import seedu.address.storage.route.XmlSerializableRouteList; /** * Stores addressbook data in an XML file @@ -25,7 +26,7 @@ public static void saveDataToFile(Path file, XmlSerializableAddressBook addressB } /** - * Returns address book in the file or an empty address book + * Returns address book in the file or an empty address book. */ public static XmlSerializableAddressBook loadDataFromSaveFile(Path file) throws DataConversionException, FileNotFoundException { @@ -36,4 +37,28 @@ public static XmlSerializableAddressBook loadDataFromSaveFile(Path file) throws } } + /** + * Saves the given route list data to the specified file. + */ + public static void saveRouteDataToFile(Path file, XmlSerializableRouteList routeList) + throws FileNotFoundException { + try { + XmlUtil.saveDataToFile(file, routeList); + } catch (JAXBException e) { + throw new AssertionError("Unexpected exception " + e.getMessage(), e); + } + } + + /** + * Returns route list in the file or an empty route list. + */ + public static XmlSerializableRouteList loadRouteDataFromSaveFile(Path file) throws DataConversionException, + FileNotFoundException { + try { + return XmlUtil.getDataFromFile(file, XmlSerializableRouteList.class); + } catch (JAXBException e) { + throw new DataConversionException(e); + } + } + } diff --git a/src/main/java/seedu/address/storage/route/RouteListStorage.java b/src/main/java/seedu/address/storage/route/RouteListStorage.java new file mode 100644 index 000000000000..73b473651f76 --- /dev/null +++ b/src/main/java/seedu/address/storage/route/RouteListStorage.java @@ -0,0 +1,45 @@ +package seedu.address.storage.route; + +import java.io.IOException; +import java.nio.file.Path; +import java.util.Optional; + +import seedu.address.commons.exceptions.DataConversionException; +import seedu.address.model.route.ReadOnlyRouteList; + +/** + * Represents a storage for {@link seedu.address.model.route.RouteList}. + */ +public interface RouteListStorage { + + /** + * Returns the file path of the data file. + */ + Path getRouteListFilePath(); + + /** + * Returns a list of routes data as a {@link ReadOnlyRouteList}. + * Returns {@code Optional.empty()} if storage file is not found. + * @throws DataConversionException if the data in storage is not in the expected format. + * @throws IOException if there was any problem when reading from the storage. + */ + Optional readRouteList() throws DataConversionException, IOException; + + /** + * @see #getRouteListFilePath() + */ + Optional readRouteList(Path filePath) throws DataConversionException, IOException; + + /** + * Saves the given {@link ReadOnlyRouteList} to the storage. + * @param routeList cannot be null. + * @throws IOException if there was any problem writing to the file. + */ + void saveRouteList(ReadOnlyRouteList routeList) throws IOException; + + /** + * @see #saveRouteList(ReadOnlyRouteList) + */ + void saveRouteList(ReadOnlyRouteList routeList, Path filePath) throws IOException; + +} diff --git a/src/main/java/seedu/address/storage/route/XmlAdaptedRoute.java b/src/main/java/seedu/address/storage/route/XmlAdaptedRoute.java new file mode 100644 index 000000000000..660fe962b53c --- /dev/null +++ b/src/main/java/seedu/address/storage/route/XmlAdaptedRoute.java @@ -0,0 +1,102 @@ +package seedu.address.storage.route; + +import java.util.Objects; + +import javax.xml.bind.annotation.XmlElement; + +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.model.deliveryman.Deliveryman; +import seedu.address.model.order.Order; +import seedu.address.model.person.Address; +import seedu.address.model.route.Route; + +/** + * JAXB-friendly version of the Route. + */ +public class XmlAdaptedRoute { + + public static final String MISSING_FIELD_MESSAGE_FORMAT = "Route's %s field is missing!"; + + @XmlElement(required = true) + private String source; + @XmlElement(required = true) + private String destination; + @XmlElement + private XmlAdaptedOrder order; + @XmlElement(required = true) + private XmlAdaptedDeliveryman deliveryman; + + /** + * Constructs an XmlAdaptedRoute. + * This is the no-arg constructor that is required by JAXB. + */ + public XmlAdaptedRoute() {} + + /** + * Constructs an {@code XmlAdaptedRoute} with the given route details. + */ + public XmlAdaptedRoute(String source, String destination, XmlAdaptedOrder order, XmlAdaptedDeliveryman deliveryman) { + this.source = source; + this.destination = destination; + this.order = order; + this.deliveryman = deliveryman; + } + + /** + * Converts a given Route into this class for JAXB use. + * + * @param route future changes to this will not affect the created XmlAdaptedRoute + */ + public XmlAdaptedRoute(Route route) { + source = route.getSource().value; + destination = route.getDestination().value; + order = new XmlAdaptedOrder(route.getOrder()); + deliveryman = new XmlAdaptedDeliveryman(route.getDeliveryman()); + } + + /** + * Converts this jaxb-friendly adapted person object into the model's Route object. + * + * @throws IllegalValueException if there were any data constraints violated in the adapted route + */ + public Route toModelType() throws IllegalValueException { + if (source == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName())); + } + if (!Address.isValidAddress(source)) { + throw new IllegalValueException(Address.MESSAGE_ADDRESS_CONSTRAINTS); + } + final Address modelSource = new Address(source); + + if (destination == null) { + throw new IllegalValueException(String.format(MISSING_FIELD_MESSAGE_FORMAT, Address.class.getSimpleName())); + } + if (!Address.isValidAddress(destination)) { + throw new IllegalValueException(Address.MESSAGE_ADDRESS_CONSTRAINTS); + } + final Address modelDestination = new Address(destination); + + final Order modelOrder = order.toModelType(); + + final Deliveryman modelDeliveryman = deliveryman.toModelType(); + + return new Route(modelSource, modelDeliveryman, modelOrder); + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof XmlAdaptedRoute)) { + return false; + } + + XmlAdaptedRoute otherRoute = (XmlAdaptedRoute) other; + return Objects.equals(source, otherRoute.source) + && Objects.equals(destination, otherRoute.destination) + && deliveryman.equals(otherRoute.deliveryman) + && order.equals(otherRoute.order); + } +} diff --git a/src/main/java/seedu/address/storage/route/XmlRouteListStorage.java b/src/main/java/seedu/address/storage/route/XmlRouteListStorage.java new file mode 100644 index 000000000000..6ec14b325347 --- /dev/null +++ b/src/main/java/seedu/address/storage/route/XmlRouteListStorage.java @@ -0,0 +1,81 @@ +package seedu.address.storage.route; + +import static java.util.Objects.requireNonNull; + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.Optional; +import java.util.logging.Logger; + +import seedu.address.commons.core.LogsCenter; +import seedu.address.commons.exceptions.DataConversionException; +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.commons.util.FileUtil; +import seedu.address.model.route.ReadOnlyRouteList; +import seedu.address.storage.XmlFileStorage; + +/** + * A class to access RouteList data stored as an xml file on the hard disk. + */ +public class XmlRouteListStorage implements RouteListStorage { + + private static final Logger logger = LogsCenter.getLogger(XmlRouteListStorage.class); + + private Path filePath; + + public XmlRouteListStorage(Path filePath) { + this.filePath = filePath; + } + + public Path getRouteListFilePath() { + return filePath; + } + + @Override + public Optional readRouteList() throws DataConversionException, IOException { + return readRouteList(filePath); + } + + /** + * Similar to {@link #readRouteList()} + * @param filePath location of the data. Cannot be null + * @throws DataConversionException if the file is not in the correct format. + */ + public Optional readRouteList(Path filePath) throws DataConversionException, + FileNotFoundException { + requireNonNull(filePath); + + if (!Files.exists(filePath)) { + logger.info("RouteList file " + filePath + " not found"); + return Optional.empty(); + } + + XmlSerializableRouteList xmlRouteList = XmlFileStorage.loadRouteDataFromSaveFile(filePath); + try { + return Optional.of(xmlRouteList.toModelType()); + } catch (IllegalValueException ive) { + logger.info("Illegal values found in " + filePath + ": " + ive.getMessage()); + throw new DataConversionException(ive); + } + } + + @Override + public void saveRouteList(ReadOnlyRouteList addressBook) throws IOException { + saveRouteList(addressBook, filePath); + } + + /** + * Similar to {@link #saveRouteList(ReadOnlyRouteList)} + * @param filePath location of the data. Cannot be null + */ + public void saveRouteList(ReadOnlyRouteList routeList, Path filePath) throws IOException { + requireNonNull(routeList); + requireNonNull(filePath); + + FileUtil.createIfMissing(filePath); + XmlFileStorage.saveRouteDataToFile(filePath, new XmlSerializableRouteList(routeList)); + } + +} diff --git a/src/main/java/seedu/address/storage/route/XmlSerializableRouteList.java b/src/main/java/seedu/address/storage/route/XmlSerializableRouteList.java new file mode 100644 index 000000000000..8b2c60a03853 --- /dev/null +++ b/src/main/java/seedu/address/storage/route/XmlSerializableRouteList.java @@ -0,0 +1,72 @@ +package seedu.address.storage.route; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.model.route.Route; +import seedu.address.model.route.RouteList; +import seedu.address.model.route.ReadOnlyRouteList; + +/** + * An Immutable RouteList that is serializable to XML format + */ +@XmlRootElement(name = "routelist") +public class XmlSerializableRouteList { + + public static final String MESSAGE_DUPLICATE_ROUTE = "Route list contains duplicate route(s)."; + + @XmlElement + private List routes; + + /** + * Creates an empty XmlSerializableRouteList. + * This empty constructor is required for marshalling. + */ + public XmlSerializableRouteList() { + routes = new ArrayList<>(); + } + + /** + * Conversion + */ + public XmlSerializableRouteList(ReadOnlyRouteList src) { + this(); + routes.addAll(src.getRouteList().stream().map(XmlAdaptedRoute::new).collect(Collectors.toList())); + } + + /** + * Converts this route list into the model's {@code RouteList} object. + * + * @throws IllegalValueException if there were any data constraints violated or duplicates in the + * {@code XmlAdaptedPerson}. + */ + public RouteList toModelType() throws IllegalValueException { + RouteList routeList = new RouteList(); + for (XmlAdaptedRoute r : routes) { + Route route = r.toModelType(); + if (routeList.hasRoute(route)) { + throw new IllegalValueException(MESSAGE_DUPLICATE_ROUTE); + } + routeList.addRoute(route); + } + return routeList; + } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof XmlSerializableRouteList)) { + return false; + } + return routes.equals(((XmlSerializableRouteList) other).routes); + } +} + From 275bac4b6c725345684c520e918e062f21307351 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Tue, 2 Oct 2018 07:28:30 +0800 Subject: [PATCH 136/739] Update Views and switch Main App to call OrderBook --- src/main/java/seedu/address/MainApp.java | 49 ++++++++----------- .../seedu/address/commons/core/Messages.java | 2 +- .../events/model/OrderBookChangedEvent.java | 19 +++++++ .../ui/OrderPanelSelectionChangedEvent.java | 26 ++++++++++ .../address/model/util/SampleDataUtil.java | 2 +- .../java/seedu/address/ui/MainWindow.java | 2 +- .../java/seedu/address/ui/OrderListPanel.java | 3 +- 7 files changed, 70 insertions(+), 33 deletions(-) create mode 100644 src/main/java/seedu/address/commons/events/model/OrderBookChangedEvent.java create mode 100644 src/main/java/seedu/address/commons/events/ui/OrderPanelSelectionChangedEvent.java diff --git a/src/main/java/seedu/address/MainApp.java b/src/main/java/seedu/address/MainApp.java index ecdd043a4f81..165008dcfcdb 100644 --- a/src/main/java/seedu/address/MainApp.java +++ b/src/main/java/seedu/address/MainApp.java @@ -20,18 +20,9 @@ import seedu.address.commons.util.StringUtil; import seedu.address.logic.Logic; import seedu.address.logic.LogicManager; -import seedu.address.model.AddressBook; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.UserPrefs; +import seedu.address.model.*; import seedu.address.model.util.SampleDataUtil; -import seedu.address.storage.AddressBookStorage; -import seedu.address.storage.JsonUserPrefsStorage; -import seedu.address.storage.Storage; -import seedu.address.storage.StorageManager; -import seedu.address.storage.UserPrefsStorage; -import seedu.address.storage.XmlAddressBookStorage; +import seedu.address.storage.*; import seedu.address.ui.Ui; import seedu.address.ui.UiManager; @@ -54,7 +45,7 @@ public class MainApp extends Application { @Override public void init() throws Exception { - logger.info("=============================[ Initializing AddressBook ]==========================="); + logger.info("=============================[ Initializing OrderBook ]==========================="); super.init(); AppParameters appParameters = AppParameters.parse(getParameters()); @@ -62,8 +53,8 @@ public void init() throws Exception { UserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(config.getUserPrefsFilePath()); userPrefs = initPrefs(userPrefsStorage); - AddressBookStorage addressBookStorage = new XmlAddressBookStorage(userPrefs.getAddressBookFilePath()); - storage = new StorageManager(addressBookStorage, userPrefsStorage); + OrderBookStorage orderBookStorage = new XmlOrderBookStorage(userPrefs.getAddressBookFilePath()); + storage = new StorageManager(orderBookStorage, userPrefsStorage); initLogging(config); @@ -77,25 +68,25 @@ public void init() throws Exception { } /** - * Returns a {@code ModelManager} with the data from {@code storage}'s address book and {@code userPrefs}.
- * The data from the sample address book will be used instead if {@code storage}'s address book is not found, - * or an empty address book will be used instead if errors occur when reading {@code storage}'s address book. + * Returns a {@code ModelManager} with the data from {@code storage}'s order book and {@code userPrefs}.
+ * The data from the sample order book will be used instead if {@code storage}'s order book is not found, + * or an empty order book will be used instead if errors occur when reading {@code storage}'s order book. */ private Model initModelManager(Storage storage, UserPrefs userPrefs) { - Optional addressBookOptional; - ReadOnlyAddressBook initialData; + Optional orderBookOptional; + ReadOnlyOrderBook initialData; try { - addressBookOptional = storage.readAddressBook(); - if (!addressBookOptional.isPresent()) { - logger.info("Data file not found. Will be starting with a sample AddressBook"); + orderBookOptional = storage.readOrderBook(); + if (!orderBookOptional.isPresent()) { + logger.info("Data file not found. Will be starting with a sample OrderBook"); } - initialData = addressBookOptional.orElseGet(SampleDataUtil::getSampleAddressBook); + initialData = orderBookOptional.orElseGet(SampleDataUtil::getSampleOrderBook); } catch (DataConversionException e) { - logger.warning("Data file not in the correct format. Will be starting with an empty AddressBook"); - initialData = new AddressBook(); + logger.warning("Data file not in the correct format. Will be starting with an empty OrderBook"); + initialData = new OrderBook(); } catch (IOException e) { - logger.warning("Problem while reading from the file. Will be starting with an empty AddressBook"); - initialData = new AddressBook(); + logger.warning("Problem while reading from the file. Will be starting with an empty OrderBook"); + initialData = new OrderBook(); } return new ModelManager(initialData, userPrefs); @@ -159,7 +150,7 @@ protected UserPrefs initPrefs(UserPrefsStorage storage) { + "Using default user prefs"); initializedPrefs = new UserPrefs(); } catch (IOException e) { - logger.warning("Problem while reading from the file. Will be starting with an empty AddressBook"); + logger.warning("Problem while reading from the file. Will be starting with an empty OrderBook"); initializedPrefs = new UserPrefs(); } @@ -179,7 +170,7 @@ private void initEventsCenter() { @Override public void start(Stage primaryStage) { - logger.info("Starting AddressBook " + MainApp.VERSION); + logger.info("Starting OrderBook " + MainApp.VERSION); ui.start(primaryStage); } diff --git a/src/main/java/seedu/address/commons/core/Messages.java b/src/main/java/seedu/address/commons/core/Messages.java index 1deb3a1e4695..9813744545a0 100644 --- a/src/main/java/seedu/address/commons/core/Messages.java +++ b/src/main/java/seedu/address/commons/core/Messages.java @@ -7,7 +7,7 @@ public class Messages { public static final String MESSAGE_UNKNOWN_COMMAND = "Unknown command"; public static final String MESSAGE_INVALID_COMMAND_FORMAT = "Invalid command format! \n%1$s"; - public static final String MESSAGE_INVALID_PERSON_DISPLAYED_INDEX = "The person index provided is invalid"; + public static final String MESSAGE_INVALID_ORDER_DISPLAYED_INDEX = "The order index provided is invalid"; public static final String MESSAGE_PERSONS_LISTED_OVERVIEW = "%1$d persons listed!"; } diff --git a/src/main/java/seedu/address/commons/events/model/OrderBookChangedEvent.java b/src/main/java/seedu/address/commons/events/model/OrderBookChangedEvent.java new file mode 100644 index 000000000000..7d0dab6e27e7 --- /dev/null +++ b/src/main/java/seedu/address/commons/events/model/OrderBookChangedEvent.java @@ -0,0 +1,19 @@ +package seedu.address.commons.events.model; + +import seedu.address.commons.events.BaseEvent; +import seedu.address.model.ReadOnlyOrderBook; + +/** Indicates the OrderBook in the model has changed*/ +public class OrderBookChangedEvent extends BaseEvent { + + public final ReadOnlyOrderBook data; + + public OrderBookChangedEvent(ReadOnlyOrderBook data) { + this.data = data; + } + + @Override + public String toString() { + return "number of orders " + data.getOrderList().size(); + } +} diff --git a/src/main/java/seedu/address/commons/events/ui/OrderPanelSelectionChangedEvent.java b/src/main/java/seedu/address/commons/events/ui/OrderPanelSelectionChangedEvent.java new file mode 100644 index 000000000000..632aea7cec22 --- /dev/null +++ b/src/main/java/seedu/address/commons/events/ui/OrderPanelSelectionChangedEvent.java @@ -0,0 +1,26 @@ +package seedu.address.commons.events.ui; + +import seedu.address.commons.events.BaseEvent; +import seedu.address.model.order.Order; + +/** + * Represents a selection change in the Person List Panel + */ +public class OrderPanelSelectionChangedEvent extends BaseEvent { + + + private final Order newSelection; + + public OrderPanelSelectionChangedEvent(Order newSelection) { + this.newSelection = newSelection; + } + + @Override + public String toString() { + return getClass().getSimpleName(); + } + + public Order getNewSelection() { + return newSelection; + } +} diff --git a/src/main/java/seedu/address/model/util/SampleDataUtil.java b/src/main/java/seedu/address/model/util/SampleDataUtil.java index f8a689d9e3b3..b00f80286018 100644 --- a/src/main/java/seedu/address/model/util/SampleDataUtil.java +++ b/src/main/java/seedu/address/model/util/SampleDataUtil.java @@ -24,7 +24,7 @@ public static Order[] getSampleOrders() { getFoodSet("Ice Tea")), new Order(new Name("Bernice Yu"), new Phone("99272758"), new Address("Blk 30 Lorong 3 Serangoon Gardens, #07-18"), - getFoodSet("colleagues", "Chicken Rice")), + getFoodSet("Chicken Rice")), new Order(new Name("Charlotte Oliveiro"), new Phone("93210283"), new Address("Blk 11 Ang Mo Kio Street 74, #11-04"), getFoodSet("Nasi Goreng")), diff --git a/src/main/java/seedu/address/ui/MainWindow.java b/src/main/java/seedu/address/ui/MainWindow.java index b0cda0792f3f..633e7d103ab6 100644 --- a/src/main/java/seedu/address/ui/MainWindow.java +++ b/src/main/java/seedu/address/ui/MainWindow.java @@ -121,7 +121,7 @@ private void setAccelerator(MenuItem menuItem, KeyCombination keyCombination) { void fillInnerParts() { browserPanel = new BrowserPanel(); browserPlaceholder.getChildren().add(browserPanel.getRoot()); - + orderListPanel = new OrderListPanel(logic.getFilteredOrderList()); orderListPanelPlaceholder.getChildren().add(orderListPanel.getRoot()); diff --git a/src/main/java/seedu/address/ui/OrderListPanel.java b/src/main/java/seedu/address/ui/OrderListPanel.java index 7bbfe97cc7b8..5037a7b02a55 100644 --- a/src/main/java/seedu/address/ui/OrderListPanel.java +++ b/src/main/java/seedu/address/ui/OrderListPanel.java @@ -18,7 +18,7 @@ * Panel containing the list of orders. */ public class OrderListPanel extends UiPart { - private static final String FXML = "PersonListPanel.fxml"; + private static final String FXML = "OrderListPanel.fxml"; private final Logger logger = LogsCenter.getLogger(OrderListPanel.class); @FXML @@ -26,6 +26,7 @@ public class OrderListPanel extends UiPart { public OrderListPanel(ObservableList orderList) { super(FXML); + setConnections(orderList); registerAsAnEventHandler(this); } From 26fcbd9631f5ad4a57ae1512259762a904495ea2 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Tue, 2 Oct 2018 07:29:26 +0800 Subject: [PATCH 137/739] Change ID in views and add view for orders --- src/main/resources/view/MainWindow.fxml | 2 +- src/main/resources/view/OrderListCard.fxml | 35 +++++++++++++++++++++ src/main/resources/view/OrderListPanel.fxml | 8 +++++ 3 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 src/main/resources/view/OrderListCard.fxml create mode 100644 src/main/resources/view/OrderListPanel.fxml diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml index daf386d8f5b8..e4bff09f6e81 100644 --- a/src/main/resources/view/MainWindow.fxml +++ b/src/main/resources/view/MainWindow.fxml @@ -51,7 +51,7 @@ - + diff --git a/src/main/resources/view/OrderListCard.fxml b/src/main/resources/view/OrderListCard.fxml new file mode 100644 index 000000000000..8a6ef80f98b8 --- /dev/null +++ b/src/main/resources/view/OrderListCard.fxml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/resources/view/OrderListPanel.fxml b/src/main/resources/view/OrderListPanel.fxml new file mode 100644 index 000000000000..20ce44b33e69 --- /dev/null +++ b/src/main/resources/view/OrderListPanel.fxml @@ -0,0 +1,8 @@ + + + + + + + + From cd820e42d0e1257c8367bd08cab91cb236d54a19 Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Tue, 2 Oct 2018 08:19:10 +0800 Subject: [PATCH 138/739] Add tests for new Model (with orders) --- .../order/NameContainsKeywordsPredicate.java | 32 ++ .../seedu/address/model/AddressBookTest.java | 110 ------- .../seedu/address/model/ModelManagerTest.java | 46 +-- .../seedu/address/model/OrderBookTest.java | 110 +++++++ .../model/VersionedAddressBookTest.java | 298 ------------------ .../address/model/VersionedOrderBookTest.java | 298 ++++++++++++++++++ .../address/testutil/OrderBookBuilder.java | 34 ++ 7 files changed, 497 insertions(+), 431 deletions(-) create mode 100644 src/main/java/seedu/address/model/order/NameContainsKeywordsPredicate.java delete mode 100644 src/test/java/seedu/address/model/AddressBookTest.java create mode 100644 src/test/java/seedu/address/model/OrderBookTest.java delete mode 100644 src/test/java/seedu/address/model/VersionedAddressBookTest.java create mode 100644 src/test/java/seedu/address/model/VersionedOrderBookTest.java create mode 100644 src/test/java/seedu/address/testutil/OrderBookBuilder.java diff --git a/src/main/java/seedu/address/model/order/NameContainsKeywordsPredicate.java b/src/main/java/seedu/address/model/order/NameContainsKeywordsPredicate.java new file mode 100644 index 000000000000..12edbf533042 --- /dev/null +++ b/src/main/java/seedu/address/model/order/NameContainsKeywordsPredicate.java @@ -0,0 +1,32 @@ +package seedu.address.model.order; + +import seedu.address.commons.util.StringUtil; +import seedu.address.model.order.Order; + +import java.util.List; +import java.util.function.Predicate; + +/** + * Tests that a {@code Order}'s {@code Name} matches any of the keywords given. + */ +public class NameContainsKeywordsPredicate implements Predicate { + private final List keywords; + + public NameContainsKeywordsPredicate(List keywords) { + this.keywords = keywords; + } + + @Override + public boolean test(Order order) { + return keywords.stream() + .anyMatch(keyword -> StringUtil.containsWordIgnoreCase(order.getName().fullName, keyword)); + } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof NameContainsKeywordsPredicate // instanceof handles nulls + && keywords.equals(((NameContainsKeywordsPredicate) other).keywords)); // state check + } + +} diff --git a/src/test/java/seedu/address/model/AddressBookTest.java b/src/test/java/seedu/address/model/AddressBookTest.java deleted file mode 100644 index 0d33cff49ab1..000000000000 --- a/src/test/java/seedu/address/model/AddressBookTest.java +++ /dev/null @@ -1,110 +0,0 @@ -package seedu.address.model; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; -import static seedu.address.testutil.TypicalPersons.ALICE; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import javafx.collections.FXCollections; -import javafx.collections.ObservableList; -import seedu.address.model.person.Person; -import seedu.address.model.person.exceptions.DuplicatePersonException; -import seedu.address.testutil.PersonBuilder; - -public class AddressBookTest { - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - private final AddressBook addressBook = new AddressBook(); - - @Test - public void constructor() { - assertEquals(Collections.emptyList(), addressBook.getPersonList()); - } - - @Test - public void resetData_null_throwsNullPointerException() { - thrown.expect(NullPointerException.class); - addressBook.resetData(null); - } - - @Test - public void resetData_withValidReadOnlyAddressBook_replacesData() { - AddressBook newData = getTypicalAddressBook(); - addressBook.resetData(newData); - assertEquals(newData, addressBook); - } - - @Test - public void resetData_withDuplicatePersons_throwsDuplicatePersonException() { - // Two persons with the same identity fields - Person editedAlice = new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND) - .build(); - List newPersons = Arrays.asList(ALICE, editedAlice); - AddressBookStub newData = new AddressBookStub(newPersons); - - thrown.expect(DuplicatePersonException.class); - addressBook.resetData(newData); - } - - @Test - public void hasPerson_nullPerson_throwsNullPointerException() { - thrown.expect(NullPointerException.class); - addressBook.hasPerson(null); - } - - @Test - public void hasPerson_personNotInAddressBook_returnsFalse() { - assertFalse(addressBook.hasPerson(ALICE)); - } - - @Test - public void hasPerson_personInAddressBook_returnsTrue() { - addressBook.addPerson(ALICE); - assertTrue(addressBook.hasPerson(ALICE)); - } - - @Test - public void hasPerson_personWithSameIdentityFieldsInAddressBook_returnsTrue() { - addressBook.addPerson(ALICE); - Person editedAlice = new PersonBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND) - .build(); - assertTrue(addressBook.hasPerson(editedAlice)); - } - - @Test - public void getPersonList_modifyList_throwsUnsupportedOperationException() { - thrown.expect(UnsupportedOperationException.class); - addressBook.getPersonList().remove(0); - } - - /** - * A stub ReadOnlyAddressBook whose persons list can violate interface constraints. - */ - private static class AddressBookStub implements ReadOnlyAddressBook { - private final ObservableList persons = FXCollections.observableArrayList(); - - AddressBookStub(Collection persons) { - this.persons.setAll(persons); - } - - @Override - public ObservableList getPersonList() { - return persons; - } - } - -} diff --git a/src/test/java/seedu/address/model/ModelManagerTest.java b/src/test/java/seedu/address/model/ModelManagerTest.java index 7eab39d5de43..e4086ccb4b9f 100644 --- a/src/test/java/seedu/address/model/ModelManagerTest.java +++ b/src/test/java/seedu/address/model/ModelManagerTest.java @@ -2,9 +2,9 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import static seedu.address.model.Model.PREDICATE_SHOW_ALL_PERSONS; -import static seedu.address.testutil.TypicalPersons.ALICE; -import static seedu.address.testutil.TypicalPersons.BENSON; +import static seedu.address.model.Model.PREDICATE_SHOW_ALL_ORDERS; +import static seedu.address.testutil.TypicalOrders.ALICE; +import static seedu.address.testutil.TypicalOrders.BENSON; import java.nio.file.Paths; import java.util.Arrays; @@ -13,8 +13,8 @@ import org.junit.Test; import org.junit.rules.ExpectedException; -import seedu.address.model.person.NameContainsKeywordsPredicate; -import seedu.address.testutil.AddressBookBuilder; +import seedu.address.model.order.NameContainsKeywordsPredicate; +import seedu.address.testutil.OrderBookBuilder; public class ModelManagerTest { @Rule @@ -23,37 +23,37 @@ public class ModelManagerTest { private ModelManager modelManager = new ModelManager(); @Test - public void hasPerson_nullPerson_throwsNullPointerException() { + public void hasOrder_nullOrder_throwsNullPointerException() { thrown.expect(NullPointerException.class); - modelManager.hasPerson(null); + modelManager.hasOrder(null); } @Test - public void hasPerson_personNotInAddressBook_returnsFalse() { - assertFalse(modelManager.hasPerson(ALICE)); + public void hasOrder_orderNotInOrderBook_returnsFalse() { + assertFalse(modelManager.hasOrder(ALICE)); } @Test - public void hasPerson_personInAddressBook_returnsTrue() { - modelManager.addPerson(ALICE); - assertTrue(modelManager.hasPerson(ALICE)); + public void hasOrder_orderInOrderBook_returnsTrue() { + modelManager.addOrder(ALICE); + assertTrue(modelManager.hasOrder(ALICE)); } @Test - public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() { + public void getFilteredOrderList_modifyList_throwsUnsupportedOperationException() { thrown.expect(UnsupportedOperationException.class); - modelManager.getFilteredPersonList().remove(0); + modelManager.getFilteredOrderList().remove(0); } @Test public void equals() { - AddressBook addressBook = new AddressBookBuilder().withPerson(ALICE).withPerson(BENSON).build(); - AddressBook differentAddressBook = new AddressBook(); + OrderBook orderBook = new OrderBookBuilder().withOrder(ALICE).withOrder(BENSON).build(); + OrderBook differentOrderBook = new OrderBook(); UserPrefs userPrefs = new UserPrefs(); // same values -> returns true - modelManager = new ModelManager(addressBook, userPrefs); - ModelManager modelManagerCopy = new ModelManager(addressBook, userPrefs); + modelManager = new ModelManager(orderBook, userPrefs); + ModelManager modelManagerCopy = new ModelManager(orderBook, userPrefs); assertTrue(modelManager.equals(modelManagerCopy)); // same object -> returns true @@ -66,19 +66,19 @@ public void equals() { assertFalse(modelManager.equals(5)); // different addressBook -> returns false - assertFalse(modelManager.equals(new ModelManager(differentAddressBook, userPrefs))); + assertFalse(modelManager.equals(new ModelManager(differentOrderBook, userPrefs))); // different filteredList -> returns false String[] keywords = ALICE.getName().fullName.split("\\s+"); - modelManager.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(keywords))); - assertFalse(modelManager.equals(new ModelManager(addressBook, userPrefs))); + modelManager.updateFilteredOrderList(new NameContainsKeywordsPredicate(Arrays.asList(keywords))); + assertFalse(modelManager.equals(new ModelManager(orderBook, userPrefs))); // resets modelManager to initial state for upcoming tests - modelManager.updateFilteredPersonList(PREDICATE_SHOW_ALL_PERSONS); + modelManager.updateFilteredOrderList(PREDICATE_SHOW_ALL_ORDERS); // different userPrefs -> returns true UserPrefs differentUserPrefs = new UserPrefs(); differentUserPrefs.setAddressBookFilePath(Paths.get("differentFilePath")); - assertTrue(modelManager.equals(new ModelManager(addressBook, differentUserPrefs))); + assertTrue(modelManager.equals(new ModelManager(orderBook, differentUserPrefs))); } } diff --git a/src/test/java/seedu/address/model/OrderBookTest.java b/src/test/java/seedu/address/model/OrderBookTest.java new file mode 100644 index 000000000000..03999e488672 --- /dev/null +++ b/src/test/java/seedu/address/model/OrderBookTest.java @@ -0,0 +1,110 @@ +package seedu.address.model; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; +import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_BURGER; +import static seedu.address.testutil.TypicalOrders.ALICE; +import static seedu.address.testutil.TypicalOrders.getTypicalOrderBook; + +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import seedu.address.model.order.Order; +import seedu.address.model.order.exceptions.DuplicateOrderException; +import seedu.address.testutil.OrderBuilder; + +public class OrderBookTest { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + private final OrderBook orderBook = new OrderBook(); + + @Test + public void constructor() { + assertEquals(Collections.emptyList(), orderBook.getOrderList()); + } + + @Test + public void resetData_null_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + orderBook.resetData(null); + } + + @Test + public void resetData_withValidReadOnlyOrderBook_replacesData() { + OrderBook newData = getTypicalOrderBook(); + orderBook.resetData(newData); + assertEquals(newData, orderBook); + } + + @Test + public void resetData_withDuplicatePersons_throwsDuplicatePersonException() { + // Two persons with the same identity fields + Order editedAlice = new OrderBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withFood(VALID_FOOD_BURGER) + .build(); + List newOrders = Arrays.asList(ALICE, editedAlice); + OrderBookStub newData = new OrderBookStub(newOrders); + + thrown.expect(DuplicateOrderException.class); + orderBook.resetData(newData); + } + + @Test + public void hasOrder_nullOrder_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + orderBook.hasOrder(null); + } + + @Test + public void hasOrder_orderNotInOrderBook_returnsFalse() { + assertFalse(orderBook.hasOrder(ALICE)); + } + + @Test + public void hasOrder_orderInOrderBook_returnsTrue() { + orderBook.addOrder(ALICE); + assertTrue(orderBook.hasPerson(ALICE)); + } + + @Test + public void hasOrder_orderWithSameIdentityFieldsInOrderBook_returnsTrue() { + orderBook.addOrder(ALICE); + Order editedAlice = new OrderBuilder(ALICE).withAddress(VALID_ADDRESS_BOB).withFood(VALID_FOOD_BURGER) + .build(); + assertTrue(orderBook.hasOrder(editedAlice)); + } + + @Test + public void getOrderList_modifyList_throwsUnsupportedOperationException() { + thrown.expect(UnsupportedOperationException.class); + orderBook.getOrderList().remove(0); + } + + /** + * A stub ReadOnlyOrderBook whose orders list can violate interface constraints. + */ + private static class OrderBookStub implements ReadOnlyOrderBook { + private final ObservableList orders = FXCollections.observableArrayList(); + + OrderBookStub(Collection order) { + this.orders.setAll(order); + } + + @Override + public ObservableList getOrderList() { + return orders; + } + } + +} diff --git a/src/test/java/seedu/address/model/VersionedAddressBookTest.java b/src/test/java/seedu/address/model/VersionedAddressBookTest.java deleted file mode 100644 index d5a31a48e53f..000000000000 --- a/src/test/java/seedu/address/model/VersionedAddressBookTest.java +++ /dev/null @@ -1,298 +0,0 @@ -package seedu.address.model; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static seedu.address.testutil.TypicalPersons.AMY; -import static seedu.address.testutil.TypicalPersons.BOB; -import static seedu.address.testutil.TypicalPersons.CARL; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -import org.junit.Test; - -import seedu.address.testutil.AddressBookBuilder; - -public class VersionedAddressBookTest { - - private final ReadOnlyAddressBook addressBookWithAmy = new AddressBookBuilder().withPerson(AMY).build(); - private final ReadOnlyAddressBook addressBookWithBob = new AddressBookBuilder().withPerson(BOB).build(); - private final ReadOnlyAddressBook addressBookWithCarl = new AddressBookBuilder().withPerson(CARL).build(); - private final ReadOnlyAddressBook emptyAddressBook = new AddressBookBuilder().build(); - - @Test - public void commit_singleAddressBook_noStatesRemovedCurrentStateSaved() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList(emptyAddressBook); - - versionedAddressBook.commit(); - assertAddressBookListStatus(versionedAddressBook, - Collections.singletonList(emptyAddressBook), - emptyAddressBook, - Collections.emptyList()); - } - - @Test - public void commit_multipleAddressBookPointerAtEndOfStateList_noStatesRemovedCurrentStateSaved() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - - versionedAddressBook.commit(); - assertAddressBookListStatus(versionedAddressBook, - Arrays.asList(emptyAddressBook, addressBookWithAmy, addressBookWithBob), - addressBookWithBob, - Collections.emptyList()); - } - - @Test - public void commit_multipleAddressBookPointerNotAtEndOfStateList_statesAfterPointerRemovedCurrentStateSaved() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - shiftCurrentStatePointerLeftwards(versionedAddressBook, 2); - - versionedAddressBook.commit(); - assertAddressBookListStatus(versionedAddressBook, - Collections.singletonList(emptyAddressBook), - emptyAddressBook, - Collections.emptyList()); - } - - @Test - public void canUndo_multipleAddressBookPointerAtEndOfStateList_returnsTrue() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - - assertTrue(versionedAddressBook.canUndo()); - } - - @Test - public void canUndo_multipleAddressBookPointerAtStartOfStateList_returnsTrue() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - shiftCurrentStatePointerLeftwards(versionedAddressBook, 1); - - assertTrue(versionedAddressBook.canUndo()); - } - - @Test - public void canUndo_singleAddressBook_returnsFalse() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList(emptyAddressBook); - - assertFalse(versionedAddressBook.canUndo()); - } - - @Test - public void canUndo_multipleAddressBookPointerAtStartOfStateList_returnsFalse() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - shiftCurrentStatePointerLeftwards(versionedAddressBook, 2); - - assertFalse(versionedAddressBook.canUndo()); - } - - @Test - public void canRedo_multipleAddressBookPointerNotAtEndOfStateList_returnsTrue() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - shiftCurrentStatePointerLeftwards(versionedAddressBook, 1); - - assertTrue(versionedAddressBook.canRedo()); - } - - @Test - public void canRedo_multipleAddressBookPointerAtStartOfStateList_returnsTrue() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - shiftCurrentStatePointerLeftwards(versionedAddressBook, 2); - - assertTrue(versionedAddressBook.canRedo()); - } - - @Test - public void canRedo_singleAddressBook_returnsFalse() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList(emptyAddressBook); - - assertFalse(versionedAddressBook.canRedo()); - } - - @Test - public void canRedo_multipleAddressBookPointerAtEndOfStateList_returnsFalse() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - - assertFalse(versionedAddressBook.canRedo()); - } - - @Test - public void undo_multipleAddressBookPointerAtEndOfStateList_success() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - - versionedAddressBook.undo(); - assertAddressBookListStatus(versionedAddressBook, - Collections.singletonList(emptyAddressBook), - addressBookWithAmy, - Collections.singletonList(addressBookWithBob)); - } - - @Test - public void undo_multipleAddressBookPointerNotAtStartOfStateList_success() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - shiftCurrentStatePointerLeftwards(versionedAddressBook, 1); - - versionedAddressBook.undo(); - assertAddressBookListStatus(versionedAddressBook, - Collections.emptyList(), - emptyAddressBook, - Arrays.asList(addressBookWithAmy, addressBookWithBob)); - } - - @Test - public void undo_singleAddressBook_throwsNoUndoableStateException() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList(emptyAddressBook); - - assertThrows(VersionedAddressBook.NoUndoableStateException.class, versionedAddressBook::undo); - } - - @Test - public void undo_multipleAddressBookPointerAtStartOfStateList_throwsNoUndoableStateException() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - shiftCurrentStatePointerLeftwards(versionedAddressBook, 2); - - assertThrows(VersionedAddressBook.NoUndoableStateException.class, versionedAddressBook::undo); - } - - @Test - public void redo_multipleAddressBookPointerNotAtEndOfStateList_success() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - shiftCurrentStatePointerLeftwards(versionedAddressBook, 1); - - versionedAddressBook.redo(); - assertAddressBookListStatus(versionedAddressBook, - Arrays.asList(emptyAddressBook, addressBookWithAmy), - addressBookWithBob, - Collections.emptyList()); - } - - @Test - public void redo_multipleAddressBookPointerAtStartOfStateList_success() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - shiftCurrentStatePointerLeftwards(versionedAddressBook, 2); - - versionedAddressBook.redo(); - assertAddressBookListStatus(versionedAddressBook, - Collections.singletonList(emptyAddressBook), - addressBookWithAmy, - Collections.singletonList(addressBookWithBob)); - } - - @Test - public void redo_singleAddressBook_throwsNoRedoableStateException() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList(emptyAddressBook); - - assertThrows(VersionedAddressBook.NoRedoableStateException.class, versionedAddressBook::redo); - } - - @Test - public void redo_multipleAddressBookPointerAtEndOfStateList_throwsNoRedoableStateException() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList( - emptyAddressBook, addressBookWithAmy, addressBookWithBob); - - assertThrows(VersionedAddressBook.NoRedoableStateException.class, versionedAddressBook::redo); - } - - @Test - public void equals() { - VersionedAddressBook versionedAddressBook = prepareAddressBookList(addressBookWithAmy, addressBookWithBob); - - // same values -> returns true - VersionedAddressBook copy = prepareAddressBookList(addressBookWithAmy, addressBookWithBob); - assertTrue(versionedAddressBook.equals(copy)); - - // same object -> returns true - assertTrue(versionedAddressBook.equals(versionedAddressBook)); - - // null -> returns false - assertFalse(versionedAddressBook.equals(null)); - - // different types -> returns false - assertFalse(versionedAddressBook.equals(1)); - - // different state list -> returns false - VersionedAddressBook differentAddressBookList = prepareAddressBookList(addressBookWithBob, addressBookWithCarl); - assertFalse(versionedAddressBook.equals(differentAddressBookList)); - - // different current pointer index -> returns false - VersionedAddressBook differentCurrentStatePointer = prepareAddressBookList( - addressBookWithAmy, addressBookWithBob); - shiftCurrentStatePointerLeftwards(versionedAddressBook, 1); - assertFalse(versionedAddressBook.equals(differentCurrentStatePointer)); - } - - /** - * Asserts that {@code versionedAddressBook} is currently pointing at {@code expectedCurrentState}, - * states before {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesBeforePointer}, - * and states after {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesAfterPointer}. - */ - private void assertAddressBookListStatus(VersionedAddressBook versionedAddressBook, - List expectedStatesBeforePointer, - ReadOnlyAddressBook expectedCurrentState, - List expectedStatesAfterPointer) { - // check state currently pointing at is correct - assertEquals(new AddressBook(versionedAddressBook), expectedCurrentState); - - // shift pointer to start of state list - while (versionedAddressBook.canUndo()) { - versionedAddressBook.undo(); - } - - // check states before pointer are correct - for (ReadOnlyAddressBook expectedAddressBook : expectedStatesBeforePointer) { - assertEquals(expectedAddressBook, new AddressBook(versionedAddressBook)); - versionedAddressBook.redo(); - } - - // check states after pointer are correct - for (ReadOnlyAddressBook expectedAddressBook : expectedStatesAfterPointer) { - versionedAddressBook.redo(); - assertEquals(expectedAddressBook, new AddressBook(versionedAddressBook)); - } - - // check that there are no more states after pointer - assertFalse(versionedAddressBook.canRedo()); - - // revert pointer to original position - expectedStatesAfterPointer.forEach(unused -> versionedAddressBook.undo()); - } - - /** - * Creates and returns a {@code VersionedAddressBook} with the {@code addressBookStates} added into it, and the - * {@code VersionedAddressBook#currentStatePointer} at the end of list. - */ - private VersionedAddressBook prepareAddressBookList(ReadOnlyAddressBook... addressBookStates) { - assertFalse(addressBookStates.length == 0); - - VersionedAddressBook versionedAddressBook = new VersionedAddressBook(addressBookStates[0]); - for (int i = 1; i < addressBookStates.length; i++) { - versionedAddressBook.resetData(addressBookStates[i]); - versionedAddressBook.commit(); - } - - return versionedAddressBook; - } - - /** - * Shifts the {@code versionedAddressBook#currentStatePointer} by {@code count} to the left of its list. - */ - private void shiftCurrentStatePointerLeftwards(VersionedAddressBook versionedAddressBook, int count) { - for (int i = 0; i < count; i++) { - versionedAddressBook.undo(); - } - } -} diff --git a/src/test/java/seedu/address/model/VersionedOrderBookTest.java b/src/test/java/seedu/address/model/VersionedOrderBookTest.java new file mode 100644 index 000000000000..82ddc4673a97 --- /dev/null +++ b/src/test/java/seedu/address/model/VersionedOrderBookTest.java @@ -0,0 +1,298 @@ +package seedu.address.model; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static seedu.address.testutil.TypicalOrders.ALICE; +import static seedu.address.testutil.TypicalOrders.BENSON; +import static seedu.address.testutil.TypicalOrders.CARL; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.Test; + +import seedu.address.testutil.OrderBookBuilder; + +public class VersionedOrderBookTest { + + private final ReadOnlyOrderBook orderBookWithAlice = new OrderBookBuilder().withOrder(ALICE).build(); + private final ReadOnlyOrderBook orderBookWithBob = new OrderBookBuilder().withOrder(BENSON).build(); + private final ReadOnlyOrderBook orderBookWithCarl = new OrderBookBuilder().withOrder(CARL).build(); + private final ReadOnlyOrderBook emptyOrderBook = new OrderBookBuilder().build(); + + @Test + public void commit_singleOrderBook_noStatesRemovedCurrentStateSaved() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList(emptyOrderBook); + + versionedOrderBook.commit(); + assertOrderBookListStatus(versionedOrderBook, + Collections.singletonList(emptyOrderBook), + emptyOrderBook, + Collections.emptyList()); + } + + @Test + public void commit_multipleOrderBookPointerAtEndOfStateList_noStatesRemovedCurrentStateSaved() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + + versionedOrderBook.commit(); + assertOrderBookListStatus(versionedOrderBook, + Arrays.asList(emptyOrderBook, orderBookWithAlice, orderBookWithBob), + orderBookWithBob, + Collections.emptyList()); + } + + @Test + public void commit_multipleOrderBookPointerNotAtEndOfStateList_statesAfterPointerRemovedCurrentStateSaved() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + shiftCurrentStatePointerLeftwards(versionedOrderBook, 2); + + versionedOrderBook.commit(); + assertOrderBookListStatus(versionedOrderBook, + Collections.singletonList(emptyOrderBook), + emptyOrderBook, + Collections.emptyList()); + } + + @Test + public void canUndo_multipleOrderBookPointerAtEndOfStateList_returnsTrue() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + + assertTrue(versionedOrderBook.canUndo()); + } + + @Test + public void canUndo_multipleOrderBookPointerAtStartOfStateList_returnsTrue() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + shiftCurrentStatePointerLeftwards(versionedOrderBook, 1); + + assertTrue(versionedOrderBook.canUndo()); + } + + @Test + public void canUndo_singleOrderBook_returnsFalse() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList(emptyOrderBook); + + assertFalse(versionedOrderBook.canUndo()); + } + + @Test + public void canUndo_multipleOrderBookPointerAtStartOfStateList_returnsFalse() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + shiftCurrentStatePointerLeftwards(versionedOrderBook, 2); + + assertFalse(versionedOrderBook.canUndo()); + } + + @Test + public void canRedo_multipleOrderBookPointerNotAtEndOfStateList_returnsTrue() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + shiftCurrentStatePointerLeftwards(versionedOrderBook, 1); + + assertTrue(versionedOrderBook.canRedo()); + } + + @Test + public void canRedo_multipleOrderBookPointerAtStartOfStateList_returnsTrue() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + shiftCurrentStatePointerLeftwards(versionedOrderBook, 2); + + assertTrue(versionedOrderBook.canRedo()); + } + + @Test + public void canRedo_singleOrderBook_returnsFalse() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList(emptyOrderBook); + + assertFalse(versionedOrderBook.canRedo()); + } + + @Test + public void canRedo_multipleOrderBookPointerAtEndOfStateList_returnsFalse() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + + assertFalse(versionedOrderBook.canRedo()); + } + + @Test + public void undo_multipleOrderBookPointerAtEndOfStateList_success() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + + versionedOrderBook.undo(); + assertOrderBookListStatus(versionedOrderBook, + Collections.singletonList(emptyOrderBook), + orderBookWithAlice, + Collections.singletonList(orderBookWithBob)); + } + + @Test + public void undo_multipleOrderBookPointerNotAtStartOfStateList_success() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + shiftCurrentStatePointerLeftwards(versionedOrderBook, 1); + + versionedOrderBook.undo(); + assertOrderBookListStatus(versionedOrderBook, + Collections.emptyList(), + emptyOrderBook, + Arrays.asList(orderBookWithAlice, orderBookWithBob)); + } + + @Test + public void undo_singleOrderBook_throwsNoUndoableStateException() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList(emptyOrderBook); + + assertThrows(VersionedOrderBook.NoUndoableStateException.class, versionedOrderBook::undo); + } + + @Test + public void undo_multipleOrderBookPointerAtStartOfStateList_throwsNoUndoableStateException() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + shiftCurrentStatePointerLeftwards(versionedOrderBook, 2); + + assertThrows(VersionedOrderBook.NoUndoableStateException.class, versionedOrderBook::undo); + } + + @Test + public void redo_multipleOrderBookPointerNotAtEndOfStateList_success() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + shiftCurrentStatePointerLeftwards(versionedOrderBook, 1); + + versionedOrderBook.redo(); + assertOrderBookListStatus(versionedOrderBook, + Arrays.asList(emptyOrderBook, orderBookWithAlice), + orderBookWithBob, + Collections.emptyList()); + } + + @Test + public void redo_multipleOrderBookPointerAtStartOfStateList_success() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + shiftCurrentStatePointerLeftwards(versionedOrderBook, 2); + + versionedOrderBook.redo(); + assertOrderBookListStatus(versionedOrderBook, + Collections.singletonList(emptyOrderBook), + orderBookWithAlice, + Collections.singletonList(orderBookWithBob)); + } + + @Test + public void redo_singleOrderBook_throwsNoRedoableStateException() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList(emptyOrderBook); + + assertThrows(VersionedOrderBook.NoRedoableStateException.class, versionedOrderBook::redo); + } + + @Test + public void redo_multipleOrderBookPointerAtEndOfStateList_throwsNoRedoableStateException() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList( + emptyOrderBook, orderBookWithAlice, orderBookWithBob); + + assertThrows(VersionedOrderBook.NoRedoableStateException.class, versionedOrderBook::redo); + } + + @Test + public void equals() { + VersionedOrderBook versionedOrderBook = prepareOrderBookList(orderBookWithAlice, orderBookWithBob); + + // same values -> returns true + VersionedOrderBook copy = prepareOrderBookList(orderBookWithAlice, orderBookWithBob); + assertTrue(versionedOrderBook.equals(copy)); + + // same object -> returns true + assertTrue(versionedOrderBook.equals(versionedOrderBook)); + + // null -> returns false + assertFalse(versionedOrderBook.equals(null)); + + // different types -> returns false + assertFalse(versionedOrderBook.equals(1)); + + // different state list -> returns false + VersionedOrderBook differentOrderBookList = prepareOrderBookList(orderBookWithBob, orderBookWithCarl); + assertFalse(versionedOrderBook.equals(differentOrderBookList)); + + // different current pointer index -> returns false + VersionedOrderBook differentCurrentStatePointer = prepareOrderBookList( + orderBookWithAlice, orderBookWithBob); + shiftCurrentStatePointerLeftwards(versionedOrderBook, 1); + assertFalse(versionedOrderBook.equals(differentCurrentStatePointer)); + } + + /** + * Asserts that {@code versionedOrderBook} is currently pointing at {@code expectedCurrentState}, + * states before {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesBeforePointer}, + * and states after {@code versionedAddressBook#currentStatePointer} is equal to {@code expectedStatesAfterPointer}. + */ + private void assertOrderBookListStatus(VersionedOrderBook versionedOrderBook, + List expectedStatesBeforePointer, + ReadOnlyOrderBook expectedCurrentState, + List expectedStatesAfterPointer) { + // check state currently pointing at is correct + assertEquals(new OrderBook(versionedOrderBook), expectedCurrentState); + + // shift pointer to start of state list + while (versionedOrderBook.canUndo()) { + versionedOrderBook.undo(); + } + + // check states before pointer are correct + for (ReadOnlyOrderBook expectedOrderBook : expectedStatesBeforePointer) { + assertEquals(expectedOrderBook, new OrderBook(versionedOrderBook)); + versionedOrderBook.redo(); + } + + // check states after pointer are correct + for (ReadOnlyOrderBook expectedOrderBook : expectedStatesAfterPointer) { + versionedOrderBook.redo(); + assertEquals(expectedOrderBook, new OrderBook(versionedOrderBook)); + } + + // check that there are no more states after pointer + assertFalse(versionedOrderBook.canRedo()); + + // revert pointer to original position + expectedStatesAfterPointer.forEach(unused -> versionedOrderBook.undo()); + } + + /** + * Creates and returns a {@code VersionedOrderBook} with the {@code orderBookStates} added into it, and the + * {@code VersionedOrderBook#currentStatePointer} at the end of list. + */ + private VersionedOrderBook prepareOrderBookList(ReadOnlyOrderBook... orderBookStates) { + assertFalse(orderBookStates.length == 0); + + VersionedOrderBook versionedOrderBook = new VersionedOrderBook(orderBookStates[0]); + for (int i = 1; i < orderBookStates.length; i++) { + versionedOrderBook.resetData(orderBookStates[i]); + versionedOrderBook.commit(); + } + + return versionedOrderBook; + } + + /** + * Shifts the {@code versionedOrderBook#currentStatePointer} by {@code count} to the left of its list. + */ + private void shiftCurrentStatePointerLeftwards(VersionedOrderBook versionedOrderBook, int count) { + for (int i = 0; i < count; i++) { + versionedOrderBook.undo(); + } + } +} diff --git a/src/test/java/seedu/address/testutil/OrderBookBuilder.java b/src/test/java/seedu/address/testutil/OrderBookBuilder.java new file mode 100644 index 000000000000..699a4590538a --- /dev/null +++ b/src/test/java/seedu/address/testutil/OrderBookBuilder.java @@ -0,0 +1,34 @@ +package seedu.address.testutil; + +import seedu.address.model.OrderBook; +import seedu.address.model.order.Order; + +/** + * A utility class to help with building Orderbook objects. + * Example usage:
+ * {@code OrderBook ab = new OrderBookBuilder().withPerson("John", "Doe").build();} + */ +public class OrderBookBuilder { + + private OrderBook orderBook; + + public OrderBookBuilder() { + orderBook = new OrderBook(); + } + + public OrderBookBuilder(OrderBook orderBook) { + this.orderBook = orderBook; + } + + /** + * Adds a new {@code Order} to the {@code OrderBook} that we are building. + */ + public OrderBookBuilder withOrder(Order order) { + orderBook.addOrder(order); + return this; + } + + public OrderBook build() { + return orderBook; + } +} From 5f108fdcd3e84b39a04befaebdb6d4a00a9cf27e Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Tue, 2 Oct 2018 10:46:21 +0800 Subject: [PATCH 139/739] Add tests for storage (order book) --- .../address/storage/StorageManagerTest.java | 40 +++--- .../storage/XmlAddressBookStorageTest.java | 127 ------------------ .../storage/XmlOrderBookStorageTest.java | 127 ++++++++++++++++++ .../XmlSerializableAddressBookTest.java | 53 -------- .../storage/XmlSerializableOrderBookTest.java | 53 ++++++++ .../address/testutil/TypicalPersons.java | 76 ----------- 6 files changed, 200 insertions(+), 276 deletions(-) delete mode 100644 src/test/java/seedu/address/storage/XmlAddressBookStorageTest.java create mode 100644 src/test/java/seedu/address/storage/XmlOrderBookStorageTest.java delete mode 100644 src/test/java/seedu/address/storage/XmlSerializableAddressBookTest.java create mode 100644 src/test/java/seedu/address/storage/XmlSerializableOrderBookTest.java delete mode 100644 src/test/java/seedu/address/testutil/TypicalPersons.java diff --git a/src/test/java/seedu/address/storage/StorageManagerTest.java b/src/test/java/seedu/address/storage/StorageManagerTest.java index 215ce2bcb0e1..88ac8b660070 100644 --- a/src/test/java/seedu/address/storage/StorageManagerTest.java +++ b/src/test/java/seedu/address/storage/StorageManagerTest.java @@ -14,10 +14,10 @@ import org.junit.Test; import org.junit.rules.TemporaryFolder; -import seedu.address.commons.events.model.AddressBookChangedEvent; +import seedu.address.commons.events.model.OrderBookChangedEvent; import seedu.address.commons.events.storage.DataSavingExceptionEvent; -import seedu.address.model.AddressBook; -import seedu.address.model.ReadOnlyAddressBook; +import seedu.address.model.OrderBook; +import seedu.address.model.ReadOnlyOrderBook; import seedu.address.model.UserPrefs; import seedu.address.ui.testutil.EventsCollectorRule; @@ -32,9 +32,9 @@ public class StorageManagerTest { @Before public void setUp() { - XmlAddressBookStorage addressBookStorage = new XmlAddressBookStorage(getTempFilePath("ab")); + XmlOrderBookStorage orderBookStorage = new XmlOrderBookStorage(getTempFilePath("ab")); JsonUserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(getTempFilePath("prefs")); - storageManager = new StorageManager(addressBookStorage, userPrefsStorage); + storageManager = new StorageManager(orderBookStorage, userPrefsStorage); } private Path getTempFilePath(String fileName) { @@ -57,29 +57,29 @@ public void prefsReadSave() throws Exception { } @Test - public void addressBookReadSave() throws Exception { + public void orderBookReadSave() throws Exception { /* * Note: This is an integration test that verifies the StorageManager is properly wired to the - * {@link XmlAddressBookStorage} class. - * More extensive testing of UserPref saving/reading is done in {@link XmlAddressBookStorageTest} class. + * {@link XmlOrderBookStorage} class. + * More extensive testing of UserPref saving/reading is done in {@link XmlOrderBookStorageTest} class. */ - AddressBook original = getTypicalAddressBook(); - storageManager.saveAddressBook(original); - ReadOnlyAddressBook retrieved = storageManager.readAddressBook().get(); - assertEquals(original, new AddressBook(retrieved)); + OrderBook original = getTypicalAddressBook(); + storageManager.saveOrderBook(original); + ReadOnlyOrderBook retrieved = storageManager.readOrderBook().get(); + assertEquals(original, new OrderBook(retrieved)); } @Test - public void getAddressBookFilePath() { - assertNotNull(storageManager.getAddressBookFilePath()); + public void getOrderBookFilePath() { + assertNotNull(storageManager.getOrderBookFilePath()); } @Test - public void handleAddressBookChangedEvent_exceptionThrown_eventRaised() { + public void handleOrderBookChangedEvent_exceptionThrown_eventRaised() { // Create a StorageManager while injecting a stub that throws an exception when the save method is called - Storage storage = new StorageManager(new XmlAddressBookStorageExceptionThrowingStub(Paths.get("dummy")), + Storage storage = new StorageManager(new XmlOrderBookStorageExceptionThrowingStub(Paths.get("dummy")), new JsonUserPrefsStorage(Paths.get("dummy"))); - storage.handleAddressBookChangedEvent(new AddressBookChangedEvent(new AddressBook())); + storage.handleOrderBookChangedEvent(new OrderBookChangedEvent(new OrderBook())); assertTrue(eventsCollectorRule.eventsCollector.getMostRecent() instanceof DataSavingExceptionEvent); } @@ -87,14 +87,14 @@ public void handleAddressBookChangedEvent_exceptionThrown_eventRaised() { /** * A Stub class to throw an exception when the save method is called */ - class XmlAddressBookStorageExceptionThrowingStub extends XmlAddressBookStorage { + class XmlOrderBookStorageExceptionThrowingStub extends XmlOrderBookStorage { - public XmlAddressBookStorageExceptionThrowingStub(Path filePath) { + public XmlOrderBookStorageExceptionThrowingStub(Path filePath) { super(filePath); } @Override - public void saveAddressBook(ReadOnlyAddressBook addressBook, Path filePath) throws IOException { + public void saveOrderBook(ReadOnlyOrderBook orderBook, Path filePath) throws IOException { throw new IOException("dummy exception"); } } diff --git a/src/test/java/seedu/address/storage/XmlAddressBookStorageTest.java b/src/test/java/seedu/address/storage/XmlAddressBookStorageTest.java deleted file mode 100644 index 484bd43cc0fd..000000000000 --- a/src/test/java/seedu/address/storage/XmlAddressBookStorageTest.java +++ /dev/null @@ -1,127 +0,0 @@ -package seedu.address.storage; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static seedu.address.testutil.TypicalPersons.ALICE; -import static seedu.address.testutil.TypicalPersons.HOON; -import static seedu.address.testutil.TypicalPersons.IDA; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; - -import java.io.IOException; -import java.nio.file.Path; -import java.nio.file.Paths; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; -import org.junit.rules.TemporaryFolder; - -import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.model.AddressBook; -import seedu.address.model.ReadOnlyAddressBook; - -public class XmlAddressBookStorageTest { - private static final Path TEST_DATA_FOLDER = Paths.get("src", "test", "data", "XmlAddressBookStorageTest"); - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Rule - public TemporaryFolder testFolder = new TemporaryFolder(); - - @Test - public void readAddressBook_nullFilePath_throwsNullPointerException() throws Exception { - thrown.expect(NullPointerException.class); - readAddressBook(null); - } - - private java.util.Optional readAddressBook(String filePath) throws Exception { - return new XmlAddressBookStorage(Paths.get(filePath)).readAddressBook(addToTestDataPathIfNotNull(filePath)); - } - - private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) { - return prefsFileInTestDataFolder != null - ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder) - : null; - } - - @Test - public void read_missingFile_emptyResult() throws Exception { - assertFalse(readAddressBook("NonExistentFile.xml").isPresent()); - } - - @Test - public void read_notXmlFormat_exceptionThrown() throws Exception { - - thrown.expect(DataConversionException.class); - readAddressBook("NotXmlFormatAddressBook.xml"); - - /* IMPORTANT: Any code below an exception-throwing line (like the one above) will be ignored. - * That means you should not have more than one exception test in one method - */ - } - - @Test - public void readAddressBook_invalidPersonAddressBook_throwDataConversionException() throws Exception { - thrown.expect(DataConversionException.class); - readAddressBook("invalidPersonAddressBook.xml"); - } - - @Test - public void readAddressBook_invalidAndValidPersonAddressBook_throwDataConversionException() throws Exception { - thrown.expect(DataConversionException.class); - readAddressBook("invalidAndValidPersonAddressBook.xml"); - } - - @Test - public void readAndSaveAddressBook_allInOrder_success() throws Exception { - Path filePath = testFolder.getRoot().toPath().resolve("TempAddressBook.xml"); - AddressBook original = getTypicalAddressBook(); - XmlAddressBookStorage xmlAddressBookStorage = new XmlAddressBookStorage(filePath); - - //Save in new file and read back - xmlAddressBookStorage.saveAddressBook(original, filePath); - ReadOnlyAddressBook readBack = xmlAddressBookStorage.readAddressBook(filePath).get(); - assertEquals(original, new AddressBook(readBack)); - - //Modify data, overwrite exiting file, and read back - original.addPerson(HOON); - original.removePerson(ALICE); - xmlAddressBookStorage.saveAddressBook(original, filePath); - readBack = xmlAddressBookStorage.readAddressBook(filePath).get(); - assertEquals(original, new AddressBook(readBack)); - - //Save and read without specifying file path - original.addPerson(IDA); - xmlAddressBookStorage.saveAddressBook(original); //file path not specified - readBack = xmlAddressBookStorage.readAddressBook().get(); //file path not specified - assertEquals(original, new AddressBook(readBack)); - - } - - @Test - public void saveAddressBook_nullAddressBook_throwsNullPointerException() { - thrown.expect(NullPointerException.class); - saveAddressBook(null, "SomeFile.xml"); - } - - /** - * Saves {@code addressBook} at the specified {@code filePath}. - */ - private void saveAddressBook(ReadOnlyAddressBook addressBook, String filePath) { - try { - new XmlAddressBookStorage(Paths.get(filePath)) - .saveAddressBook(addressBook, addToTestDataPathIfNotNull(filePath)); - } catch (IOException ioe) { - throw new AssertionError("There should not be an error writing to the file.", ioe); - } - } - - @Test - public void saveAddressBook_nullFilePath_throwsNullPointerException() { - thrown.expect(NullPointerException.class); - saveAddressBook(new AddressBook(), null); - } - - -} diff --git a/src/test/java/seedu/address/storage/XmlOrderBookStorageTest.java b/src/test/java/seedu/address/storage/XmlOrderBookStorageTest.java new file mode 100644 index 000000000000..6602f75f8cfd --- /dev/null +++ b/src/test/java/seedu/address/storage/XmlOrderBookStorageTest.java @@ -0,0 +1,127 @@ +package seedu.address.storage; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static seedu.address.testutil.TypicalOrders.HOON; +import static seedu.address.testutil.TypicalOrders.IDA; +import static seedu.address.testutil.TypicalOrders.ALICE; +import static seedu.address.testutil.TypicalOrders.getTypicalOrderBook; + +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.rules.TemporaryFolder; + +import seedu.address.commons.exceptions.DataConversionException; +import seedu.address.model.OrderBook; +import seedu.address.model.ReadOnlyOrderBook; + +public class XmlOrderBookStorageTest { + private static final Path TEST_DATA_FOLDER = Paths.get("src", "test", "data", "XmlOrderBookStorageTest"); + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Rule + public TemporaryFolder testFolder = new TemporaryFolder(); + + @Test + public void readOrderBook_nullFilePath_throwsNullPointerException() throws Exception { + thrown.expect(NullPointerException.class); + readOrderBook(null); + } + + private java.util.Optional readOrderBook(String filePath) throws Exception { + return new XmlOrderBookStorage(Paths.get(filePath)).readOrderBook(addToTestDataPathIfNotNull(filePath)); + } + + private Path addToTestDataPathIfNotNull(String prefsFileInTestDataFolder) { + return prefsFileInTestDataFolder != null + ? TEST_DATA_FOLDER.resolve(prefsFileInTestDataFolder) + : null; + } + + @Test + public void read_missingFile_emptyResult() throws Exception { + assertFalse(readOrderBook("NonExistentFile.xml").isPresent()); + } + + @Test + public void read_notXmlFormat_exceptionThrown() throws Exception { + + thrown.expect(DataConversionException.class); + readOrderBook("NotXmlFormatAddressBook.xml"); + + /* IMPORTANT: Any code below an exception-throwing line (like the one above) will be ignored. + * That means you should not have more than one exception test in one method + */ + } + + @Test + public void readOrderBook_invalidOrderOrderBook_throwDataConversionException() throws Exception { + thrown.expect(DataConversionException.class); + readOrderBook("invalidOrderAddressBook.xml"); + } + + @Test + public void readOrderBook_invalidAndValidOrderAddressBook_throwDataConversionException() throws Exception { + thrown.expect(DataConversionException.class); + readOrderBook("invalidAndValidOrderAddressBook.xml"); + } + + @Test + public void readAndSaveOrderBook_allInOrder_success() throws Exception { + Path filePath = testFolder.getRoot().toPath().resolve("TempAddressBook.xml"); + OrderBook original = getTypicalOrderBook(); + XmlOrderBookStorage xmlOrderBookStorage = new XmlOrderBookStorage(filePath); + + //Save in new file and read back + xmlOrderBookStorage.saveOrderBook(original, filePath); + ReadOnlyOrderBook readBack = xmlOrderBookStorage.readOrderBook(filePath).get(); + assertEquals(original, new OrderBook(readBack)); + + //Modify data, overwrite exiting file, and read back + original.addOrder(HOON); + original.removeOrder(ALICE); + xmlOrderBookStorage.saveOrderBook(original, filePath); + readBack = xmlOrderBookStorage.readOrderBook(filePath).get(); + assertEquals(original, new OrderBook(readBack)); + + //Save and read without specifying file path + original.addOrder(IDA); + xmlOrderBookStorage.saveOrderBook(original); //file path not specified + readBack = xmlOrderBookStorage.readOrderBook().get(); //file path not specified + assertEquals(original, new OrderBook(readBack)); + + } + + @Test + public void saveOrderBook_nullOrderBook_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + saveOrderBook(null, "SomeFile.xml"); + } + + /** + * Saves {@code orderBook} at the specified {@code filePath}. + */ + private void saveOrderBook(ReadOnlyOrderBook orderBook, String filePath) { + try { + new XmlOrderBookStorage(Paths.get(filePath)) + .saveOrderBook(orderBook, addToTestDataPathIfNotNull(filePath)); + } catch (IOException ioe) { + throw new AssertionError("There should not be an error writing to the file.", ioe); + } + } + + @Test + public void saveOrderBook_nullFilePath_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + saveOrderBook(new OrderBook(), null); + } + + +} diff --git a/src/test/java/seedu/address/storage/XmlSerializableAddressBookTest.java b/src/test/java/seedu/address/storage/XmlSerializableAddressBookTest.java deleted file mode 100644 index 55a4f10957b3..000000000000 --- a/src/test/java/seedu/address/storage/XmlSerializableAddressBookTest.java +++ /dev/null @@ -1,53 +0,0 @@ -package seedu.address.storage; - -import static org.junit.Assert.assertEquals; - -import java.nio.file.Path; -import java.nio.file.Paths; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.ExpectedException; - -import seedu.address.commons.exceptions.IllegalValueException; -import seedu.address.commons.util.XmlUtil; -import seedu.address.model.AddressBook; -import seedu.address.testutil.TypicalPersons; - -public class XmlSerializableAddressBookTest { - - private static final Path TEST_DATA_FOLDER = Paths.get("src", "test", "data", "XmlSerializableAddressBookTest"); - private static final Path TYPICAL_PERSONS_FILE = TEST_DATA_FOLDER.resolve("typicalPersonsAddressBook.xml"); - private static final Path INVALID_PERSON_FILE = TEST_DATA_FOLDER.resolve("invalidPersonAddressBook.xml"); - private static final Path DUPLICATE_PERSON_FILE = TEST_DATA_FOLDER.resolve("duplicatePersonAddressBook.xml"); - - @Rule - public ExpectedException thrown = ExpectedException.none(); - - @Test - public void toModelType_typicalPersonsFile_success() throws Exception { - XmlSerializableAddressBook dataFromFile = XmlUtil.getDataFromFile(TYPICAL_PERSONS_FILE, - XmlSerializableAddressBook.class); - AddressBook addressBookFromFile = dataFromFile.toModelType(); - AddressBook typicalPersonsAddressBook = TypicalPersons.getTypicalAddressBook(); - assertEquals(addressBookFromFile, typicalPersonsAddressBook); - } - - @Test - public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception { - XmlSerializableAddressBook dataFromFile = XmlUtil.getDataFromFile(INVALID_PERSON_FILE, - XmlSerializableAddressBook.class); - thrown.expect(IllegalValueException.class); - dataFromFile.toModelType(); - } - - @Test - public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception { - XmlSerializableAddressBook dataFromFile = XmlUtil.getDataFromFile(DUPLICATE_PERSON_FILE, - XmlSerializableAddressBook.class); - thrown.expect(IllegalValueException.class); - thrown.expectMessage(XmlSerializableAddressBook.MESSAGE_DUPLICATE_PERSON); - dataFromFile.toModelType(); - } - -} diff --git a/src/test/java/seedu/address/storage/XmlSerializableOrderBookTest.java b/src/test/java/seedu/address/storage/XmlSerializableOrderBookTest.java new file mode 100644 index 000000000000..2479da04302a --- /dev/null +++ b/src/test/java/seedu/address/storage/XmlSerializableOrderBookTest.java @@ -0,0 +1,53 @@ +package seedu.address.storage; + +import static org.junit.Assert.assertEquals; + +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import seedu.address.commons.exceptions.IllegalValueException; +import seedu.address.commons.util.XmlUtil; +import seedu.address.model.OrderBook; +import seedu.address.testutil.TypicalOrders; + +public class XmlSerializableOrderBookTest { + + private static final Path TEST_DATA_FOLDER = Paths.get("src", "test", "data", "XmlSerializableOrderBookTest"); + private static final Path TYPICAL_PERSONS_FILE = TEST_DATA_FOLDER.resolve("typicalOrdersOrderBook.xml"); + private static final Path INVALID_PERSON_FILE = TEST_DATA_FOLDER.resolve("invalidOrderOrderBook.xml"); + private static final Path DUPLICATE_PERSON_FILE = TEST_DATA_FOLDER.resolve("duplicateOrderOrderBook.xml"); + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Test + public void toModelType_typicalOrdersFile_success() throws Exception { + XmlSerializableOrderBook dataFromFile = XmlUtil.getDataFromFile(TYPICAL_PERSONS_FILE, + XmlSerializableOrderBook.class); + OrderBook orderBookFromFile = dataFromFile.toModelType(); + OrderBook typicalOrdersOrderBook = TypicalOrders.getTypicalOrderBook(); + assertEquals(orderBookFromFile, typicalOrdersOrderBook); + } + + @Test + public void toModelType_invalidPersonFile_throwsIllegalValueException() throws Exception { + XmlSerializableOrderBook dataFromFile = XmlUtil.getDataFromFile(INVALID_PERSON_FILE, + XmlSerializableOrderBook.class); + thrown.expect(IllegalValueException.class); + dataFromFile.toModelType(); + } + + @Test + public void toModelType_duplicatePersons_throwsIllegalValueException() throws Exception { + XmlSerializableOrderBook dataFromFile = XmlUtil.getDataFromFile(DUPLICATE_PERSON_FILE, + XmlSerializableOrderBook.class); + thrown.expect(IllegalValueException.class); + thrown.expectMessage(XmlSerializableOrderBook.MESSAGE_DUPLICATE_ORDER); + dataFromFile.toModelType(); + } + +} diff --git a/src/test/java/seedu/address/testutil/TypicalPersons.java b/src/test/java/seedu/address/testutil/TypicalPersons.java deleted file mode 100644 index fec76fb71293..000000000000 --- a/src/test/java/seedu/address/testutil/TypicalPersons.java +++ /dev/null @@ -1,76 +0,0 @@ -package seedu.address.testutil; - -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import seedu.address.model.AddressBook; -import seedu.address.model.person.Person; - -/** - * A utility class containing a list of {@code Person} objects to be used in tests. - */ -public class TypicalPersons { - - public static final Person ALICE = new PersonBuilder().withName("Alice Pauline") - .withAddress("123, Jurong West Ave 6, #08-111").withEmail("alice@example.com") - .withPhone("94351253") - .withTags("friends").build(); - public static final Person BENSON = new PersonBuilder().withName("Benson Meier") - .withAddress("311, Clementi Ave 2, #02-25") - .withEmail("johnd@example.com").withPhone("98765432") - .withTags("owesMoney", "friends").build(); - public static final Person CARL = new PersonBuilder().withName("Carl Kurz").withPhone("95352563") - .withEmail("heinz@example.com").withAddress("wall street").build(); - public static final Person DANIEL = new PersonBuilder().withName("Daniel Meier").withPhone("87652533") - .withEmail("cornelia@example.com").withAddress("10th street").withTags("friends").build(); - public static final Person ELLE = new PersonBuilder().withName("Elle Meyer").withPhone("9482224") - .withEmail("werner@example.com").withAddress("michegan ave").build(); - public static final Person FIONA = new PersonBuilder().withName("Fiona Kunz").withPhone("9482427") - .withEmail("lydia@example.com").withAddress("little tokyo").build(); - public static final Person GEORGE = new PersonBuilder().withName("George Best").withPhone("9482442") - .withEmail("anna@example.com").withAddress("4th street").build(); - - // Manually added - public static final Person HOON = new PersonBuilder().withName("Hoon Meier").withPhone("8482424") - .withEmail("stefan@example.com").withAddress("little india").build(); - public static final Person IDA = new PersonBuilder().withName("Ida Mueller").withPhone("8482131") - .withEmail("hans@example.com").withAddress("chicago ave").build(); - - // Manually added - Person's details found in {@code CommandTestUtil} - public static final Person AMY = new PersonBuilder().withName(VALID_NAME_AMY).withPhone(VALID_PHONE_AMY) - .withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY).withTags(VALID_TAG_FRIEND).build(); - public static final Person BOB = new PersonBuilder().withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB) - .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND) - .build(); - - public static final String KEYWORD_MATCHING_MEIER = "Meier"; // A keyword that matches MEIER - - private TypicalPersons() {} // prevents instantiation - - /** - * Returns an {@code AddressBook} with all the typical persons. - */ - public static AddressBook getTypicalAddressBook() { - AddressBook ab = new AddressBook(); - for (Person person : getTypicalPersons()) { - ab.addPerson(person); - } - return ab; - } - - public static List getTypicalPersons() { - return new ArrayList<>(Arrays.asList(ALICE, BENSON, CARL, DANIEL, ELLE, FIONA, GEORGE)); - } -} From 106991eb792d696d13f87bbd8d62ac739251cf03 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 11:21:54 +0800 Subject: [PATCH 140/739] Add VersionedUsersListTest.java --- .../address/model/VersionedUsersListTest.java | 274 ++++++++++++++++++ 1 file changed, 274 insertions(+) create mode 100644 src/test/java/seedu/address/model/VersionedUsersListTest.java diff --git a/src/test/java/seedu/address/model/VersionedUsersListTest.java b/src/test/java/seedu/address/model/VersionedUsersListTest.java new file mode 100644 index 000000000000..95c6f955f314 --- /dev/null +++ b/src/test/java/seedu/address/model/VersionedUsersListTest.java @@ -0,0 +1,274 @@ +package seedu.address.model; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static seedu.address.testutil.user.TypicalUsers.ALICE_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.BENSON_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.CARL_MANAGER; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import org.junit.Test; + +import seedu.address.testutil.user.UsersListBuilder; + +public class VersionedUsersListTest { + + private final ReadOnlyUsersList usersListWithAlice = new UsersListBuilder().withUser(ALICE_MANAGER).build(); + private final ReadOnlyUsersList usersListWithBenson = new UsersListBuilder().withUser(BENSON_MANAGER).build(); + private final ReadOnlyUsersList usersListWithCarl = new UsersListBuilder().withUser(CARL_MANAGER).build(); + private final ReadOnlyUsersList emptyUsersList = new UsersListBuilder().build(); + + + @Test + public void commit_singleUsersList_noStatesRemovedCurrentStateSaved() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList); + + versionedUsersList.commit(); + assertUsersListStatus(versionedUsersList, + Collections.singletonList(emptyUsersList), + emptyUsersList, + Collections.emptyList()); + } + + @Test + public void commit_multipleUsersListPointerAtEndOfStateList_noStatesRemovedCurrentStateSaved() { + + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + + versionedUsersList.commit(); + assertUsersListStatus(versionedUsersList, + Arrays.asList(emptyUsersList, usersListWithAlice, usersListWithBenson), + usersListWithBenson, + Collections.emptyList()); + } + + @Test + public void commit_multipleUsersListPointerNotAtEndOfStateList_statesAfterPointerRemovedCurrentStateSaved() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + shiftCurrentStatePointerLeftwards(versionedUsersList, 2); + + versionedUsersList.commit(); + assertUsersListStatus(versionedUsersList, + Collections.singletonList(emptyUsersList), + emptyUsersList, + Collections.emptyList()); + } + + @Test + public void canUndo_multipleUsersListPointerAtEndOfStateList_returnsTrue() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + + assertTrue(versionedUsersList.canUndo()); + } + + @Test + public void canUndo_multipleUsersListPointerAtStartOfStateList_returnsTrue() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + shiftCurrentStatePointerLeftwards(versionedUsersList, 1); + + assertTrue(versionedUsersList.canUndo()); + } + + @Test + public void canUndo_singleUsersList_returnsFalse() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList); + + assertFalse(versionedUsersList.canUndo()); + } + + @Test + public void canUndo_multipleUsersListPointerAtStartOfStateList_returnsFalse() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + shiftCurrentStatePointerLeftwards(versionedUsersList, 2); + + assertFalse(versionedUsersList.canUndo()); + } + + @Test + public void canRedo_multipleUsersListPointerNotAtEndOfStateList_returnsTrue() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + shiftCurrentStatePointerLeftwards(versionedUsersList, 1); + + assertTrue(versionedUsersList.canRedo()); + } + + @Test + public void canRedo_multipleUsersListPointerAtStartOfStateList_returnsTrue() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + shiftCurrentStatePointerLeftwards(versionedUsersList, 2); + + assertTrue(versionedUsersList.canRedo()); + } + + @Test + public void canRedo_singleUsersList_returnsFalse() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList); + + assertFalse(versionedUsersList.canRedo()); + } + + @Test + public void canRedo_multipleUsersListPointerAtEndOfStateList_returnsFalse() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + + assertFalse(versionedUsersList.canRedo()); + } + + @Test + public void undo_multipleUsersListPointerAtEndOfStateList_success() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + + versionedUsersList.undo(); + assertUsersListStatus(versionedUsersList, + Collections.singletonList(emptyUsersList), + usersListWithAlice, + Collections.singletonList(usersListWithBenson)); + } + + @Test + public void undo_multipleUsersListPointerNotAtStartOfStateList_success() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + shiftCurrentStatePointerLeftwards(versionedUsersList, 1); + + versionedUsersList.undo(); + assertUsersListStatus(versionedUsersList, + Collections.emptyList(), + emptyUsersList, + Arrays.asList(usersListWithAlice, usersListWithBenson)); + } + + @Test + public void undo_singleUsersList_throwsNoUndoableStateException() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList); + + assertThrows(VersionedUsersList.NoUndoableStateException.class, versionedUsersList::undo); + } + + @Test + public void undo_multipleUsersListPointerAtStartOfStateList_throwsNoUndoableStateException() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + shiftCurrentStatePointerLeftwards(versionedUsersList, 2); + + assertThrows(VersionedUsersList.NoUndoableStateException.class, versionedUsersList::undo); + } + + @Test + public void redo_multipleUsersListPointerNotAtEndOfStateList_success() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + shiftCurrentStatePointerLeftwards(versionedUsersList, 1); + + versionedUsersList.redo(); + assertUsersListStatus(versionedUsersList, + Arrays.asList(emptyUsersList, usersListWithAlice), + usersListWithBenson, + Collections.emptyList()); + } + + @Test + public void redo_multipleUsersListPointerAtStartOfStateList_success() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + shiftCurrentStatePointerLeftwards(versionedUsersList, 2); + + versionedUsersList.redo(); + assertUsersListStatus(versionedUsersList, + Collections.singletonList(emptyUsersList), + usersListWithAlice, + Collections.singletonList(usersListWithBenson)); + } + + @Test + public void redo_singleUsersList_throwsNoRedoableStateException() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList); + + assertThrows(VersionedUsersList.NoRedoableStateException.class, versionedUsersList::redo); + } + + @Test + public void redo_multipleUsersListPointerAtEndOfStateList_throwsNoRedoableStateException() { + VersionedUsersList versionedUsersList = prepareUsersList(emptyUsersList, usersListWithAlice, + usersListWithBenson); + + assertThrows(VersionedUsersList.NoRedoableStateException.class, versionedUsersList::redo); + } + + /** + * Asserts that {@code versionedUsersList} is currently pointing at {@code expectedCurrentState}, + * states before {@code versionedUsersList#currentStatePointer} is equal to {@code expectedStatesBeforePointer}, + * and states after {@code versionedUsersList#currentStatePointer} is equal to {@code expectedStatesAfterPointer}. + */ + private void assertUsersListStatus(VersionedUsersList versionedUsersList, + List expectedStatesBeforePointer, + ReadOnlyUsersList expectedCurrentState, + List expectedStatesAfterPointer) { + // check state currently pointing at is correct + assertEquals(new UsersList(versionedUsersList), expectedCurrentState); + + // shift pointer to start of state list + while (versionedUsersList.canUndo()) { + versionedUsersList.undo(); + } + + // check states before pointer are correct + for (ReadOnlyUsersList expectedUsersList : expectedStatesBeforePointer) { + assertEquals(expectedUsersList, new UsersList(versionedUsersList)); + versionedUsersList.redo(); + } + + // check states after pointer are correct + for (ReadOnlyUsersList expectedUsersList : expectedStatesAfterPointer) { + versionedUsersList.redo(); + assertEquals(expectedUsersList, new UsersList(versionedUsersList)); + } + + // check that there are no more states after pointer + assertFalse(versionedUsersList.canRedo()); + + // revert pointer to original position + expectedStatesAfterPointer.forEach(unused -> versionedUsersList.undo()); + } + + + + /** + * Creates and returns a {@code VersionedUsersList} with the {@code usersListStates} added into it, and the + * {@code VersionedUsersList#currentStatePointer} at the end of list. + */ + private VersionedUsersList prepareUsersList(ReadOnlyUsersList... usersListStates) { + assertFalse(usersListStates.length == 0); + + VersionedUsersList versionedUsersList = new VersionedUsersList(usersListStates[0]); + for (int i = 1; i < usersListStates.length; i++) { + versionedUsersList.resetData(usersListStates[i]); + versionedUsersList.commit(); + } + + return versionedUsersList; + } + + /** + * Shifts the {@code versionedUsersList#currentStatePointer} by {@code count} to the left of its list. + */ + private void shiftCurrentStatePointerLeftwards(VersionedUsersList versionedUsersList, int count) { + for (int i = 0; i < count; i++) { + versionedUsersList.undo(); + } + } +} \ No newline at end of file From cc8f62880f851e043f07616b7b83c3d5df312c97 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 11:28:51 +0800 Subject: [PATCH 141/739] Add EOF to all these files --- src/main/java/seedu/address/model/UsersList.java | 1 + src/test/java/seedu/address/model/VersionedUsersListTest.java | 2 +- src/test/java/seedu/address/model/user/UniqueUserListTest.java | 2 +- src/test/java/seedu/address/model/user/UserTest.java | 2 +- .../address/storage/user/XmlSerializableUsersListTest.java | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/java/seedu/address/model/UsersList.java b/src/main/java/seedu/address/model/UsersList.java index 1433d4d70547..81252e62243d 100644 --- a/src/main/java/seedu/address/model/UsersList.java +++ b/src/main/java/seedu/address/model/UsersList.java @@ -116,3 +116,4 @@ public int hashCode() { } + diff --git a/src/test/java/seedu/address/model/VersionedUsersListTest.java b/src/test/java/seedu/address/model/VersionedUsersListTest.java index 95c6f955f314..69d608c5d2ca 100644 --- a/src/test/java/seedu/address/model/VersionedUsersListTest.java +++ b/src/test/java/seedu/address/model/VersionedUsersListTest.java @@ -271,4 +271,4 @@ private void shiftCurrentStatePointerLeftwards(VersionedUsersList versionedUsers versionedUsersList.undo(); } } -} \ No newline at end of file +} diff --git a/src/test/java/seedu/address/model/user/UniqueUserListTest.java b/src/test/java/seedu/address/model/user/UniqueUserListTest.java index e4fafdc71ab5..044e48aa13d4 100644 --- a/src/test/java/seedu/address/model/user/UniqueUserListTest.java +++ b/src/test/java/seedu/address/model/user/UniqueUserListTest.java @@ -160,4 +160,4 @@ public void asUnmodifiableObservableList_modifyList_throwsUnsupportedOperationEx thrown.expect(UnsupportedOperationException.class); uniqueUserList.asUnmodifiableObservableList().remove(0); } -} \ No newline at end of file +} diff --git a/src/test/java/seedu/address/model/user/UserTest.java b/src/test/java/seedu/address/model/user/UserTest.java index 7fc90b4af34e..ceae7c2f9720 100644 --- a/src/test/java/seedu/address/model/user/UserTest.java +++ b/src/test/java/seedu/address/model/user/UserTest.java @@ -68,4 +68,4 @@ public void equals() { assertFalse(ALICE_MANAGER.equals(editedAlice)); } -} \ No newline at end of file +} diff --git a/src/test/java/seedu/address/storage/user/XmlSerializableUsersListTest.java b/src/test/java/seedu/address/storage/user/XmlSerializableUsersListTest.java index 038e2d3acb78..dc0c32207673 100644 --- a/src/test/java/seedu/address/storage/user/XmlSerializableUsersListTest.java +++ b/src/test/java/seedu/address/storage/user/XmlSerializableUsersListTest.java @@ -53,4 +53,4 @@ public void toModelType_duplicatePersons_throwsIllegalValueException() throws Ex dataFromFile.toModelType(); } -} \ No newline at end of file +} From ac09c7034eee7e42d526600014cb8be41850454d Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 11:31:46 +0800 Subject: [PATCH 142/739] UsersListTest.java: Add EOF --- src/test/java/seedu/address/model/UsersListTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/seedu/address/model/UsersListTest.java b/src/test/java/seedu/address/model/UsersListTest.java index 0a29555b6175..df8d3c4718ba 100644 --- a/src/test/java/seedu/address/model/UsersListTest.java +++ b/src/test/java/seedu/address/model/UsersListTest.java @@ -98,4 +98,4 @@ public ObservableList getUserList() { return users; } } -} \ No newline at end of file +} From b5f1031f6682559121e00c313a42b215b2665c6a Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 11:37:29 +0800 Subject: [PATCH 143/739] User.java: Removed unused imports --- src/main/java/seedu/address/model/user/User.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/seedu/address/model/user/User.java b/src/main/java/seedu/address/model/user/User.java index a4a0e216bd25..7b3d9eee9291 100644 --- a/src/main/java/seedu/address/model/user/User.java +++ b/src/main/java/seedu/address/model/user/User.java @@ -6,7 +6,6 @@ import seedu.address.model.person.Name; import seedu.address.model.person.Password; -import seedu.address.model.person.Person; import seedu.address.model.person.Username; /** From cf7ccb2ff0cf64e5262096f8c74b82bed3af9068 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 11:56:24 +0800 Subject: [PATCH 144/739] UserBuilder.java: Add javadocs --- src/test/java/seedu/address/testutil/user/UserBuilder.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/seedu/address/testutil/user/UserBuilder.java b/src/test/java/seedu/address/testutil/user/UserBuilder.java index e96855b95dd1..e37b8d849140 100644 --- a/src/test/java/seedu/address/testutil/user/UserBuilder.java +++ b/src/test/java/seedu/address/testutil/user/UserBuilder.java @@ -6,6 +6,11 @@ import seedu.address.model.user.Manager; import seedu.address.model.user.User; +/** + * A utility class to help with building UsersList objects. + * Example usage:
+ * {@code UsersList usersList = new UserBuilder().withPerson("John", "Doe").build();} + */ public class UserBuilder { public static final String DEFAULT_NAME = "Alice Pauline"; From cad14f4d919a0069d1ea72dd131bb6d12342ee97 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 11:57:58 +0800 Subject: [PATCH 145/739] XmlUsersListStorageTest.java: Removed unsued imports --- .../seedu/address/storage/user/XmlUsersListStorageTest.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/test/java/seedu/address/storage/user/XmlUsersListStorageTest.java b/src/test/java/seedu/address/storage/user/XmlUsersListStorageTest.java index 64fa071cda92..aa90e95ea7a1 100644 --- a/src/test/java/seedu/address/storage/user/XmlUsersListStorageTest.java +++ b/src/test/java/seedu/address/storage/user/XmlUsersListStorageTest.java @@ -3,8 +3,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static seedu.address.testutil.user.TypicalUsers.ALICE_MANAGER; -import static seedu.address.testutil.user.TypicalUsers.BENSON_MANAGER; -import static seedu.address.testutil.user.TypicalUsers.CARL_MANAGER; import static seedu.address.testutil.user.TypicalUsers.HOON_MANAGER; import static seedu.address.testutil.user.TypicalUsers.IDA_MANAGER; import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; @@ -19,7 +17,6 @@ import org.junit.rules.TemporaryFolder; import seedu.address.commons.exceptions.DataConversionException; -import seedu.address.model.AddressBook; import seedu.address.model.ReadOnlyUsersList; import seedu.address.model.UsersList; From a9f57e36fcdaeb404321b0e5983454710a2b0f9b Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 11:58:53 +0800 Subject: [PATCH 146/739] UsersListTest.java: Remove unused imports --- src/test/java/seedu/address/model/UsersListTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/seedu/address/model/UsersListTest.java b/src/test/java/seedu/address/model/UsersListTest.java index df8d3c4718ba..7c05e02011dc 100644 --- a/src/test/java/seedu/address/model/UsersListTest.java +++ b/src/test/java/seedu/address/model/UsersListTest.java @@ -3,7 +3,6 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; -import static seedu.address.testutil.TypicalPersons.ALICE; import static seedu.address.testutil.user.TypicalUsers.ALICE_MANAGER; import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; @@ -18,7 +17,6 @@ import javafx.collections.FXCollections; import javafx.collections.ObservableList; -import seedu.address.model.person.Person; import seedu.address.model.person.exceptions.DuplicatePersonException; import seedu.address.model.user.User; import seedu.address.testutil.user.UserBuilder; From bd5c4e1d6befe7d63d85b7e48dcbe8e8eff97b6d Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 12:01:29 +0800 Subject: [PATCH 147/739] UniqueUserListTest.java: Remove unused imports --- .../java/seedu/address/model/user/UniqueUserListTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/java/seedu/address/model/user/UniqueUserListTest.java b/src/test/java/seedu/address/model/user/UniqueUserListTest.java index 044e48aa13d4..9484e50f19d5 100644 --- a/src/test/java/seedu/address/model/user/UniqueUserListTest.java +++ b/src/test/java/seedu/address/model/user/UniqueUserListTest.java @@ -1,6 +1,8 @@ package seedu.address.model.user; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import static seedu.address.testutil.user.TypicalUsers.ALICE_MANAGER; import static seedu.address.testutil.user.TypicalUsers.BENSON_MANAGER; From e5612350ed545bb2ab6e650ec5abc666f81730ae Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 12:02:46 +0800 Subject: [PATCH 148/739] TypicalUsers.java: Add javadocs --- src/test/java/seedu/address/testutil/user/TypicalUsers.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/java/seedu/address/testutil/user/TypicalUsers.java b/src/test/java/seedu/address/testutil/user/TypicalUsers.java index d43efd4c4067..81ee14fdbdab 100644 --- a/src/test/java/seedu/address/testutil/user/TypicalUsers.java +++ b/src/test/java/seedu/address/testutil/user/TypicalUsers.java @@ -7,6 +7,9 @@ import seedu.address.model.UsersList; import seedu.address.model.user.User; +/** + * A utility class containing a list of {@code User} objects to be used in tests. + */ public class TypicalUsers { public static final User ALICE_MANAGER = new UserBuilder() .withName("Alice Pauline") From fe812fe9e676effac8868f244bb0ab4783e3ce0e Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Tue, 2 Oct 2018 12:18:19 +0800 Subject: [PATCH 149/739] Add tests for logic (new order commands --- .../seedu/address/logic/LogicManagerTest.java | 8 +- .../commands/AddCommandIntegrationTest.java | 29 +- .../logic/commands/AddCommandTest.java | 101 +++---- .../logic/commands/ClearCommandTest.java | 18 +- .../logic/commands/CommandTestUtil.java | 53 ++-- .../logic/commands/DeleteCommandTest.java | 101 ++++--- .../logic/commands/EditCommandTest.java | 248 ------------------ .../commands/EditPersonDescriptorTest.java | 58 ---- .../logic/commands/FindCommandTest.java | 85 ------ .../logic/commands/ListCommandTest.java | 11 +- .../logic/commands/RedoCommandTest.java | 18 +- .../logic/commands/SelectCommandTest.java | 50 ++-- .../logic/commands/UndoCommandTest.java | 10 +- .../logic/parser/AddCommandParserTest.java | 101 +++---- .../logic/parser/DeleteCommandParserTest.java | 4 +- .../logic/parser/EditCommandParserTest.java | 211 --------------- .../logic/parser/FindCommandParserTest.java | 34 --- ...rserTest.java => OrderBookParserTest.java} | 52 +--- .../address/logic/parser/ParserUtilTest.java | 6 +- .../logic/parser/SelectCommandParserTest.java | 4 +- .../seedu/address/testutil/PersonUtil.java | 62 ----- 21 files changed, 250 insertions(+), 1014 deletions(-) delete mode 100644 src/test/java/seedu/address/logic/commands/EditCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java delete mode 100644 src/test/java/seedu/address/logic/commands/FindCommandTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/EditCommandParserTest.java delete mode 100644 src/test/java/seedu/address/logic/parser/FindCommandParserTest.java rename src/test/java/seedu/address/logic/parser/{AddressBookParserTest.java => OrderBookParserTest.java} (66%) delete mode 100644 src/test/java/seedu/address/testutil/PersonUtil.java diff --git a/src/test/java/seedu/address/logic/LogicManagerTest.java b/src/test/java/seedu/address/logic/LogicManagerTest.java index 954c1fb04388..aea3f1a6fa07 100644 --- a/src/test/java/seedu/address/logic/LogicManagerTest.java +++ b/src/test/java/seedu/address/logic/LogicManagerTest.java @@ -1,7 +1,7 @@ package seedu.address.logic; import static org.junit.Assert.assertEquals; -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX; +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_ORDER_DISPLAYED_INDEX; import static seedu.address.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; import org.junit.Rule; @@ -35,7 +35,7 @@ public void execute_invalidCommandFormat_throwsParseException() { @Test public void execute_commandExecutionError_throwsCommandException() { String deleteCommand = "delete 9"; - assertCommandException(deleteCommand, MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + assertCommandException(deleteCommand, MESSAGE_INVALID_ORDER_DISPLAYED_INDEX); assertHistoryCorrect(deleteCommand); } @@ -49,7 +49,7 @@ public void execute_validCommand_success() { @Test public void getFilteredPersonList_modifyList_throwsUnsupportedOperationException() { thrown.expect(UnsupportedOperationException.class); - logic.getFilteredPersonList().remove(0); + logic.getFilteredOrderList().remove(0); } /** @@ -82,7 +82,7 @@ private void assertCommandException(String inputCommand, String expectedMessage) * @see #assertCommandBehavior(Class, String, String, Model) */ private void assertCommandFailure(String inputCommand, Class expectedException, String expectedMessage) { - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + Model expectedModel = new ModelManager(model.getOrderBook(), new UserPrefs()); assertCommandBehavior(expectedException, inputCommand, expectedMessage, expectedModel); } diff --git a/src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java b/src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java index 771480d0e9a6..58892a56826f 100644 --- a/src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java +++ b/src/test/java/seedu/address/logic/commands/AddCommandIntegrationTest.java @@ -2,7 +2,7 @@ import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure; import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.TypicalOrders.getTypicalOrderBook; import org.junit.Before; import org.junit.Test; @@ -11,7 +11,8 @@ import seedu.address.model.Model; import seedu.address.model.ModelManager; import seedu.address.model.UserPrefs; -import seedu.address.model.person.Person; +import seedu.address.model.order.Order; +import seedu.address.testutil.OrderBuilder; import seedu.address.testutil.PersonBuilder; /** @@ -24,26 +25,26 @@ public class AddCommandIntegrationTest { @Before public void setUp() { - model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + model = new ModelManager(getTypicalOrderBook(), new UserPrefs()); } @Test - public void execute_newPerson_success() { - Person validPerson = new PersonBuilder().build(); + public void execute_newOrder_success() { + Order validOrder = new OrderBuilder().build(); - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); - expectedModel.addPerson(validPerson); - expectedModel.commitAddressBook(); + Model expectedModel = new ModelManager(model.getOrderBook(), new UserPrefs()); + expectedModel.addOrder(validOrder); + expectedModel.commitOrderBook(); - assertCommandSuccess(new AddCommand(validPerson), model, commandHistory, - String.format(AddCommand.MESSAGE_SUCCESS, validPerson), expectedModel); + assertCommandSuccess(new AddCommand(validOrder), model, commandHistory, + String.format(AddCommand.MESSAGE_SUCCESS, validOrder), expectedModel); } @Test - public void execute_duplicatePerson_throwsCommandException() { - Person personInList = model.getAddressBook().getPersonList().get(0); - assertCommandFailure(new AddCommand(personInList), model, commandHistory, - AddCommand.MESSAGE_DUPLICATE_PERSON); + public void execute_duplicateOrder_throwsCommandException() { + Order orderInList = model.getOrderBook().getOrderList().get(0); + assertCommandFailure(new AddCommand(orderInList), model, commandHistory, + AddCommand.MESSAGE_DUPLICATE_ORDER); } } diff --git a/src/test/java/seedu/address/logic/commands/AddCommandTest.java b/src/test/java/seedu/address/logic/commands/AddCommandTest.java index c7077829f434..05988c1e0323 100644 --- a/src/test/java/seedu/address/logic/commands/AddCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/AddCommandTest.java @@ -16,10 +16,11 @@ import javafx.collections.ObservableList; import seedu.address.logic.CommandHistory; import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.AddressBook; +import seedu.address.model.OrderBook; import seedu.address.model.Model; -import seedu.address.model.ReadOnlyAddressBook; -import seedu.address.model.person.Person; +import seedu.address.model.ReadOnlyOrderBook; +import seedu.address.model.order.Order; +import seedu.address.testutil.OrderBuilder; import seedu.address.testutil.PersonBuilder; public class AddCommandTest { @@ -32,38 +33,38 @@ public class AddCommandTest { private CommandHistory commandHistory = new CommandHistory(); @Test - public void constructor_nullPerson_throwsNullPointerException() { + public void constructor_nullOrder_throwsNullPointerException() { thrown.expect(NullPointerException.class); new AddCommand(null); } @Test - public void execute_personAcceptedByModel_addSuccessful() throws Exception { - ModelStubAcceptingPersonAdded modelStub = new ModelStubAcceptingPersonAdded(); - Person validPerson = new PersonBuilder().build(); + public void execute_orderAcceptedByModel_addSuccessful() throws Exception { + ModelStubAcceptingOrderAdded modelStub = new ModelStubAcceptingOrderAdded(); + Order validOrder = new OrderBuilder().build(); - CommandResult commandResult = new AddCommand(validPerson).execute(modelStub, commandHistory); + CommandResult commandResult = new AddCommand(validOrder).execute(modelStub, commandHistory); - assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, validPerson), commandResult.feedbackToUser); - assertEquals(Arrays.asList(validPerson), modelStub.personsAdded); + assertEquals(String.format(AddCommand.MESSAGE_SUCCESS, validOrder), commandResult.feedbackToUser); + assertEquals(Arrays.asList(validOrder), modelStub.ordersAdded); assertEquals(EMPTY_COMMAND_HISTORY, commandHistory); } @Test - public void execute_duplicatePerson_throwsCommandException() throws Exception { - Person validPerson = new PersonBuilder().build(); - AddCommand addCommand = new AddCommand(validPerson); - ModelStub modelStub = new ModelStubWithPerson(validPerson); + public void execute_duplicateOrder_throwsCommandException() throws Exception { + Order validOrder = new OrderBuilder().build(); + AddCommand addCommand = new AddCommand(validOrder); + ModelStub modelStub = new ModelStubWithOrder(validOrder); thrown.expect(CommandException.class); - thrown.expectMessage(AddCommand.MESSAGE_DUPLICATE_PERSON); + thrown.expectMessage(AddCommand.MESSAGE_DUPLICATE_ORDER); addCommand.execute(modelStub, commandHistory); } @Test public void equals() { - Person alice = new PersonBuilder().withName("Alice").build(); - Person bob = new PersonBuilder().withName("Bob").build(); + Order alice = new OrderBuilder().withName("Alice").build(); + Order bob = new OrderBuilder().withName("Bob").build(); AddCommand addAliceCommand = new AddCommand(alice); AddCommand addBobCommand = new AddCommand(bob); @@ -89,115 +90,115 @@ public void equals() { */ private class ModelStub implements Model { @Override - public void addPerson(Person person) { + public void addOrder(Order order) { throw new AssertionError("This method should not be called."); } @Override - public void resetData(ReadOnlyAddressBook newData) { + public void resetData(ReadOnlyOrderBook newData) { throw new AssertionError("This method should not be called."); } @Override - public ReadOnlyAddressBook getAddressBook() { + public ReadOnlyOrderBook getOrderBook() { throw new AssertionError("This method should not be called."); } @Override - public boolean hasPerson(Person person) { + public boolean hasOrder(Order order) { throw new AssertionError("This method should not be called."); } @Override - public void deletePerson(Person target) { + public void deleteOrder(Order target) { throw new AssertionError("This method should not be called."); } @Override - public void updatePerson(Person target, Person editedPerson) { + public void updateOrder(Order target, Order editedOrder) { throw new AssertionError("This method should not be called."); } @Override - public ObservableList getFilteredPersonList() { + public ObservableList getFilteredOrderList() { throw new AssertionError("This method should not be called."); } @Override - public void updateFilteredPersonList(Predicate predicate) { + public void updateFilteredOrderList(Predicate predicate) { throw new AssertionError("This method should not be called."); } @Override - public boolean canUndoAddressBook() { + public boolean canUndoOrderBook() { throw new AssertionError("This method should not be called."); } @Override - public boolean canRedoAddressBook() { + public boolean canRedoOrderBook() { throw new AssertionError("This method should not be called."); } @Override - public void undoAddressBook() { + public void undoOrderBook() { throw new AssertionError("This method should not be called."); } @Override - public void redoAddressBook() { + public void redoOrderBook() { throw new AssertionError("This method should not be called."); } @Override - public void commitAddressBook() { + public void commitOrderBook() { throw new AssertionError("This method should not be called."); } } /** - * A Model stub that contains a single person. + * A Model stub that contains a single order. */ - private class ModelStubWithPerson extends ModelStub { - private final Person person; + private class ModelStubWithOrder extends ModelStub { + private final Order order; - ModelStubWithPerson(Person person) { - requireNonNull(person); - this.person = person; + ModelStubWithOrder(Order order) { + requireNonNull(order); + this.order = order; } @Override - public boolean hasPerson(Person person) { - requireNonNull(person); - return this.person.isSamePerson(person); + public boolean hasOrdern(Order order) { + requireNonNull(order); + return this.order.isSameOrder(order); } } /** - * A Model stub that always accept the person being added. + * A Model stub that always accept the order being added. */ - private class ModelStubAcceptingPersonAdded extends ModelStub { - final ArrayList personsAdded = new ArrayList<>(); + private class ModelStubAcceptingOrderAdded extends ModelStub { + final ArrayList ordersAdded = new ArrayList<>(); @Override - public boolean hasPerson(Person person) { + public boolean hasOrder(Order person) { requireNonNull(person); - return personsAdded.stream().anyMatch(person::isSamePerson); + return ordersAdded.stream().anyMatch(person::isSameOrder); } @Override - public void addPerson(Person person) { - requireNonNull(person); - personsAdded.add(person); + public void addOrder(Order order) { + requireNonNull(order); + ordersAdded.add(order); } @Override - public void commitAddressBook() { + public void commitOrderBook() { // called by {@code AddCommand#execute()} } @Override - public ReadOnlyAddressBook getAddressBook() { - return new AddressBook(); + public ReadOnlyOrderBook getOrderBook() { + return new OrderBook(); } } diff --git a/src/test/java/seedu/address/logic/commands/ClearCommandTest.java b/src/test/java/seedu/address/logic/commands/ClearCommandTest.java index db2c7263d25d..362daad82adf 100644 --- a/src/test/java/seedu/address/logic/commands/ClearCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/ClearCommandTest.java @@ -1,12 +1,12 @@ package seedu.address.logic.commands; import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.TypicalOrders.getTypicalOrderBook; import org.junit.Test; import seedu.address.logic.CommandHistory; -import seedu.address.model.AddressBook; +import seedu.address.model.OrderBook; import seedu.address.model.Model; import seedu.address.model.ModelManager; import seedu.address.model.UserPrefs; @@ -16,20 +16,20 @@ public class ClearCommandTest { private CommandHistory commandHistory = new CommandHistory(); @Test - public void execute_emptyAddressBook_success() { + public void execute_emptyOrderBook_success() { Model model = new ModelManager(); Model expectedModel = new ModelManager(); - expectedModel.commitAddressBook(); + expectedModel.commitOrderBook(); assertCommandSuccess(new ClearCommand(), model, commandHistory, ClearCommand.MESSAGE_SUCCESS, expectedModel); } @Test - public void execute_nonEmptyAddressBook_success() { - Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - expectedModel.resetData(new AddressBook()); - expectedModel.commitAddressBook(); + public void execute_nonEmptyOrderBook_success() { + Model model = new ModelManager(getTypicalOrderBook(), new UserPrefs()); + Model expectedModel = new ModelManager(getTypicalOrderBook(), new UserPrefs()); + expectedModel.resetData(new OrderBook()); + expectedModel.commitOrderBook(); assertCommandSuccess(new ClearCommand(), model, commandHistory, ClearCommand.MESSAGE_SUCCESS, expectedModel); } diff --git a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java index ca1c3b029bdd..28082a115851 100644 --- a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java +++ b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java @@ -2,11 +2,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; +import static seedu.address.logic.parser.CliSyntax.*; import java.util.ArrayList; import java.util.Arrays; @@ -15,10 +11,10 @@ import seedu.address.commons.core.index.Index; import seedu.address.logic.CommandHistory; import seedu.address.logic.commands.exceptions.CommandException; -import seedu.address.model.AddressBook; +import seedu.address.model.OrderBook; import seedu.address.model.Model; -import seedu.address.model.person.NameContainsKeywordsPredicate; -import seedu.address.model.person.Person; +import seedu.address.model.order.NameContainsKeywordsPredicate; +import seedu.address.model.order.Order; import seedu.address.testutil.EditPersonDescriptorBuilder; /** @@ -37,6 +33,7 @@ public class CommandTestUtil { public static final String VALID_TAG_HUSBAND = "husband"; public static final String VALID_TAG_FRIEND = "friend"; public static final String VALID_FOOD_BURGER = "burger"; + public static final String VALID_FOOD_RICE = "fried rice"; public static final String NAME_DESC_AMY = " " + PREFIX_NAME + VALID_NAME_AMY; public static final String NAME_DESC_BOB = " " + PREFIX_NAME + VALID_NAME_BOB; @@ -48,6 +45,8 @@ public class CommandTestUtil { public static final String ADDRESS_DESC_BOB = " " + PREFIX_ADDRESS + VALID_ADDRESS_BOB; public static final String TAG_DESC_FRIEND = " " + PREFIX_TAG + VALID_TAG_FRIEND; public static final String TAG_DESC_HUSBAND = " " + PREFIX_TAG + VALID_TAG_HUSBAND; + public static final String FOOD_DESC_BURGER = " " + PREFIX_FOOD + VALID_FOOD_BURGER; + public static final String FOOD_DESC_RICE = " " + PREFIX_FOOD + VALID_FOOD_RICE; public static final String INVALID_NAME_DESC = " " + PREFIX_NAME + "James&"; // '&' not allowed in names public static final String INVALID_PHONE_DESC = " " + PREFIX_PHONE + "911a"; // 'a' not allowed in phones @@ -58,18 +57,6 @@ public class CommandTestUtil { public static final String PREAMBLE_WHITESPACE = "\t \r \n"; public static final String PREAMBLE_NON_EMPTY = "NonEmptyPreamble"; - public static final EditCommand.EditPersonDescriptor DESC_AMY; - public static final EditCommand.EditPersonDescriptor DESC_BOB; - - static { - DESC_AMY = new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY) - .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY) - .withTags(VALID_TAG_FRIEND).build(); - DESC_BOB = new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB) - .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB) - .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build(); - } - /** * Executes the given {@code command}, confirms that
* - the result message matches {@code expectedMessage}
@@ -100,8 +87,8 @@ public static void assertCommandFailure(Command command, Model actualModel, Comm String expectedMessage) { // we are unable to defensively copy the model for comparison later, so we can // only do so by copying its components. - AddressBook expectedAddressBook = new AddressBook(actualModel.getAddressBook()); - List expectedFilteredList = new ArrayList<>(actualModel.getFilteredPersonList()); + OrderBook expectedOrderBook = new OrderBook(actualModel.getOrderBook()); + List expectedFilteredList = new ArrayList<>(actualModel.getFilteredOrderList()); CommandHistory expectedCommandHistory = new CommandHistory(actualCommandHistory); @@ -110,8 +97,8 @@ public static void assertCommandFailure(Command command, Model actualModel, Comm throw new AssertionError("The expected CommandException was not thrown."); } catch (CommandException e) { assertEquals(expectedMessage, e.getMessage()); - assertEquals(expectedAddressBook, actualModel.getAddressBook()); - assertEquals(expectedFilteredList, actualModel.getFilteredPersonList()); + assertEquals(expectedOrderBook, actualModel.getOrderBook()); + assertEquals(expectedFilteredList, actualModel.getFilteredOrderList()); assertEquals(expectedCommandHistory, actualCommandHistory); } } @@ -120,23 +107,23 @@ public static void assertCommandFailure(Command command, Model actualModel, Comm * Updates {@code model}'s filtered list to show only the person at the given {@code targetIndex} in the * {@code model}'s address book. */ - public static void showPersonAtIndex(Model model, Index targetIndex) { - assertTrue(targetIndex.getZeroBased() < model.getFilteredPersonList().size()); + public static void showOrderAtIndex(Model model, Index targetIndex) { + assertTrue(targetIndex.getZeroBased() < model.getFilteredOrderList().size()); - Person person = model.getFilteredPersonList().get(targetIndex.getZeroBased()); - final String[] splitName = person.getName().fullName.split("\\s+"); - model.updateFilteredPersonList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0]))); + Order order = model.getFilteredOrderList().get(targetIndex.getZeroBased()); + final String[] splitName = order.getName().fullName.split("\\s+"); + model.updateFilteredOrderList(new NameContainsKeywordsPredicate(Arrays.asList(splitName[0]))); - assertEquals(1, model.getFilteredPersonList().size()); + assertEquals(1, model.getFilteredOrderList().size()); } /** * Deletes the first person in {@code model}'s filtered list from {@code model}'s address book. */ public static void deleteFirstPerson(Model model) { - Person firstPerson = model.getFilteredPersonList().get(0); - model.deletePerson(firstPerson); - model.commitAddressBook(); + Order firstOrder = model.getFilteredOrderList().get(0); + model.deleteOrder(firstOrder); + model.commitOrderBook(); } } diff --git a/src/test/java/seedu/address/logic/commands/DeleteCommandTest.java b/src/test/java/seedu/address/logic/commands/DeleteCommandTest.java index f5c987bdceed..cb32417047b3 100644 --- a/src/test/java/seedu/address/logic/commands/DeleteCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/DeleteCommandTest.java @@ -5,10 +5,9 @@ import static org.junit.Assert.assertTrue; import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure; import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; -import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_ORDER; +import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_ORDER; +import static seedu.address.testutil.TypicalOrders.getTypicalOrderBook; import org.junit.Test; @@ -18,7 +17,7 @@ import seedu.address.model.Model; import seedu.address.model.ModelManager; import seedu.address.model.UserPrefs; -import seedu.address.model.person.Person; +import seedu.address.model.order.Order; /** * Contains integration tests (interaction with the Model, UndoCommand and RedoCommand) and unit tests for @@ -26,43 +25,43 @@ */ public class DeleteCommandTest { - private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private Model model = new ModelManager(getTypicalOrderBook(), new UserPrefs()); private CommandHistory commandHistory = new CommandHistory(); @Test public void execute_validIndexUnfilteredList_success() { - Person personToDelete = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_PERSON); + Order orderToDelete = model.getFilteredOrderList().get(INDEX_FIRST_ORDER.getZeroBased()); + DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_ORDER); - String expectedMessage = String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS, personToDelete); + String expectedMessage = String.format(DeleteCommand.MESSAGE_DELETE_ORDER_SUCCESS, orderToDelete); - ModelManager expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); - expectedModel.deletePerson(personToDelete); - expectedModel.commitAddressBook(); + ModelManager expectedModel = new ModelManager(model.getOrderBook(), new UserPrefs()); + expectedModel.deleteOrder(orderToDelete); + expectedModel.commitOrderBook(); assertCommandSuccess(deleteCommand, model, commandHistory, expectedMessage, expectedModel); } @Test public void execute_invalidIndexUnfilteredList_throwsCommandException() { - Index outOfBoundIndex = Index.fromOneBased(model.getFilteredPersonList().size() + 1); + Index outOfBoundIndex = Index.fromOneBased(model.getFilteredOrderList().size() + 1); DeleteCommand deleteCommand = new DeleteCommand(outOfBoundIndex); - assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_ORDER_DISPLAYED_INDEX); } @Test public void execute_validIndexFilteredList_success() { - showPersonAtIndex(model, INDEX_FIRST_PERSON); + showPersonAtIndex(model, INDEX_FIRST_ORDER); - Person personToDelete = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_PERSON); + Order orderToDelete = model.getFilteredOrderList().get(INDEX_FIRST_ORDER.getZeroBased()); + DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_ORDER); - String expectedMessage = String.format(DeleteCommand.MESSAGE_DELETE_PERSON_SUCCESS, personToDelete); + String expectedMessage = String.format(DeleteCommand.MESSAGE_DELETE_ORDER_SUCCESS, orderToDelete); - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); - expectedModel.deletePerson(personToDelete); - expectedModel.commitAddressBook(); + Model expectedModel = new ModelManager(model.getOrderBook(), new UserPrefs()); + expectedModel.deleteOrder(orderToDelete); + expectedModel.commitOrderBook(); showNoPerson(expectedModel); assertCommandSuccess(deleteCommand, model, commandHistory, expectedMessage, expectedModel); @@ -70,44 +69,44 @@ public void execute_validIndexFilteredList_success() { @Test public void execute_invalidIndexFilteredList_throwsCommandException() { - showPersonAtIndex(model, INDEX_FIRST_PERSON); + showPersonAtIndex(model, INDEX_FIRST_ORDER); - Index outOfBoundIndex = INDEX_SECOND_PERSON; + Index outOfBoundIndex = INDEX_SECOND_ORDER; // ensures that outOfBoundIndex is still in bounds of address book list - assertTrue(outOfBoundIndex.getZeroBased() < model.getAddressBook().getPersonList().size()); + assertTrue(outOfBoundIndex.getZeroBased() < model.getOrderBook().getOrderList().size()); DeleteCommand deleteCommand = new DeleteCommand(outOfBoundIndex); - assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_ORDER_DISPLAYED_INDEX); } @Test public void executeUndoRedo_validIndexUnfilteredList_success() throws Exception { - Person personToDelete = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_PERSON); - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); - expectedModel.deletePerson(personToDelete); - expectedModel.commitAddressBook(); + Order orderToDelete = model.getFilteredOrderList().get(INDEX_FIRST_ORDER.getZeroBased()); + DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_ORDER); + Model expectedModel = new ModelManager(model.getOrderBook(), new UserPrefs()); + expectedModel.deleteOrder(orderToDelete); + expectedModel.commitOrderBook(); // delete -> first person deleted deleteCommand.execute(model, commandHistory); // undo -> reverts addressbook back to previous state and filtered person list to show all persons - expectedModel.undoAddressBook(); + expectedModel.undoOrderBook(); assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel); // redo -> same first person deleted again - expectedModel.redoAddressBook(); + expectedModel.redoOrderBook(); assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel); } @Test public void executeUndoRedo_invalidIndexUnfilteredList_failure() { - Index outOfBoundIndex = Index.fromOneBased(model.getFilteredPersonList().size() + 1); + Index outOfBoundIndex = Index.fromOneBased(model.getFilteredOrderList().size() + 1); DeleteCommand deleteCommand = new DeleteCommand(outOfBoundIndex); // execution failed -> address book state not added into model - assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + assertCommandFailure(deleteCommand, model, commandHistory, Messages.MESSAGE_INVALID_ORDER_DISPLAYED_INDEX); // single address book state in model -> undoCommand and redoCommand fail assertCommandFailure(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_FAILURE); @@ -115,45 +114,45 @@ public void executeUndoRedo_invalidIndexUnfilteredList_failure() { } /** - * 1. Deletes a {@code Person} from a filtered list. + * 1. Deletes a {@code Order} from a filtered list. * 2. Undo the deletion. * 3. The unfiltered list should be shown now. Verify that the index of the previously deleted person in the * unfiltered list is different from the index at the filtered list. - * 4. Redo the deletion. This ensures {@code RedoCommand} deletes the person object regardless of indexing. + * 4. Redo the deletion. This ensures {@code RedoCommand} deletes the order object regardless of indexing. */ @Test - public void executeUndoRedo_validIndexFilteredList_samePersonDeleted() throws Exception { - DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_PERSON); - Model expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + public void executeUndoRedo_validIndexFilteredList_sameOrderDeleted() throws Exception { + DeleteCommand deleteCommand = new DeleteCommand(INDEX_FIRST_ORDER); + Model expectedModel = new ModelManager(model.getOrderBook(), new UserPrefs()); - showPersonAtIndex(model, INDEX_SECOND_PERSON); - Person personToDelete = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - expectedModel.deletePerson(personToDelete); - expectedModel.commitAddressBook(); + showPersonAtIndex(model, INDEX_SECOND_ORDER); + Order orderToDelete = model.getFilteredOrderList().get(INDEX_FIRST_ORDER.getZeroBased()); + expectedModel.deleteOrder(orderToDelete); + expectedModel.commitOrderBook(); // delete -> deletes second person in unfiltered person list / first person in filtered person list deleteCommand.execute(model, commandHistory); // undo -> reverts addressbook back to previous state and filtered person list to show all persons - expectedModel.undoAddressBook(); + expectedModel.undoOrderBook(); assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel); - assertNotEquals(personToDelete, model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased())); + assertNotEquals(orderToDelete, model.getFilteredOrderList().get(INDEX_FIRST_ORDER.getZeroBased())); // redo -> deletes same second person in unfiltered person list - expectedModel.redoAddressBook(); + expectedModel.redoOrderBook(); assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel); } @Test public void equals() { - DeleteCommand deleteFirstCommand = new DeleteCommand(INDEX_FIRST_PERSON); - DeleteCommand deleteSecondCommand = new DeleteCommand(INDEX_SECOND_PERSON); + DeleteCommand deleteFirstCommand = new DeleteCommand(INDEX_FIRST_ORDER); + DeleteCommand deleteSecondCommand = new DeleteCommand(INDEX_SECOND_ORDER); // same object -> returns true assertTrue(deleteFirstCommand.equals(deleteFirstCommand)); // same values -> returns true - DeleteCommand deleteFirstCommandCopy = new DeleteCommand(INDEX_FIRST_PERSON); + DeleteCommand deleteFirstCommandCopy = new DeleteCommand(INDEX_FIRST_ORDER); assertTrue(deleteFirstCommand.equals(deleteFirstCommandCopy)); // different types -> returns false @@ -170,8 +169,8 @@ public void equals() { * Updates {@code model}'s filtered list to show no one. */ private void showNoPerson(Model model) { - model.updateFilteredPersonList(p -> false); + model.updateFilteredOrderList(p -> false); - assertTrue(model.getFilteredPersonList().isEmpty()); + assertTrue(model.getFilteredOrderList().isEmpty()); } } diff --git a/src/test/java/seedu/address/logic/commands/EditCommandTest.java b/src/test/java/seedu/address/logic/commands/EditCommandTest.java deleted file mode 100644 index d8aa24426698..000000000000 --- a/src/test/java/seedu/address/logic/commands/EditCommandTest.java +++ /dev/null @@ -1,248 +0,0 @@ -package seedu.address.logic.commands; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotEquals; -import static org.junit.Assert.assertTrue; -import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; -import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; - -import org.junit.Test; - -import seedu.address.commons.core.Messages; -import seedu.address.commons.core.index.Index; -import seedu.address.logic.CommandHistory; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.model.AddressBook; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.UserPrefs; -import seedu.address.model.person.Person; -import seedu.address.testutil.EditPersonDescriptorBuilder; -import seedu.address.testutil.PersonBuilder; - -/** - * Contains integration tests (interaction with the Model, UndoCommand and RedoCommand) and unit tests for EditCommand. - */ -public class EditCommandTest { - - private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - private CommandHistory commandHistory = new CommandHistory(); - - @Test - public void execute_allFieldsSpecifiedUnfilteredList_success() { - Person editedPerson = new PersonBuilder().build(); - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(editedPerson).build(); - EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, descriptor); - - String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); - - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); - expectedModel.updatePerson(model.getFilteredPersonList().get(0), editedPerson); - expectedModel.commitAddressBook(); - - assertCommandSuccess(editCommand, model, commandHistory, expectedMessage, expectedModel); - } - - @Test - public void execute_someFieldsSpecifiedUnfilteredList_success() { - Index indexLastPerson = Index.fromOneBased(model.getFilteredPersonList().size()); - Person lastPerson = model.getFilteredPersonList().get(indexLastPerson.getZeroBased()); - - PersonBuilder personInList = new PersonBuilder(lastPerson); - Person editedPerson = personInList.withName(VALID_NAME_BOB).withPhone(VALID_PHONE_BOB) - .withTags(VALID_TAG_HUSBAND).build(); - - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB) - .withPhone(VALID_PHONE_BOB).withTags(VALID_TAG_HUSBAND).build(); - EditCommand editCommand = new EditCommand(indexLastPerson, descriptor); - - String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); - - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); - expectedModel.updatePerson(lastPerson, editedPerson); - expectedModel.commitAddressBook(); - - assertCommandSuccess(editCommand, model, commandHistory, expectedMessage, expectedModel); - } - - @Test - public void execute_noFieldSpecifiedUnfilteredList_success() { - EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, new EditPersonDescriptor()); - Person editedPerson = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - - String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); - - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); - expectedModel.commitAddressBook(); - - assertCommandSuccess(editCommand, model, commandHistory, expectedMessage, expectedModel); - } - - @Test - public void execute_filteredList_success() { - showPersonAtIndex(model, INDEX_FIRST_PERSON); - - Person personInFilteredList = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - Person editedPerson = new PersonBuilder(personInFilteredList).withName(VALID_NAME_BOB).build(); - EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, - new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build()); - - String expectedMessage = String.format(EditCommand.MESSAGE_EDIT_PERSON_SUCCESS, editedPerson); - - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); - expectedModel.updatePerson(model.getFilteredPersonList().get(0), editedPerson); - expectedModel.commitAddressBook(); - - assertCommandSuccess(editCommand, model, commandHistory, expectedMessage, expectedModel); - } - - @Test - public void execute_duplicatePersonUnfilteredList_failure() { - Person firstPerson = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(firstPerson).build(); - EditCommand editCommand = new EditCommand(INDEX_SECOND_PERSON, descriptor); - - assertCommandFailure(editCommand, model, commandHistory, EditCommand.MESSAGE_DUPLICATE_PERSON); - } - - @Test - public void execute_duplicatePersonFilteredList_failure() { - showPersonAtIndex(model, INDEX_FIRST_PERSON); - - // edit person in filtered list into a duplicate in address book - Person personInList = model.getAddressBook().getPersonList().get(INDEX_SECOND_PERSON.getZeroBased()); - EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, - new EditPersonDescriptorBuilder(personInList).build()); - - assertCommandFailure(editCommand, model, commandHistory, EditCommand.MESSAGE_DUPLICATE_PERSON); - } - - @Test - public void execute_invalidPersonIndexUnfilteredList_failure() { - Index outOfBoundIndex = Index.fromOneBased(model.getFilteredPersonList().size() + 1); - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build(); - EditCommand editCommand = new EditCommand(outOfBoundIndex, descriptor); - - assertCommandFailure(editCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); - } - - /** - * Edit filtered list where index is larger than size of filtered list, - * but smaller than size of address book - */ - @Test - public void execute_invalidPersonIndexFilteredList_failure() { - showPersonAtIndex(model, INDEX_FIRST_PERSON); - Index outOfBoundIndex = INDEX_SECOND_PERSON; - // ensures that outOfBoundIndex is still in bounds of address book list - assertTrue(outOfBoundIndex.getZeroBased() < model.getAddressBook().getPersonList().size()); - - EditCommand editCommand = new EditCommand(outOfBoundIndex, - new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build()); - - assertCommandFailure(editCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); - } - - @Test - public void executeUndoRedo_validIndexUnfilteredList_success() throws Exception { - Person editedPerson = new PersonBuilder().build(); - Person personToEdit = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(editedPerson).build(); - EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, descriptor); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); - expectedModel.updatePerson(personToEdit, editedPerson); - expectedModel.commitAddressBook(); - - // edit -> first person edited - editCommand.execute(model, commandHistory); - - // undo -> reverts addressbook back to previous state and filtered person list to show all persons - expectedModel.undoAddressBook(); - assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel); - - // redo -> same first person edited again - expectedModel.redoAddressBook(); - assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel); - } - - @Test - public void executeUndoRedo_invalidIndexUnfilteredList_failure() { - Index outOfBoundIndex = Index.fromOneBased(model.getFilteredPersonList().size() + 1); - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder().withName(VALID_NAME_BOB).build(); - EditCommand editCommand = new EditCommand(outOfBoundIndex, descriptor); - - // execution failed -> address book state not added into model - assertCommandFailure(editCommand, model, commandHistory, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); - - // single address book state in model -> undoCommand and redoCommand fail - assertCommandFailure(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_FAILURE); - assertCommandFailure(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_FAILURE); - } - - /** - * 1. Edits a {@code Person} from a filtered list. - * 2. Undo the edit. - * 3. The unfiltered list should be shown now. Verify that the index of the previously edited person in the - * unfiltered list is different from the index at the filtered list. - * 4. Redo the edit. This ensures {@code RedoCommand} edits the person object regardless of indexing. - */ - @Test - public void executeUndoRedo_validIndexFilteredList_samePersonEdited() throws Exception { - Person editedPerson = new PersonBuilder().build(); - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(editedPerson).build(); - EditCommand editCommand = new EditCommand(INDEX_FIRST_PERSON, descriptor); - Model expectedModel = new ModelManager(new AddressBook(model.getAddressBook()), new UserPrefs()); - - showPersonAtIndex(model, INDEX_SECOND_PERSON); - Person personToEdit = model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()); - expectedModel.updatePerson(personToEdit, editedPerson); - expectedModel.commitAddressBook(); - - // edit -> edits second person in unfiltered person list / first person in filtered person list - editCommand.execute(model, commandHistory); - - // undo -> reverts addressbook back to previous state and filtered person list to show all persons - expectedModel.undoAddressBook(); - assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel); - - assertNotEquals(model.getFilteredPersonList().get(INDEX_FIRST_PERSON.getZeroBased()), personToEdit); - // redo -> edits same second person in unfiltered person list - expectedModel.redoAddressBook(); - assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel); - } - - @Test - public void equals() { - final EditCommand standardCommand = new EditCommand(INDEX_FIRST_PERSON, DESC_AMY); - - // same values -> returns true - EditPersonDescriptor copyDescriptor = new EditPersonDescriptor(DESC_AMY); - EditCommand commandWithSameValues = new EditCommand(INDEX_FIRST_PERSON, copyDescriptor); - assertTrue(standardCommand.equals(commandWithSameValues)); - - // same object -> returns true - assertTrue(standardCommand.equals(standardCommand)); - - // null -> returns false - assertFalse(standardCommand.equals(null)); - - // different types -> returns false - assertFalse(standardCommand.equals(new ClearCommand())); - - // different index -> returns false - assertFalse(standardCommand.equals(new EditCommand(INDEX_SECOND_PERSON, DESC_AMY))); - - // different descriptor -> returns false - assertFalse(standardCommand.equals(new EditCommand(INDEX_FIRST_PERSON, DESC_BOB))); - } - -} diff --git a/src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java b/src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java deleted file mode 100644 index bfa7549c690f..000000000000 --- a/src/test/java/seedu/address/logic/commands/EditPersonDescriptorTest.java +++ /dev/null @@ -1,58 +0,0 @@ -package seedu.address.logic.commands; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static seedu.address.logic.commands.CommandTestUtil.DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; - -import org.junit.Test; - -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.testutil.EditPersonDescriptorBuilder; - -public class EditPersonDescriptorTest { - - @Test - public void equals() { - // same values -> returns true - EditPersonDescriptor descriptorWithSameValues = new EditPersonDescriptor(DESC_AMY); - assertTrue(DESC_AMY.equals(descriptorWithSameValues)); - - // same object -> returns true - assertTrue(DESC_AMY.equals(DESC_AMY)); - - // null -> returns false - assertFalse(DESC_AMY.equals(null)); - - // different types -> returns false - assertFalse(DESC_AMY.equals(5)); - - // different values -> returns false - assertFalse(DESC_AMY.equals(DESC_BOB)); - - // different name -> returns false - EditPersonDescriptor editedAmy = new EditPersonDescriptorBuilder(DESC_AMY).withName(VALID_NAME_BOB).build(); - assertFalse(DESC_AMY.equals(editedAmy)); - - // different phone -> returns false - editedAmy = new EditPersonDescriptorBuilder(DESC_AMY).withPhone(VALID_PHONE_BOB).build(); - assertFalse(DESC_AMY.equals(editedAmy)); - - // different email -> returns false - editedAmy = new EditPersonDescriptorBuilder(DESC_AMY).withEmail(VALID_EMAIL_BOB).build(); - assertFalse(DESC_AMY.equals(editedAmy)); - - // different address -> returns false - editedAmy = new EditPersonDescriptorBuilder(DESC_AMY).withAddress(VALID_ADDRESS_BOB).build(); - assertFalse(DESC_AMY.equals(editedAmy)); - - // different tags -> returns false - editedAmy = new EditPersonDescriptorBuilder(DESC_AMY).withTags(VALID_TAG_HUSBAND).build(); - assertFalse(DESC_AMY.equals(editedAmy)); - } -} diff --git a/src/test/java/seedu/address/logic/commands/FindCommandTest.java b/src/test/java/seedu/address/logic/commands/FindCommandTest.java deleted file mode 100644 index a3e4c78f9380..000000000000 --- a/src/test/java/seedu/address/logic/commands/FindCommandTest.java +++ /dev/null @@ -1,85 +0,0 @@ -package seedu.address.logic.commands; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static seedu.address.commons.core.Messages.MESSAGE_PERSONS_LISTED_OVERVIEW; -import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.testutil.TypicalPersons.CARL; -import static seedu.address.testutil.TypicalPersons.ELLE; -import static seedu.address.testutil.TypicalPersons.FIONA; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; - -import java.util.Arrays; -import java.util.Collections; - -import org.junit.Test; - -import seedu.address.logic.CommandHistory; -import seedu.address.model.Model; -import seedu.address.model.ModelManager; -import seedu.address.model.UserPrefs; -import seedu.address.model.person.NameContainsKeywordsPredicate; - -/** - * Contains integration tests (interaction with the Model) for {@code FindCommand}. - */ -public class FindCommandTest { - private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - private Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - private CommandHistory commandHistory = new CommandHistory(); - - @Test - public void equals() { - NameContainsKeywordsPredicate firstPredicate = - new NameContainsKeywordsPredicate(Collections.singletonList("first")); - NameContainsKeywordsPredicate secondPredicate = - new NameContainsKeywordsPredicate(Collections.singletonList("second")); - - FindCommand findFirstCommand = new FindCommand(firstPredicate); - FindCommand findSecondCommand = new FindCommand(secondPredicate); - - // same object -> returns true - assertTrue(findFirstCommand.equals(findFirstCommand)); - - // same values -> returns true - FindCommand findFirstCommandCopy = new FindCommand(firstPredicate); - assertTrue(findFirstCommand.equals(findFirstCommandCopy)); - - // different types -> returns false - assertFalse(findFirstCommand.equals(1)); - - // null -> returns false - assertFalse(findFirstCommand.equals(null)); - - // different person -> returns false - assertFalse(findFirstCommand.equals(findSecondCommand)); - } - - @Test - public void execute_zeroKeywords_noPersonFound() { - String expectedMessage = String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 0); - NameContainsKeywordsPredicate predicate = preparePredicate(" "); - FindCommand command = new FindCommand(predicate); - expectedModel.updateFilteredPersonList(predicate); - assertCommandSuccess(command, model, commandHistory, expectedMessage, expectedModel); - assertEquals(Collections.emptyList(), model.getFilteredPersonList()); - } - - @Test - public void execute_multipleKeywords_multiplePersonsFound() { - String expectedMessage = String.format(MESSAGE_PERSONS_LISTED_OVERVIEW, 3); - NameContainsKeywordsPredicate predicate = preparePredicate("Kurz Elle Kunz"); - FindCommand command = new FindCommand(predicate); - expectedModel.updateFilteredPersonList(predicate); - assertCommandSuccess(command, model, commandHistory, expectedMessage, expectedModel); - assertEquals(Arrays.asList(CARL, ELLE, FIONA), model.getFilteredPersonList()); - } - - /** - * Parses {@code userInput} into a {@code NameContainsKeywordsPredicate}. - */ - private NameContainsKeywordsPredicate preparePredicate(String userInput) { - return new NameContainsKeywordsPredicate(Arrays.asList(userInput.split("\\s+"))); - } -} diff --git a/src/test/java/seedu/address/logic/commands/ListCommandTest.java b/src/test/java/seedu/address/logic/commands/ListCommandTest.java index e5235fe4b266..1d3458faba6f 100644 --- a/src/test/java/seedu/address/logic/commands/ListCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/ListCommandTest.java @@ -1,9 +1,8 @@ package seedu.address.logic.commands; import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_ORDER; +import static seedu.address.testutil.TypicalOrders.getTypicalOrderBook; import org.junit.Before; import org.junit.Test; @@ -24,8 +23,8 @@ public class ListCommandTest { @Before public void setUp() { - model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - expectedModel = new ModelManager(model.getAddressBook(), new UserPrefs()); + model = new ModelManager(getTypicalOrderBook(), new UserPrefs()); + expectedModel = new ModelManager(model.getOrderBook(), new UserPrefs()); } @Test @@ -35,7 +34,7 @@ public void execute_listIsNotFiltered_showsSameList() { @Test public void execute_listIsFiltered_showsEverything() { - showPersonAtIndex(model, INDEX_FIRST_PERSON); + showPersonAtIndex(model, INDEX_FIRST_ORDER); assertCommandSuccess(new ListCommand(), model, commandHistory, ListCommand.MESSAGE_SUCCESS, expectedModel); } } diff --git a/src/test/java/seedu/address/logic/commands/RedoCommandTest.java b/src/test/java/seedu/address/logic/commands/RedoCommandTest.java index c8aaf714b890..a571501103be 100644 --- a/src/test/java/seedu/address/logic/commands/RedoCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/RedoCommandTest.java @@ -3,7 +3,7 @@ import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure; import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.TypicalOrders.getTypicalOrderBook; import org.junit.Before; import org.junit.Test; @@ -15,8 +15,8 @@ public class RedoCommandTest { - private final Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - private final Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private final Model model = new ModelManager(getTypicalOrderBook(), new UserPrefs()); + private final Model expectedModel = new ModelManager(getTypicalOrderBook(), new UserPrefs()); private final CommandHistory commandHistory = new CommandHistory(); @Before @@ -24,23 +24,23 @@ public void setUp() { // set up of both models' undo/redo history deleteFirstPerson(model); deleteFirstPerson(model); - model.undoAddressBook(); - model.undoAddressBook(); + model.undoOrderBook(); + model.undoOrderBook(); deleteFirstPerson(expectedModel); deleteFirstPerson(expectedModel); - expectedModel.undoAddressBook(); - expectedModel.undoAddressBook(); + expectedModel.undoOrderBook(); + expectedModel.undoOrderBook(); } @Test public void execute() { // multiple redoable states in model - expectedModel.redoAddressBook(); + expectedModel.redoOrderBook(); assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel); // single redoable state in model - expectedModel.redoAddressBook(); + expectedModel.redoOrderBook(); assertCommandSuccess(new RedoCommand(), model, commandHistory, RedoCommand.MESSAGE_SUCCESS, expectedModel); // no redoable state in model diff --git a/src/test/java/seedu/address/logic/commands/SelectCommandTest.java b/src/test/java/seedu/address/logic/commands/SelectCommandTest.java index d345189362da..ddb181fc4490 100644 --- a/src/test/java/seedu/address/logic/commands/SelectCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/SelectCommandTest.java @@ -5,11 +5,11 @@ import static org.junit.Assert.assertTrue; import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure; import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; -import static seedu.address.logic.commands.CommandTestUtil.showPersonAtIndex; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; -import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; -import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.logic.commands.CommandTestUtil.showOrderAtIndex; +import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_ORDER; +import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_ORDER; +import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_ORDER; +import static seedu.address.testutil.TypicalOrders.getTypicalOrderBook; import org.junit.Rule; import org.junit.Test; @@ -30,56 +30,56 @@ public class SelectCommandTest { @Rule public final EventsCollectorRule eventsCollectorRule = new EventsCollectorRule(); - private Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - private Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private Model model = new ModelManager(getTypicalOrderBook(), new UserPrefs()); + private Model expectedModel = new ModelManager(getTypicalOrderBook(), new UserPrefs()); private CommandHistory commandHistory = new CommandHistory(); @Test public void execute_validIndexUnfilteredList_success() { - Index lastPersonIndex = Index.fromOneBased(model.getFilteredPersonList().size()); + Index lastPersonIndex = Index.fromOneBased(model.getFilteredOrderList().size()); - assertExecutionSuccess(INDEX_FIRST_PERSON); - assertExecutionSuccess(INDEX_THIRD_PERSON); + assertExecutionSuccess(INDEX_FIRST_ORDER); + assertExecutionSuccess(INDEX_THIRD_ORDER); assertExecutionSuccess(lastPersonIndex); } @Test public void execute_invalidIndexUnfilteredList_failure() { - Index outOfBoundsIndex = Index.fromOneBased(model.getFilteredPersonList().size() + 1); + Index outOfBoundsIndex = Index.fromOneBased(model.getFilteredOrderList().size() + 1); - assertExecutionFailure(outOfBoundsIndex, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + assertExecutionFailure(outOfBoundsIndex, Messages.MESSAGE_INVALID_ORDER_DISPLAYED_INDEX); } @Test public void execute_validIndexFilteredList_success() { - showPersonAtIndex(model, INDEX_FIRST_PERSON); - showPersonAtIndex(expectedModel, INDEX_FIRST_PERSON); + showOrderAtIndex(model, INDEX_FIRST_ORDER); + showOrderAtIndex(expectedModel, INDEX_FIRST_ORDER); - assertExecutionSuccess(INDEX_FIRST_PERSON); + assertExecutionSuccess(INDEX_FIRST_ORDER); } @Test public void execute_invalidIndexFilteredList_failure() { - showPersonAtIndex(model, INDEX_FIRST_PERSON); - showPersonAtIndex(expectedModel, INDEX_FIRST_PERSON); + showOrderAtIndex(model, INDEX_FIRST_ORDER); + showOrderAtIndex(expectedModel, INDEX_FIRST_ORDER); - Index outOfBoundsIndex = INDEX_SECOND_PERSON; - // ensures that outOfBoundIndex is still in bounds of address book list - assertTrue(outOfBoundsIndex.getZeroBased() < model.getAddressBook().getPersonList().size()); + Index outOfBoundsIndex = INDEX_SECOND_ORDER; + // ensures that outOfBoundIndex is still in bounds of order book list + assertTrue(outOfBoundsIndex.getZeroBased() < model.getOrderBook().getPersonList().size()); - assertExecutionFailure(outOfBoundsIndex, Messages.MESSAGE_INVALID_PERSON_DISPLAYED_INDEX); + assertExecutionFailure(outOfBoundsIndex, Messages.MESSAGE_INVALID_ORDER_DISPLAYED_INDEX); } @Test public void equals() { - SelectCommand selectFirstCommand = new SelectCommand(INDEX_FIRST_PERSON); - SelectCommand selectSecondCommand = new SelectCommand(INDEX_SECOND_PERSON); + SelectCommand selectFirstCommand = new SelectCommand(INDEX_FIRST_ORDER); + SelectCommand selectSecondCommand = new SelectCommand(INDEX_SECOND_ORDER); // same object -> returns true assertTrue(selectFirstCommand.equals(selectFirstCommand)); // same values -> returns true - SelectCommand selectFirstCommandCopy = new SelectCommand(INDEX_FIRST_PERSON); + SelectCommand selectFirstCommandCopy = new SelectCommand(INDEX_FIRST_ORDER); assertTrue(selectFirstCommand.equals(selectFirstCommandCopy)); // different types -> returns false @@ -98,7 +98,7 @@ public void equals() { */ private void assertExecutionSuccess(Index index) { SelectCommand selectCommand = new SelectCommand(index); - String expectedMessage = String.format(SelectCommand.MESSAGE_SELECT_PERSON_SUCCESS, index.getOneBased()); + String expectedMessage = String.format(SelectCommand.MESSAGE_SELECT_ORDER_SUCCESS, index.getOneBased()); assertCommandSuccess(selectCommand, model, commandHistory, expectedMessage, expectedModel); diff --git a/src/test/java/seedu/address/logic/commands/UndoCommandTest.java b/src/test/java/seedu/address/logic/commands/UndoCommandTest.java index 0a706b8eb823..21e24d477c10 100644 --- a/src/test/java/seedu/address/logic/commands/UndoCommandTest.java +++ b/src/test/java/seedu/address/logic/commands/UndoCommandTest.java @@ -3,7 +3,7 @@ import static seedu.address.logic.commands.CommandTestUtil.assertCommandFailure; import static seedu.address.logic.commands.CommandTestUtil.assertCommandSuccess; import static seedu.address.logic.commands.CommandTestUtil.deleteFirstPerson; -import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.TypicalOrders.getTypicalOrderBook; import org.junit.Before; import org.junit.Test; @@ -15,8 +15,8 @@ public class UndoCommandTest { - private final Model model = new ModelManager(getTypicalAddressBook(), new UserPrefs()); - private final Model expectedModel = new ModelManager(getTypicalAddressBook(), new UserPrefs()); + private final Model model = new ModelManager(getTypicalOrderBook(), new UserPrefs()); + private final Model expectedModel = new ModelManager(getTypicalOrderBook(), new UserPrefs()); private final CommandHistory commandHistory = new CommandHistory(); @Before @@ -32,11 +32,11 @@ public void setUp() { @Test public void execute() { // multiple undoable states in model - expectedModel.undoAddressBook(); + expectedModel.undoOrderBook(); assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel); // single undoable state in model - expectedModel.undoAddressBook(); + expectedModel.undoOrderBook(); assertCommandSuccess(new UndoCommand(), model, commandHistory, UndoCommand.MESSAGE_SUCCESS, expectedModel); // no undoable states in model diff --git a/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java b/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java index c770e86482e6..5f8d8ef2fbef 100644 --- a/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/AddCommandParserTest.java @@ -3,83 +3,63 @@ import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY; import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB; import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC; import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC; import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC; import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY; import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BOB; import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY; import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB; import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY; import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE; -import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND; -import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND; +import static seedu.address.logic.commands.CommandTestUtil.FOOD_DESC_BURGER; +import static seedu.address.logic.commands.CommandTestUtil.FOOD_DESC_RICE; import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_BOB; import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; +import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_BURGER; +import static seedu.address.logic.commands.CommandTestUtil.VALID_FOOD_RICE; import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; -import static seedu.address.testutil.TypicalPersons.AMY; -import static seedu.address.testutil.TypicalPersons.BOB; +import static seedu.address.testutil.TypicalOrders.BOB; import org.junit.Test; import seedu.address.logic.commands.AddCommand; import seedu.address.model.person.Address; -import seedu.address.model.person.Email; import seedu.address.model.person.Name; -import seedu.address.model.person.Person; import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; -import seedu.address.testutil.PersonBuilder; +import seedu.address.model.order.*; +import seedu.address.testutil.OrderBuilder; public class AddCommandParserTest { private AddCommandParser parser = new AddCommandParser(); @Test public void parse_allFieldsPresent_success() { - Person expectedPerson = new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND).build(); + Order expectedOrder = new OrderBuilder(BOB).build(); // whitespace only preamble - assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB - + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson)); + assertParseSuccess(parser, PREAMBLE_WHITESPACE + NAME_DESC_BOB + PHONE_DESC_BOB + + ADDRESS_DESC_BOB + FOOD_DESC_RICE, new AddCommand(expectedOrder)); // multiple names - last name accepted - assertParseSuccess(parser, NAME_DESC_AMY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB - + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson)); + assertParseSuccess(parser, NAME_DESC_AMY + NAME_DESC_BOB + PHONE_DESC_BOB + + ADDRESS_DESC_BOB + FOOD_DESC_RICE, new AddCommand(expectedOrder)); // multiple phones - last phone accepted - assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_AMY + PHONE_DESC_BOB + EMAIL_DESC_BOB - + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson)); - - // multiple emails - last email accepted - assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_AMY + EMAIL_DESC_BOB - + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson)); + assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_AMY + PHONE_DESC_BOB + + ADDRESS_DESC_BOB + FOOD_DESC_RICE, new AddCommand(expectedOrder)); // multiple addresses - last address accepted - assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_AMY - + ADDRESS_DESC_BOB + TAG_DESC_FRIEND, new AddCommand(expectedPerson)); + assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + ADDRESS_DESC_AMY + + ADDRESS_DESC_BOB + FOOD_DESC_RICE, new AddCommand(expectedOrder)); - // multiple tags - all accepted - Person expectedPersonMultipleTags = new PersonBuilder(BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND) + // multiple food - all accepted + Order expectedOrderMultipleFood = new OrderBuilder(BOB).withFood(VALID_FOOD_BURGER, VALID_FOOD_RICE) .build(); - assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB - + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, new AddCommand(expectedPersonMultipleTags)); - } - - @Test - public void parse_optionalFieldsMissing_success() { - // zero tags - Person expectedPerson = new PersonBuilder(AMY).withTags().build(); - assertParseSuccess(parser, NAME_DESC_AMY + PHONE_DESC_AMY + EMAIL_DESC_AMY + ADDRESS_DESC_AMY, - new AddCommand(expectedPerson)); + assertParseSuccess(parser, NAME_DESC_BOB + PHONE_DESC_BOB + ADDRESS_DESC_BOB + + FOOD_DESC_BURGER + FOOD_DESC_RICE, new AddCommand(expectedOrderMultipleFood)); } @Test @@ -87,55 +67,48 @@ public void parse_compulsoryFieldMissing_failure() { String expectedMessage = String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE); // missing name prefix - assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, + assertParseFailure(parser, VALID_NAME_BOB + PHONE_DESC_BOB + ADDRESS_DESC_BOB, expectedMessage); // missing phone prefix - assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB, + assertParseFailure(parser, NAME_DESC_BOB + VALID_PHONE_BOB + ADDRESS_DESC_BOB, expectedMessage); - // missing email prefix - assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_EMAIL_BOB + ADDRESS_DESC_BOB, + // missing address prefix + assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + VALID_ADDRESS_BOB, expectedMessage); - // missing address prefix - assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + VALID_ADDRESS_BOB, + // missing food prefix + assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + ADDRESS_DESC_BOB + VALID_FOOD_BURGER, expectedMessage); // all prefixes missing - assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_EMAIL_BOB + VALID_ADDRESS_BOB, + assertParseFailure(parser, VALID_NAME_BOB + VALID_PHONE_BOB + VALID_ADDRESS_BOB + VALID_FOOD_BURGER, expectedMessage); } @Test public void parse_invalidValue_failure() { // invalid name - assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB - + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Name.MESSAGE_NAME_CONSTRAINTS); + assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + ADDRESS_DESC_BOB + + FOOD_DESC_BURGER + FOOD_DESC_RICE, Name.MESSAGE_NAME_CONSTRAINTS); // invalid phone - assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + EMAIL_DESC_BOB + ADDRESS_DESC_BOB - + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Phone.MESSAGE_PHONE_CONSTRAINTS); - - // invalid email - assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_EMAIL_DESC + ADDRESS_DESC_BOB - + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Email.MESSAGE_EMAIL_CONSTRAINTS); + assertParseFailure(parser, NAME_DESC_BOB + INVALID_PHONE_DESC + ADDRESS_DESC_BOB + + FOOD_DESC_BURGER + FOOD_DESC_RICE, Phone.MESSAGE_PHONE_CONSTRAINTS); // invalid address - assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC - + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, Address.MESSAGE_ADDRESS_CONSTRAINTS); - - // invalid tag - assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB + ADDRESS_DESC_BOB - + INVALID_TAG_DESC + VALID_TAG_FRIEND, Tag.MESSAGE_TAG_CONSTRAINTS); + assertParseFailure(parser, NAME_DESC_BOB + PHONE_DESC_BOB + INVALID_ADDRESS_DESC + + FOOD_DESC_BURGER + FOOD_DESC_RICE, Address.MESSAGE_ADDRESS_CONSTRAINTS); // two invalid values, only first invalid value reported - assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + EMAIL_DESC_BOB + INVALID_ADDRESS_DESC, + assertParseFailure(parser, INVALID_NAME_DESC + PHONE_DESC_BOB + INVALID_ADDRESS_DESC + + FOOD_DESC_BURGER, Name.MESSAGE_NAME_CONSTRAINTS); // non-empty preamble - assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + EMAIL_DESC_BOB - + ADDRESS_DESC_BOB + TAG_DESC_HUSBAND + TAG_DESC_FRIEND, + assertParseFailure(parser, PREAMBLE_NON_EMPTY + NAME_DESC_BOB + PHONE_DESC_BOB + + ADDRESS_DESC_BOB + FOOD_DESC_RICE + FOOD_DESC_BURGER, String.format(MESSAGE_INVALID_COMMAND_FORMAT, AddCommand.MESSAGE_USAGE)); } } diff --git a/src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java b/src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java index 825732ced6ac..d1cb8582f360 100644 --- a/src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/DeleteCommandParserTest.java @@ -3,7 +3,7 @@ import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; +import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_ORDER; import org.junit.Test; @@ -22,7 +22,7 @@ public class DeleteCommandParserTest { @Test public void parse_validArgs_returnsDeleteCommand() { - assertParseSuccess(parser, "1", new DeleteCommand(INDEX_FIRST_PERSON)); + assertParseSuccess(parser, "1", new DeleteCommand(INDEX_FIRST_ORDER)); } @Test diff --git a/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java b/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java deleted file mode 100644 index 6dd59ee42d45..000000000000 --- a/src/test/java/seedu/address/logic/parser/EditCommandParserTest.java +++ /dev/null @@ -1,211 +0,0 @@ -package seedu.address.logic.parser; - -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.ADDRESS_DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.EMAIL_DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_ADDRESS_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_EMAIL_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_PHONE_DESC; -import static seedu.address.logic.commands.CommandTestUtil.INVALID_TAG_DESC; -import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_AMY; -import static seedu.address.logic.commands.CommandTestUtil.PHONE_DESC_BOB; -import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_FRIEND; -import static seedu.address.logic.commands.CommandTestUtil.TAG_DESC_HUSBAND; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_ADDRESS_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_EMAIL_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_NAME_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_AMY; -import static seedu.address.logic.commands.CommandTestUtil.VALID_PHONE_BOB; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_FRIEND; -import static seedu.address.logic.commands.CommandTestUtil.VALID_TAG_HUSBAND; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; -import static seedu.address.testutil.TypicalIndexes.INDEX_SECOND_PERSON; -import static seedu.address.testutil.TypicalIndexes.INDEX_THIRD_PERSON; - -import org.junit.Test; - -import seedu.address.commons.core.index.Index; -import seedu.address.logic.commands.EditCommand; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.model.person.Address; -import seedu.address.model.person.Email; -import seedu.address.model.person.Name; -import seedu.address.model.person.Phone; -import seedu.address.model.tag.Tag; -import seedu.address.testutil.EditPersonDescriptorBuilder; - -public class EditCommandParserTest { - - private static final String TAG_EMPTY = " " + PREFIX_TAG; - - private static final String MESSAGE_INVALID_FORMAT = - String.format(MESSAGE_INVALID_COMMAND_FORMAT, EditCommand.MESSAGE_USAGE); - - private EditCommandParser parser = new EditCommandParser(); - - @Test - public void parse_missingParts_failure() { - // no index specified - assertParseFailure(parser, VALID_NAME_AMY, MESSAGE_INVALID_FORMAT); - - // no field specified - assertParseFailure(parser, "1", EditCommand.MESSAGE_NOT_EDITED); - - // no index and no field specified - assertParseFailure(parser, "", MESSAGE_INVALID_FORMAT); - } - - @Test - public void parse_invalidPreamble_failure() { - // negative index - assertParseFailure(parser, "-5" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT); - - // zero index - assertParseFailure(parser, "0" + NAME_DESC_AMY, MESSAGE_INVALID_FORMAT); - - // invalid arguments being parsed as preamble - assertParseFailure(parser, "1 some random string", MESSAGE_INVALID_FORMAT); - - // invalid prefix being parsed as preamble - assertParseFailure(parser, "1 i/ string", MESSAGE_INVALID_FORMAT); - } - - @Test - public void parse_invalidValue_failure() { - assertParseFailure(parser, "1" + INVALID_NAME_DESC, Name.MESSAGE_NAME_CONSTRAINTS); // invalid name - assertParseFailure(parser, "1" + INVALID_PHONE_DESC, Phone.MESSAGE_PHONE_CONSTRAINTS); // invalid phone - assertParseFailure(parser, "1" + INVALID_EMAIL_DESC, Email.MESSAGE_EMAIL_CONSTRAINTS); // invalid email - assertParseFailure(parser, "1" + INVALID_ADDRESS_DESC, Address.MESSAGE_ADDRESS_CONSTRAINTS); // invalid address - assertParseFailure(parser, "1" + INVALID_TAG_DESC, Tag.MESSAGE_TAG_CONSTRAINTS); // invalid tag - - // invalid phone followed by valid email - assertParseFailure(parser, "1" + INVALID_PHONE_DESC + EMAIL_DESC_AMY, Phone.MESSAGE_PHONE_CONSTRAINTS); - - // valid phone followed by invalid phone. The test case for invalid phone followed by valid phone - // is tested at {@code parse_invalidValueFollowedByValidValue_success()} - assertParseFailure(parser, "1" + PHONE_DESC_BOB + INVALID_PHONE_DESC, Phone.MESSAGE_PHONE_CONSTRAINTS); - - // while parsing {@code PREFIX_TAG} alone will reset the tags of the {@code Person} being edited, - // parsing it together with a valid tag results in error - assertParseFailure(parser, "1" + TAG_DESC_FRIEND + TAG_DESC_HUSBAND + TAG_EMPTY, Tag.MESSAGE_TAG_CONSTRAINTS); - assertParseFailure(parser, "1" + TAG_DESC_FRIEND + TAG_EMPTY + TAG_DESC_HUSBAND, Tag.MESSAGE_TAG_CONSTRAINTS); - assertParseFailure(parser, "1" + TAG_EMPTY + TAG_DESC_FRIEND + TAG_DESC_HUSBAND, Tag.MESSAGE_TAG_CONSTRAINTS); - - // multiple invalid values, but only the first invalid value is captured - assertParseFailure(parser, "1" + INVALID_NAME_DESC + INVALID_EMAIL_DESC + VALID_ADDRESS_AMY + VALID_PHONE_AMY, - Name.MESSAGE_NAME_CONSTRAINTS); - } - - @Test - public void parse_allFieldsSpecified_success() { - Index targetIndex = INDEX_SECOND_PERSON; - String userInput = targetIndex.getOneBased() + PHONE_DESC_BOB + TAG_DESC_HUSBAND - + EMAIL_DESC_AMY + ADDRESS_DESC_AMY + NAME_DESC_AMY + TAG_DESC_FRIEND; - - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY) - .withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY) - .withTags(VALID_TAG_HUSBAND, VALID_TAG_FRIEND).build(); - EditCommand expectedCommand = new EditCommand(targetIndex, descriptor); - - assertParseSuccess(parser, userInput, expectedCommand); - } - - @Test - public void parse_someFieldsSpecified_success() { - Index targetIndex = INDEX_FIRST_PERSON; - String userInput = targetIndex.getOneBased() + PHONE_DESC_BOB + EMAIL_DESC_AMY; - - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB) - .withEmail(VALID_EMAIL_AMY).build(); - EditCommand expectedCommand = new EditCommand(targetIndex, descriptor); - - assertParseSuccess(parser, userInput, expectedCommand); - } - - @Test - public void parse_oneFieldSpecified_success() { - // name - Index targetIndex = INDEX_THIRD_PERSON; - String userInput = targetIndex.getOneBased() + NAME_DESC_AMY; - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY).build(); - EditCommand expectedCommand = new EditCommand(targetIndex, descriptor); - assertParseSuccess(parser, userInput, expectedCommand); - - // phone - userInput = targetIndex.getOneBased() + PHONE_DESC_AMY; - descriptor = new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_AMY).build(); - expectedCommand = new EditCommand(targetIndex, descriptor); - assertParseSuccess(parser, userInput, expectedCommand); - - // email - userInput = targetIndex.getOneBased() + EMAIL_DESC_AMY; - descriptor = new EditPersonDescriptorBuilder().withEmail(VALID_EMAIL_AMY).build(); - expectedCommand = new EditCommand(targetIndex, descriptor); - assertParseSuccess(parser, userInput, expectedCommand); - - // address - userInput = targetIndex.getOneBased() + ADDRESS_DESC_AMY; - descriptor = new EditPersonDescriptorBuilder().withAddress(VALID_ADDRESS_AMY).build(); - expectedCommand = new EditCommand(targetIndex, descriptor); - assertParseSuccess(parser, userInput, expectedCommand); - - // tags - userInput = targetIndex.getOneBased() + TAG_DESC_FRIEND; - descriptor = new EditPersonDescriptorBuilder().withTags(VALID_TAG_FRIEND).build(); - expectedCommand = new EditCommand(targetIndex, descriptor); - assertParseSuccess(parser, userInput, expectedCommand); - } - - @Test - public void parse_multipleRepeatedFields_acceptsLast() { - Index targetIndex = INDEX_FIRST_PERSON; - String userInput = targetIndex.getOneBased() + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY - + TAG_DESC_FRIEND + PHONE_DESC_AMY + ADDRESS_DESC_AMY + EMAIL_DESC_AMY + TAG_DESC_FRIEND - + PHONE_DESC_BOB + ADDRESS_DESC_BOB + EMAIL_DESC_BOB + TAG_DESC_HUSBAND; - - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB) - .withEmail(VALID_EMAIL_BOB).withAddress(VALID_ADDRESS_BOB).withTags(VALID_TAG_FRIEND, VALID_TAG_HUSBAND) - .build(); - EditCommand expectedCommand = new EditCommand(targetIndex, descriptor); - - assertParseSuccess(parser, userInput, expectedCommand); - } - - @Test - public void parse_invalidValueFollowedByValidValue_success() { - // no other valid values specified - Index targetIndex = INDEX_FIRST_PERSON; - String userInput = targetIndex.getOneBased() + INVALID_PHONE_DESC + PHONE_DESC_BOB; - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB).build(); - EditCommand expectedCommand = new EditCommand(targetIndex, descriptor); - assertParseSuccess(parser, userInput, expectedCommand); - - // other valid values specified - userInput = targetIndex.getOneBased() + EMAIL_DESC_BOB + INVALID_PHONE_DESC + ADDRESS_DESC_BOB - + PHONE_DESC_BOB; - descriptor = new EditPersonDescriptorBuilder().withPhone(VALID_PHONE_BOB).withEmail(VALID_EMAIL_BOB) - .withAddress(VALID_ADDRESS_BOB).build(); - expectedCommand = new EditCommand(targetIndex, descriptor); - assertParseSuccess(parser, userInput, expectedCommand); - } - - @Test - public void parse_resetTags_success() { - Index targetIndex = INDEX_THIRD_PERSON; - String userInput = targetIndex.getOneBased() + TAG_EMPTY; - - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder().withTags().build(); - EditCommand expectedCommand = new EditCommand(targetIndex, descriptor); - - assertParseSuccess(parser, userInput, expectedCommand); - } -} diff --git a/src/test/java/seedu/address/logic/parser/FindCommandParserTest.java b/src/test/java/seedu/address/logic/parser/FindCommandParserTest.java deleted file mode 100644 index e65143d3b7b0..000000000000 --- a/src/test/java/seedu/address/logic/parser/FindCommandParserTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package seedu.address.logic.parser; - -import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; -import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; - -import java.util.Arrays; - -import org.junit.Test; - -import seedu.address.logic.commands.FindCommand; -import seedu.address.model.person.NameContainsKeywordsPredicate; - -public class FindCommandParserTest { - - private FindCommandParser parser = new FindCommandParser(); - - @Test - public void parse_emptyArg_throwsParseException() { - assertParseFailure(parser, " ", String.format(MESSAGE_INVALID_COMMAND_FORMAT, FindCommand.MESSAGE_USAGE)); - } - - @Test - public void parse_validArgs_returnsFindCommand() { - // no leading and trailing whitespaces - FindCommand expectedFindCommand = - new FindCommand(new NameContainsKeywordsPredicate(Arrays.asList("Alice", "Bob"))); - assertParseSuccess(parser, "Alice Bob", expectedFindCommand); - - // multiple whitespaces between keywords - assertParseSuccess(parser, " \n Alice \n \t Bob \t", expectedFindCommand); - } - -} diff --git a/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java b/src/test/java/seedu/address/logic/parser/OrderBookParserTest.java similarity index 66% rename from src/test/java/seedu/address/logic/parser/AddressBookParserTest.java rename to src/test/java/seedu/address/logic/parser/OrderBookParserTest.java index a8c8cbf21f4e..a9a0541c647b 100644 --- a/src/test/java/seedu/address/logic/parser/AddressBookParserTest.java +++ b/src/test/java/seedu/address/logic/parser/OrderBookParserTest.java @@ -4,11 +4,7 @@ import static org.junit.Assert.assertTrue; import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; import static seedu.address.commons.core.Messages.MESSAGE_UNKNOWN_COMMAND; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; - -import java.util.Arrays; -import java.util.List; -import java.util.stream.Collectors; +import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_ORDER; import org.junit.Rule; import org.junit.Test; @@ -17,10 +13,7 @@ import seedu.address.logic.commands.AddCommand; import seedu.address.logic.commands.ClearCommand; import seedu.address.logic.commands.DeleteCommand; -import seedu.address.logic.commands.EditCommand; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; import seedu.address.logic.commands.ExitCommand; -import seedu.address.logic.commands.FindCommand; import seedu.address.logic.commands.HelpCommand; import seedu.address.logic.commands.HistoryCommand; import seedu.address.logic.commands.ListCommand; @@ -28,23 +21,21 @@ import seedu.address.logic.commands.SelectCommand; import seedu.address.logic.commands.UndoCommand; import seedu.address.logic.parser.exceptions.ParseException; -import seedu.address.model.person.NameContainsKeywordsPredicate; -import seedu.address.model.person.Person; -import seedu.address.testutil.EditPersonDescriptorBuilder; -import seedu.address.testutil.PersonBuilder; -import seedu.address.testutil.PersonUtil; +import seedu.address.model.order.Order; +import seedu.address.testutil.OrderBuilder; +import seedu.address.testutil.OrderUtil; -public class AddressBookParserTest { +public class OrderBookParserTest { @Rule public ExpectedException thrown = ExpectedException.none(); - private final AddressBookParser parser = new AddressBookParser(); + private final OrderBookParser parser = new OrderBookParser(); @Test public void parseCommand_add() throws Exception { - Person person = new PersonBuilder().build(); - AddCommand command = (AddCommand) parser.parseCommand(PersonUtil.getAddCommand(person)); - assertEquals(new AddCommand(person), command); + Order order = new OrderBuilder().build(); + AddCommand command = (AddCommand) parser.parseCommand(OrderUtil.getAddCommand(order)); + assertEquals(new AddCommand(order), command); } @Test @@ -56,17 +47,8 @@ public void parseCommand_clear() throws Exception { @Test public void parseCommand_delete() throws Exception { DeleteCommand command = (DeleteCommand) parser.parseCommand( - DeleteCommand.COMMAND_WORD + " " + INDEX_FIRST_PERSON.getOneBased()); - assertEquals(new DeleteCommand(INDEX_FIRST_PERSON), command); - } - - @Test - public void parseCommand_edit() throws Exception { - Person person = new PersonBuilder().build(); - EditPersonDescriptor descriptor = new EditPersonDescriptorBuilder(person).build(); - EditCommand command = (EditCommand) parser.parseCommand(EditCommand.COMMAND_WORD + " " - + INDEX_FIRST_PERSON.getOneBased() + " " + PersonUtil.getEditPersonDescriptorDetails(descriptor)); - assertEquals(new EditCommand(INDEX_FIRST_PERSON, descriptor), command); + DeleteCommand.COMMAND_WORD + " " + INDEX_FIRST_ORDER.getOneBased()); + assertEquals(new DeleteCommand(INDEX_FIRST_ORDER), command); } @Test @@ -75,14 +57,6 @@ public void parseCommand_exit() throws Exception { assertTrue(parser.parseCommand(ExitCommand.COMMAND_WORD + " 3") instanceof ExitCommand); } - @Test - public void parseCommand_find() throws Exception { - List keywords = Arrays.asList("foo", "bar", "baz"); - FindCommand command = (FindCommand) parser.parseCommand( - FindCommand.COMMAND_WORD + " " + keywords.stream().collect(Collectors.joining(" "))); - assertEquals(new FindCommand(new NameContainsKeywordsPredicate(keywords)), command); - } - @Test public void parseCommand_help() throws Exception { assertTrue(parser.parseCommand(HelpCommand.COMMAND_WORD) instanceof HelpCommand); @@ -111,8 +85,8 @@ public void parseCommand_list() throws Exception { @Test public void parseCommand_select() throws Exception { SelectCommand command = (SelectCommand) parser.parseCommand( - SelectCommand.COMMAND_WORD + " " + INDEX_FIRST_PERSON.getOneBased()); - assertEquals(new SelectCommand(INDEX_FIRST_PERSON), command); + SelectCommand.COMMAND_WORD + " " + INDEX_FIRST_ORDER.getOneBased()); + assertEquals(new SelectCommand(INDEX_FIRST_ORDER), command); } @Test diff --git a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java b/src/test/java/seedu/address/logic/parser/ParserUtilTest.java index 78fd9c877708..3da17bf8097b 100644 --- a/src/test/java/seedu/address/logic/parser/ParserUtilTest.java +++ b/src/test/java/seedu/address/logic/parser/ParserUtilTest.java @@ -4,7 +4,7 @@ import static org.junit.Assert.assertTrue; import static seedu.address.logic.parser.ParserUtil.MESSAGE_INVALID_INDEX; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; +import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_ORDER; import java.util.Arrays; import java.util.Collections; @@ -58,10 +58,10 @@ public void parseIndex_outOfRangeInput_throwsParseException() throws Exception { @Test public void parseIndex_validInput_success() throws Exception { // No whitespaces - assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex("1")); + assertEquals(INDEX_FIRST_ORDER, ParserUtil.parseIndex("1")); // Leading and trailing whitespaces - assertEquals(INDEX_FIRST_PERSON, ParserUtil.parseIndex(" 1 ")); + assertEquals(INDEX_FIRST_ORDER, ParserUtil.parseIndex(" 1 ")); } @Test diff --git a/src/test/java/seedu/address/logic/parser/SelectCommandParserTest.java b/src/test/java/seedu/address/logic/parser/SelectCommandParserTest.java index 513ee46acd33..a45b35a9343a 100644 --- a/src/test/java/seedu/address/logic/parser/SelectCommandParserTest.java +++ b/src/test/java/seedu/address/logic/parser/SelectCommandParserTest.java @@ -3,7 +3,7 @@ import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; -import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_PERSON; +import static seedu.address.testutil.TypicalIndexes.INDEX_FIRST_ORDER; import org.junit.Test; @@ -19,7 +19,7 @@ public class SelectCommandParserTest { @Test public void parse_validArgs_returnsSelectCommand() { - assertParseSuccess(parser, "1", new SelectCommand(INDEX_FIRST_PERSON)); + assertParseSuccess(parser, "1", new SelectCommand(INDEX_FIRST_ORDER)); } @Test diff --git a/src/test/java/seedu/address/testutil/PersonUtil.java b/src/test/java/seedu/address/testutil/PersonUtil.java deleted file mode 100644 index 908499451834..000000000000 --- a/src/test/java/seedu/address/testutil/PersonUtil.java +++ /dev/null @@ -1,62 +0,0 @@ -package seedu.address.testutil; - -import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; -import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; -import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; -import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; -import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; - -import java.util.Set; - -import seedu.address.logic.commands.AddCommand; -import seedu.address.logic.commands.EditCommand.EditPersonDescriptor; -import seedu.address.model.person.Person; -import seedu.address.model.tag.Tag; - -/** - * A utility class for Person. - */ -public class PersonUtil { - - /** - * Returns an add command string for adding the {@code person}. - */ - public static String getAddCommand(Person person) { - return AddCommand.COMMAND_WORD + " " + getPersonDetails(person); - } - - /** - * Returns the part of command string for the given {@code person}'s details. - */ - public static String getPersonDetails(Person person) { - StringBuilder sb = new StringBuilder(); - sb.append(PREFIX_NAME + person.getName().fullName + " "); - sb.append(PREFIX_PHONE + person.getPhone().value + " "); - sb.append(PREFIX_EMAIL + person.getEmail().value + " "); - sb.append(PREFIX_ADDRESS + person.getAddress().value + " "); - person.getTags().stream().forEach( - s -> sb.append(PREFIX_TAG + s.tagName + " ") - ); - return sb.toString(); - } - - /** - * Returns the part of command string for the given {@code EditPersonDescriptor}'s details. - */ - public static String getEditPersonDescriptorDetails(EditPersonDescriptor descriptor) { - StringBuilder sb = new StringBuilder(); - descriptor.getName().ifPresent(name -> sb.append(PREFIX_NAME).append(name.fullName).append(" ")); - descriptor.getPhone().ifPresent(phone -> sb.append(PREFIX_PHONE).append(phone.value).append(" ")); - descriptor.getEmail().ifPresent(email -> sb.append(PREFIX_EMAIL).append(email.value).append(" ")); - descriptor.getAddress().ifPresent(address -> sb.append(PREFIX_ADDRESS).append(address.value).append(" ")); - if (descriptor.getTags().isPresent()) { - Set tags = descriptor.getTags().get(); - if (tags.isEmpty()) { - sb.append(PREFIX_TAG); - } else { - tags.forEach(s -> sb.append(PREFIX_TAG).append(s.tagName).append(" ")); - } - } - return sb.toString(); - } -} From c8980aaf920ec5d6343dbc0c1d7b12565e780b97 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 15:27:53 +0800 Subject: [PATCH 150/739] CommandTestUtil.java: Add managers --- .../address/logic/commands/CommandTestUtil.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java index bf861fcb36c3..4d5512a139da 100644 --- a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java +++ b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java @@ -5,8 +5,10 @@ import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS; import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL; import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME; +import static seedu.address.logic.parser.CliSyntax.PREFIX_PASSWORD; import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE; import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG; +import static seedu.address.logic.parser.CliSyntax.PREFIX_USERNAME; import java.util.ArrayList; import java.util.Arrays; @@ -60,6 +62,20 @@ public class CommandTestUtil { public static final EditCommand.EditPersonDescriptor DESC_AMY; public static final EditCommand.EditPersonDescriptor DESC_BOB; + public static final String VALID_MANAGER_NAME_ALICE = "Alice Pauline"; + public static final String VALID_MANAGER_NAME_BENSON = "Benson Meier"; + public static final String VALID_MANAGER_USERNAME_ALICE = "alicepauline"; + public static final String VALID_MANAGER_USERNAME_BENSON = "bensonmeier"; + public static final String VALID_MANAGER_PASSWORD_ALICE = "alicepauline01"; + public static final String VALID_MANAGER_PASSWORD_BENSON = "bensonmeier02"; + + public static final String NAME_DESC_ALICE = " " + PREFIX_NAME + VALID_MANAGER_NAME_ALICE; + public static final String NAME_DESC_BENSON = " " + PREFIX_NAME + VALID_MANAGER_NAME_BENSON; + public static final String USERNAME_DESC_ALICE = " " + PREFIX_USERNAME + VALID_MANAGER_USERNAME_ALICE; + public static final String USERNAME_DESC_BENSON = " " + PREFIX_USERNAME + VALID_MANAGER_USERNAME_BENSON; + public static final String PASSWORD_DESC_ALICE = " " + PREFIX_PASSWORD + VALID_MANAGER_PASSWORD_ALICE; + public static final String PASSWORD_DESC_BENSON = " " + PREFIX_PASSWORD + VALID_MANAGER_PASSWORD_BENSON; + static { DESC_AMY = new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY) .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY) From 0789f22f1fd0ae3cb90a4e4c2cdb68f1605dbd41 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 15:28:32 +0800 Subject: [PATCH 151/739] SignUpCommand.java: Override equals() method --- .../java/seedu/address/logic/commands/SignUpCommand.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/seedu/address/logic/commands/SignUpCommand.java b/src/main/java/seedu/address/logic/commands/SignUpCommand.java index 161288671eb5..0d997da40796 100644 --- a/src/main/java/seedu/address/logic/commands/SignUpCommand.java +++ b/src/main/java/seedu/address/logic/commands/SignUpCommand.java @@ -51,4 +51,11 @@ public CommandResult execute(Model model, CommandHistory history) throws Command model.commitUsersList(); return new CommandResult(String.format(MESSAGE_SUCCESS, toAdd)); } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof SignUpCommand // instanceof handles nulls + && toAdd.equals(((SignUpCommand) other).toAdd)); + } } From 41057de57f4b874f8d429395d9f0bc5c9ce2f0c7 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 15:51:00 +0800 Subject: [PATCH 152/739] CommandTestUtil.java: Add Invalid username and password --- .../java/seedu/address/logic/commands/CommandTestUtil.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java index 4d5512a139da..64ba4089dec8 100644 --- a/src/test/java/seedu/address/logic/commands/CommandTestUtil.java +++ b/src/test/java/seedu/address/logic/commands/CommandTestUtil.java @@ -76,6 +76,9 @@ public class CommandTestUtil { public static final String PASSWORD_DESC_ALICE = " " + PREFIX_PASSWORD + VALID_MANAGER_PASSWORD_ALICE; public static final String PASSWORD_DESC_BENSON = " " + PREFIX_PASSWORD + VALID_MANAGER_PASSWORD_BENSON; + public static final String INVALID_USERNAME_DESC = " " + PREFIX_USERNAME + "James&"; // '&' not allowed in usernames + public static final String INVALID_PASSWORD_DESC = " " + PREFIX_PASSWORD + "Jam&"; // '&' not allowed in password + static { DESC_AMY = new EditPersonDescriptorBuilder().withName(VALID_NAME_AMY) .withPhone(VALID_PHONE_AMY).withEmail(VALID_EMAIL_AMY).withAddress(VALID_ADDRESS_AMY) From 704d1a3e6853fa32aa881a3c2e8130ab9fe2e56f Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 15:51:20 +0800 Subject: [PATCH 153/739] Add SignUpCommandParserTest.java --- .../logic/parser/SignUpCommandParserTest.java | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 src/test/java/seedu/address/logic/parser/SignUpCommandParserTest.java diff --git a/src/test/java/seedu/address/logic/parser/SignUpCommandParserTest.java b/src/test/java/seedu/address/logic/parser/SignUpCommandParserTest.java new file mode 100644 index 000000000000..fb2bb5d87caf --- /dev/null +++ b/src/test/java/seedu/address/logic/parser/SignUpCommandParserTest.java @@ -0,0 +1,122 @@ +package seedu.address.logic.parser; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.commands.CommandTestUtil.INVALID_NAME_DESC; +import static seedu.address.logic.commands.CommandTestUtil.INVALID_PASSWORD_DESC; +import static seedu.address.logic.commands.CommandTestUtil.INVALID_USERNAME_DESC; +import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.NAME_DESC_BENSON; +import static seedu.address.logic.commands.CommandTestUtil.PASSWORD_DESC_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.PASSWORD_DESC_BENSON; +import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_NON_EMPTY; +import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE; +import static seedu.address.logic.commands.CommandTestUtil.USERNAME_DESC_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.USERNAME_DESC_BENSON; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_NAME_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_PASSWORD_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_USERNAME_ALICE; +import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; +import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; +import static seedu.address.testutil.user.TypicalUsers.ALICE_MANAGER; + +import org.junit.Test; + +import seedu.address.logic.commands.SignUpCommand; +import seedu.address.model.person.Name; +import seedu.address.model.person.Password; +import seedu.address.model.person.Username; +import seedu.address.model.user.Manager; +import seedu.address.model.user.User; +import seedu.address.testutil.user.UserBuilder; + +public class SignUpCommandParserTest { + + private SignUpCommandParser parser = new SignUpCommandParser(); + + @Test + public void parse_allFieldsPresent_success() { + User expectedUser = new UserBuilder(ALICE_MANAGER).build(); + + // whitespace only preamble + assertParseSuccess(parser, PREAMBLE_WHITESPACE + + NAME_DESC_ALICE + + USERNAME_DESC_ALICE + + PASSWORD_DESC_ALICE, + new SignUpCommand((Manager) expectedUser)); + + + // multiple names - last name accepted + assertParseSuccess(parser, NAME_DESC_BENSON + + NAME_DESC_ALICE + + USERNAME_DESC_ALICE + + PASSWORD_DESC_ALICE, + new SignUpCommand((Manager) expectedUser)); + + // multiple usernames - last username accepted + assertParseSuccess(parser, NAME_DESC_ALICE + + USERNAME_DESC_BENSON + + USERNAME_DESC_ALICE + + PASSWORD_DESC_ALICE, + new SignUpCommand((Manager) expectedUser)); + + // multiple password - last password accepted + assertParseSuccess(parser, NAME_DESC_ALICE + + USERNAME_DESC_ALICE + + PASSWORD_DESC_BENSON + + PASSWORD_DESC_ALICE, + new SignUpCommand((Manager) expectedUser)); + } + + @Test + public void parse_compulsoryFieldMissing_failure() { + String expectedMessage = String.format(MESSAGE_INVALID_COMMAND_FORMAT, SignUpCommand.MESSAGE_USAGE); + + // missing name prefix + assertParseFailure(parser, VALID_MANAGER_NAME_ALICE + + USERNAME_DESC_ALICE + + PASSWORD_DESC_ALICE, + expectedMessage); + + // missing username prefix + assertParseFailure(parser, NAME_DESC_ALICE + + VALID_MANAGER_USERNAME_ALICE + + PASSWORD_DESC_ALICE, + expectedMessage); + + // missing password prefix + assertParseFailure(parser, NAME_DESC_ALICE + + USERNAME_DESC_ALICE + + VALID_MANAGER_PASSWORD_ALICE, + expectedMessage); + } + + @Test + public void parse_invalidValue_failure() { + // invalid name + assertParseFailure(parser, INVALID_NAME_DESC + + USERNAME_DESC_ALICE + + PASSWORD_DESC_ALICE + , Name.MESSAGE_NAME_CONSTRAINTS); + + // invalid username + assertParseFailure(parser, NAME_DESC_ALICE + + INVALID_USERNAME_DESC + + PASSWORD_DESC_ALICE + , Username.MESSAGE_USERNAME_CONSTRAINTS); + + // invalid password + assertParseFailure(parser, NAME_DESC_ALICE + + USERNAME_DESC_ALICE + + INVALID_PASSWORD_DESC + , Password.MESSAGE_PASSWORD_CONSTRAINTS); + + // non-empty preamble + assertParseFailure(parser, PREAMBLE_NON_EMPTY + + NAME_DESC_BENSON + + USERNAME_DESC_BENSON + + PASSWORD_DESC_BENSON, + String.format(MESSAGE_INVALID_COMMAND_FORMAT, SignUpCommand.MESSAGE_USAGE)); + } + +} + From 26f9c7559904886dbdb803252e8b5f13b2ef4208 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 16:14:16 +0800 Subject: [PATCH 154/739] Manager.java: Override equals() method --- .../seedu/address/model/user/Manager.java | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/java/seedu/address/model/user/Manager.java b/src/main/java/seedu/address/model/user/Manager.java index 8160573b22cb..14d115fa5e6b 100644 --- a/src/main/java/seedu/address/model/user/Manager.java +++ b/src/main/java/seedu/address/model/user/Manager.java @@ -23,5 +23,27 @@ public Manager(Name name, Username username, Password password) { public Manager(Username username, Password password) { super(username, password); } + + @Override + public boolean equals(Object other) { + if (other == this) { + return true; + } + + if (!(other instanceof Manager)) { + return false; + } + + Manager otherPerson = (Manager) other; + if (otherPerson.getName() == null) { + return otherPerson.getUsername().equals(getUsername()) + && otherPerson.getPassword().equals(getPassword()); + } else { + return otherPerson.getName().equals(getName()) + && otherPerson.getUsername().equals(getUsername()) + && otherPerson.getPassword().equals(getPassword()); + } + + } } From e5ae8caa79b9eb2432207986353bf8a0c7d3e6c2 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 16:15:15 +0800 Subject: [PATCH 155/739] LoginCommand.java: Override equals() method --- .../java/seedu/address/logic/commands/LoginCommand.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/seedu/address/logic/commands/LoginCommand.java b/src/main/java/seedu/address/logic/commands/LoginCommand.java index 9cd403a33c58..cf47bbfdb273 100644 --- a/src/main/java/seedu/address/logic/commands/LoginCommand.java +++ b/src/main/java/seedu/address/logic/commands/LoginCommand.java @@ -47,4 +47,11 @@ public CommandResult execute(Model model, CommandHistory history) throws Command return new CommandResult(String.format(MESSAGE_FAILURE, toLogin)); } } + + @Override + public boolean equals(Object other) { + return other == this // short circuit if same object + || (other instanceof LoginCommand // instanceof handles nulls + && toLogin.equals(((LoginCommand) other).toLogin)); + } } From d99a586641c8cb87080d364aa78b426d99793af0 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 16:25:02 +0800 Subject: [PATCH 156/739] Add LoginCommandParserTest.java --- .../logic/parser/LoginCommandParserTest.java | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/test/java/seedu/address/logic/parser/LoginCommandParserTest.java diff --git a/src/test/java/seedu/address/logic/parser/LoginCommandParserTest.java b/src/test/java/seedu/address/logic/parser/LoginCommandParserTest.java new file mode 100644 index 000000000000..d0f71c4c300a --- /dev/null +++ b/src/test/java/seedu/address/logic/parser/LoginCommandParserTest.java @@ -0,0 +1,61 @@ +package seedu.address.logic.parser; + +import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT; +import static seedu.address.logic.commands.CommandTestUtil.PASSWORD_DESC_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.PASSWORD_DESC_BENSON; +import static seedu.address.logic.commands.CommandTestUtil.PREAMBLE_WHITESPACE; +import static seedu.address.logic.commands.CommandTestUtil.USERNAME_DESC_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.USERNAME_DESC_BENSON; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_PASSWORD_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_USERNAME_ALICE; +import static seedu.address.logic.parser.CommandParserTestUtil.assertParseFailure; +import static seedu.address.logic.parser.CommandParserTestUtil.assertParseSuccess; + +import org.junit.Test; + +import seedu.address.logic.commands.LoginCommand; +import seedu.address.model.user.Manager; +import seedu.address.model.user.User; +import seedu.address.testutil.user.UserBuilder; + +public class LoginCommandParserTest { + + private LoginCommandParser parser = new LoginCommandParser(); + + @Test + public void parse_allFieldsPresent_success() { + User expectedUser = new UserBuilder() + .withUsername(VALID_MANAGER_USERNAME_ALICE) + .withPassword(VALID_MANAGER_PASSWORD_ALICE) + .build(); + + // whitespace only preamble + assertParseSuccess(parser, PREAMBLE_WHITESPACE + + USERNAME_DESC_ALICE + + PASSWORD_DESC_ALICE, + new LoginCommand((Manager) expectedUser)); + + // multiple usernames - last username accepted + assertParseSuccess(parser, USERNAME_DESC_BENSON + + USERNAME_DESC_ALICE + + PASSWORD_DESC_ALICE, + new LoginCommand((Manager) expectedUser)); + + // multiple password - last password accepted + assertParseSuccess(parser, USERNAME_DESC_ALICE + + PASSWORD_DESC_BENSON + + PASSWORD_DESC_ALICE, + new LoginCommand((Manager) expectedUser)); + } + + @Test + public void parse_compulsoryFieldMissing_failure() { + String expectedMessage = String.format(MESSAGE_INVALID_COMMAND_FORMAT, LoginCommand.MESSAGE_USAGE); + + // missing username prefix + assertParseFailure(parser, VALID_MANAGER_USERNAME_ALICE + PASSWORD_DESC_ALICE, expectedMessage); + + // missing password prefix + assertParseFailure(parser, USERNAME_DESC_ALICE + VALID_MANAGER_PASSWORD_ALICE, expectedMessage); + } +} From 65115414193e5a86ea33ad176edfebb8508ec061 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 17:06:18 +0800 Subject: [PATCH 157/739] Add LoginCommandTest.java --- .../logic/commands/LoginCommandTest.java | 113 ++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/test/java/seedu/address/logic/commands/LoginCommandTest.java diff --git a/src/test/java/seedu/address/logic/commands/LoginCommandTest.java b/src/test/java/seedu/address/logic/commands/LoginCommandTest.java new file mode 100644 index 000000000000..e750d041f375 --- /dev/null +++ b/src/test/java/seedu/address/logic/commands/LoginCommandTest.java @@ -0,0 +1,113 @@ +package seedu.address.logic.commands; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static seedu.address.logic.commands.CommandTestUtil.INVALID_USERNAME_DESC; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_PASSWORD_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_PASSWORD_BENSON; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_USERNAME_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_USERNAME_BENSON; +import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import seedu.address.logic.CommandHistory; +import seedu.address.model.Model; +import seedu.address.model.ModelManager; +import seedu.address.model.UserPrefs; +import seedu.address.model.user.Manager; +import seedu.address.model.user.User; +import seedu.address.testutil.user.UserBuilder; + +public class LoginCommandTest { + @Rule + public ExpectedException thrown = ExpectedException.none(); + + private CommandHistory commandHistory = new CommandHistory(); + private Model model = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); + private static final CommandHistory EMPTY_COMMAND_HISTORY = new CommandHistory(); + + @Test + public void constructor_nullUser_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + new LoginCommand(null); + } + + @Test + public void execute_userAcceptedByModel_loginSuccessful() throws Exception { + User validUser = new UserBuilder() + .withUsername(VALID_MANAGER_USERNAME_ALICE) + .withPassword(VALID_MANAGER_PASSWORD_ALICE) + .build(); + + CommandResult commandResult = new LoginCommand((Manager) validUser).execute(model, commandHistory); + + assertEquals(String.format(LoginCommand.MESSAGE_SUCCESS, validUser), commandResult.feedbackToUser); + assertEquals(EMPTY_COMMAND_HISTORY, commandHistory); + } + + @Test + public void execute_userFailedByModel_loginFail() throws Exception { + User validUser = new UserBuilder() + .withUsername(VALID_MANAGER_USERNAME_ALICE) + .withPassword(VALID_MANAGER_PASSWORD_BENSON) + .build(); + + CommandResult commandResult = new LoginCommand((Manager) validUser).execute(model, commandHistory); + + assertEquals(String.format(LoginCommand.MESSAGE_FAILURE, validUser), commandResult.feedbackToUser); + assertEquals(EMPTY_COMMAND_HISTORY, commandHistory); + } + + @Test + public void execute_userNotExist_loginFail() throws Exception { + User validUser = new UserBuilder() + .withUsername(INVALID_USERNAME_DESC) + .withPassword(VALID_MANAGER_PASSWORD_BENSON) + .build(); + + CommandResult commandResult = new LoginCommand((Manager) validUser).execute(model, commandHistory); + + assertEquals(String.format(LoginCommand.MESSAGE_FAILURE, validUser), commandResult.feedbackToUser); + assertEquals(EMPTY_COMMAND_HISTORY, commandHistory); + } + + + @Test + public void equals() { + User alice = new UserBuilder() + .withUsername(VALID_MANAGER_USERNAME_ALICE) + .withPassword(VALID_MANAGER_PASSWORD_ALICE) + .build(); + + User benson = new UserBuilder() + .withUsername(VALID_MANAGER_USERNAME_BENSON) + .withPassword(VALID_MANAGER_PASSWORD_BENSON) + .build(); + + LoginCommand loginAliceCommand = new LoginCommand((Manager) alice); + LoginCommand loginBensonCommand = new LoginCommand((Manager) benson); + + // same object -> returns true + assertTrue(loginAliceCommand.equals(loginAliceCommand)); + + // same values -> returns true + LoginCommand loginAliceCommandCopy = new LoginCommand((Manager) alice); + assertTrue(loginAliceCommand.equals(loginAliceCommandCopy)); + + // different types -> returns false + assertFalse(loginAliceCommand.equals(1)); + + // null -> returns false + assertFalse(loginAliceCommand.equals(null)); + + // different person -> returns false + assertFalse(loginAliceCommand.equals(loginBensonCommand)); + } + + +} From dc11ab2fbee388cbb19761efde4b777d845fac10 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 17:29:31 +0800 Subject: [PATCH 158/739] SignUpCommandTest.java --- .../logic/commands/SignUpCommandTest.java | 98 +++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 src/test/java/seedu/address/logic/commands/SignUpCommandTest.java diff --git a/src/test/java/seedu/address/logic/commands/SignUpCommandTest.java b/src/test/java/seedu/address/logic/commands/SignUpCommandTest.java new file mode 100644 index 000000000000..3acb36382c0d --- /dev/null +++ b/src/test/java/seedu/address/logic/commands/SignUpCommandTest.java @@ -0,0 +1,98 @@ +package seedu.address.logic.commands; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_NAME_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_NAME_BENSON; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_PASSWORD_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_PASSWORD_BENSON; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_USERNAME_ALICE; +import static seedu.address.logic.commands.CommandTestUtil.VALID_MANAGER_USERNAME_BENSON; +import static seedu.address.testutil.TypicalPersons.getTypicalAddressBook; +import static seedu.address.testutil.user.TypicalUsers.BENSON_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.HOON_MANAGER; +import static seedu.address.testutil.user.TypicalUsers.getTypicalUsersList; + +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; + +import seedu.address.logic.CommandHistory; +import seedu.address.logic.commands.exceptions.CommandException; +import seedu.address.model.Model; +import seedu.address.model.ModelManager; +import seedu.address.model.UserPrefs; +import seedu.address.model.user.Manager; +import seedu.address.model.user.User; +import seedu.address.testutil.user.UserBuilder; + +public class SignUpCommandTest { + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + private CommandHistory commandHistory = new CommandHistory(); + private Model model = new ModelManager(getTypicalAddressBook(), getTypicalUsersList(), new UserPrefs()); + private static final CommandHistory EMPTY_COMMAND_HISTORY = new CommandHistory(); + + @Test + public void constructor_nullUser_throwsNullPointerException() { + thrown.expect(NullPointerException.class); + new SignUpCommand(null); + } + + @Test + public void execute_userAcceptedByModel_SignUpSuccessful() throws Exception { + User validUser = new UserBuilder(HOON_MANAGER).build(); + + CommandResult commandResult = new SignUpCommand((Manager) validUser).execute(model, commandHistory); + + assertEquals(String.format(SignUpCommand.MESSAGE_SUCCESS, validUser), commandResult.feedbackToUser); + assertEquals(EMPTY_COMMAND_HISTORY, commandHistory); + } + + @Test + public void execute_duplicateUser_SignUpFailure() throws Exception { + User duplicateUser = new UserBuilder(BENSON_MANAGER).build(); + thrown.expect(CommandException.class); + thrown.expectMessage(SignUpCommand.MESSAGE_DUPLICATE_USER); + CommandResult commandResult = new SignUpCommand((Manager) duplicateUser).execute(model, commandHistory); + } + + @Test + public void equals() { + User alice = new UserBuilder() + .withName(VALID_MANAGER_NAME_ALICE) + .withUsername(VALID_MANAGER_USERNAME_ALICE) + .withPassword(VALID_MANAGER_PASSWORD_ALICE) + .build(); + + User benson = new UserBuilder() + .withName(VALID_MANAGER_NAME_BENSON) + .withUsername(VALID_MANAGER_USERNAME_BENSON) + .withPassword(VALID_MANAGER_PASSWORD_BENSON) + .build(); + + SignUpCommand signUpAliceCommand = new SignUpCommand((Manager) alice); + SignUpCommand signUpBensonCommand = new SignUpCommand((Manager) benson); + + // same object -> returns true + assertTrue(signUpAliceCommand.equals(signUpAliceCommand)); + + // same values -> returns true + SignUpCommand signUpAliceCommandCopy = new SignUpCommand((Manager) alice); + assertTrue(signUpAliceCommand.equals(signUpAliceCommandCopy)); + + // different types -> returns false + assertFalse(signUpAliceCommandCopy.equals(1)); + + // null -> returns false + assertFalse(signUpAliceCommandCopy.equals(null)); + + // different person -> returns false + assertFalse(signUpAliceCommandCopy.equals(signUpBensonCommand)); + } + + +} From f2b0135233ee598f14d75e5de76e401cef8243b2 Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 17:34:30 +0800 Subject: [PATCH 159/739] Update docs profile image extension to png --- docs/images/{jinyingtan.jpg => jinyingtan.png} | Bin docs/images/{juxd.jpg => juxd.png} | Bin docs/images/{kohchihao.jpg => kohchihao.png} | Bin docs/images/{monmanuela.jpg => monmanuela.png} | Bin 4 files changed, 0 insertions(+), 0 deletions(-) rename docs/images/{jinyingtan.jpg => jinyingtan.png} (100%) rename docs/images/{juxd.jpg => juxd.png} (100%) rename docs/images/{kohchihao.jpg => kohchihao.png} (100%) rename docs/images/{monmanuela.jpg => monmanuela.png} (100%) diff --git a/docs/images/jinyingtan.jpg b/docs/images/jinyingtan.png similarity index 100% rename from docs/images/jinyingtan.jpg rename to docs/images/jinyingtan.png diff --git a/docs/images/juxd.jpg b/docs/images/juxd.png similarity index 100% rename from docs/images/juxd.jpg rename to docs/images/juxd.png diff --git a/docs/images/kohchihao.jpg b/docs/images/kohchihao.png similarity index 100% rename from docs/images/kohchihao.jpg rename to docs/images/kohchihao.png diff --git a/docs/images/monmanuela.jpg b/docs/images/monmanuela.png similarity index 100% rename from docs/images/monmanuela.jpg rename to docs/images/monmanuela.png From fd441e003d6b310f98a4248725944843cfd2c65c Mon Sep 17 00:00:00 2001 From: Marcus Koh Date: Tue, 2 Oct 2018 17:44:50 +0800 Subject: [PATCH 160/739] AboutUs.adoc: Update with new profile image --- docs/AboutUs.adoc | 10 +++++----- docs/images/{rrtheonlyone.jpg => rrtheonlyone.png} | Bin 2 files changed, 5 insertions(+), 5 deletions(-) rename docs/images/{rrtheonlyone.jpg => rrtheonlyone.png} (100%) diff --git a/docs/AboutUs.adoc b/docs/AboutUs.adoc index fde5866be2be..235768d57455 100644 --- a/docs/AboutUs.adoc +++ b/docs/AboutUs.adoc @@ -11,7 +11,7 @@ We are a team based in the http://www.comp.nus.edu.sg[School of Computing, Natio == Project Team === Rahul -image::rrtheonlyone.jpg[width="150", align="left"] +image::rrtheonlyone.png[width="150", align="left"] {empty}[https://github.com/rrtheonlyone[github]] [https://www.linkedin.com/in/rahul-rajesh-979919110/[portfolio]] Roles: Integration, code quality @@ -19,7 +19,7 @@ Roles: Integration, code quality ''' === Julius Sander -image::juxd.jpg[width="150", align="left"] +image::juxd.png[width="150", align="left"] {empty}[https://github.com/juxd[github]] [<>] Roles: Code quality and testing + @@ -27,7 +27,7 @@ Roles: Code quality and testing + ''' === Monika Manuela -image::monmanuela.jpg[width="150", align="left"] +image::monmanuela.png[width="150", align="left"] {empty}[http://github.com/yijinl[github]] [https://www.linkedin.com/in/monika-manuela-hengki-a9383a54[portfolio]] Roles: Team lead, UI + @@ -35,7 +35,7 @@ Roles: Team lead, UI + ''' === Koh Chi Hao -image::kohchihao.jpg[width="150", align="left"] +image::kohchihao.png[width="150", align="left"] {empty}[https://github.com/kohchihao[github]] [https://www.kohchihao.com/[portfolio]] Roles: Scheduling and tracking deliverables and deadlines + @@ -43,7 +43,7 @@ Roles: Scheduling and tracking deliverables and deadlines + ''' === Tan Jin Ying -image::jinyingtan.jpg[width="150", align="left"] +image::jinyingtan.png[width="150", align="left"] {empty}[https://github.com/jinyingtan[github]] [https://www.tanjinying.com/[portfolio]] Role: Documentation, UI + diff --git a/docs/images/rrtheonlyone.jpg b/docs/images/rrtheonlyone.png similarity index 100% rename from docs/images/rrtheonlyone.jpg rename to docs/images/rrtheonlyone.png From ab94dd367ebe46a78f4c6aa15d70681170a84789 Mon Sep 17 00:00:00 2001 From: Monika Date: Tue, 2 Oct 2018 19:48:16 +0800 Subject: [PATCH 161/739] Configure storage for Route --- src/main/java/seedu/address/MainApp.java | 5 +- .../events/model/RouteListChangedEvent.java | 19 +++++++ .../java/seedu/address/model/UserPrefs.java | 9 ++++ .../java/seedu/address/storage/Storage.java | 18 ++++++- .../seedu/address/storage/StorageManager.java | 49 ++++++++++++++++++- 5 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 src/main/java/seedu/address/commons/events/model/RouteListChangedEvent.java diff --git a/src/main/java/seedu/address/MainApp.java b/src/main/java/seedu/address/MainApp.java index ecdd043a4f81..cce295132567 100644 --- a/src/main/java/seedu/address/MainApp.java +++ b/src/main/java/seedu/address/MainApp.java @@ -32,6 +32,8 @@ import seedu.address.storage.StorageManager; import seedu.address.storage.UserPrefsStorage; import seedu.address.storage.XmlAddressBookStorage; +import seedu.address.storage.route.RouteListStorage; +import seedu.address.storage.route.XmlRouteListStorage; import seedu.address.ui.Ui; import seedu.address.ui.UiManager; @@ -63,7 +65,8 @@ public void init() throws Exception { UserPrefsStorage userPrefsStorage = new JsonUserPrefsStorage(config.getUserPrefsFilePath()); userPrefs = initPrefs(userPrefsStorage); AddressBookStorage addressBookStorage = new XmlAddressBookStorage(userPrefs.getAddressBookFilePath()); - storage = new StorageManager(addressBookStorage, userPrefsStorage); + RouteListStorage routeListStorage = new XmlRouteListStorage(userPrefs.getRouteListFilePath()); + storage = new StorageManager(addressBookStorage, routeListStorage, userPrefsStorage); initLogging(config); diff --git a/src/main/java/seedu/address/commons/events/model/RouteListChangedEvent.java b/src/main/java/seedu/address/commons/events/model/RouteListChangedEvent.java new file mode 100644 index 000000000000..30fb77c87d3f --- /dev/null +++ b/src/main/java/seedu/address/commons/events/model/RouteListChangedEvent.java @@ -0,0 +1,19 @@ +package seedu.address.commons.events.model; + +import seedu.address.commons.events.BaseEvent; +import seedu.address.model.route.ReadOnlyRouteList; + +/** Indicates the AddressBook in the model has changed*/ +public class RouteListChangedEvent extends BaseEvent { + + public final ReadOnlyRouteList data; + + public RouteListChangedEvent(ReadOnlyRouteList data) { + this.data = data; + } + + @Override + public String toString() { + return "number of routes " + data.getRouteList().size(); + } +} diff --git a/src/main/java/seedu/address/model/UserPrefs.java b/src/main/java/seedu/address/model/UserPrefs.java index 980b2b388852..69b88e572107 100644 --- a/src/main/java/seedu/address/model/UserPrefs.java +++ b/src/main/java/seedu/address/model/UserPrefs.java @@ -13,6 +13,7 @@ public class UserPrefs { private GuiSettings guiSettings; private Path addressBookFilePath = Paths.get("data" , "addressbook.xml"); + private Path routeListFilePath = Paths.get("data", "routelist.xml"); public UserPrefs() { setGuiSettings(500, 500, 0, 0); @@ -38,6 +39,14 @@ public void setAddressBookFilePath(Path addressBookFilePath) { this.addressBookFilePath = addressBookFilePath; } + public Path getRouteListFilePath() { + return routeListFilePath; + } + + public void setRouteListFilePath(Path routeListFilePath) { + this.routeListFilePath = routeListFilePath; + } + @Override public boolean equals(Object other) { if (other == this) { diff --git a/src/main/java/seedu/address/storage/Storage.java b/src/main/java/seedu/address/storage/Storage.java index 28791127999b..5bd3bc3e2b20 100644 --- a/src/main/java/seedu/address/storage/Storage.java +++ b/src/main/java/seedu/address/storage/Storage.java @@ -5,15 +5,18 @@ import java.util.Optional; import seedu.address.commons.events.model.AddressBookChangedEvent; +import seedu.address.commons.events.model.RouteListChangedEvent; import seedu.address.commons.events.storage.DataSavingExceptionEvent; import seedu.address.commons.exceptions.DataConversionException; import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.UserPrefs; +import seedu.address.model.route.ReadOnlyRouteList; +import seedu.address.storage.route.RouteListStorage; /** * API of the Storage component */ -public interface Storage extends AddressBookStorage, UserPrefsStorage { +public interface Storage extends AddressBookStorage, RouteListStorage, UserPrefsStorage { @Override Optional readUserPrefs() throws DataConversionException, IOException; @@ -36,4 +39,17 @@ public interface Storage extends AddressBookStorage, UserPrefsStorage { * Raises {@link DataSavingExceptionEvent} if there was an error during saving. */ void handleAddressBookChangedEvent(AddressBookChangedEvent abce); + + @Override + Path getRouteListFilePath(); + + @Override + Optional readRouteList() throws DataConversionException, IOException; + + /** + * Saves the current version of the Route List to the hard disk. + * Creates the data file if it is missing. + * Raises {@link DataSavingExceptionEvent} if there was an error during saving. + */ + void handleRouteListChangedEvent(RouteListChangedEvent abce); } diff --git a/src/main/java/seedu/address/storage/StorageManager.java b/src/main/java/seedu/address/storage/StorageManager.java index b0df908a76a7..529b504d0e38 100644 --- a/src/main/java/seedu/address/storage/StorageManager.java +++ b/src/main/java/seedu/address/storage/StorageManager.java @@ -10,10 +10,13 @@ import seedu.address.commons.core.ComponentManager; import seedu.address.commons.core.LogsCenter; import seedu.address.commons.events.model.AddressBookChangedEvent; +import seedu.address.commons.events.model.RouteListChangedEvent; import seedu.address.commons.events.storage.DataSavingExceptionEvent; import seedu.address.commons.exceptions.DataConversionException; import seedu.address.model.ReadOnlyAddressBook; import seedu.address.model.UserPrefs; +import seedu.address.model.route.ReadOnlyRouteList; +import seedu.address.storage.route.RouteListStorage; /** * Manages storage of AddressBook data in local storage. @@ -22,12 +25,15 @@ public class StorageManager extends ComponentManager implements Storage { private static final Logger logger = LogsCenter.getLogger(StorageManager.class); private AddressBookStorage addressBookStorage; + private RouteListStorage routeListStorage; private UserPrefsStorage userPrefsStorage; - public StorageManager(AddressBookStorage addressBookStorage, UserPrefsStorage userPrefsStorage) { + public StorageManager(AddressBookStorage addressBookStorage, RouteListStorage routeListStorage, + UserPrefsStorage userPrefsStorage) { super(); this.addressBookStorage = addressBookStorage; + this.routeListStorage = routeListStorage; this.userPrefsStorage = userPrefsStorage; } @@ -90,4 +96,45 @@ public void handleAddressBookChangedEvent(AddressBookChangedEvent event) { } } + // ================ RouteList methods ============================== + + @Override + public Path getRouteListFilePath() { + return routeListStorage.getRouteListFilePath(); + } + + @Override + public Optional readRouteList() throws DataConversionException, IOException { + return readRouteList(routeListStorage.getRouteListFilePath()); + } + + @Override + public Optional readRouteList(Path filePath) throws DataConversionException, IOException { + logger.fine("Attempting to read data from file: " + filePath); + return routeListStorage.readRouteList(filePath); + } + + @Override + public void saveRouteList(ReadOnlyRouteList routeList) throws IOException { + saveRouteList(routeList, routeListStorage.getRouteListFilePath()); + } + + @Override + public void saveRouteList(ReadOnlyRouteList routeList, Path filePath) throws IOException { + logger.fine("Attempting to write to data file: " + filePath); + routeListStorage.saveRouteList(routeList, filePath); + } + + + @Override + @Subscribe + public void handleRouteListChangedEvent(RouteListChangedEvent event) { + logger.info(LogsCenter.getEventHandlingLogMessage(event, "Local data changed, saving to file")); + try { + saveRouteList(event.data); + } catch (IOException e) { + raise(new DataSavingExceptionEvent(e)); + } + } + } From 45642e58960bcd4a67e35b41639b580cf7ac9a1c Mon Sep 17 00:00:00 2001 From: Rahul Rajesh Date: Tue, 2 Oct 2018 20:00:41 +0800 Subject: [PATCH 162/739] Add tests for ui changes --- .../ui/PersonPanelSelectionChangedEvent.java | 26 -- .../seedu/address/ui/PersonListPanel.java | 83 ----- ...onCardHandle.java => OrderCardHandle.java} | 40 +-- ...lHandle.java => OrderListPanelHandle.java} | 74 ++--- .../address/model/person/PersonTest.java | 99 ------ .../model/person/UniquePersonListTest.java | 185 ----------- .../address/storage/XmlAdaptedOrderTest.java | 92 ++++++ .../address/storage/XmlAdaptedPersonTest.java | 110 ------- .../address/testutil/AddressBookBuilder.java | 34 -- .../testutil/EditPersonDescriptorBuilder.java | 87 ----- .../seedu/address/ui/BrowserPanelTest.java | 12 +- .../java/seedu/address/ui/GuiUnitTest.java | 2 +- .../java/seedu/address/ui/OrderCardTest.java | 65 ++++ .../seedu/address/ui/OrderListPanelTest.java | 124 ++++++++ .../java/seedu/address/ui/PersonCardTest.java | 72 ----- .../seedu/address/ui/PersonListPanelTest.java | 124 -------- .../seedu/address/ui/StatusBarFooterTest.java | 6 +- .../address/ui/testutil/GuiTestAssert.java | 46 ++- .../systemtests/EditCommandSystemTest.java | 299 ------------------ .../systemtests/FindCommandSystemTest.java | 195 ------------ ...stemTest.java => OrderBookSystemTest.java} | 80 +++-- 21 files changed, 403 insertions(+), 1452 deletions(-) delete mode 100644 src/main/java/seedu/address/commons/events/ui/PersonPanelSelectionChangedEvent.java delete mode 100644 src/main/java/seedu/address/ui/PersonListPanel.java rename src/test/java/guitests/guihandles/{PersonCardHandle.java => OrderCardHandle.java} (57%) rename src/test/java/guitests/guihandles/{PersonListPanelHandle.java => OrderListPanelHandle.java} (53%) delete mode 100644 src/test/java/seedu/address/model/person/PersonTest.java delete mode 100644 src/test/java/seedu/address/model/person/UniquePersonListTest.java create mode 100644 src/test/java/seedu/address/storage/XmlAdaptedOrderTest.java delete mode 100644 src/test/java/seedu/address/storage/XmlAdaptedPersonTest.java delete mode 100644 src/test/java/seedu/address/testutil/AddressBookBuilder.java delete mode 100644 src/test/java/seedu/address/testutil/EditPersonDescriptorBuilder.java create mode 100644 src/test/java/seedu/address/ui/OrderCardTest.java create mode 100644 src/test/java/seedu/address/ui/OrderListPanelTest.java delete mode 100644 src/test/java/seedu/address/ui/PersonCardTest.java delete mode 100644 src/test/java/seedu/address/ui/PersonListPanelTest.java delete mode 100644 src/test/java/systemtests/EditCommandSystemTest.java delete mode 100644 src/test/java/systemtests/FindCommandSystemTest.java rename src/test/java/systemtests/{AddressBookSystemTest.java => OrderBookSystemTest.java} (75%) diff --git a/src/main/java/seedu/address/commons/events/ui/PersonPanelSelectionChangedEvent.java b/src/main/java/seedu/address/commons/events/ui/PersonPanelSelectionChangedEvent.java deleted file mode 100644 index c5c8b9ce90ed..000000000000 --- a/src/main/java/seedu/address/commons/events/ui/PersonPanelSelectionChangedEvent.java +++ /dev/null @@ -1,26 +0,0 @@ -package seedu.address.commons.events.ui; - -import seedu.address.commons.events.BaseEvent; -import seedu.address.model.person.Person; - -/** - * Represents a selection change in the Person List Panel - */ -public class PersonPanelSelectionChangedEvent extends BaseEvent { - - - private final Person newSelection; - - public PersonPanelSelectionChangedEvent(Person newSelection) { - this.newSelection = newSelection; - } - - @Override - public String toString() { - return getClass().getSimpleName(); - } - - public Person getNewSelection() { - return newSelection; - } -} diff --git a/src/main/java/seedu/address/ui/PersonListPanel.java b/src/main/java/seedu/address/ui/PersonListPanel.java deleted file mode 100644 index 80080adb4305..000000000000 --- a/src/main/java/seedu/address/ui/PersonListPanel.java +++ /dev/null @@ -1,83 +0,0 @@ -package seedu.address.ui; - -import java.util.logging.Logger; - -import com.google.common.eventbus.Subscribe; - -import javafx.application.Platform; -import javafx.collections.ObservableList; -import javafx.fxml.FXML; -import javafx.scene.control.ListCell; -import javafx.scene.control.ListView; -import javafx.scene.layout.Region; -import seedu.address.commons.core.LogsCenter; -import seedu.address.commons.events.ui.JumpToListRequestEvent; -import seedu.address.commons.events.ui.PersonPanelSelectionChangedEvent; -import seedu.address.model.person.Person; - -/** - * Panel containing the list of persons. - */ -public class PersonListPanel extends UiPart { - private static final String FXML = "PersonListPanel.fxml"; - private final Logger logger = LogsCenter.getLogger(PersonListPanel.class); - - @FXML - private ListView personListView; - - public PersonListPanel(ObservableList personList) { - super(FXML); - setConnections(personList); - registerAsAnEventHandler(this); - } - - private void setConnections(ObservableList personList) { - personListView.setItems(personList); - personListView.setCellFactory(listView -> new PersonListViewCell()); - setEventHandlerForSelectionChangeEvent(); - } - - private void setEventHandlerForSelectionChangeEvent() { - personListView.getSelectionModel().selectedItemProperty() - .addListener((observable, oldValue, newValue) -> { - if (newValue != null) { - logger.fine("Selection in person list panel changed to : '" + newValue + "'"); - raise(new PersonPanelSelectionChangedEvent(newValue)); - } - }); - } - - /** - * Scrolls to the {@code PersonCard} at the {@code index} and selects it. - */ - private void scrollTo(int index) { - Platform.runLater(() -> { - personListView.scrollTo(index); - personListView.getSelectionModel().clearAndSelect(index); - }); - } - - @Subscribe - private void handleJumpToListRequestEvent(JumpToListRequestEvent event) { - logger.info(LogsCenter.getEventHandlingLogMessage(event)); - scrollTo(event.targetIndex); - } - - /** - * Custom {@code ListCell} that displays the graphics of a {@code Person} using a {@code PersonCard}. - */ - class PersonListViewCell extends ListCell { - @Override - protected void updateItem(Person person, boolean empty) { - super.updateItem(person, empty); - - if (empty || person == null) { - setGraphic(null); - setText(null); - } else { - setGraphic(new PersonCard(person, getIndex() + 1).getRoot()); - } - } - } - -} diff --git a/src/test/java/guitests/guihandles/PersonCardHandle.java b/src/test/java/guitests/guihandles/OrderCardHandle.java similarity index 57% rename from src/test/java/guitests/guihandles/PersonCardHandle.java rename to src/test/java/guitests/guihandles/OrderCardHandle.java index 1789735e49a8..2b3aaa4d08ed 100644 --- a/src/test/java/guitests/guihandles/PersonCardHandle.java +++ b/src/test/java/guitests/guihandles/OrderCardHandle.java @@ -8,25 +8,23 @@ import javafx.scene.Node; import javafx.scene.control.Label; import javafx.scene.layout.Region; -import seedu.address.model.person.Person; +import seedu.address.model.order.Order; /** - * Provides a handle to a person card in the person list panel. + * Provides a handle to a order card in the order list panel. */ -public class PersonCardHandle extends NodeHandle { +public class OrderCardHandle extends NodeHandle { private static final String ID_FIELD_ID = "#id"; private static final String NAME_FIELD_ID = "#name"; private static final String ADDRESS_FIELD_ID = "#address"; private static final String PHONE_FIELD_ID = "#phone"; - private static final String EMAIL_FIELD_ID = "#email"; - private static final String TAGS_FIELD_ID = "#tags"; + private static final String FOOD_FIELD_ID = "#food"; private final Label idLabel; private final Label nameLabel; private final Label addressLabel; private final Label phoneLabel; - private final Label emailLabel; - private final List

$k`o&0)Hv2ZNtYb2Mz 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