From 3fb5f9309ce351cbd1c0df96938c77df85f48f5a Mon Sep 17 00:00:00 2001 From: Mitch Malvin <89574448+mitchmalvin1@users.noreply.github.com> Date: Fri, 3 Mar 2023 10:27:58 +0800 Subject: [PATCH 001/311] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f82e2494b7..f1a2b4e12d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This is a project template for a greenfield Java project. It's named after the J ## Setting up in Intellij -Prerequisites: JDK 11 (use the exact version), update Intellij to the most recent version. +Prerequisites: JDK 11 (use the exact version), update Intellij to the most recent version.. 1. **Ensure Intellij JDK 11 is defined as an SDK**, as described [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk) -- this step is not needed if you have used JDK 11 in a previous Intellij project. 1. **Import the project _as a Gradle project_**, as described [here](https://se-education.org/guides/tutorials/intellijImportGradleProject.html). From c9ce8d7c0dfd20585484bcab0473c4d05d5a1de7 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Wed, 8 Mar 2023 21:31:27 +0800 Subject: [PATCH 002/311] add basic UI feature --- src/main/java/Inka.class | Bin 0 -> 492 bytes src/main/java/Inka.java | 20 +++++++++++ src/main/java/utils/UserInterface.class | Bin 0 -> 1488 bytes src/main/java/utils/UserInterface.java | 46 ++++++++++++++++++++++++ 4 files changed, 66 insertions(+) create mode 100644 src/main/java/Inka.class create mode 100644 src/main/java/Inka.java create mode 100644 src/main/java/utils/UserInterface.class create mode 100644 src/main/java/utils/UserInterface.java diff --git a/src/main/java/Inka.class b/src/main/java/Inka.class new file mode 100644 index 0000000000000000000000000000000000000000..0662acae7ffa0cea163c85fd399cd4c803d51bff GIT binary patch literal 492 zcmZvZ%}T>S6otQmu{ue=BPj#+{3b3k9W6bWs(=Ra&QIYMaV55qvB`Td?2* z_)y}VSSW}D?mc(rd~*`0UTk+h7I4uvJDNs1rsYut*WqQV%??{Uxf`5n+#ea z7|M+#7X49hGvcxy#awp6Hm@;ck3}Tn69&Dqf6HK;4Iemz*ANlEOa?73uftZKR&<#} zv^@v~CBJgt=!MT=&<~?-(2S*sx;2H{&0!+j{9Gu+sz;CEf$}*hz-1`?GlGLW90yx) z9c(L;p(qCnN*Cu%u3A0bju{G1)GWS`oX6CZA(z&tFC4q{!#3Ry!=gHqlunu&Q}n1h zOlzQ6oq$!R(C#MC-(kF_Op&5X4j=;qSt3m0Xo?vfP-e92Ro`HYk@-#8zp%P>mp%^` gjZvDxd-O00&QD=d*W4J^98|9cGTW(riL{3D52z$jr~m)} literal 0 HcmV?d00001 diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java new file mode 100644 index 0000000000..d24210d588 --- /dev/null +++ b/src/main/java/Inka.java @@ -0,0 +1,20 @@ +import utils.UserInterface; + +public class Inka { + private final UserInterface ui; + public Inka() { + ui = new UserInterface(); + } + + public void run() { + ui.printGreeting(); + + //while parser.execute is running code should be placed here + + ui.printBye(); + } + + public static void main(String[] args) { + new Inka().run(); + } +} diff --git a/src/main/java/utils/UserInterface.class b/src/main/java/utils/UserInterface.class new file mode 100644 index 0000000000000000000000000000000000000000..c340ad59c60084406b9c6c4f93964a01514003fd GIT binary patch literal 1488 zcmZ`(3vb(06#j1di0ip;TDJ1o4SV2ZTMY~turf%yu0*T4Y3Yh4MT*??ws<&pWjkY) z`e*nDFhM7Q#1G&{A--crNhWnxa_)J4=bYY8jr5Pw=UY&v4tO`Ev_jSoqSy9SdKT@wLK*?Z(b#dwX+dYxf5Q)lit; zh@&*~qioL)duEK;4iv1$&ck}U{$y8SVf(rN!uLWyI`W!X5=2LL70T<+HVbn(?f6k- z5{1RWv6ls**DRFuoLmc{AiJk9=2rI<#y8>vqcFQ2L}sVg-8aduzaLU#ADL_;?sol% z>ECgy=VhHbX8KG*S$58ECB|edi52Ja`iVd_<6hD+4+6nmc$%7|5oIPh^gCu%dU5a` z-dC8<`x-5`jBgy=#hN&L>);Yr9NdF;@EyMAWwqI(xToG5m}S%*tYf2$`wlkoz(Gae ze_d_2+q(Y@IZ@cBB&VA8Hjh46co!y5yjo)NwAYg0)*wp!MbvstYmXqh)wWL=o&Tv4 zPPg0~U3<28=1(g})x$&K>5nGt#9gDaST~}deO=K_|3pWz?#4;3J@kW+_p8lIznf}5 zE!=(y!cgxUeZq^@VVoRjzBZluF9Iqm3Wr5+nuW`+XiZpcyP|5jQbtwyc2&BN_H>mN zmz1*bWY`*cJMYCKrI7P9xwI>8g61o)=sN4keln~n&GccM6qOZ4bEGO27Bx4V<460? zO(%Op)jUZv(^V)1k-}0jeL?IsqT^o1u{VB~!+g;_*C2y!MdoFHG{@o|v4go4 z@(o#{>oQ>^$z|w1fSdwg)&9W5876-lL`~-U6;dt_sidnBNxWxXp}b(t9h|{F!-Zic z`SyW1rJ!;cgM`D$|s3?SE`AIGz9i literal 0 HcmV?d00001 diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java new file mode 100644 index 0000000000..fdc32a0847 --- /dev/null +++ b/src/main/java/utils/UserInterface.java @@ -0,0 +1,46 @@ +package utils; + +import java.util.Scanner; + +public class UserInterface { + private static final int LINE_LENGTH = 100; + private static final String INKA_ART = + ".___ __ \n" + + "| | ____ | | _______ \n" + + "| |/ \\| |/ /\\__ \\ \n" + + "| | | \\ < / __ \\_\n" + + "|___|___| /__|_ \\(____ /\n" + + " \\/ \\/ \\/ "; + + private static final String BYE_ART = + " ____ _ _ ____ _ \n" + + "( _ \\( \\/ )( __) / \\ \n" + + " ) _ ( ) / ) _) \\_/ \n" + + "(____/(__/ (____) (_) "; + private final Scanner scanner; + public UserInterface() { + scanner = new Scanner(System.in); + } + + public String getCommand() { + return scanner.nextLine(); + } + + public void printLine() { + System.out.println("_".repeat(LINE_LENGTH)); + } + + public void printGreeting() { + printLine(); + System.out.println(INKA_ART); + System.out.println("Welcome to Inka ! Say no more to failing exams as Inka will be your lord and saviour!"); + printLine(); + } + + public void printBye() { + printLine(); + System.out.println(BYE_ART); + System.out.println("\n Bye! All the best for your exams man!!!"); + printLine(); + } +} From fb3aa6911ee970d964c7e653f8d88d3546fa07d0 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Wed, 8 Mar 2023 21:39:03 +0800 Subject: [PATCH 003/311] abstract out constant strings into enum --- src/main/java/utils/StringArt.class | Bin 0 -> 1221 bytes src/main/java/utils/StringArt.java | 22 ++++++++++++++++++++++ src/main/java/utils/UserInterface.class | Bin 1488 -> 1586 bytes src/main/java/utils/UserInterface.java | 4 ++-- 4 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 src/main/java/utils/StringArt.class create mode 100644 src/main/java/utils/StringArt.java diff --git a/src/main/java/utils/StringArt.class b/src/main/java/utils/StringArt.class new file mode 100644 index 0000000000000000000000000000000000000000..581a35afa6535110e882ba7fa2b8e515796af6b6 GIT binary patch literal 1221 zcmZuwZBG+H5Pr6IZLim}zzHZX>MEdj<>drLKF|=5)P&eTVwHq=NpsXfjvPnQ7e4W4 z{09nAj7Gy}f0S`%+mr^nX=mr)WkD5X^f`fnixQy#VkkW z3=A5WH%VP!+cRJrc+To#8cPED*7n;CfuT~X8Ac7S+^mQ3;YPi=DxkgIE0PTAO#!=f z6r2WL6vT%e3<1*9yBnns#WICI_Q_A322rcl5EypcesO*Csn)nc}C()QoKT2M{A?oA&*f$hdk-|oa}eA7|*7Z1t~o$BK?YaM%n65 zF4m;)sOr))8L5`9s>%|h#`T4HXBK;_}3=Gsx%#T`3@(#tXEv_%Y>v$5r-t% ztdl}yNHv#=5=6O?(X^`eMSTH8S3j}e0+d*B1WDe9v(0_&eLWDGPsBP5Evut z3GKYhbBOOqTtWLnmcTg4l!|GDpTJ}npHN=Y*7HA*yn=okpWrDVq3X{;qmF=;pPjr! zDnI`X>95@mIf{b#rHEmc_&p*k0SN<-6*Fe|4oQ;0(l6+HwxQXXOPCkPD$~;KJIc%@ je^XdHN4C7DpVLdffVkO*ZzxO5H0sgrG=*uZoWRU~*<<}Y literal 0 HcmV?d00001 diff --git a/src/main/java/utils/StringArt.java b/src/main/java/utils/StringArt.java new file mode 100644 index 0000000000..0629ea9428 --- /dev/null +++ b/src/main/java/utils/StringArt.java @@ -0,0 +1,22 @@ +package utils; + +public enum StringArt { + INKA( + ".___ __ \n" + + "| | ____ | | _______ \n" + + "| |/ \\| |/ /\\__ \\ \n" + + "| | | \\ < / __ \\_\n" + + "|___|___| /__|_ \\(____ /\n" + + " \\/ \\/ \\/ "), + BYE( + " ____ _ _ ____ _ \n" + + "( _ \\( \\/ )( __) / \\ \n" + + " ) _ ( ) / ) _) \\_/ \n" + + "(____/(__/ (____) (_) " + ); + + public final String art; + StringArt(String art) { + this.art = art; + } +} diff --git a/src/main/java/utils/UserInterface.class b/src/main/java/utils/UserInterface.class index c340ad59c60084406b9c6c4f93964a01514003fd..4a4133e3bc473f66ea3b532645e890570832878b 100644 GIT binary patch delta 609 zcmZ{g%}!HM6otQYd+WKq9HbPB<*%g_5Xw(gL{L3P;jWMRibWp2P<~kzx z1sw1I+89VQ@d1njpTGxkVBDuBKuDOJbJkjWuf5m#)zUCKKmLCG4$M&UNieF(#~5SW z$6+Eyj7j?{SnjIFHO+OODQ@^obJG`jCdMqc>~Y&;&fa%C?rQGsZ!X0><`sJJX>m8$ ze&VsP|M6%lO-9lFs{F28cw4W$E|i{^tJN1ZO<-8$z9G#6Loa=XB00lDmcsX{xBro0 znH9~dVU2aeAQ{buVUsPxV^ZNWXD4ddW-Clbg7BL<2#=gfxEuMsr)aaI-V{ppTBZ6j zsMQtj^2TZ)i>#ed<`j{#Er`h4WF=uje#fPo4lbcc3UcTae3{fS?h@R63in8tM3CAj z%9BVLDeVtGxPvMiesYs~fLxRL>2@WvQg%TQVxerVrt-(l>{-QrKjP5ZWD7mI5Uykd32q4oH$5aT$_gNH!c6b@*J%g$D5x&-QaX WN5wNQo@3%UE}j$Oc|~S9jQj&@H&$H$ delta 572 zcmZXQ%T7~K6o$WZS~#bN-EwV}Qn|I<4q#Po3UVn5%pd_`bYvP}z$GLQb&9V*&d3*V zst{5W2Rr~HXU>@M8peMUQV2}e+H39q|Mpt@)cmPix%l_{9GGA!ppjmWz6AXY1h|9= z5)9hYknIioJoP9BJmY!53q}H6kNS-HjQdRZy!3c={C+8L@a8`(d@QZ5AOH9@(nijq zai{#HT>SiLd#|{*QQqI*I`o({O!3;##rHz(IzGR*VF$VMMD?4 z=)nCR{dL|&>DX>G>dr=AW0%XiNN941lckAf99mSlq*Z5lRIQV$AK$6#rPj03)<~l< z6`w>`@xoENdMRRxX;CxMSxN_;R-vxVjeMM- zli#peA*fJyQuWvmM((6uaOfs?bYm>(!Wvt{3dWj~^4XkHw!K?MMmr#HoIHktexOIY l_R5~G&hY?Oe}ikdhs&d#EpI@)P`p9$hQu2dub{q5&wr`UK;i%Z diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index fdc32a0847..066021da1b 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -32,14 +32,14 @@ public void printLine() { public void printGreeting() { printLine(); - System.out.println(INKA_ART); + System.out.println(StringArt.INKA.art); System.out.println("Welcome to Inka ! Say no more to failing exams as Inka will be your lord and saviour!"); printLine(); } public void printBye() { printLine(); - System.out.println(BYE_ART); + System.out.println(StringArt.BYE.art); System.out.println("\n Bye! All the best for your exams man!!!"); printLine(); } From 5feb323778e5cc09dd21a5412c857d621c31ef95 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Wed, 8 Mar 2023 21:44:15 +0800 Subject: [PATCH 004/311] add userinterface and enums package --- src/main/java/Inka.class | Bin 492 -> 520 bytes src/main/java/Inka.java | 2 +- .../java/utils/{ => enums}/StringArt.class | Bin 1221 -> 1257 bytes .../java/utils/{ => enums}/StringArt.java | 2 +- .../{ => userinterface}/UserInterface.class | Bin 1586 -> 1612 bytes .../{ => userinterface}/UserInterface.java | 4 +++- 6 files changed, 5 insertions(+), 3 deletions(-) rename src/main/java/utils/{ => enums}/StringArt.class (59%) rename src/main/java/utils/{ => enums}/StringArt.java (96%) rename src/main/java/utils/{ => userinterface}/UserInterface.class (55%) rename src/main/java/utils/{ => userinterface}/UserInterface.java (96%) diff --git a/src/main/java/Inka.class b/src/main/java/Inka.class index 0662acae7ffa0cea163c85fd399cd4c803d51bff..9bd27479aa0ab79c1746eeab6bb59022bb1c5076 100644 GIT binary patch delta 56 ucmaFE+`%%zR#e%iv?Md9SUB!Oc6;F6-uymZH+5^F{Vwz9;W($r!` z1}P0qWK|Ql88T{54qz1FM$$T&k+EDx(SRMk;mN#=9FwIPOBt0XPh=FIypGY5l^6F-T69Vbx`nne4@C%&EY@%b>`>$e=p; zCad)1g{;bgDnM1L3<3;lK(*=&G7K7%ud+HxYXe1ffTFrUQ9YojK2VQ30|NsSg9ZSK CCMMkg delta 135 zcmX@Zvx#TJd`33m(vr-a;?0{GcQeWJgW3AQB}JKe>5fGuj0`NEe%_9Z41zu&naML* zrf`ZfurP=*2r-CHHe=Ogl$xBvYRoFfz{?;%c@C?Spb}74nL&U-g+YQrl|hC Date: Wed, 8 Mar 2023 22:08:56 +0800 Subject: [PATCH 005/311] fix indentation size pointed out by gradle --- .gitignore | 1 + build.gradle | 2 +- src/main/java/Inka.class | Bin 520 -> 520 bytes src/main/java/Inka.java | 2 +- .../utils/userinterface/UserInterface.class | Bin 1612 -> 1612 bytes .../utils/userinterface/UserInterface.java | 60 +++++++++--------- 6 files changed, 33 insertions(+), 32 deletions(-) diff --git a/.gitignore b/.gitignore index 2873e189e1..2b04b28136 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /.idea/ /out/ /*.iml +/*.class # Gradle build files /.gradle/ diff --git a/build.gradle b/build.gradle index d5e548e85f..8063a8adb8 100644 --- a/build.gradle +++ b/build.gradle @@ -29,7 +29,7 @@ test { } application { - mainClass = "seedu.duke.Duke" + mainClass = "Inka" } shadowJar { diff --git a/src/main/java/Inka.class b/src/main/java/Inka.class index 9bd27479aa0ab79c1746eeab6bb59022bb1c5076..18be76d743ed5955fa15c26d04e6b3e6f9b5e922 100644 GIT binary patch delta 25 ccmeBR>0p`Q%34~ST9i4_s|Ui^cw3hd0CZ^yX#fBK delta 25 ccmeBR>0p`Q${JdnTI4y=s|Ui^cw3hd0B)%W=>Px# diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index d1f2bdc58f..ecc77097f3 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,4 +1,4 @@ -import utils.UserInterface.UserInterface; +import utils.userinterface.UserInterface; public class Inka { private final UserInterface ui; diff --git a/src/main/java/utils/userinterface/UserInterface.class b/src/main/java/utils/userinterface/UserInterface.class index ddd850cb166fb71338fe9abcb68eec06fbf7bfdf..4640c265f645faa3007aab862df27e9db09ac3fe 100644 GIT binary patch delta 18 acmX@ZbB1TbGDg Date: Wed, 8 Mar 2023 22:22:55 +0800 Subject: [PATCH 006/311] fix I/O redirection test in text-ui-test --- text-ui-test/EXPECTED.TXT | 24 ++++++++++++++++-------- text-ui-test/input.txt | 1 - 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 892cb6cae7..79c073f18d 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,9 +1,17 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| +____________________________________________________________________________________________________ +.___ __ +| | ____ | | _______ +| |/ \| |/ /\__ \ +| | | \ < / __ \_ +|___|___| /__|_ \(____ / + \/ \/ \/ +Welcome to Inka ! Say no more to failing exams as Inka will be your lord and saviour! +____________________________________________________________________________________________________ +____________________________________________________________________________________________________ + ____ _ _ ____ _ +( _ \( \/ )( __) / \ + ) _ ( ) / ) _) \_/ +(____/(__/ (____) (_) -What is your name? -Hello James Gosling + Bye! All the best for your exams man!!! +____________________________________________________________________________________________________ diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index f6ec2e9f95..e69de29bb2 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +0,0 @@ -James Gosling \ No newline at end of file From a640031dd195eb8efb4969a300ac3daafcd32638 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 9 Mar 2023 12:00:09 +0800 Subject: [PATCH 007/311] add skeleton Card class --- src/main/java/Inka.java | 4 ++-- src/main/java/card/Card.java | 10 ++++++++++ 2 files changed, 12 insertions(+), 2 deletions(-) create mode 100644 src/main/java/card/Card.java diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index ecc77097f3..6abe3b2315 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -9,8 +9,8 @@ public Inka() { public void run() { ui.printGreeting(); - //while parser.execute is running code should be placed here - + //while parser.execute is running code should be placed here, + // String fullCommand = ui.getCommand(); ui.printBye(); } diff --git a/src/main/java/card/Card.java b/src/main/java/card/Card.java new file mode 100644 index 0000000000..0f4c73c4df --- /dev/null +++ b/src/main/java/card/Card.java @@ -0,0 +1,10 @@ +package card; + +//to be made into an abstract class containing a few types of Cards later, for now just a single Card will do +public class Card { + private int uuid ; //to be made into a hash later + private String question; + private String answer; + + //implement method such as toPrint() or any other appropriate method here +} From 3aa3c4b7800b9c3d53f4748b5e11d6e018c3cf5a Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 9 Mar 2023 12:03:45 +0800 Subject: [PATCH 008/311] add skeleton model package and CardList class --- src/main/java/{ => model}/card/Card.java | 2 +- src/main/java/model/cardlist/CardList.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) rename src/main/java/{ => model}/card/Card.java (94%) create mode 100644 src/main/java/model/cardlist/CardList.java diff --git a/src/main/java/card/Card.java b/src/main/java/model/card/Card.java similarity index 94% rename from src/main/java/card/Card.java rename to src/main/java/model/card/Card.java index 0f4c73c4df..1c734e49fd 100644 --- a/src/main/java/card/Card.java +++ b/src/main/java/model/card/Card.java @@ -1,4 +1,4 @@ -package card; +package model.card; //to be made into an abstract class containing a few types of Cards later, for now just a single Card will do public class Card { diff --git a/src/main/java/model/cardlist/CardList.java b/src/main/java/model/cardlist/CardList.java new file mode 100644 index 0000000000..4e65cb4fdc --- /dev/null +++ b/src/main/java/model/cardlist/CardList.java @@ -0,0 +1,12 @@ +package model.cardlist; + +import model.card.Card; +import java.util.ArrayList; + +public class CardList { + private ArrayList cards ; + + CardList() { + this.cards = new ArrayList<>(); + } +} From e5031e8314c5312fce5c2645921e59cefe76f934 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 9 Mar 2023 12:11:02 +0800 Subject: [PATCH 009/311] add skeleton code for parser --- src/main/java/Inka.class | Bin 520 -> 616 bytes src/main/java/Inka.java | 10 ++++++++-- src/main/java/utils/parser/Parser.class | Bin 0 -> 314 bytes src/main/java/utils/parser/Parser.java | 15 +++++++++++++++ 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 src/main/java/utils/parser/Parser.class create mode 100644 src/main/java/utils/parser/Parser.java diff --git a/src/main/java/Inka.class b/src/main/java/Inka.class index 18be76d743ed5955fa15c26d04e6b3e6f9b5e922..d8aee0ed39cdb6c7f81b1a1ccdb16355947c1109 100644 GIT binary patch literal 616 zcmah{%Syvg5Ir}Irb*L>)^~i>s?{#c(nUopN9=AJoonB?R0^&P+}Di*SE3`|xOlL^8ban$kTc+WkQ_f&N=BWJ_T9o1S3zpxai2H9zp9b%E5< z@`-@Hb#pES@^wFud+~KchDTnb%}y$e13q7SKGVq3S^d(x^W3%WZXMpl zVN-7VYQ)?PuDlh+voVOGK^ClD zGZM(&sdnwa1c9_m-jB@$%htB=s1kxr7?6UcEJ=*!^l93@SR iVvHloNrhh3aOMpbH)oz<_XgEZ0#YrElQhm+!^9W=a&$ca delta 316 zcmYk2y-EW?6otRpon+j}Ivf912=6+_6a!$1cM#k-(Bad5MD0L;L)i87*>%_DwP(fSg7hZHFT>9 zrkaslO-SFduMN{x401pVOIw5!r<)h_nX=JoQN3Zuw0=|jKRk+b93W^FWO~Qif(U7uKNn#ig8%>k diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 6abe3b2315..10ed577271 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,16 +1,22 @@ +import utils.parser.Parser; import utils.userinterface.UserInterface; public class Inka { private final UserInterface ui; + private final Parser parser; public Inka() { ui = new UserInterface(); + parser = new Parser(); } public void run() { ui.printGreeting(); - //while parser.execute is running code should be placed here, - // String fullCommand = ui.getCommand(); +// fill in the method here +// while(parser.getIsExecuting()) { +// String fullCommand = ui.getCommand(); +// } + ui.printBye(); } diff --git a/src/main/java/utils/parser/Parser.class b/src/main/java/utils/parser/Parser.class new file mode 100644 index 0000000000000000000000000000000000000000..583e71710e5a22b61d3412ccc4de14e2896d0d20 GIT binary patch literal 314 zcmYk0y-LJT5QWcV?R3+Nu!9t-w99m2Hm&qrLqb zfjU{;8Np;>D|6o6XQsZ^SxF}@OndepW}bL(wd(5JoZ3DUUh29r^}$j<>Ifb-B8=e* zX8f;g(uZN1{)7b6K9-icD$ Date: Thu, 9 Mar 2023 12:14:00 +0800 Subject: [PATCH 010/311] fix gradle error --- src/main/java/Inka.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 10ed577271..424003cd5e 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -12,10 +12,10 @@ public Inka() { public void run() { ui.printGreeting(); -// fill in the method here -// while(parser.getIsExecuting()) { -// String fullCommand = ui.getCommand(); -// } + //fill in the method here + //while(parser.getIsExecuting()) { + // String fullCommand = ui.getCommand(); + //} ui.printBye(); } From 6872fe265ed48c88402eed28e167cc5770ba011c Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 9 Mar 2023 12:17:55 +0800 Subject: [PATCH 011/311] fix more gradle error --- src/main/java/Inka.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 424003cd5e..247f96f2b9 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -12,10 +12,10 @@ public Inka() { public void run() { ui.printGreeting(); - //fill in the method here - //while(parser.getIsExecuting()) { - // String fullCommand = ui.getCommand(); - //} + //fill in the method here + //while(parser.getIsExecuting()) { + // String fullCommand = ui.getCommand(); + //} ui.printBye(); } From 87c9711701608774f29d08a51b3a0069e9c38f90 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 9 Mar 2023 16:52:30 +0800 Subject: [PATCH 012/311] remove default duke folder --- src/main/java/seedu/duke/Duke.java | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 src/main/java/seedu/duke/Duke.java diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java deleted file mode 100644 index 5c74e68d59..0000000000 --- a/src/main/java/seedu/duke/Duke.java +++ /dev/null @@ -1,21 +0,0 @@ -package seedu.duke; - -import java.util.Scanner; - -public class Duke { - /** - * Main entry-point for the java.duke.Duke application. - */ - public static void main(String[] args) { - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo); - System.out.println("What is your name?"); - - Scanner in = new Scanner(System.in); - System.out.println("Hello " + in.nextLine()); - } -} From 4ca981bc69af0f8afb278ffb737f743395b411ab Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 9 Mar 2023 18:14:12 +0800 Subject: [PATCH 013/311] write skeleton unit test for UserInterface --- .../userinterface/UserInterfaceTest.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/test/java/utils/userinterface/UserInterfaceTest.java diff --git a/src/test/java/utils/userinterface/UserInterfaceTest.java b/src/test/java/utils/userinterface/UserInterfaceTest.java new file mode 100644 index 0000000000..9edaa3206a --- /dev/null +++ b/src/test/java/utils/userinterface/UserInterfaceTest.java @@ -0,0 +1,25 @@ +package utils.userinterface; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class UserInterfaceTest { + + @Test + void getCommand() { + + } + + @Test + void printLine() { + } + + @Test + void printGreeting() { + } + + @Test + void printBye() { + } +} \ No newline at end of file From 94b380344298db58d690bb229725d818f06606b4 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 9 Mar 2023 18:20:24 +0800 Subject: [PATCH 014/311] fix gradle import error for unit test --- src/test/java/utils/userinterface/UserInterfaceTest.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/test/java/utils/userinterface/UserInterfaceTest.java b/src/test/java/utils/userinterface/UserInterfaceTest.java index 9edaa3206a..4090488f16 100644 --- a/src/test/java/utils/userinterface/UserInterfaceTest.java +++ b/src/test/java/utils/userinterface/UserInterfaceTest.java @@ -2,8 +2,6 @@ import org.junit.jupiter.api.Test; -import static org.junit.jupiter.api.Assertions.*; - class UserInterfaceTest { @Test @@ -22,4 +20,4 @@ void printGreeting() { @Test void printBye() { } -} \ No newline at end of file +} From fc80a14c7cb780b89499e737b0ca62ff74001f86 Mon Sep 17 00:00:00 2001 From: Gujimugger Date: Sat, 11 Mar 2023 18:43:52 +0800 Subject: [PATCH 015/311] refactor Card and CardList class and update UserInterface class --- src/main/java/Inka.java | 3 ++ src/main/java/model/cardlist/CardList.java | 12 ------- src/main/java/{model/card => utils}/Card.java | 8 +++-- src/main/java/utils/cardlist/CardList.java | 32 +++++++++++++++++++ src/main/java/utils/parser/Parser.java | 18 ++++++++++- .../utils/userinterface/UserInterface.java | 10 ++++++ 6 files changed, 67 insertions(+), 16 deletions(-) delete mode 100644 src/main/java/model/cardlist/CardList.java rename src/main/java/{model/card => utils}/Card.java (67%) create mode 100644 src/main/java/utils/cardlist/CardList.java diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 247f96f2b9..8338719203 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,12 +1,15 @@ +import utils.cardlist.CardList; import utils.parser.Parser; import utils.userinterface.UserInterface; public class Inka { private final UserInterface ui; private final Parser parser; + private final CardList cardList; public Inka() { ui = new UserInterface(); parser = new Parser(); + cardList = new CardList(); } public void run() { diff --git a/src/main/java/model/cardlist/CardList.java b/src/main/java/model/cardlist/CardList.java deleted file mode 100644 index 4e65cb4fdc..0000000000 --- a/src/main/java/model/cardlist/CardList.java +++ /dev/null @@ -1,12 +0,0 @@ -package model.cardlist; - -import model.card.Card; -import java.util.ArrayList; - -public class CardList { - private ArrayList cards ; - - CardList() { - this.cards = new ArrayList<>(); - } -} diff --git a/src/main/java/model/card/Card.java b/src/main/java/utils/Card.java similarity index 67% rename from src/main/java/model/card/Card.java rename to src/main/java/utils/Card.java index 1c734e49fd..7027c0a786 100644 --- a/src/main/java/model/card/Card.java +++ b/src/main/java/utils/Card.java @@ -1,10 +1,12 @@ -package model.card; +package utils; //to be made into an abstract class containing a few types of Cards later, for now just a single Card will do public class Card { private int uuid ; //to be made into a hash later private String question; private String answer; - - //implement method such as toPrint() or any other appropriate method here + @Override + public String toString() { + return this.question + " " + this.answer; + } } diff --git a/src/main/java/utils/cardlist/CardList.java b/src/main/java/utils/cardlist/CardList.java new file mode 100644 index 0000000000..8327a646d2 --- /dev/null +++ b/src/main/java/utils/cardlist/CardList.java @@ -0,0 +1,32 @@ +package utils.cardlist; + +import utils.Card; +import utils.userinterface.UserInterface; + +import java.util.ArrayList; + +public class CardList { + + private ArrayList cards; + + public CardList() { + this.cards = new ArrayList<>(); + } + + public void addCard(Card card) { + this.cards.add(card); + } + + public void delete(int id) { + this.cards.remove(id); + } + + public void edit(int id, Card card) { + delete(id); + this.cards.add(id, card); + } + + public void list() { + UserInterface.printList(this.cards); + } +} diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/parser/Parser.java index 13c0e854c9..4bb5e2e3f6 100644 --- a/src/main/java/utils/parser/Parser.java +++ b/src/main/java/utils/parser/Parser.java @@ -1,5 +1,7 @@ package utils.parser; +import utils.userinterface.UserInterface; + public class Parser { private boolean isExecuting; @@ -11,5 +13,19 @@ public boolean getIsExecuting() { return isExecuting; } - //add all parser methods here + public void parseCommand() { + UserInterface ui = new UserInterface(); + String command = ui.getCommand(); + if (command.startsWith("card")) { + + } + } + + public void parseCard(String line) { + + } + + } + + diff --git a/src/main/java/utils/userinterface/UserInterface.java b/src/main/java/utils/userinterface/UserInterface.java index 3b610ccc40..a029f299e3 100644 --- a/src/main/java/utils/userinterface/UserInterface.java +++ b/src/main/java/utils/userinterface/UserInterface.java @@ -1,7 +1,10 @@ package utils.userinterface; +import utils.Card; +import utils.cardlist.CardList; import utils.enums.StringArt; +import java.util.ArrayList; import java.util.Scanner; public class UserInterface { @@ -45,4 +48,11 @@ public void printBye() { System.out.println("\n Bye! All the best for your exams man!!!"); printLine(); } + + public static void printList(ArrayList list) { + System.out.println("Here is your current list of questions buddy:"); + for (int i = 0; i < list.size(); ++i) { + System.out.println((i + 1) + "." + list.get(i)); + } + } } From fca4abf85a1d62cc54a8d6e3f547c431d7de056c Mon Sep 17 00:00:00 2001 From: Gujimugger Date: Sun, 12 Mar 2023 00:27:05 +0800 Subject: [PATCH 016/311] create Command class and write code for delete, add, list and bye in Parser --- src/main/java/Inka.java | 16 +++--- src/main/java/utils/Card.java | 9 +++- src/main/java/utils/cardlist/CardList.java | 13 +++-- src/main/java/utils/command/AddCommand.java | 20 +++++++ src/main/java/utils/command/Command.java | 9 ++++ .../java/utils/command/DeleteCommand.java | 22 ++++++++ .../java/utils/command/ExceptionCommand.java | 12 +++++ src/main/java/utils/command/ListCommand.java | 12 +++++ .../java/utils/command/TerminateCommand.java | 12 +++++ src/main/java/utils/parser/Parser.java | 33 ++++++++---- .../utils/userinterface/UserInterface.java | 53 ++++++++++++++----- 11 files changed, 172 insertions(+), 39 deletions(-) create mode 100644 src/main/java/utils/command/AddCommand.java create mode 100644 src/main/java/utils/command/Command.java create mode 100644 src/main/java/utils/command/DeleteCommand.java create mode 100644 src/main/java/utils/command/ExceptionCommand.java create mode 100644 src/main/java/utils/command/ListCommand.java create mode 100644 src/main/java/utils/command/TerminateCommand.java diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 8338719203..cdc302c804 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,11 +1,13 @@ import utils.cardlist.CardList; import utils.parser.Parser; import utils.userinterface.UserInterface; +import utils.command.*; public class Inka { private final UserInterface ui; private final Parser parser; - private final CardList cardList; + private CardList cardList; + public Inka() { ui = new UserInterface(); parser = new Parser(); @@ -14,13 +16,11 @@ public Inka() { public void run() { ui.printGreeting(); - - //fill in the method here - //while(parser.getIsExecuting()) { - // String fullCommand = ui.getCommand(); - //} - - ui.printBye(); + while (parser.getIsExecuting()) { + String userCommand = ui.getCommand(); + Command command = parser.parseCommand(userCommand); + command.execute(cardList, ui); + } } public static void main(String[] args) { diff --git a/src/main/java/utils/Card.java b/src/main/java/utils/Card.java index 7027c0a786..dc90c6683d 100644 --- a/src/main/java/utils/Card.java +++ b/src/main/java/utils/Card.java @@ -2,9 +2,16 @@ //to be made into an abstract class containing a few types of Cards later, for now just a single Card will do public class Card { - private int uuid ; //to be made into a hash later + private int uuid; //to be made into a hash later private String question; private String answer; + + // Temporary constructor for Card, to be revised later to also consider uuid and tag etc + public Card(String question, String answer) { + this.question = question; + this.answer = answer; + } + @Override public String toString() { return this.question + " " + this.answer; diff --git a/src/main/java/utils/cardlist/CardList.java b/src/main/java/utils/cardlist/CardList.java index 8327a646d2..e8990e5b36 100644 --- a/src/main/java/utils/cardlist/CardList.java +++ b/src/main/java/utils/cardlist/CardList.java @@ -21,12 +21,15 @@ public void delete(int id) { this.cards.remove(id); } - public void edit(int id, Card card) { - delete(id); - this.cards.add(id, card); + public boolean isEmpty() { + return cards.isEmpty(); } - public void list() { - UserInterface.printList(this.cards); + public int size() { + return this.cards.size(); + } + + public Card get(int id) { + return this.cards.get(id); } } diff --git a/src/main/java/utils/command/AddCommand.java b/src/main/java/utils/command/AddCommand.java new file mode 100644 index 0000000000..ab5ac4b9d0 --- /dev/null +++ b/src/main/java/utils/command/AddCommand.java @@ -0,0 +1,20 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +public class AddCommand extends Command { + private final Card card; + + public AddCommand(Card card) { + this.card = card; + } + + @Override + public void execute(CardList cardList, UserInterface ui) { + cardList.addCard(card); + ui.printAddQuestionSuccess(); + ui.printNumOfQuestions(cardList); + } +} diff --git a/src/main/java/utils/command/Command.java b/src/main/java/utils/command/Command.java new file mode 100644 index 0000000000..b75844bfb9 --- /dev/null +++ b/src/main/java/utils/command/Command.java @@ -0,0 +1,9 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +public abstract class Command { + public abstract void execute(CardList cardList, UserInterface ui); +} \ No newline at end of file diff --git a/src/main/java/utils/command/DeleteCommand.java b/src/main/java/utils/command/DeleteCommand.java new file mode 100644 index 0000000000..77134aaba1 --- /dev/null +++ b/src/main/java/utils/command/DeleteCommand.java @@ -0,0 +1,22 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +public class DeleteCommand extends Command { + + private int index; + + public DeleteCommand(int index) { + this.index = index; + } + + @Override + public void execute(CardList cardList, UserInterface ui) { + ui.printDeleteSuccess(); + //ui.printCard(cardList, index); + cardList.delete(this.index); + ui.printNumOfQuestions(cardList); + } +} \ No newline at end of file diff --git a/src/main/java/utils/command/ExceptionCommand.java b/src/main/java/utils/command/ExceptionCommand.java new file mode 100644 index 0000000000..0ee3f7d860 --- /dev/null +++ b/src/main/java/utils/command/ExceptionCommand.java @@ -0,0 +1,12 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +public class ExceptionCommand extends Command { + @Override + public void execute(CardList cardList, UserInterface ui) { + ui.printWrongCommand(); + } +} \ No newline at end of file diff --git a/src/main/java/utils/command/ListCommand.java b/src/main/java/utils/command/ListCommand.java new file mode 100644 index 0000000000..bf6edbb774 --- /dev/null +++ b/src/main/java/utils/command/ListCommand.java @@ -0,0 +1,12 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +public class ListCommand extends Command{ + @Override + public void execute(CardList cardList, UserInterface ui) { + ui.printList(cardList); + } +} \ No newline at end of file diff --git a/src/main/java/utils/command/TerminateCommand.java b/src/main/java/utils/command/TerminateCommand.java new file mode 100644 index 0000000000..d9131e7116 --- /dev/null +++ b/src/main/java/utils/command/TerminateCommand.java @@ -0,0 +1,12 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +public class TerminateCommand extends Command{ + @Override + public void execute(CardList cardList, UserInterface ui) { + ui.printBye(); + } +} \ No newline at end of file diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/parser/Parser.java index 4bb5e2e3f6..7dead663d9 100644 --- a/src/main/java/utils/parser/Parser.java +++ b/src/main/java/utils/parser/Parser.java @@ -1,5 +1,7 @@ package utils.parser; +import utils.Card; +import utils.command.*; import utils.userinterface.UserInterface; public class Parser { @@ -13,19 +15,28 @@ public boolean getIsExecuting() { return isExecuting; } - public void parseCommand() { - UserInterface ui = new UserInterface(); - String command = ui.getCommand(); - if (command.startsWith("card")) { - - } + public void setIsExecuting(boolean bool) { + this.isExecuting = bool; } - public void parseCard(String line) { - + public Command parseCommand(String userCommand) { + String[] userCommandSplit = userCommand.split("-", 3); + if (userCommandSplit[0].startsWith("list")) { + return new ListCommand(); + } else if (userCommandSplit[0].startsWith("add")) { + String question = userCommandSplit[1]; + String answer = userCommandSplit[2]; + Card card = new Card(question, answer); + return new AddCommand(card); + } else if (userCommandSplit[0].startsWith("delete")) { + int deleteIndex = Integer.parseInt(userCommandSplit[1]); + return new DeleteCommand(deleteIndex); + } else if (userCommandSplit[0].startsWith("bye")) { + this.setIsExecuting(false); + return new TerminateCommand(); + } else { + return new ExceptionCommand(); + } } - - } - diff --git a/src/main/java/utils/userinterface/UserInterface.java b/src/main/java/utils/userinterface/UserInterface.java index a029f299e3..2a525d3549 100644 --- a/src/main/java/utils/userinterface/UserInterface.java +++ b/src/main/java/utils/userinterface/UserInterface.java @@ -10,19 +10,20 @@ public class UserInterface { private static final int LINE_LENGTH = 100; private static final String INKA_ART = - ".___ __ \n" + - "| | ____ | | _______ \n" + - "| |/ \\| |/ /\\__ \\ \n" + - "| | | \\ < / __ \\_\n" + - "|___|___| /__|_ \\(____ /\n" + - " \\/ \\/ \\/ "; + ".___ __ \n" + + "| | ____ | | _______ \n" + + "| |/ \\| |/ /\\__ \\ \n" + + "| | | \\ < / __ \\_\n" + + "|___|___| /__|_ \\(____ /\n" + + " \\/ \\/ \\/ "; private static final String BYE_ART = - " ____ _ _ ____ _ \n" + - "( _ \\( \\/ )( __) / \\ \n" + - " ) _ ( ) / ) _) \\_/ \n" + - "(____/(__/ (____) (_) "; + " ____ _ _ ____ _ \n" + + "( _ \\( \\/ )( __) / \\ \n" + + " ) _ ( ) / ) _) \\_/ \n" + + "(____/(__/ (____) (_) "; private final Scanner scanner; + public UserInterface() { scanner = new Scanner(System.in); } @@ -49,10 +50,34 @@ public void printBye() { printLine(); } - public static void printList(ArrayList list) { - System.out.println("Here is your current list of questions buddy:"); - for (int i = 0; i < list.size(); ++i) { - System.out.println((i + 1) + "." + list.get(i)); + public void printNumOfQuestions(CardList cardList) { + System.out.println("You now have " + cardList.size() + " questions in the bank."); + } + + public void printAddQuestionSuccess() { + System.out.println("That's a good question for revision later!"); + } + + public void printDeleteSuccess() { + System.out.println("Too easy ha? You won't see that question again!"); + } + + public void printWrongCommand() { + System.out.println("Unresolvable command"); + } + + public void printCard(CardList cardlist, int id) { + System.out.println(cardlist.get(id)); + } + + public void printList(CardList cardList) { + if (cardList.isEmpty()) { + System.out.println("Your current list is empty."); + } else { + System.out.println("Here is your current list of questions buddy:"); + for (int i = 0; i < cardList.size(); ++i) { + System.out.println((i + 1) + "." + cardList.get(i)); + } } } } From c9388ca70c07bd37e88ee311aeb368056be54898 Mon Sep 17 00:00:00 2001 From: Akhil Date: Mon, 13 Mar 2023 13:29:16 +0800 Subject: [PATCH 017/311] Added Exceptions --- src/main/java/Inka.java | 6 ++- .../java/utils/command/DeleteCommand.java | 2 +- .../java/utils/exceptions/AddEmptyAnswer.java | 4 ++ .../utils/exceptions/AddEmptyQuestion.java | 4 ++ .../exceptions/AddEmptyQuestionAndAnswer.java | 4 ++ .../java/utils/exceptions/AddGoneWrong.java | 4 ++ .../exceptions/DeleteDateWrongFormat.java | 4 ++ .../utils/exceptions/DeleteMissingNumber.java | 4 ++ .../utils/exceptions/DeleteRangeInvalid.java | 4 ++ .../utils/exceptions/ExceptionHandler.java | 38 +++++++++++++++++++ src/main/java/utils/parser/Parser.java | 24 ++++++++++-- .../utils/userinterface/UserInterface.java | 30 ++++++++++++++- 12 files changed, 121 insertions(+), 7 deletions(-) create mode 100644 src/main/java/utils/exceptions/AddEmptyAnswer.java create mode 100644 src/main/java/utils/exceptions/AddEmptyQuestion.java create mode 100644 src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java create mode 100644 src/main/java/utils/exceptions/AddGoneWrong.java create mode 100644 src/main/java/utils/exceptions/DeleteDateWrongFormat.java create mode 100644 src/main/java/utils/exceptions/DeleteMissingNumber.java create mode 100644 src/main/java/utils/exceptions/DeleteRangeInvalid.java create mode 100644 src/main/java/utils/exceptions/ExceptionHandler.java diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index cdc302c804..f53b96f32a 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,4 +1,5 @@ import utils.cardlist.CardList; +import utils.exceptions.ExceptionHandler; import utils.parser.Parser; import utils.userinterface.UserInterface; import utils.command.*; @@ -8,17 +9,20 @@ public class Inka { private final Parser parser; private CardList cardList; + private ExceptionHandler exceptionHandler; + public Inka() { ui = new UserInterface(); parser = new Parser(); cardList = new CardList(); + exceptionHandler = new ExceptionHandler(); } public void run() { ui.printGreeting(); while (parser.getIsExecuting()) { String userCommand = ui.getCommand(); - Command command = parser.parseCommand(userCommand); + Command command = exceptionHandler.mainExceptionHandler(parser, userCommand, ui, cardList); command.execute(cardList, ui); } } diff --git a/src/main/java/utils/command/DeleteCommand.java b/src/main/java/utils/command/DeleteCommand.java index 77134aaba1..94f293ff4f 100644 --- a/src/main/java/utils/command/DeleteCommand.java +++ b/src/main/java/utils/command/DeleteCommand.java @@ -16,7 +16,7 @@ public DeleteCommand(int index) { public void execute(CardList cardList, UserInterface ui) { ui.printDeleteSuccess(); //ui.printCard(cardList, index); - cardList.delete(this.index); + cardList.delete(this.index-1); // if the input is delete 1, this will delete the first element of the array which is element 0. ui.printNumOfQuestions(cardList); } } \ No newline at end of file diff --git a/src/main/java/utils/exceptions/AddEmptyAnswer.java b/src/main/java/utils/exceptions/AddEmptyAnswer.java new file mode 100644 index 0000000000..31c0fd5b21 --- /dev/null +++ b/src/main/java/utils/exceptions/AddEmptyAnswer.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class AddEmptyAnswer extends Exception{ +} diff --git a/src/main/java/utils/exceptions/AddEmptyQuestion.java b/src/main/java/utils/exceptions/AddEmptyQuestion.java new file mode 100644 index 0000000000..84f17d5600 --- /dev/null +++ b/src/main/java/utils/exceptions/AddEmptyQuestion.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class AddEmptyQuestion extends Exception{ +} diff --git a/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java b/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java new file mode 100644 index 0000000000..4a85457adf --- /dev/null +++ b/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class AddEmptyQuestionAndAnswer extends Exception{ +} diff --git a/src/main/java/utils/exceptions/AddGoneWrong.java b/src/main/java/utils/exceptions/AddGoneWrong.java new file mode 100644 index 0000000000..b05a8c11e5 --- /dev/null +++ b/src/main/java/utils/exceptions/AddGoneWrong.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class AddGoneWrong extends Exception { +} diff --git a/src/main/java/utils/exceptions/DeleteDateWrongFormat.java b/src/main/java/utils/exceptions/DeleteDateWrongFormat.java new file mode 100644 index 0000000000..89355b40d4 --- /dev/null +++ b/src/main/java/utils/exceptions/DeleteDateWrongFormat.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class DeleteDateWrongFormat extends Exception{ +} diff --git a/src/main/java/utils/exceptions/DeleteMissingNumber.java b/src/main/java/utils/exceptions/DeleteMissingNumber.java new file mode 100644 index 0000000000..598dc44fa3 --- /dev/null +++ b/src/main/java/utils/exceptions/DeleteMissingNumber.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class DeleteMissingNumber extends Exception{ +} diff --git a/src/main/java/utils/exceptions/DeleteRangeInvalid.java b/src/main/java/utils/exceptions/DeleteRangeInvalid.java new file mode 100644 index 0000000000..44c20095cd --- /dev/null +++ b/src/main/java/utils/exceptions/DeleteRangeInvalid.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class DeleteRangeInvalid extends Exception{ +} diff --git a/src/main/java/utils/exceptions/ExceptionHandler.java b/src/main/java/utils/exceptions/ExceptionHandler.java new file mode 100644 index 0000000000..74953993da --- /dev/null +++ b/src/main/java/utils/exceptions/ExceptionHandler.java @@ -0,0 +1,38 @@ +package utils.exceptions; + +import utils.cardlist.CardList; +import utils.command.Command; +import utils.command.ExceptionCommand; +import utils.parser.Parser; +import utils.userinterface.UserInterface; + +public class ExceptionHandler { + + public Command mainExceptionHandler(Parser parser, String userCommand, UserInterface userInterface, CardList cardList) { + Command command = new ExceptionCommand(); + try { + command = parser.parseCommand(userCommand, cardList); + } catch (DeleteMissingNumber e) { + userInterface.printDeleteError(); + } catch (NumberFormatException e) { + //print the error message here + userInterface.printDeleteDateFormatError(); + } catch (DeleteRangeInvalid e) { + //print the error message here + userInterface.printDeleteDateRangeError(); + } catch (AddGoneWrong e) { + //print the error here + userInterface.addError(); + } catch (AddEmptyQuestion e) { + //print something + userInterface.addMissingQuestionPrompt(); + } catch (AddEmptyAnswer e) { + //print something + userInterface.addMissingAnswerPrompt(); + } catch (AddEmptyQuestionAndAnswer e) { + //print something here + userInterface.addMissingQuestionAndAnswerPrompt(); + } + return command; + } +} diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/parser/Parser.java index 7dead663d9..91c7a8242b 100644 --- a/src/main/java/utils/parser/Parser.java +++ b/src/main/java/utils/parser/Parser.java @@ -1,7 +1,9 @@ package utils.parser; import utils.Card; +import utils.cardlist.CardList; import utils.command.*; +import utils.exceptions.*; import utils.userinterface.UserInterface; public class Parser { @@ -19,16 +21,30 @@ public void setIsExecuting(boolean bool) { this.isExecuting = bool; } - public Command parseCommand(String userCommand) { + public Command parseCommand(String userCommand, CardList cardList) throws DeleteMissingNumber, DeleteRangeInvalid , AddGoneWrong, AddEmptyQuestion, AddEmptyAnswer, AddEmptyQuestionAndAnswer{ String[] userCommandSplit = userCommand.split("-", 3); if (userCommandSplit[0].startsWith("list")) { return new ListCommand(); - } else if (userCommandSplit[0].startsWith("add")) { + } else if (userCommandSplit[0].startsWith("add") || userCommandSplit[0].startsWith(" add")) { + if(userCommandSplit.length<3) { + throw new AddGoneWrong(); + } else if (userCommandSplit[1].isBlank() && userCommandSplit[2].isBlank()) { + throw new AddEmptyQuestionAndAnswer(); + }else if(userCommandSplit[1].isBlank()) { + throw new AddEmptyQuestion(); + } else if(userCommandSplit[2].isBlank()) { + throw new AddEmptyAnswer(); + } String question = userCommandSplit[1]; String answer = userCommandSplit[2]; Card card = new Card(question, answer); - return new AddCommand(card); - } else if (userCommandSplit[0].startsWith("delete")) { + return new AddCommand(card); // main command return + } else if (userCommandSplit[0].startsWith("delete") || userCommandSplit[0].startsWith("delete ")) { + if(userCommandSplit.length==1) { + throw new DeleteMissingNumber(); + }else if(Integer.parseInt(userCommandSplit[1])<1 ||Integer.parseInt(userCommandSplit[1])>cardList.size() ) { + throw new DeleteRangeInvalid(); + } int deleteIndex = Integer.parseInt(userCommandSplit[1]); return new DeleteCommand(deleteIndex); } else if (userCommandSplit[0].startsWith("bye")) { diff --git a/src/main/java/utils/userinterface/UserInterface.java b/src/main/java/utils/userinterface/UserInterface.java index 2a525d3549..ca8693c47f 100644 --- a/src/main/java/utils/userinterface/UserInterface.java +++ b/src/main/java/utils/userinterface/UserInterface.java @@ -63,13 +63,41 @@ public void printDeleteSuccess() { } public void printWrongCommand() { - System.out.println("Unresolvable command"); + System.out.println("PLease re-enter a valid command!"); } public void printCard(CardList cardlist, int id) { System.out.println(cardlist.get(id)); } + public void printDeleteDateFormatError() { + System.out.println("Please ensure that your date is a number and not a string!"); + } + + public void printDeleteDateRangeError() { + System.out.println("Please ensure that the index you wish to delete exists!"); + } + + public void printDeleteError() { + System.out.println("Whoops, ensure that your delete command is valid!"); + } + + public void addError() { + System.out.println("Please ensure use '-' to separate the question and answer to the add command!"); + } + + public void addMissingQuestionPrompt() { + System.out.println("Please ensure that you supply a valid question to Inka!"); + } + + public void addMissingAnswerPrompt() { + System.out.println("Please ensure that you supply a valid answer to Inka!"); + } + public void addMissingQuestionAndAnswerPrompt() { + System.out.println("Please ensure that you supply a valid question and answer to Inka!"); + } + + public void printList(CardList cardList) { if (cardList.isEmpty()) { System.out.println("Your current list is empty."); From 1b9dd2b5508de2b762a062efa49df33f1c14c8ee Mon Sep 17 00:00:00 2001 From: iantenkai Date: Tue, 14 Mar 2023 17:41:28 +0800 Subject: [PATCH 018/311] added utility to export and import decks as json file --- .gitignore | 1 + build.gradle | 4 +- savedata.json | 16 +++ src/main/java/Inka.class | Bin 0 -> 616 bytes src/main/java/Inka.java | 48 +++++++ src/main/java/seedu/duke/Duke.java | 21 ---- src/main/java/utils/Card.java | 31 +++++ src/main/java/utils/Storage.java | 52 ++++++++ src/main/java/utils/cardlist/CardList.java | 35 ++++++ src/main/java/utils/command/AddCommand.java | 20 +++ src/main/java/utils/command/Command.java | 11 ++ .../java/utils/command/DeleteCommand.java | 22 ++++ .../java/utils/command/ExceptionCommand.java | 12 ++ .../java/utils/command/ExportCommand.java | 49 ++++++++ src/main/java/utils/command/ListCommand.java | 12 ++ .../java/utils/command/TerminateCommand.java | 12 ++ src/main/java/utils/enums/StringArt.class | Bin 0 -> 1257 bytes src/main/java/utils/enums/StringArt.java | 22 ++++ .../java/utils/exceptions/AddEmptyAnswer.java | 4 + .../utils/exceptions/AddEmptyQuestion.java | 4 + .../exceptions/AddEmptyQuestionAndAnswer.java | 4 + .../java/utils/exceptions/AddGoneWrong.java | 4 + .../exceptions/DeleteDateWrongFormat.java | 4 + .../utils/exceptions/DeleteMissingNumber.java | 4 + .../utils/exceptions/DeleteRangeInvalid.java | 4 + .../utils/exceptions/ExceptionHandler.java | 38 ++++++ src/main/java/utils/exceptions/ImportBad.java | 5 + src/main/java/utils/gson-2.10.1.jar | Bin 0 -> 283367 bytes src/main/java/utils/parser/Parser.class | Bin 0 -> 314 bytes src/main/java/utils/parser/Parser.java | 60 +++++++++ .../utils/userinterface/UserInterface.class | Bin 0 -> 1612 bytes .../utils/userinterface/UserInterface.java | 119 ++++++++++++++++++ .../userinterface/UserInterfaceTest.java | 23 ++++ text-ui-test/EXPECTED.TXT | 24 ++-- text-ui-test/input.txt | 1 - 35 files changed, 635 insertions(+), 31 deletions(-) create mode 100644 savedata.json create mode 100644 src/main/java/Inka.class create mode 100644 src/main/java/Inka.java delete mode 100644 src/main/java/seedu/duke/Duke.java create mode 100644 src/main/java/utils/Card.java create mode 100644 src/main/java/utils/Storage.java create mode 100644 src/main/java/utils/cardlist/CardList.java create mode 100644 src/main/java/utils/command/AddCommand.java create mode 100644 src/main/java/utils/command/Command.java create mode 100644 src/main/java/utils/command/DeleteCommand.java create mode 100644 src/main/java/utils/command/ExceptionCommand.java create mode 100644 src/main/java/utils/command/ExportCommand.java create mode 100644 src/main/java/utils/command/ListCommand.java create mode 100644 src/main/java/utils/command/TerminateCommand.java create mode 100644 src/main/java/utils/enums/StringArt.class create mode 100644 src/main/java/utils/enums/StringArt.java create mode 100644 src/main/java/utils/exceptions/AddEmptyAnswer.java create mode 100644 src/main/java/utils/exceptions/AddEmptyQuestion.java create mode 100644 src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java create mode 100644 src/main/java/utils/exceptions/AddGoneWrong.java create mode 100644 src/main/java/utils/exceptions/DeleteDateWrongFormat.java create mode 100644 src/main/java/utils/exceptions/DeleteMissingNumber.java create mode 100644 src/main/java/utils/exceptions/DeleteRangeInvalid.java create mode 100644 src/main/java/utils/exceptions/ExceptionHandler.java create mode 100644 src/main/java/utils/exceptions/ImportBad.java create mode 100644 src/main/java/utils/gson-2.10.1.jar create mode 100644 src/main/java/utils/parser/Parser.class create mode 100644 src/main/java/utils/parser/Parser.java create mode 100644 src/main/java/utils/userinterface/UserInterface.class create mode 100644 src/main/java/utils/userinterface/UserInterface.java create mode 100644 src/test/java/utils/userinterface/UserInterfaceTest.java diff --git a/.gitignore b/.gitignore index 2873e189e1..2b04b28136 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /.idea/ /out/ /*.iml +/*.class # Gradle build files /.gradle/ diff --git a/build.gradle b/build.gradle index d5e548e85f..9030d9a1eb 100644 --- a/build.gradle +++ b/build.gradle @@ -12,6 +12,8 @@ repositories { dependencies { testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' + implementation 'com.google.code.gson:gson:2.8.9' + } test { @@ -29,7 +31,7 @@ test { } application { - mainClass = "seedu.duke.Duke" + mainClass = "Inka" } shadowJar { diff --git a/savedata.json b/savedata.json new file mode 100644 index 0000000000..a84e2f4039 --- /dev/null +++ b/savedata.json @@ -0,0 +1,16 @@ +{ + "deckName": "lky deck", + "numCards": 2, + "cards": [ + { + "uuid": 0, + "question": " is akhil a dirty commie ", + "answer": " yes" + }, + { + "uuid": 0, + "question": "why do other groups keep attackin ian", + "answer": "he is not a dirty commie" + } + ] +} \ No newline at end of file diff --git a/src/main/java/Inka.class b/src/main/java/Inka.class new file mode 100644 index 0000000000000000000000000000000000000000..d8aee0ed39cdb6c7f81b1a1ccdb16355947c1109 GIT binary patch literal 616 zcmah{%Syvg5Ir}Irb*L>)^~i>s?{#c(nUopN9=AJoonB?R0^&P+}Di*SE3`|xOlL^8ban$kTc+WkQ_f&N=BWJ_T9o1S3zpxai2H9zp9b%E5< z@`-@Hb#pES@^wFud+~KchDTnb%}y$e13q7SKGVq3S^d(x^W3%WZXMpl zVN-7VYQ)?PuDlh+voVOGK^ClD zGZM(&sdnwa1c9_m-jB@$%htB=s1kxr7?6UcEJ=*!^l93@SR iVvHloNrhh3aOMpbH)oz<_XgEZ0#YrElQhm+!^9W=a&$ca literal 0 HcmV?d00001 diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java new file mode 100644 index 0000000000..a0f00f53a6 --- /dev/null +++ b/src/main/java/Inka.java @@ -0,0 +1,48 @@ +import utils.cardlist.CardList; +import utils.exceptions.ExceptionHandler; +import utils.exceptions.ImportBad; +import utils.parser.Parser; +import utils.userinterface.UserInterface; +import utils.command.*; +import utils.Storage; + +public class Inka { + private final UserInterface ui; + private final Parser parser; + private CardList cardList; + + private Storage storage; + + private ExceptionHandler exceptionHandler; + + public Inka(String filePath) { + storage = new Storage(filePath); + ui = new UserInterface(); + parser = new Parser(); + cardList = new CardList(); + exceptionHandler = new ExceptionHandler(); + try { + storage.load(filePath, cardList); + } catch (ImportBad e) { + ui.printImportBad(); + + } + + } + + public void run() { + ui.printGreeting(); + //IMPORT IT HERE + + + while (parser.getIsExecuting()) { + String userCommand = ui.getCommand(); + Command command = exceptionHandler.mainExceptionHandler(parser, userCommand, ui, cardList); + command.execute(cardList, ui); + } + } + + public static void main(String[] args) { + new Inka("savedata.json").run(); + } +} diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java deleted file mode 100644 index 5c74e68d59..0000000000 --- a/src/main/java/seedu/duke/Duke.java +++ /dev/null @@ -1,21 +0,0 @@ -package seedu.duke; - -import java.util.Scanner; - -public class Duke { - /** - * Main entry-point for the java.duke.Duke application. - */ - public static void main(String[] args) { - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo); - System.out.println("What is your name?"); - - Scanner in = new Scanner(System.in); - System.out.println("Hello " + in.nextLine()); - } -} diff --git a/src/main/java/utils/Card.java b/src/main/java/utils/Card.java new file mode 100644 index 0000000000..d773eec26d --- /dev/null +++ b/src/main/java/utils/Card.java @@ -0,0 +1,31 @@ +package utils; + +//to be made into an abstract class containing a few types of Cards later, for now just a single Card will do +public class Card { + private int uuid; //to be made into a hash later + private String question; + private String answer; + + // Temporary constructor for Card, to be revised later to also consider uuid and tag etc + public Card(String question, String answer) { + this.question = question; + this.answer = answer; + } + public int getUuid() { + return uuid; + } + + public String getQuestion() { + return question; + } + + public String getAnswer() { + return answer; + } + + + @Override + public String toString() { + return this.question + " " + this.answer; + } // return the card +} diff --git a/src/main/java/utils/Storage.java b/src/main/java/utils/Storage.java new file mode 100644 index 0000000000..25b6dcad57 --- /dev/null +++ b/src/main/java/utils/Storage.java @@ -0,0 +1,52 @@ + +package utils; +import com.google.gson.Gson; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; +import utils.cardlist.CardList; +import utils.exceptions.ImportBad; + +import java.io.*; + +import java.io.FileReader; +import java.lang.reflect.Type; +import java.util.ArrayList; +import java.util.Scanner; + +public class Storage { + private File f; + + public Storage(String filePath) { + f = new File(filePath); + + + } + + public void load(String fileName, CardList cardList) throws ImportBad { + try { + Gson gson = new Gson(); + BufferedReader reader = new BufferedReader(new FileReader(fileName)); + JsonElement jsonElement = gson.fromJson(reader, JsonElement.class); + JsonObject jsonObject = jsonElement.getAsJsonObject(); + String deckName = jsonObject.get("deckName").getAsString(); + + JsonArray jsonArray = jsonObject.getAsJsonArray("cards"); + Type cardListType = new TypeToken>(){}.getType(); + ArrayList cards = gson.fromJson(jsonArray, cardListType); // creates an arraylist of cards + CardList currentCardList = new CardList(); // creates a new cardlist + currentCardList.cards = cards; // appends the arraylist to the cardlist class + cardList.cards = currentCardList.cards; // set the cards field in the CardList object + reader.close(); + + } catch (IOException E) { + //too bad! + throw new ImportBad(); + + + } + + + } +} diff --git a/src/main/java/utils/cardlist/CardList.java b/src/main/java/utils/cardlist/CardList.java new file mode 100644 index 0000000000..cb285fff01 --- /dev/null +++ b/src/main/java/utils/cardlist/CardList.java @@ -0,0 +1,35 @@ +package utils.cardlist; + +import utils.Card; +import utils.userinterface.UserInterface; + +import java.util.ArrayList; + +public class CardList { + + public ArrayList cards; + + public CardList() { + this.cards = new ArrayList<>(); + } + + public void addCard(Card card) { + this.cards.add(card); + } + + public void delete(int id) { + this.cards.remove(id); + } + + public boolean isEmpty() { + return cards.isEmpty(); + } + + public int size() { + return this.cards.size(); + } + + public Card get(int id) { + return this.cards.get(id); + } +} diff --git a/src/main/java/utils/command/AddCommand.java b/src/main/java/utils/command/AddCommand.java new file mode 100644 index 0000000000..ab5ac4b9d0 --- /dev/null +++ b/src/main/java/utils/command/AddCommand.java @@ -0,0 +1,20 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +public class AddCommand extends Command { + private final Card card; + + public AddCommand(Card card) { + this.card = card; + } + + @Override + public void execute(CardList cardList, UserInterface ui) { + cardList.addCard(card); + ui.printAddQuestionSuccess(); + ui.printNumOfQuestions(cardList); + } +} diff --git a/src/main/java/utils/command/Command.java b/src/main/java/utils/command/Command.java new file mode 100644 index 0000000000..7ba73edc8a --- /dev/null +++ b/src/main/java/utils/command/Command.java @@ -0,0 +1,11 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +import java.io.IOException; + +public abstract class Command { + public abstract void execute(CardList cardList, UserInterface ui); +} \ No newline at end of file diff --git a/src/main/java/utils/command/DeleteCommand.java b/src/main/java/utils/command/DeleteCommand.java new file mode 100644 index 0000000000..94f293ff4f --- /dev/null +++ b/src/main/java/utils/command/DeleteCommand.java @@ -0,0 +1,22 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +public class DeleteCommand extends Command { + + private int index; + + public DeleteCommand(int index) { + this.index = index; + } + + @Override + public void execute(CardList cardList, UserInterface ui) { + ui.printDeleteSuccess(); + //ui.printCard(cardList, index); + cardList.delete(this.index-1); // if the input is delete 1, this will delete the first element of the array which is element 0. + ui.printNumOfQuestions(cardList); + } +} \ No newline at end of file diff --git a/src/main/java/utils/command/ExceptionCommand.java b/src/main/java/utils/command/ExceptionCommand.java new file mode 100644 index 0000000000..0ee3f7d860 --- /dev/null +++ b/src/main/java/utils/command/ExceptionCommand.java @@ -0,0 +1,12 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +public class ExceptionCommand extends Command { + @Override + public void execute(CardList cardList, UserInterface ui) { + ui.printWrongCommand(); + } +} \ No newline at end of file diff --git a/src/main/java/utils/command/ExportCommand.java b/src/main/java/utils/command/ExportCommand.java new file mode 100644 index 0000000000..0170f7b1e1 --- /dev/null +++ b/src/main/java/utils/command/ExportCommand.java @@ -0,0 +1,49 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.exceptions.DeleteRangeInvalid; +import utils.userinterface.UserInterface; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; + +import java.io.FileWriter; +import java.io.IOException; +import java.util.ArrayList; + +public class ExportCommand extends Command{ + + @Override + public void execute(CardList cardList, UserInterface ui) { + + JsonObject exportData = new JsonObject(); + exportData.addProperty("deckName", "lky deck"); + exportData.addProperty("numCards", cardList.size()); + JsonArray cardData = new JsonArray(); + for (int i = 0; i < cardList.size(); i++) { + Card card = cardList.get(i); + JsonObject cardObject = new JsonObject(); + cardObject.addProperty("uuid", card.getUuid()); + cardObject.addProperty("question", card.getQuestion()); + cardObject.addProperty("answer", card.getAnswer()); + cardData.add(cardObject); + } + + exportData.add("cards", cardData); + + // Use Gson to write the exportData object to a JSON file + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + try { + FileWriter writer = new FileWriter("savedata.json"); + gson.toJson(exportData, writer); + writer.close(); + ui.printExportSuccess(); + } catch (IOException e) { + // Handle the IOException + e.printStackTrace(); + } + + } +} \ No newline at end of file diff --git a/src/main/java/utils/command/ListCommand.java b/src/main/java/utils/command/ListCommand.java new file mode 100644 index 0000000000..bf6edbb774 --- /dev/null +++ b/src/main/java/utils/command/ListCommand.java @@ -0,0 +1,12 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +public class ListCommand extends Command{ + @Override + public void execute(CardList cardList, UserInterface ui) { + ui.printList(cardList); + } +} \ No newline at end of file diff --git a/src/main/java/utils/command/TerminateCommand.java b/src/main/java/utils/command/TerminateCommand.java new file mode 100644 index 0000000000..d9131e7116 --- /dev/null +++ b/src/main/java/utils/command/TerminateCommand.java @@ -0,0 +1,12 @@ +package utils.command; + +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; + +public class TerminateCommand extends Command{ + @Override + public void execute(CardList cardList, UserInterface ui) { + ui.printBye(); + } +} \ No newline at end of file diff --git a/src/main/java/utils/enums/StringArt.class b/src/main/java/utils/enums/StringArt.class new file mode 100644 index 0000000000000000000000000000000000000000..7f0624d5d382300ce4ccfa3e52d49dc6093fb89c GIT binary patch literal 1257 zcmZ`&ZBNrs6n^g7ZCzIfRNg_oDr!4kDk$=Sg@9xv#03(kB*Z35nT3>;lI(>~{2Bj& zLKLIX@Yx?_Jf~a6BHPV&?s<96IZyAo_s`!SzX7aZB?A>tbv%QW#%LP0jsfIZ%yMK- z!=Q$Fozw-k9Sx?2=d3QKu_T~w@4VR%7%Md!L0EVEsCiO%%8gnO9c|Pas{+dF{US-P z)(|jD$KILegkE&i#t@Xlzb-Io+5J)K=IKXYV4xI4{!a7c zz^}dY4np#zv& z5sM_*tdl}yNY~@;4oNa%okAAH4Vc_5cXMTVFapVHcpA~k4_nNPp>c$Wau;FGUQq#P0!F2}o#o7&BvrZ;>PkEd7MKZ)%E}xq^O)Y-}2; oc_%h=$zK#!E|4wns~2?NFCqT#!zYv_W(xIab$W~$s+_=+f9R(Rc>n+a literal 0 HcmV?d00001 diff --git a/src/main/java/utils/enums/StringArt.java b/src/main/java/utils/enums/StringArt.java new file mode 100644 index 0000000000..87f8c9cf2c --- /dev/null +++ b/src/main/java/utils/enums/StringArt.java @@ -0,0 +1,22 @@ +package utils.enums; + +public enum StringArt { + INKA( + ".___ __ \n" + + "| | ____ | | _______ \n" + + "| |/ \\| |/ /\\__ \\ \n" + + "| | | \\ < / __ \\_\n" + + "|___|___| /__|_ \\(____ /\n" + + " \\/ \\/ \\/ "), + BYE( + " ____ _ _ ____ _ \n" + + "( _ \\( \\/ )( __) / \\ \n" + + " ) _ ( ) / ) _) \\_/ \n" + + "(____/(__/ (____) (_) " + ); + + public final String art; + StringArt(String art) { + this.art = art; + } +} diff --git a/src/main/java/utils/exceptions/AddEmptyAnswer.java b/src/main/java/utils/exceptions/AddEmptyAnswer.java new file mode 100644 index 0000000000..31c0fd5b21 --- /dev/null +++ b/src/main/java/utils/exceptions/AddEmptyAnswer.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class AddEmptyAnswer extends Exception{ +} diff --git a/src/main/java/utils/exceptions/AddEmptyQuestion.java b/src/main/java/utils/exceptions/AddEmptyQuestion.java new file mode 100644 index 0000000000..84f17d5600 --- /dev/null +++ b/src/main/java/utils/exceptions/AddEmptyQuestion.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class AddEmptyQuestion extends Exception{ +} diff --git a/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java b/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java new file mode 100644 index 0000000000..4a85457adf --- /dev/null +++ b/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class AddEmptyQuestionAndAnswer extends Exception{ +} diff --git a/src/main/java/utils/exceptions/AddGoneWrong.java b/src/main/java/utils/exceptions/AddGoneWrong.java new file mode 100644 index 0000000000..b05a8c11e5 --- /dev/null +++ b/src/main/java/utils/exceptions/AddGoneWrong.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class AddGoneWrong extends Exception { +} diff --git a/src/main/java/utils/exceptions/DeleteDateWrongFormat.java b/src/main/java/utils/exceptions/DeleteDateWrongFormat.java new file mode 100644 index 0000000000..89355b40d4 --- /dev/null +++ b/src/main/java/utils/exceptions/DeleteDateWrongFormat.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class DeleteDateWrongFormat extends Exception{ +} diff --git a/src/main/java/utils/exceptions/DeleteMissingNumber.java b/src/main/java/utils/exceptions/DeleteMissingNumber.java new file mode 100644 index 0000000000..598dc44fa3 --- /dev/null +++ b/src/main/java/utils/exceptions/DeleteMissingNumber.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class DeleteMissingNumber extends Exception{ +} diff --git a/src/main/java/utils/exceptions/DeleteRangeInvalid.java b/src/main/java/utils/exceptions/DeleteRangeInvalid.java new file mode 100644 index 0000000000..44c20095cd --- /dev/null +++ b/src/main/java/utils/exceptions/DeleteRangeInvalid.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class DeleteRangeInvalid extends Exception{ +} diff --git a/src/main/java/utils/exceptions/ExceptionHandler.java b/src/main/java/utils/exceptions/ExceptionHandler.java new file mode 100644 index 0000000000..74953993da --- /dev/null +++ b/src/main/java/utils/exceptions/ExceptionHandler.java @@ -0,0 +1,38 @@ +package utils.exceptions; + +import utils.cardlist.CardList; +import utils.command.Command; +import utils.command.ExceptionCommand; +import utils.parser.Parser; +import utils.userinterface.UserInterface; + +public class ExceptionHandler { + + public Command mainExceptionHandler(Parser parser, String userCommand, UserInterface userInterface, CardList cardList) { + Command command = new ExceptionCommand(); + try { + command = parser.parseCommand(userCommand, cardList); + } catch (DeleteMissingNumber e) { + userInterface.printDeleteError(); + } catch (NumberFormatException e) { + //print the error message here + userInterface.printDeleteDateFormatError(); + } catch (DeleteRangeInvalid e) { + //print the error message here + userInterface.printDeleteDateRangeError(); + } catch (AddGoneWrong e) { + //print the error here + userInterface.addError(); + } catch (AddEmptyQuestion e) { + //print something + userInterface.addMissingQuestionPrompt(); + } catch (AddEmptyAnswer e) { + //print something + userInterface.addMissingAnswerPrompt(); + } catch (AddEmptyQuestionAndAnswer e) { + //print something here + userInterface.addMissingQuestionAndAnswerPrompt(); + } + return command; + } +} diff --git a/src/main/java/utils/exceptions/ImportBad.java b/src/main/java/utils/exceptions/ImportBad.java new file mode 100644 index 0000000000..96328faf36 --- /dev/null +++ b/src/main/java/utils/exceptions/ImportBad.java @@ -0,0 +1,5 @@ +package utils.exceptions; + +public class ImportBad extends Exception{ +} + diff --git a/src/main/java/utils/gson-2.10.1.jar b/src/main/java/utils/gson-2.10.1.jar new file mode 100644 index 0000000000000000000000000000000000000000..a88c5bd9b5f17af70ab9601a781388418e0b772f GIT binary patch literal 283367 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

rm)} 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

NPvJQqFaj9kq8j7UkW@ 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 literal 0 HcmV?d00001 diff --git a/src/main/java/utils/parser/Parser.class b/src/main/java/utils/parser/Parser.class new file mode 100644 index 0000000000000000000000000000000000000000..583e71710e5a22b61d3412ccc4de14e2896d0d20 GIT binary patch literal 314 zcmYk0y-LJT5QWcV?R3+Nu!9t-w99m2Hm&qrLqb zfjU{;8Np;>D|6o6XQsZ^SxF}@OndepW}bL(wd(5JoZ3DUUh29r^}$j<>Ifb-B8=e* zX8f;g(uZN1{)7b6K9-icD$ cardList.size()) { + throw new DeleteRangeInvalid(); + } + int deleteIndex = Integer.parseInt(userCommandSplit[1]); + return new DeleteCommand(deleteIndex); + }else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")){ + return new ExportCommand(); + } else if (userCommandSplit[0].startsWith("bye")) { + this.setIsExecuting(false); + return new TerminateCommand(); + } else { + return new ExceptionCommand(); + } + } +} + diff --git a/src/main/java/utils/userinterface/UserInterface.class b/src/main/java/utils/userinterface/UserInterface.class new file mode 100644 index 0000000000000000000000000000000000000000..4640c265f645faa3007aab862df27e9db09ac3fe GIT binary patch literal 1612 zcmaJ>jdBxJ6#j0~HtDi0r3G3L% z)0goLw1Z_vXM6x3%JDn9nIw#bOndJ6`ObIFy?f97=ifj725<)r3$rK}P?^LH+_aFx ztw~H`Q8ZV49~SXZ0UukqjZZ9miq9;D?@Z!zd?Dh?B9>%bF5;^KzE(I@tJc?Bwe|YO z)_nz4RhU|f!fxV)$rCT=nLNwxC={#p2P>_WM_UTBwP)UQ&kekA&ut{JAMPy`aaWOsAF^z>1z11r%Srw9q2I9 zohVMdyPh9#TiU$vI$iB`GuSVF5a?~A54b-aMDdR1Y3Z)_+^3^t;}JF$%9iFSl=KR* z$xnv(ZlZUiILpcidCH|yNnvLAfgf%^Gwnp-*Tq(=rTf33CJyV6;!rc*;?mbLbQW?2 z)s&E{-KHcr2U&s_Q|o1|U6SZ#%Q|Fs`cIc=y6L3s+O-6k{+cPP9xe*ISr3{8WE+vgrXUJjvwex8lbQ9B2$oZkdx$JiO zky{P-dkKfbcpYB$1?R+oT>N5aUi7bSKI-wHha8)7mj)ao-y|D4&QNUjjVC!y^~AxL zOTQ!A8KL56rXvwZzx}>OM_HOWmtAKQ_B!4Eh_A$~GbWFK!hG$-I5(R21eWJRfD)gb zS-u@(xQIEN1zBn3aGv%&76$eO+80OccbLTqBX*n^P9&wKb(>6z>s;j(ROK(^o*p6p z3S)m@{CB!JgOt;d=W3qN1=3ug_dQ(g6KJkNP^`Sf_%SAa8)QwS{!5gcNlMK~g-n8; zK0;x(IJ0vM>lmkomE^qzkyEUz@WCK&oqox?Tsel#+#^iA#57Zd=QLOG4{6SGmtfg3 qQq15Q+rG}-JEXYw7Rs3+<(W57-XP^oQr;rvA}L)`UT3Ksoc{oE&RXLD literal 0 HcmV?d00001 diff --git a/src/main/java/utils/userinterface/UserInterface.java b/src/main/java/utils/userinterface/UserInterface.java new file mode 100644 index 0000000000..1b5d14cbf3 --- /dev/null +++ b/src/main/java/utils/userinterface/UserInterface.java @@ -0,0 +1,119 @@ +package utils.userinterface; + +import utils.Card; +import utils.cardlist.CardList; +import utils.enums.StringArt; + +import java.util.ArrayList; +import java.util.Scanner; + +public class UserInterface { + private static final int LINE_LENGTH = 100; + private static final String INKA_ART = + ".___ __ \n" + + "| | ____ | | _______ \n" + + "| |/ \\| |/ /\\__ \\ \n" + + "| | | \\ < / __ \\_\n" + + "|___|___| /__|_ \\(____ /\n" + + " \\/ \\/ \\/ "; + + private static final String BYE_ART = + " ____ _ _ ____ _ \n" + + "( _ \\( \\/ )( __) / \\ \n" + + " ) _ ( ) / ) _) \\_/ \n" + + "(____/(__/ (____) (_) "; + private final Scanner scanner; + + public UserInterface() { + scanner = new Scanner(System.in); + } + + public String getCommand() { + return scanner.nextLine(); + } + + public void printLine() { + System.out.println("_".repeat(LINE_LENGTH)); + } + + public void printGreeting() { + printLine(); + System.out.println(StringArt.INKA.art); + System.out.println("Welcome to Inka ! Say no more to failing exams as Inka will be your lord and saviour!"); + printLine(); + } + + public void printBye() { + printLine(); + System.out.println(StringArt.BYE.art); + System.out.println("\n Bye! All the best for your exams man!!!"); + printLine(); + } + + public void printNumOfQuestions(CardList cardList) { + System.out.println("You now have " + cardList.size() + " questions in the bank."); + } + + public void printAddQuestionSuccess() { + System.out.println("That's a good question for revision later!"); + } + + public void printDeleteSuccess() { + System.out.println("Too easy ha? You won't see that question again!"); + } + + public void printExportSuccess() { + System.out.println("Deck exported liao"); + } + + public void printWrongCommand() { + System.out.println("PLease re-enter a valid command!"); + } + + public void printImportBad() { + System.out.println("No savedata detected! make new one for uuuuuuuuuuuuuuu"); + } + + public void printCard(CardList cardlist, int id) { + System.out.println(cardlist.get(id)); + } + + public void printDeleteDateFormatError() { + System.out.println("Please ensure that your date is a number and not a string!"); + } + + public void printDeleteDateRangeError() { + System.out.println("Please ensure that the index you wish to delete exists!"); + } + + public void printDeleteError() { + System.out.println("Whoops, ensure that your delete command is valid!"); + } + + public void addError() { + System.out.println("Please ensure use '-' to separate the question and answer to the add command!"); + } + + public void addMissingQuestionPrompt() { + System.out.println("Please ensure that you supply a valid question to Inka!"); + } + + public void addMissingAnswerPrompt() { + System.out.println("Please ensure that you supply a valid answer to Inka!"); + } + public void addMissingQuestionAndAnswerPrompt() { + System.out.println("Please ensure that you supply a valid question and answer to Inka!"); + } + + + public void printList(CardList cardList) { + if (cardList.isEmpty()) { + System.out.println("Your current list is empty."); + } else { + System.out.println("Here is your current list of questions buddy:"); + for (int i = 0; i < cardList.size(); ++i) { + System.out.println((i + 1) + "." + cardList.get(i)); // 1. question answer + } + } + } +} diff --git a/src/test/java/utils/userinterface/UserInterfaceTest.java b/src/test/java/utils/userinterface/UserInterfaceTest.java new file mode 100644 index 0000000000..4090488f16 --- /dev/null +++ b/src/test/java/utils/userinterface/UserInterfaceTest.java @@ -0,0 +1,23 @@ +package utils.userinterface; + +import org.junit.jupiter.api.Test; + +class UserInterfaceTest { + + @Test + void getCommand() { + + } + + @Test + void printLine() { + } + + @Test + void printGreeting() { + } + + @Test + void printBye() { + } +} diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 892cb6cae7..79c073f18d 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,9 +1,17 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| +____________________________________________________________________________________________________ +.___ __ +| | ____ | | _______ +| |/ \| |/ /\__ \ +| | | \ < / __ \_ +|___|___| /__|_ \(____ / + \/ \/ \/ +Welcome to Inka ! Say no more to failing exams as Inka will be your lord and saviour! +____________________________________________________________________________________________________ +____________________________________________________________________________________________________ + ____ _ _ ____ _ +( _ \( \/ )( __) / \ + ) _ ( ) / ) _) \_/ +(____/(__/ (____) (_) -What is your name? -Hello James Gosling + Bye! All the best for your exams man!!! +____________________________________________________________________________________________________ diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index f6ec2e9f95..e69de29bb2 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +0,0 @@ -James Gosling \ No newline at end of file From e377f332bbed0edd098f58870d3a98e0437d10d5 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 18:43:10 +0800 Subject: [PATCH 019/311] chore: cleanup build files --- src/main/java/Inka.class | Bin 616 -> 0 bytes src/main/java/utils/enums/StringArt.class | Bin 1257 -> 0 bytes src/main/java/utils/parser/Parser.class | Bin 314 -> 0 bytes .../java/utils/userinterface/UserInterface.class | Bin 1612 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/main/java/Inka.class delete mode 100644 src/main/java/utils/enums/StringArt.class delete mode 100644 src/main/java/utils/parser/Parser.class delete mode 100644 src/main/java/utils/userinterface/UserInterface.class diff --git a/src/main/java/Inka.class b/src/main/java/Inka.class deleted file mode 100644 index d8aee0ed39cdb6c7f81b1a1ccdb16355947c1109..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 616 zcmah{%Syvg5Ir}Irb*L>)^~i>s?{#c(nUopN9=AJoonB?R0^&P+}Di*SE3`|xOlL^8ban$kTc+WkQ_f&N=BWJ_T9o1S3zpxai2H9zp9b%E5< z@`-@Hb#pES@^wFud+~KchDTnb%}y$e13q7SKGVq3S^d(x^W3%WZXMpl zVN-7VYQ)?PuDlh+voVOGK^ClD zGZM(&sdnwa1c9_m-jB@$%htB=s1kxr7?6UcEJ=*!^l93@SR iVvHloNrhh3aOMpbH)oz<_XgEZ0#YrElQhm+!^9W=a&$ca diff --git a/src/main/java/utils/enums/StringArt.class b/src/main/java/utils/enums/StringArt.class deleted file mode 100644 index 7f0624d5d382300ce4ccfa3e52d49dc6093fb89c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1257 zcmZ`&ZBNrs6n^g7ZCzIfRNg_oDr!4kDk$=Sg@9xv#03(kB*Z35nT3>;lI(>~{2Bj& zLKLIX@Yx?_Jf~a6BHPV&?s<96IZyAo_s`!SzX7aZB?A>tbv%QW#%LP0jsfIZ%yMK- z!=Q$Fozw-k9Sx?2=d3QKu_T~w@4VR%7%Md!L0EVEsCiO%%8gnO9c|Pas{+dF{US-P z)(|jD$KILegkE&i#t@Xlzb-Io+5J)K=IKXYV4xI4{!a7c zz^}dY4np#zv& z5sM_*tdl}yNY~@;4oNa%okAAH4Vc_5cXMTVFapVHcpA~k4_nNPp>c$Wau;FGUQq#P0!F2}o#o7&BvrZ;>PkEd7MKZ)%E}xq^O)Y-}2; oc_%h=$zK#!E|4wns~2?NFCqT#!zYv_W(xIab$W~$s+_=+f9R(Rc>n+a diff --git a/src/main/java/utils/parser/Parser.class b/src/main/java/utils/parser/Parser.class deleted file mode 100644 index 583e71710e5a22b61d3412ccc4de14e2896d0d20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmYk0y-LJT5QWcV?R3+Nu!9t-w99m2Hm&qrLqb zfjU{;8Np;>D|6o6XQsZ^SxF}@OndepW}bL(wd(5JoZ3DUUh29r^}$j<>Ifb-B8=e* zX8f;g(uZN1{)7b6K9-icD$jdBxJ6#j0~HtDi0r3G3L% z)0goLw1Z_vXM6x3%JDn9nIw#bOndJ6`ObIFy?f97=ifj725<)r3$rK}P?^LH+_aFx ztw~H`Q8ZV49~SXZ0UukqjZZ9miq9;D?@Z!zd?Dh?B9>%bF5;^KzE(I@tJc?Bwe|YO z)_nz4RhU|f!fxV)$rCT=nLNwxC={#p2P>_WM_UTBwP)UQ&kekA&ut{JAMPy`aaWOsAF^z>1z11r%Srw9q2I9 zohVMdyPh9#TiU$vI$iB`GuSVF5a?~A54b-aMDdR1Y3Z)_+^3^t;}JF$%9iFSl=KR* z$xnv(ZlZUiILpcidCH|yNnvLAfgf%^Gwnp-*Tq(=rTf33CJyV6;!rc*;?mbLbQW?2 z)s&E{-KHcr2U&s_Q|o1|U6SZ#%Q|Fs`cIc=y6L3s+O-6k{+cPP9xe*ISr3{8WE+vgrXUJjvwex8lbQ9B2$oZkdx$JiO zky{P-dkKfbcpYB$1?R+oT>N5aUi7bSKI-wHha8)7mj)ao-y|D4&QNUjjVC!y^~AxL zOTQ!A8KL56rXvwZzx}>OM_HOWmtAKQ_B!4Eh_A$~GbWFK!hG$-I5(R21eWJRfD)gb zS-u@(xQIEN1zBn3aGv%&76$eO+80OccbLTqBX*n^P9&wKb(>6z>s;j(ROK(^o*p6p z3S)m@{CB!JgOt;d=W3qN1=3ug_dQ(g6KJkNP^`Sf_%SAa8)QwS{!5gcNlMK~g-n8; zK0;x(IJ0vM>lmkomE^qzkyEUz@WCK&oqox?Tsel#+#^iA#57Zd=QLOG4{6SGmtfg3 qQq15Q+rG}-JEXYw7Rs3+<(W57-XP^oQr;rvA}L)`UT3Ksoc{oE&RXLD From 87be43e2243f3f67256cf45c4ff6aaad33c50a53 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 18:43:37 +0800 Subject: [PATCH 020/311] fix: how did this build --- src/main/java/Inka.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 7f9c857903..d904b24490 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -20,10 +20,6 @@ public class Inka { public Inka(String filePath) { storage = new Storage(filePath); - - - public Inka() { - ui = new UserInterface(); parser = new Parser(); cardList = new CardList(); From 4edd2e7cad2c9a24fe803e4e7a0e77c9733d7c23 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 19:12:00 +0800 Subject: [PATCH 021/311] chore: formatter config --- CS2113-codestyle.xml | 580 ++++++++++++++++++ src/main/java/Inka.java | 18 +- src/main/java/utils/Card.java | 5 - src/main/java/utils/Storage.java | 23 +- src/main/java/utils/cardlist/CardList.java | 6 +- src/main/java/utils/command/Command.java | 7 +- .../java/utils/command/DeleteCommand.java | 7 +- .../java/utils/command/ExceptionCommand.java | 3 +- .../java/utils/command/ExportCommand.java | 14 +- src/main/java/utils/command/ListCommand.java | 5 +- .../java/utils/command/TerminateCommand.java | 5 +- .../java/utils/exceptions/AddEmptyAnswer.java | 2 +- .../utils/exceptions/AddEmptyQuestion.java | 2 +- .../exceptions/AddEmptyQuestionAndAnswer.java | 2 +- .../exceptions/DeleteDateWrongFormat.java | 2 +- .../utils/exceptions/DeleteMissingNumber.java | 2 +- .../utils/exceptions/DeleteRangeInvalid.java | 2 +- .../utils/exceptions/ExceptionHandler.java | 3 +- src/main/java/utils/exceptions/ImportBad.java | 3 +- src/main/java/utils/gson-2.10.1.jar | Bin 283367 -> 0 bytes src/main/java/utils/parser/Parser.java | 34 +- .../utils/userinterface/UserInterface.java | 26 +- 22 files changed, 642 insertions(+), 109 deletions(-) create mode 100644 CS2113-codestyle.xml delete mode 100644 src/main/java/utils/gson-2.10.1.jar diff --git a/CS2113-codestyle.xml b/CS2113-codestyle.xml new file mode 100644 index 0000000000..0eef9d04b6 --- /dev/null +++ b/CS2113-codestyle.xml @@ -0,0 +1,580 @@ + + +

+ + + + xmlns:android + + ^$ + + + +
+
+ + + + xmlns:.* + + ^$ + + + BY_NAME + +
+
+ + + + .*:id + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + style + + ^$ + + + +
+
+ + + + .* + + ^$ + + + BY_NAME + +
+
+ + + + .*:.*Style + + http://schemas.android.com/apk/res/android + + + BY_NAME + +
+
+ + + + .*:layout_width + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:layout_height + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:layout_weight + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:layout_margin + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:layout_marginTop + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:layout_marginBottom + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:layout_marginStart + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:layout_marginEnd + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:layout_marginLeft + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:layout_marginRight + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:layout_.* + + http://schemas.android.com/apk/res/android + + + BY_NAME + +
+
+ + + + .*:padding + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:paddingTop + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:paddingBottom + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:paddingStart + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:paddingEnd + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:paddingLeft + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .*:paddingRight + + http://schemas.android.com/apk/res/android + + + +
+
+ + + + .* + http://schemas.android.com/apk/res/android + + + BY_NAME + +
+
+ + + + .* + http://schemas.android.com/apk/res-auto + + + BY_NAME + +
+
+ + + + .* + http://schemas.android.com/tools + + + BY_NAME + +
+
+ + + + .* + .* + + + BY_NAME + +
+ + + + + + \ No newline at end of file diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index d904b24490..8575c8d4dd 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,21 +1,19 @@ +import utils.Storage; import utils.cardlist.CardList; +import utils.command.Command; import utils.exceptions.ExceptionHandler; - import utils.exceptions.ImportBad; import utils.parser.Parser; import utils.userinterface.UserInterface; -import utils.command.*; -import utils.Storage; public class Inka { + private final UserInterface ui; private final Parser parser; private CardList cardList; - private Storage storage; - private ExceptionHandler exceptionHandler; public Inka(String filePath) { @@ -29,10 +27,12 @@ public Inka(String filePath) { storage.load(filePath, cardList); } catch (ImportBad e) { ui.printImportBad(); - } + } + public static void main(String[] args) { + new Inka("savedata.json").run(); } public void run() { @@ -44,10 +44,4 @@ public void run() { command.execute(cardList, ui); } } - - public static void main(String[] args) { - - new Inka("savedata.json").run(); - - } } diff --git a/src/main/java/utils/Card.java b/src/main/java/utils/Card.java index 7e218c0a47..f5b396e920 100644 --- a/src/main/java/utils/Card.java +++ b/src/main/java/utils/Card.java @@ -24,13 +24,8 @@ public String getAnswer() { return answer; } - - @Override public String toString() { return this.question + " " + this.answer; - } // return the card - - } diff --git a/src/main/java/utils/Storage.java b/src/main/java/utils/Storage.java index 25b6dcad57..580d5e7220 100644 --- a/src/main/java/utils/Storage.java +++ b/src/main/java/utils/Storage.java @@ -1,27 +1,24 @@ - package utils; + import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; -import utils.cardlist.CardList; -import utils.exceptions.ImportBad; - -import java.io.*; - +import java.io.BufferedReader; +import java.io.File; import java.io.FileReader; +import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.Scanner; +import utils.cardlist.CardList; +import utils.exceptions.ImportBad; public class Storage { private File f; public Storage(String filePath) { f = new File(filePath); - - } public void load(String fileName, CardList cardList) throws ImportBad { @@ -33,20 +30,16 @@ public void load(String fileName, CardList cardList) throws ImportBad { String deckName = jsonObject.get("deckName").getAsString(); JsonArray jsonArray = jsonObject.getAsJsonArray("cards"); - Type cardListType = new TypeToken>(){}.getType(); + Type cardListType = new TypeToken>() { + }.getType(); ArrayList cards = gson.fromJson(jsonArray, cardListType); // creates an arraylist of cards CardList currentCardList = new CardList(); // creates a new cardlist currentCardList.cards = cards; // appends the arraylist to the cardlist class cardList.cards = currentCardList.cards; // set the cards field in the CardList object reader.close(); - } catch (IOException E) { //too bad! throw new ImportBad(); - - } - - } } diff --git a/src/main/java/utils/cardlist/CardList.java b/src/main/java/utils/cardlist/CardList.java index c0fb989bb8..07aa805f01 100644 --- a/src/main/java/utils/cardlist/CardList.java +++ b/src/main/java/utils/cardlist/CardList.java @@ -1,16 +1,12 @@ package utils.cardlist; -import utils.Card; -import utils.userinterface.UserInterface; - import java.util.ArrayList; +import utils.Card; public class CardList { - public ArrayList cards; - public CardList() { this.cards = new ArrayList<>(); } diff --git a/src/main/java/utils/command/Command.java b/src/main/java/utils/command/Command.java index d873576b50..6df768554d 100644 --- a/src/main/java/utils/command/Command.java +++ b/src/main/java/utils/command/Command.java @@ -1,13 +1,8 @@ package utils.command; -import utils.Card; import utils.cardlist.CardList; import utils.userinterface.UserInterface; - -import java.io.IOException; - - public abstract class Command { public abstract void execute(CardList cardList, UserInterface ui); -} \ No newline at end of file +} diff --git a/src/main/java/utils/command/DeleteCommand.java b/src/main/java/utils/command/DeleteCommand.java index 94f293ff4f..a798b5a9eb 100644 --- a/src/main/java/utils/command/DeleteCommand.java +++ b/src/main/java/utils/command/DeleteCommand.java @@ -1,6 +1,5 @@ package utils.command; -import utils.Card; import utils.cardlist.CardList; import utils.userinterface.UserInterface; @@ -15,8 +14,8 @@ public DeleteCommand(int index) { @Override public void execute(CardList cardList, UserInterface ui) { ui.printDeleteSuccess(); - //ui.printCard(cardList, index); - cardList.delete(this.index-1); // if the input is delete 1, this will delete the first element of the array which is element 0. + // if the input is delete 1, this will delete the first element of the array which is element 0. + cardList.delete(this.index - 1); ui.printNumOfQuestions(cardList); } -} \ No newline at end of file +} diff --git a/src/main/java/utils/command/ExceptionCommand.java b/src/main/java/utils/command/ExceptionCommand.java index 0ee3f7d860..65970f3116 100644 --- a/src/main/java/utils/command/ExceptionCommand.java +++ b/src/main/java/utils/command/ExceptionCommand.java @@ -1,6 +1,5 @@ package utils.command; -import utils.Card; import utils.cardlist.CardList; import utils.userinterface.UserInterface; @@ -9,4 +8,4 @@ public class ExceptionCommand extends Command { public void execute(CardList cardList, UserInterface ui) { ui.printWrongCommand(); } -} \ No newline at end of file +} diff --git a/src/main/java/utils/command/ExportCommand.java b/src/main/java/utils/command/ExportCommand.java index 0170f7b1e1..5fc769e09e 100644 --- a/src/main/java/utils/command/ExportCommand.java +++ b/src/main/java/utils/command/ExportCommand.java @@ -1,19 +1,16 @@ package utils.command; -import utils.Card; -import utils.cardlist.CardList; -import utils.exceptions.DeleteRangeInvalid; -import utils.userinterface.UserInterface; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonObject; - import java.io.FileWriter; import java.io.IOException; -import java.util.ArrayList; +import utils.Card; +import utils.cardlist.CardList; +import utils.userinterface.UserInterface; -public class ExportCommand extends Command{ +public class ExportCommand extends Command { @Override public void execute(CardList cardList, UserInterface ui) { @@ -44,6 +41,5 @@ public void execute(CardList cardList, UserInterface ui) { // Handle the IOException e.printStackTrace(); } - } -} \ No newline at end of file +} diff --git a/src/main/java/utils/command/ListCommand.java b/src/main/java/utils/command/ListCommand.java index bf6edbb774..6a7304eda0 100644 --- a/src/main/java/utils/command/ListCommand.java +++ b/src/main/java/utils/command/ListCommand.java @@ -1,12 +1,11 @@ package utils.command; -import utils.Card; import utils.cardlist.CardList; import utils.userinterface.UserInterface; -public class ListCommand extends Command{ +public class ListCommand extends Command { @Override public void execute(CardList cardList, UserInterface ui) { ui.printList(cardList); } -} \ No newline at end of file +} diff --git a/src/main/java/utils/command/TerminateCommand.java b/src/main/java/utils/command/TerminateCommand.java index d9131e7116..14347a6aea 100644 --- a/src/main/java/utils/command/TerminateCommand.java +++ b/src/main/java/utils/command/TerminateCommand.java @@ -1,12 +1,11 @@ package utils.command; -import utils.Card; import utils.cardlist.CardList; import utils.userinterface.UserInterface; -public class TerminateCommand extends Command{ +public class TerminateCommand extends Command { @Override public void execute(CardList cardList, UserInterface ui) { ui.printBye(); } -} \ No newline at end of file +} diff --git a/src/main/java/utils/exceptions/AddEmptyAnswer.java b/src/main/java/utils/exceptions/AddEmptyAnswer.java index 31c0fd5b21..15882af5e5 100644 --- a/src/main/java/utils/exceptions/AddEmptyAnswer.java +++ b/src/main/java/utils/exceptions/AddEmptyAnswer.java @@ -1,4 +1,4 @@ package utils.exceptions; -public class AddEmptyAnswer extends Exception{ +public class AddEmptyAnswer extends Exception { } diff --git a/src/main/java/utils/exceptions/AddEmptyQuestion.java b/src/main/java/utils/exceptions/AddEmptyQuestion.java index 84f17d5600..5ed6af361a 100644 --- a/src/main/java/utils/exceptions/AddEmptyQuestion.java +++ b/src/main/java/utils/exceptions/AddEmptyQuestion.java @@ -1,4 +1,4 @@ package utils.exceptions; -public class AddEmptyQuestion extends Exception{ +public class AddEmptyQuestion extends Exception { } diff --git a/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java b/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java index 4a85457adf..686647d3a1 100644 --- a/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java +++ b/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java @@ -1,4 +1,4 @@ package utils.exceptions; -public class AddEmptyQuestionAndAnswer extends Exception{ +public class AddEmptyQuestionAndAnswer extends Exception { } diff --git a/src/main/java/utils/exceptions/DeleteDateWrongFormat.java b/src/main/java/utils/exceptions/DeleteDateWrongFormat.java index 89355b40d4..88ceea5775 100644 --- a/src/main/java/utils/exceptions/DeleteDateWrongFormat.java +++ b/src/main/java/utils/exceptions/DeleteDateWrongFormat.java @@ -1,4 +1,4 @@ package utils.exceptions; -public class DeleteDateWrongFormat extends Exception{ +public class DeleteDateWrongFormat extends Exception { } diff --git a/src/main/java/utils/exceptions/DeleteMissingNumber.java b/src/main/java/utils/exceptions/DeleteMissingNumber.java index 598dc44fa3..621abd4139 100644 --- a/src/main/java/utils/exceptions/DeleteMissingNumber.java +++ b/src/main/java/utils/exceptions/DeleteMissingNumber.java @@ -1,4 +1,4 @@ package utils.exceptions; -public class DeleteMissingNumber extends Exception{ +public class DeleteMissingNumber extends Exception { } diff --git a/src/main/java/utils/exceptions/DeleteRangeInvalid.java b/src/main/java/utils/exceptions/DeleteRangeInvalid.java index 44c20095cd..fcdfe9a18b 100644 --- a/src/main/java/utils/exceptions/DeleteRangeInvalid.java +++ b/src/main/java/utils/exceptions/DeleteRangeInvalid.java @@ -1,4 +1,4 @@ package utils.exceptions; -public class DeleteRangeInvalid extends Exception{ +public class DeleteRangeInvalid extends Exception { } diff --git a/src/main/java/utils/exceptions/ExceptionHandler.java b/src/main/java/utils/exceptions/ExceptionHandler.java index 74953993da..2e0549ad04 100644 --- a/src/main/java/utils/exceptions/ExceptionHandler.java +++ b/src/main/java/utils/exceptions/ExceptionHandler.java @@ -8,7 +8,8 @@ public class ExceptionHandler { - public Command mainExceptionHandler(Parser parser, String userCommand, UserInterface userInterface, CardList cardList) { + public Command mainExceptionHandler(Parser parser, String userCommand, UserInterface userInterface, + CardList cardList) { Command command = new ExceptionCommand(); try { command = parser.parseCommand(userCommand, cardList); diff --git a/src/main/java/utils/exceptions/ImportBad.java b/src/main/java/utils/exceptions/ImportBad.java index 96328faf36..d2efe856c2 100644 --- a/src/main/java/utils/exceptions/ImportBad.java +++ b/src/main/java/utils/exceptions/ImportBad.java @@ -1,5 +1,4 @@ package utils.exceptions; -public class ImportBad extends Exception{ +public class ImportBad extends Exception { } - diff --git a/src/main/java/utils/gson-2.10.1.jar b/src/main/java/utils/gson-2.10.1.jar deleted file mode 100644 index a88c5bd9b5f17af70ab9601a781388418e0b772f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283367 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

NPvJQqFaj9kq8j7UkW@ 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 diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/parser/Parser.java index 550be1616c..d165ff9879 100644 --- a/src/main/java/utils/parser/Parser.java +++ b/src/main/java/utils/parser/Parser.java @@ -2,9 +2,19 @@ import utils.Card; import utils.cardlist.CardList; -import utils.command.*; -import utils.exceptions.*; -import utils.userinterface.UserInterface; +import utils.command.AddCommand; +import utils.command.Command; +import utils.command.DeleteCommand; +import utils.command.ExceptionCommand; +import utils.command.ExportCommand; +import utils.command.ListCommand; +import utils.command.TerminateCommand; +import utils.exceptions.AddEmptyAnswer; +import utils.exceptions.AddEmptyQuestion; +import utils.exceptions.AddEmptyQuestionAndAnswer; +import utils.exceptions.AddGoneWrong; +import utils.exceptions.DeleteMissingNumber; +import utils.exceptions.DeleteRangeInvalid; public class Parser { private boolean isExecuting; @@ -21,18 +31,20 @@ public void setIsExecuting(boolean bool) { this.isExecuting = bool; } - public Command parseCommand(String userCommand, CardList cardList) throws DeleteMissingNumber, DeleteRangeInvalid , AddGoneWrong, AddEmptyQuestion, AddEmptyAnswer, AddEmptyQuestionAndAnswer{ + public Command parseCommand(String userCommand, CardList cardList) + throws DeleteMissingNumber, DeleteRangeInvalid, AddGoneWrong, AddEmptyQuestion, AddEmptyAnswer, + AddEmptyQuestionAndAnswer { String[] userCommandSplit = userCommand.split("-", 3); if (userCommandSplit[0].startsWith("list")) { return new ListCommand(); } else if (userCommandSplit[0].startsWith("add") || userCommandSplit[0].startsWith(" add")) { - if(userCommandSplit.length<3) { + if (userCommandSplit.length < 3) { throw new AddGoneWrong(); } else if (userCommandSplit[1].isBlank() && userCommandSplit[2].isBlank()) { throw new AddEmptyQuestionAndAnswer(); - }else if(userCommandSplit[1].isBlank()) { + } else if (userCommandSplit[1].isBlank()) { throw new AddEmptyQuestion(); - } else if(userCommandSplit[2].isBlank()) { + } else if (userCommandSplit[2].isBlank()) { throw new AddEmptyAnswer(); } String question = userCommandSplit[1]; @@ -43,16 +55,15 @@ public Command parseCommand(String userCommand, CardList cardList) throws Delete if (userCommandSplit.length == 1) { throw new DeleteMissingNumber(); - } else if (Integer.parseInt(userCommandSplit[1]) < 1 || Integer.parseInt(userCommandSplit[1]) > cardList.size()) { + } else if (Integer.parseInt(userCommandSplit[1]) < 1 + || Integer.parseInt(userCommandSplit[1]) > cardList.size()) { throw new DeleteRangeInvalid(); } int deleteIndex = Integer.parseInt(userCommandSplit[1]); return new DeleteCommand(deleteIndex); - - }else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")){ + } else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")) { return new ExportCommand(); - } else if (userCommandSplit[0].startsWith("bye")) { this.setIsExecuting(false); return new TerminateCommand(); @@ -61,4 +72,3 @@ public Command parseCommand(String userCommand, CardList cardList) throws Delete } } } - diff --git a/src/main/java/utils/userinterface/UserInterface.java b/src/main/java/utils/userinterface/UserInterface.java index 4649740250..c7fba48eca 100644 --- a/src/main/java/utils/userinterface/UserInterface.java +++ b/src/main/java/utils/userinterface/UserInterface.java @@ -1,27 +1,11 @@ package utils.userinterface; -import utils.Card; +import java.util.Scanner; import utils.cardlist.CardList; import utils.enums.StringArt; -import java.util.ArrayList; -import java.util.Scanner; - public class UserInterface { private static final int LINE_LENGTH = 100; - private static final String INKA_ART = - ".___ __ \n" + - "| | ____ | | _______ \n" + - "| |/ \\| |/ /\\__ \\ \n" + - "| | | \\ < / __ \\_\n" + - "|___|___| /__|_ \\(____ /\n" + - " \\/ \\/ \\/ "; - - private static final String BYE_ART = - " ____ _ _ ____ _ \n" + - "( _ \\( \\/ )( __) / \\ \n" + - " ) _ ( ) / ) _) \\_/ \n" + - "(____/(__/ (____) (_) "; private final Scanner scanner; public UserInterface() { @@ -62,22 +46,18 @@ public void printDeleteSuccess() { System.out.println("Too easy ha? You won't see that question again!"); } - public void printExportSuccess() { System.out.println("Deck exported liao"); } - public void printWrongCommand() { System.out.println("PLease re-enter a valid command!"); } - public void printImportBad() { System.out.println("No savedata detected! make new one for uuuuuuuuuuuuuuu"); } - public void printCard(CardList cardlist, int id) { System.out.println(cardlist.get(id)); } @@ -105,20 +85,18 @@ public void addMissingQuestionPrompt() { public void addMissingAnswerPrompt() { System.out.println("Please ensure that you supply a valid answer to Inka!"); } + public void addMissingQuestionAndAnswerPrompt() { System.out.println("Please ensure that you supply a valid question and answer to Inka!"); } - public void printList(CardList cardList) { if (cardList.isEmpty()) { System.out.println("Your current list is empty."); } else { System.out.println("Here is your current list of questions buddy:"); for (int i = 0; i < cardList.size(); ++i) { - System.out.println((i + 1) + "." + cardList.get(i)); // 1. question answer - } } } From 5f8e4d2a6c0f6afbf1d34c705daaf3c04fc9a9c4 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 19:14:20 +0800 Subject: [PATCH 022/311] bug: input redirection broken? --- text-ui-test/input.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index e69de29bb2..8b13789179 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -0,0 +1 @@ + From f384ed8417e8648b1c0fcfdfde937ad97b37aa3b Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 19:25:53 +0800 Subject: [PATCH 023/311] bug: fix Scanner error --- text-ui-test/EXPECTED.TXT | 9 +++++---- text-ui-test/input.txt | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 79c073f18d..45054da613 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,3 +1,4 @@ +No savedata detected! make new one for uuuuuuuuuuuuuuu ____________________________________________________________________________________________________ .___ __ | | ____ | | _______ @@ -8,10 +9,10 @@ ________________________________________________________________________________ Welcome to Inka ! Say no more to failing exams as Inka will be your lord and saviour! ____________________________________________________________________________________________________ ____________________________________________________________________________________________________ - ____ _ _ ____ _ -( _ \( \/ )( __) / \ - ) _ ( ) / ) _) \_/ -(____/(__/ (____) (_) + ____ _ _ ____ _ +( _ \( \/ )( __) / \ + ) _ ( ) / ) _) \_/ +(____/(__/ (____) (_) Bye! All the best for your exams man!!! ____________________________________________________________________________________________________ diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 8b13789179..b023018cab 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +1 @@ - +bye From 3ca2505c745940c1bf1041037cebfc7cd3d52b69 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 19:29:32 +0800 Subject: [PATCH 024/311] fix: strange whitespace issue --- .gitignore | 2 +- text-ui-test/EXPECTED.TXT | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index 2b04b28136..acf223cc12 100644 --- a/.gitignore +++ b/.gitignore @@ -14,5 +14,5 @@ src/main/resources/docs/ *.iml bin/ -/text-ui-test/ACTUAL.TXT +text-ui-test/ACTUAL.TXT text-ui-test/EXPECTED-UNIX.TXT diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 45054da613..2ec963a916 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -9,10 +9,10 @@ ________________________________________________________________________________ Welcome to Inka ! Say no more to failing exams as Inka will be your lord and saviour! ____________________________________________________________________________________________________ ____________________________________________________________________________________________________ - ____ _ _ ____ _ -( _ \( \/ )( __) / \ - ) _ ( ) / ) _) \_/ -(____/(__/ (____) (_) + ____ _ _ ____ _ +( _ \( \/ )( __) / \ + ) _ ( ) / ) _) \_/ +(____/(__/ (____) (_) Bye! All the best for your exams man!!! ____________________________________________________________________________________________________ From 4dcc67217e4f68809af908cb9e3b15518f5369d3 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 19:39:30 +0800 Subject: [PATCH 025/311] refactor: Update project structure --- src/main/java/Inka.java | 15 +++++++-------- src/main/java/{utils => model}/Card.java | 2 +- .../java/{utils/cardlist => model}/CardList.java | 4 ++-- src/main/java/utils/{parser => }/Parser.java | 6 +++--- src/main/java/utils/Storage.java | 3 ++- .../utils/{userinterface => }/UserInterface.java | 4 ++-- src/main/java/utils/command/AddCommand.java | 6 +++--- src/main/java/utils/command/Command.java | 4 ++-- src/main/java/utils/command/DeleteCommand.java | 4 ++-- src/main/java/utils/command/ExceptionCommand.java | 4 ++-- src/main/java/utils/command/ExportCommand.java | 6 +++--- src/main/java/utils/command/ListCommand.java | 4 ++-- src/main/java/utils/command/TerminateCommand.java | 4 ++-- .../java/utils/exceptions/ExceptionHandler.java | 6 +++--- 14 files changed, 36 insertions(+), 36 deletions(-) rename src/main/java/{utils => model}/Card.java (98%) rename src/main/java/{utils/cardlist => model}/CardList.java (92%) rename src/main/java/utils/{parser => }/Parser.java (97%) rename src/main/java/utils/{userinterface => }/UserInterface.java (98%) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 8575c8d4dd..77429d15a1 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,10 +1,10 @@ import utils.Storage; -import utils.cardlist.CardList; +import model.CardList; import utils.command.Command; import utils.exceptions.ExceptionHandler; import utils.exceptions.ImportBad; -import utils.parser.Parser; -import utils.userinterface.UserInterface; +import utils.Parser; +import utils.UserInterface; public class Inka { @@ -30,11 +30,6 @@ public Inka(String filePath) { } } - public static void main(String[] args) { - - new Inka("savedata.json").run(); - } - public void run() { ui.printGreeting(); @@ -44,4 +39,8 @@ public void run() { command.execute(cardList, ui); } } + + public static void main(String[] args) { + new Inka("savedata.json").run(); + } } diff --git a/src/main/java/utils/Card.java b/src/main/java/model/Card.java similarity index 98% rename from src/main/java/utils/Card.java rename to src/main/java/model/Card.java index f5b396e920..7613316472 100644 --- a/src/main/java/utils/Card.java +++ b/src/main/java/model/Card.java @@ -1,4 +1,4 @@ -package utils; +package model; //to be made into an abstract class containing a few types of Cards later, for now just a single Card will do public class Card { diff --git a/src/main/java/utils/cardlist/CardList.java b/src/main/java/model/CardList.java similarity index 92% rename from src/main/java/utils/cardlist/CardList.java rename to src/main/java/model/CardList.java index 07aa805f01..5f03c4d3c6 100644 --- a/src/main/java/utils/cardlist/CardList.java +++ b/src/main/java/model/CardList.java @@ -1,7 +1,7 @@ -package utils.cardlist; +package model; import java.util.ArrayList; -import utils.Card; +import model.Card; public class CardList { diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/Parser.java similarity index 97% rename from src/main/java/utils/parser/Parser.java rename to src/main/java/utils/Parser.java index d165ff9879..4039d7b1c2 100644 --- a/src/main/java/utils/parser/Parser.java +++ b/src/main/java/utils/Parser.java @@ -1,7 +1,7 @@ -package utils.parser; +package utils; -import utils.Card; -import utils.cardlist.CardList; +import model.Card; +import model.CardList; import utils.command.AddCommand; import utils.command.Command; import utils.command.DeleteCommand; diff --git a/src/main/java/utils/Storage.java b/src/main/java/utils/Storage.java index 580d5e7220..53cac58ff3 100644 --- a/src/main/java/utils/Storage.java +++ b/src/main/java/utils/Storage.java @@ -11,7 +11,8 @@ import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; -import utils.cardlist.CardList; +import model.Card; +import model.CardList; import utils.exceptions.ImportBad; public class Storage { diff --git a/src/main/java/utils/userinterface/UserInterface.java b/src/main/java/utils/UserInterface.java similarity index 98% rename from src/main/java/utils/userinterface/UserInterface.java rename to src/main/java/utils/UserInterface.java index c7fba48eca..9e6f9f20d2 100644 --- a/src/main/java/utils/userinterface/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -1,7 +1,7 @@ -package utils.userinterface; +package utils; import java.util.Scanner; -import utils.cardlist.CardList; +import model.CardList; import utils.enums.StringArt; public class UserInterface { diff --git a/src/main/java/utils/command/AddCommand.java b/src/main/java/utils/command/AddCommand.java index ab5ac4b9d0..982cfa336c 100644 --- a/src/main/java/utils/command/AddCommand.java +++ b/src/main/java/utils/command/AddCommand.java @@ -1,8 +1,8 @@ package utils.command; -import utils.Card; -import utils.cardlist.CardList; -import utils.userinterface.UserInterface; +import model.Card; +import model.CardList; +import utils.UserInterface; public class AddCommand extends Command { private final Card card; diff --git a/src/main/java/utils/command/Command.java b/src/main/java/utils/command/Command.java index 6df768554d..275fbe5759 100644 --- a/src/main/java/utils/command/Command.java +++ b/src/main/java/utils/command/Command.java @@ -1,7 +1,7 @@ package utils.command; -import utils.cardlist.CardList; -import utils.userinterface.UserInterface; +import model.CardList; +import utils.UserInterface; public abstract class Command { public abstract void execute(CardList cardList, UserInterface ui); diff --git a/src/main/java/utils/command/DeleteCommand.java b/src/main/java/utils/command/DeleteCommand.java index a798b5a9eb..32342eda63 100644 --- a/src/main/java/utils/command/DeleteCommand.java +++ b/src/main/java/utils/command/DeleteCommand.java @@ -1,7 +1,7 @@ package utils.command; -import utils.cardlist.CardList; -import utils.userinterface.UserInterface; +import model.CardList; +import utils.UserInterface; public class DeleteCommand extends Command { diff --git a/src/main/java/utils/command/ExceptionCommand.java b/src/main/java/utils/command/ExceptionCommand.java index 65970f3116..e17e1f50f2 100644 --- a/src/main/java/utils/command/ExceptionCommand.java +++ b/src/main/java/utils/command/ExceptionCommand.java @@ -1,7 +1,7 @@ package utils.command; -import utils.cardlist.CardList; -import utils.userinterface.UserInterface; +import model.CardList; +import utils.UserInterface; public class ExceptionCommand extends Command { @Override diff --git a/src/main/java/utils/command/ExportCommand.java b/src/main/java/utils/command/ExportCommand.java index 5fc769e09e..816d686a39 100644 --- a/src/main/java/utils/command/ExportCommand.java +++ b/src/main/java/utils/command/ExportCommand.java @@ -6,9 +6,9 @@ import com.google.gson.JsonObject; import java.io.FileWriter; import java.io.IOException; -import utils.Card; -import utils.cardlist.CardList; -import utils.userinterface.UserInterface; +import model.Card; +import model.CardList; +import utils.UserInterface; public class ExportCommand extends Command { diff --git a/src/main/java/utils/command/ListCommand.java b/src/main/java/utils/command/ListCommand.java index 6a7304eda0..2e77d52a86 100644 --- a/src/main/java/utils/command/ListCommand.java +++ b/src/main/java/utils/command/ListCommand.java @@ -1,7 +1,7 @@ package utils.command; -import utils.cardlist.CardList; -import utils.userinterface.UserInterface; +import model.CardList; +import utils.UserInterface; public class ListCommand extends Command { @Override diff --git a/src/main/java/utils/command/TerminateCommand.java b/src/main/java/utils/command/TerminateCommand.java index 14347a6aea..a11df72727 100644 --- a/src/main/java/utils/command/TerminateCommand.java +++ b/src/main/java/utils/command/TerminateCommand.java @@ -1,7 +1,7 @@ package utils.command; -import utils.cardlist.CardList; -import utils.userinterface.UserInterface; +import model.CardList; +import utils.UserInterface; public class TerminateCommand extends Command { @Override diff --git a/src/main/java/utils/exceptions/ExceptionHandler.java b/src/main/java/utils/exceptions/ExceptionHandler.java index 2e0549ad04..f1ea5c0666 100644 --- a/src/main/java/utils/exceptions/ExceptionHandler.java +++ b/src/main/java/utils/exceptions/ExceptionHandler.java @@ -1,10 +1,10 @@ package utils.exceptions; -import utils.cardlist.CardList; +import model.CardList; import utils.command.Command; import utils.command.ExceptionCommand; -import utils.parser.Parser; -import utils.userinterface.UserInterface; +import utils.Parser; +import utils.UserInterface; public class ExceptionHandler { From a0bbb08292a969e6d820bb0e93fc8e86a8ed4560 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 19:52:50 +0800 Subject: [PATCH 026/311] refactor: Abstracted Storage as interface --- src/main/java/Inka.java | 32 +++++++++-------- src/main/java/model/CardList.java | 10 ++++-- src/main/java/utils/exceptions/ImportBad.java | 4 --- .../utils/exceptions/StorageLoadFailure.java | 4 +++ .../utils/exceptions/StorageSaveFailure.java | 4 +++ src/main/java/utils/storage/IStorage.java | 12 +++++++ .../JsonStorage.java} | 36 +++++++++++-------- 7 files changed, 67 insertions(+), 35 deletions(-) delete mode 100644 src/main/java/utils/exceptions/ImportBad.java create mode 100644 src/main/java/utils/exceptions/StorageLoadFailure.java create mode 100644 src/main/java/utils/exceptions/StorageSaveFailure.java create mode 100644 src/main/java/utils/storage/IStorage.java rename src/main/java/utils/{Storage.java => storage/JsonStorage.java} (58%) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 77429d15a1..93480f2127 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,46 +1,48 @@ -import utils.Storage; import model.CardList; -import utils.command.Command; -import utils.exceptions.ExceptionHandler; -import utils.exceptions.ImportBad; import utils.Parser; +import utils.exceptions.StorageLoadFailure; +import utils.storage.IStorage; +import utils.storage.JsonStorage; import utils.UserInterface; - +import utils.command.Command; +import utils.exceptions.ExceptionHandler; +import utils.exceptions.StorageSaveFailure; public class Inka { private final UserInterface ui; private final Parser parser; - private CardList cardList; - - private Storage storage; private ExceptionHandler exceptionHandler; + private IStorage storage; + + private CardList cardList; public Inka(String filePath) { - storage = new Storage(filePath); + storage = new JsonStorage(filePath); ui = new UserInterface(); parser = new Parser(); cardList = new CardList(); exceptionHandler = new ExceptionHandler(); try { - storage.load(filePath, cardList); - } catch (ImportBad e) { + cardList = storage.load(filePath); + } catch (StorageLoadFailure e) { ui.printImportBad(); } } + public static void main(String[] args) { + new Inka("savedata.json").run(); + } + public void run() { ui.printGreeting(); while (parser.getIsExecuting()) { + // TODO: Confusing naming String userCommand = ui.getCommand(); Command command = exceptionHandler.mainExceptionHandler(parser, userCommand, ui, cardList); command.execute(cardList, ui); } } - - public static void main(String[] args) { - new Inka("savedata.json").run(); - } } diff --git a/src/main/java/model/CardList.java b/src/main/java/model/CardList.java index 5f03c4d3c6..fb90c1bbf1 100644 --- a/src/main/java/model/CardList.java +++ b/src/main/java/model/CardList.java @@ -1,16 +1,22 @@ package model; import java.util.ArrayList; -import model.Card; +import java.util.List; public class CardList { - public ArrayList cards; + private List cards; + // Initialize with no cards public CardList() { this.cards = new ArrayList<>(); } + // Initialize from existing container of cards + public CardList(List cards) { + this.cards = cards; + } + public void addCard(Card card) { this.cards.add(card); } diff --git a/src/main/java/utils/exceptions/ImportBad.java b/src/main/java/utils/exceptions/ImportBad.java deleted file mode 100644 index d2efe856c2..0000000000 --- a/src/main/java/utils/exceptions/ImportBad.java +++ /dev/null @@ -1,4 +0,0 @@ -package utils.exceptions; - -public class ImportBad extends Exception { -} diff --git a/src/main/java/utils/exceptions/StorageLoadFailure.java b/src/main/java/utils/exceptions/StorageLoadFailure.java new file mode 100644 index 0000000000..ecf7535111 --- /dev/null +++ b/src/main/java/utils/exceptions/StorageLoadFailure.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class StorageLoadFailure extends Exception { +} diff --git a/src/main/java/utils/exceptions/StorageSaveFailure.java b/src/main/java/utils/exceptions/StorageSaveFailure.java new file mode 100644 index 0000000000..a36bd54b13 --- /dev/null +++ b/src/main/java/utils/exceptions/StorageSaveFailure.java @@ -0,0 +1,4 @@ +package utils.exceptions; + +public class StorageSaveFailure extends Exception { +} diff --git a/src/main/java/utils/storage/IStorage.java b/src/main/java/utils/storage/IStorage.java new file mode 100644 index 0000000000..f9fc5e7320 --- /dev/null +++ b/src/main/java/utils/storage/IStorage.java @@ -0,0 +1,12 @@ +package utils.storage; + +import model.CardList; +import utils.exceptions.StorageLoadFailure; +import utils.exceptions.StorageSaveFailure; + +public interface IStorage { + + CardList load(String fileName) throws StorageLoadFailure; + void save(String fileName, CardList cardList) throws StorageSaveFailure; + +} diff --git a/src/main/java/utils/Storage.java b/src/main/java/utils/storage/JsonStorage.java similarity index 58% rename from src/main/java/utils/Storage.java rename to src/main/java/utils/storage/JsonStorage.java index 53cac58ff3..36e01cd1c6 100644 --- a/src/main/java/utils/Storage.java +++ b/src/main/java/utils/storage/JsonStorage.java @@ -1,4 +1,4 @@ -package utils; +package utils.storage; import com.google.gson.Gson; import com.google.gson.JsonArray; @@ -13,19 +13,22 @@ import java.util.ArrayList; import model.Card; import model.CardList; -import utils.exceptions.ImportBad; +import utils.exceptions.StorageLoadFailure; +import utils.exceptions.StorageSaveFailure; -public class Storage { +public class JsonStorage implements IStorage { private File f; - public Storage(String filePath) { + public JsonStorage(String filePath) { f = new File(filePath); } - public void load(String fileName, CardList cardList) throws ImportBad { - try { + @Override + public CardList load(String fileName) throws StorageLoadFailure { + + CardList cardList; + try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { Gson gson = new Gson(); - BufferedReader reader = new BufferedReader(new FileReader(fileName)); JsonElement jsonElement = gson.fromJson(reader, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonObject(); String deckName = jsonObject.get("deckName").getAsString(); @@ -33,14 +36,19 @@ public void load(String fileName, CardList cardList) throws ImportBad { JsonArray jsonArray = jsonObject.getAsJsonArray("cards"); Type cardListType = new TypeToken>() { }.getType(); - ArrayList cards = gson.fromJson(jsonArray, cardListType); // creates an arraylist of cards - CardList currentCardList = new CardList(); // creates a new cardlist - currentCardList.cards = cards; // appends the arraylist to the cardlist class - cardList.cards = currentCardList.cards; // set the cards field in the CardList object - reader.close(); + + ArrayList cards = gson.fromJson(jsonArray, cardListType); + cardList = new CardList(cards); } catch (IOException E) { - //too bad! - throw new ImportBad(); + throw new StorageLoadFailure(); } + + return cardList; + } + + @Override + public void save(String fileName, CardList cardList) throws StorageSaveFailure { + // TODO: Not implemented + throw new StorageSaveFailure(); } } From 9723ec4f2246b50528978f0eff9b2d13caabf98e Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 19:57:18 +0800 Subject: [PATCH 027/311] refactor: Changed some confusing naming --- src/main/java/Inka.java | 12 +++++------- src/main/java/utils/UserInterface.java | 12 ++++++------ src/main/java/utils/exceptions/ExceptionHandler.java | 8 ++++---- 3 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 93480f2127..3df59a3f38 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,12 +1,11 @@ import model.CardList; import utils.Parser; -import utils.exceptions.StorageLoadFailure; -import utils.storage.IStorage; -import utils.storage.JsonStorage; import utils.UserInterface; import utils.command.Command; import utils.exceptions.ExceptionHandler; -import utils.exceptions.StorageSaveFailure; +import utils.exceptions.StorageLoadFailure; +import utils.storage.IStorage; +import utils.storage.JsonStorage; public class Inka { @@ -39,9 +38,8 @@ public void run() { ui.printGreeting(); while (parser.getIsExecuting()) { - // TODO: Confusing naming - String userCommand = ui.getCommand(); - Command command = exceptionHandler.mainExceptionHandler(parser, userCommand, ui, cardList); + String userInput = ui.getUserInput(); + Command command = exceptionHandler.mainExceptionHandler(parser, userInput, ui, cardList); command.execute(cardList, ui); } } diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 9e6f9f20d2..ad2f8315fa 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -12,26 +12,26 @@ public UserInterface() { scanner = new Scanner(System.in); } - public String getCommand() { + public String getUserInput() { return scanner.nextLine(); } - public void printLine() { + public void printDivider() { System.out.println("_".repeat(LINE_LENGTH)); } public void printGreeting() { - printLine(); + printDivider(); System.out.println(StringArt.INKA.art); System.out.println("Welcome to Inka ! Say no more to failing exams as Inka will be your lord and saviour!"); - printLine(); + printDivider(); } public void printBye() { - printLine(); + printDivider(); System.out.println(StringArt.BYE.art); System.out.println("\n Bye! All the best for your exams man!!!"); - printLine(); + printDivider(); } public void printNumOfQuestions(CardList cardList) { diff --git a/src/main/java/utils/exceptions/ExceptionHandler.java b/src/main/java/utils/exceptions/ExceptionHandler.java index f1ea5c0666..aaf7a36d11 100644 --- a/src/main/java/utils/exceptions/ExceptionHandler.java +++ b/src/main/java/utils/exceptions/ExceptionHandler.java @@ -1,18 +1,18 @@ package utils.exceptions; import model.CardList; -import utils.command.Command; -import utils.command.ExceptionCommand; import utils.Parser; import utils.UserInterface; +import utils.command.Command; +import utils.command.ExceptionCommand; public class ExceptionHandler { - public Command mainExceptionHandler(Parser parser, String userCommand, UserInterface userInterface, + public Command mainExceptionHandler(Parser parser, String userInput, UserInterface userInterface, CardList cardList) { Command command = new ExceptionCommand(); try { - command = parser.parseCommand(userCommand, cardList); + command = parser.parseCommand(userInput, cardList); } catch (DeleteMissingNumber e) { userInterface.printDeleteError(); } catch (NumberFormatException e) { From b0f4065925d853982ad32e401c10a580ad13062e Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 22:14:03 +0800 Subject: [PATCH 028/311] feat: save to storage --- src/main/java/Inka.java | 2 +- .../utils/exceptions/ExceptionHandler.java | 2 ++ src/main/java/utils/storage/IStorage.java | 4 +-- src/main/java/utils/storage/JsonStorage.java | 30 ++++++++++++++----- 4 files changed, 27 insertions(+), 11 deletions(-) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 3df59a3f38..f53c82806a 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -24,7 +24,7 @@ public Inka(String filePath) { exceptionHandler = new ExceptionHandler(); try { - cardList = storage.load(filePath); + cardList = storage.load(); } catch (StorageLoadFailure e) { ui.printImportBad(); } diff --git a/src/main/java/utils/exceptions/ExceptionHandler.java b/src/main/java/utils/exceptions/ExceptionHandler.java index aaf7a36d11..85b0fa5811 100644 --- a/src/main/java/utils/exceptions/ExceptionHandler.java +++ b/src/main/java/utils/exceptions/ExceptionHandler.java @@ -11,6 +11,7 @@ public class ExceptionHandler { public Command mainExceptionHandler(Parser parser, String userInput, UserInterface userInterface, CardList cardList) { Command command = new ExceptionCommand(); + try { command = parser.parseCommand(userInput, cardList); } catch (DeleteMissingNumber e) { @@ -34,6 +35,7 @@ public Command mainExceptionHandler(Parser parser, String userInput, UserInterfa //print something here userInterface.addMissingQuestionAndAnswerPrompt(); } + return command; } } diff --git a/src/main/java/utils/storage/IStorage.java b/src/main/java/utils/storage/IStorage.java index f9fc5e7320..915a8c9381 100644 --- a/src/main/java/utils/storage/IStorage.java +++ b/src/main/java/utils/storage/IStorage.java @@ -6,7 +6,7 @@ public interface IStorage { - CardList load(String fileName) throws StorageLoadFailure; - void save(String fileName, CardList cardList) throws StorageSaveFailure; + CardList load() throws StorageLoadFailure; + void save(CardList cardList) throws StorageSaveFailure; } diff --git a/src/main/java/utils/storage/JsonStorage.java b/src/main/java/utils/storage/JsonStorage.java index 36e01cd1c6..4d9646f48d 100644 --- a/src/main/java/utils/storage/JsonStorage.java +++ b/src/main/java/utils/storage/JsonStorage.java @@ -1,13 +1,16 @@ package utils.storage; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import java.io.BufferedReader; +import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; +import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; @@ -17,19 +20,23 @@ import utils.exceptions.StorageSaveFailure; public class JsonStorage implements IStorage { - private File f; + private GsonBuilder gsonBuilder; + + private File saveFile; public JsonStorage(String filePath) { - f = new File(filePath); + saveFile = new File(filePath); + gsonBuilder = new GsonBuilder(); } @Override - public CardList load(String fileName) throws StorageLoadFailure { + public CardList load() throws StorageLoadFailure { CardList cardList; - try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { + try (FileReader fileReader = new FileReader(saveFile); + BufferedReader bufferedReader = new BufferedReader(fileReader)) { Gson gson = new Gson(); - JsonElement jsonElement = gson.fromJson(reader, JsonElement.class); + JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonObject(); String deckName = jsonObject.get("deckName").getAsString(); @@ -47,8 +54,15 @@ public CardList load(String fileName) throws StorageLoadFailure { } @Override - public void save(String fileName, CardList cardList) throws StorageSaveFailure { - // TODO: Not implemented - throw new StorageSaveFailure(); + public void save(CardList cardList) throws StorageSaveFailure { + + try (FileWriter fileWriter = new FileWriter(saveFile); + BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { + + String serialized = gsonBuilder.create().toJson(cardList); + bufferedWriter.write(serialized); + } catch (IOException e) { + throw new StorageSaveFailure(); + } } } From 379ab4310a4afa8667953a8d2d994f08b21f429d Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 22:40:41 +0800 Subject: [PATCH 029/311] refactor: abstract saving cards --- src/main/java/Inka.java | 6 ++- src/main/java/utils/UserInterface.java | 22 +++++++--- src/main/java/utils/command/AddCommand.java | 3 +- src/main/java/utils/command/Command.java | 3 +- .../java/utils/command/DeleteCommand.java | 3 +- .../java/utils/command/ExceptionCommand.java | 3 +- .../java/utils/command/ExportCommand.java | 40 ++++--------------- src/main/java/utils/command/ListCommand.java | 3 +- .../java/utils/command/TerminateCommand.java | 3 +- src/main/java/utils/storage/JsonStorage.java | 20 +++++++++- 10 files changed, 59 insertions(+), 47 deletions(-) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index f53c82806a..ac7daa98b4 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -23,10 +23,12 @@ public Inka(String filePath) { cardList = new CardList(); exceptionHandler = new ExceptionHandler(); + // TODO: Separate no file into another print try { cardList = storage.load(); + cardList = storage.load(); } catch (StorageLoadFailure e) { - ui.printImportBad(); + ui.printCreateNewSaveFile(); } } @@ -40,7 +42,7 @@ public void run() { while (parser.getIsExecuting()) { String userInput = ui.getUserInput(); Command command = exceptionHandler.mainExceptionHandler(parser, userInput, ui, cardList); - command.execute(cardList, ui); + command.execute(cardList, ui, storage); } } } diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index ad2f8315fa..2eda699459 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -46,18 +46,30 @@ public void printDeleteSuccess() { System.out.println("Too easy ha? You won't see that question again!"); } - public void printExportSuccess() { - System.out.println("Deck exported liao"); - } - public void printWrongCommand() { System.out.println("PLease re-enter a valid command!"); } - public void printImportBad() { + public void printCreateNewSaveFile() { System.out.println("No savedata detected! make new one for uuuuuuuuuuuuuuu"); } + public void printSaveSuccess() { + System.out.println("Deck exported liao"); + } + + public void printLoadSuccess() { + System.out.println("Deck loaded"); + } + + public void printLoadFailure() { + System.out.println("Failed to load deck :("); + } + + public void printSaveFailure() { + System.out.println("Failed to save deck :("); + } + public void printCard(CardList cardlist, int id) { System.out.println(cardlist.get(id)); } diff --git a/src/main/java/utils/command/AddCommand.java b/src/main/java/utils/command/AddCommand.java index 982cfa336c..1456051e0a 100644 --- a/src/main/java/utils/command/AddCommand.java +++ b/src/main/java/utils/command/AddCommand.java @@ -3,6 +3,7 @@ import model.Card; import model.CardList; import utils.UserInterface; +import utils.storage.IStorage; public class AddCommand extends Command { private final Card card; @@ -12,7 +13,7 @@ public AddCommand(Card card) { } @Override - public void execute(CardList cardList, UserInterface ui) { + public void execute(CardList cardList, UserInterface ui, IStorage storage) { cardList.addCard(card); ui.printAddQuestionSuccess(); ui.printNumOfQuestions(cardList); diff --git a/src/main/java/utils/command/Command.java b/src/main/java/utils/command/Command.java index 275fbe5759..bf41baea0d 100644 --- a/src/main/java/utils/command/Command.java +++ b/src/main/java/utils/command/Command.java @@ -2,7 +2,8 @@ import model.CardList; import utils.UserInterface; +import utils.storage.IStorage; public abstract class Command { - public abstract void execute(CardList cardList, UserInterface ui); + public abstract void execute(CardList cardList, UserInterface ui, IStorage storage); } diff --git a/src/main/java/utils/command/DeleteCommand.java b/src/main/java/utils/command/DeleteCommand.java index 32342eda63..fd73c196ba 100644 --- a/src/main/java/utils/command/DeleteCommand.java +++ b/src/main/java/utils/command/DeleteCommand.java @@ -2,6 +2,7 @@ import model.CardList; import utils.UserInterface; +import utils.storage.IStorage; public class DeleteCommand extends Command { @@ -12,7 +13,7 @@ public DeleteCommand(int index) { } @Override - public void execute(CardList cardList, UserInterface ui) { + public void execute(CardList cardList, UserInterface ui, IStorage storage) { ui.printDeleteSuccess(); // if the input is delete 1, this will delete the first element of the array which is element 0. cardList.delete(this.index - 1); diff --git a/src/main/java/utils/command/ExceptionCommand.java b/src/main/java/utils/command/ExceptionCommand.java index e17e1f50f2..807e868533 100644 --- a/src/main/java/utils/command/ExceptionCommand.java +++ b/src/main/java/utils/command/ExceptionCommand.java @@ -2,10 +2,11 @@ import model.CardList; import utils.UserInterface; +import utils.storage.IStorage; public class ExceptionCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui) { + public void execute(CardList cardList, UserInterface ui, IStorage storage) { ui.printWrongCommand(); } } diff --git a/src/main/java/utils/command/ExportCommand.java b/src/main/java/utils/command/ExportCommand.java index 816d686a39..6d02992a0e 100644 --- a/src/main/java/utils/command/ExportCommand.java +++ b/src/main/java/utils/command/ExportCommand.java @@ -1,45 +1,19 @@ package utils.command; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; -import com.google.gson.JsonObject; -import java.io.FileWriter; -import java.io.IOException; -import model.Card; import model.CardList; import utils.UserInterface; +import utils.exceptions.StorageSaveFailure; +import utils.storage.IStorage; public class ExportCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui) { - - JsonObject exportData = new JsonObject(); - exportData.addProperty("deckName", "lky deck"); - exportData.addProperty("numCards", cardList.size()); - JsonArray cardData = new JsonArray(); - for (int i = 0; i < cardList.size(); i++) { - Card card = cardList.get(i); - JsonObject cardObject = new JsonObject(); - cardObject.addProperty("uuid", card.getUuid()); - cardObject.addProperty("question", card.getQuestion()); - cardObject.addProperty("answer", card.getAnswer()); - cardData.add(cardObject); - } - - exportData.add("cards", cardData); - - // Use Gson to write the exportData object to a JSON file - Gson gson = new GsonBuilder().setPrettyPrinting().create(); + public void execute(CardList cardList, UserInterface ui, IStorage storage) { try { - FileWriter writer = new FileWriter("savedata.json"); - gson.toJson(exportData, writer); - writer.close(); - ui.printExportSuccess(); - } catch (IOException e) { - // Handle the IOException - e.printStackTrace(); + storage.save(cardList); + ui.printSaveSuccess(); + } catch (StorageSaveFailure e) { + ui.printSaveFailure(); } } } diff --git a/src/main/java/utils/command/ListCommand.java b/src/main/java/utils/command/ListCommand.java index 2e77d52a86..8fba918246 100644 --- a/src/main/java/utils/command/ListCommand.java +++ b/src/main/java/utils/command/ListCommand.java @@ -2,10 +2,11 @@ import model.CardList; import utils.UserInterface; +import utils.storage.IStorage; public class ListCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui) { + public void execute(CardList cardList, UserInterface ui, IStorage storage) { ui.printList(cardList); } } diff --git a/src/main/java/utils/command/TerminateCommand.java b/src/main/java/utils/command/TerminateCommand.java index a11df72727..6ea5d779f0 100644 --- a/src/main/java/utils/command/TerminateCommand.java +++ b/src/main/java/utils/command/TerminateCommand.java @@ -2,10 +2,11 @@ import model.CardList; import utils.UserInterface; +import utils.storage.IStorage; public class TerminateCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui) { + public void execute(CardList cardList, UserInterface ui, IStorage storage) { ui.printBye(); } } diff --git a/src/main/java/utils/storage/JsonStorage.java b/src/main/java/utils/storage/JsonStorage.java index 4d9646f48d..c48558cdf2 100644 --- a/src/main/java/utils/storage/JsonStorage.java +++ b/src/main/java/utils/storage/JsonStorage.java @@ -56,10 +56,28 @@ public CardList load() throws StorageLoadFailure { @Override public void save(CardList cardList) throws StorageSaveFailure { + JsonObject exportData = new JsonObject(); + exportData.addProperty("deckName", "lky deck"); + exportData.addProperty("numCards", cardList.size()); + + // Serialize cards + JsonArray cardData = new JsonArray(); + for (int i = 0; i < cardList.size(); i++) { + Card card = cardList.get(i); + JsonObject cardObject = new JsonObject(); + cardObject.addProperty("uuid", card.getUuid()); + cardObject.addProperty("question", card.getQuestion()); + cardObject.addProperty("answer", card.getAnswer()); + cardData.add(cardObject); + } + exportData.add("cards", cardData); + try (FileWriter fileWriter = new FileWriter(saveFile); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { - String serialized = gsonBuilder.create().toJson(cardList); + Gson gson = gsonBuilder.setPrettyPrinting().create(); + String serialized = gson.toJson(cardList); + bufferedWriter.write(serialized); } catch (IOException e) { throw new StorageSaveFailure(); From e7cf156eb2e7155d8628a8842d70d193f042db55 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 14 Mar 2023 23:10:20 +0800 Subject: [PATCH 030/311] feat: test for file existence --- src/main/java/Inka.java | 43 +++++++++++++++---- src/main/java/utils/UserInterface.java | 4 +- src/main/java/utils/command/AddCommand.java | 4 +- src/main/java/utils/command/Command.java | 4 +- .../java/utils/command/DeleteCommand.java | 4 +- .../java/utils/command/ExceptionCommand.java | 4 +- .../java/utils/command/ExportCommand.java | 4 +- src/main/java/utils/command/ListCommand.java | 4 +- .../java/utils/command/TerminateCommand.java | 4 +- .../{IStorage.java => IDataStorage.java} | 2 +- src/main/java/utils/storage/JsonStorage.java | 7 +-- src/main/java/utils/storage/Storage.java | 21 +++++++++ 12 files changed, 74 insertions(+), 31 deletions(-) rename src/main/java/utils/storage/{IStorage.java => IDataStorage.java} (88%) create mode 100644 src/main/java/utils/storage/Storage.java diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index ac7daa98b4..bd0550a15c 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,18 +1,19 @@ +import java.io.IOException; import model.CardList; import utils.Parser; import utils.UserInterface; import utils.command.Command; import utils.exceptions.ExceptionHandler; import utils.exceptions.StorageLoadFailure; -import utils.storage.IStorage; import utils.storage.JsonStorage; +import utils.storage.Storage; public class Inka { private final UserInterface ui; private final Parser parser; private ExceptionHandler exceptionHandler; - private IStorage storage; + private Storage storage; private CardList cardList; @@ -20,20 +21,44 @@ public Inka(String filePath) { storage = new JsonStorage(filePath); ui = new UserInterface(); parser = new Parser(); - cardList = new CardList(); exceptionHandler = new ExceptionHandler(); - // TODO: Separate no file into another print + cardList = loadSaveFile(); + } + + public static void main(String[] args) { + new Inka("savedata.json").run(); + } + + /** + * Attempts to load from save file + * + * @return CardList containing all saved cards + * @note Will create a new file if no file exists + */ + private CardList loadSaveFile() { + // No previously saved file + if (!storage.saveFileExists()) { + try { + storage.createSaveFile(); + ui.printNoSaveFile(); + } catch (IOException e) { + ui.printSaveFailure(); + } + + return new CardList(); + } + + // File exists; try to load from it + CardList cardList = new CardList(); try { cardList = storage.load(); - cardList = storage.load(); + ui.printLoadSuccess(); } catch (StorageLoadFailure e) { - ui.printCreateNewSaveFile(); + ui.printLoadFailure(); } - } - public static void main(String[] args) { - new Inka("savedata.json").run(); + return cardList; } public void run() { diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 2eda699459..05058f07ad 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -50,7 +50,7 @@ public void printWrongCommand() { System.out.println("PLease re-enter a valid command!"); } - public void printCreateNewSaveFile() { + public void printNoSaveFile() { System.out.println("No savedata detected! make new one for uuuuuuuuuuuuuuu"); } @@ -59,7 +59,7 @@ public void printSaveSuccess() { } public void printLoadSuccess() { - System.out.println("Deck loaded"); + System.out.println("Deck loaded!"); } public void printLoadFailure() { diff --git a/src/main/java/utils/command/AddCommand.java b/src/main/java/utils/command/AddCommand.java index 1456051e0a..53d08bc5b0 100644 --- a/src/main/java/utils/command/AddCommand.java +++ b/src/main/java/utils/command/AddCommand.java @@ -3,7 +3,7 @@ import model.Card; import model.CardList; import utils.UserInterface; -import utils.storage.IStorage; +import utils.storage.IDataStorage; public class AddCommand extends Command { private final Card card; @@ -13,7 +13,7 @@ public AddCommand(Card card) { } @Override - public void execute(CardList cardList, UserInterface ui, IStorage storage) { + public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { cardList.addCard(card); ui.printAddQuestionSuccess(); ui.printNumOfQuestions(cardList); diff --git a/src/main/java/utils/command/Command.java b/src/main/java/utils/command/Command.java index bf41baea0d..fa123e3e89 100644 --- a/src/main/java/utils/command/Command.java +++ b/src/main/java/utils/command/Command.java @@ -2,8 +2,8 @@ import model.CardList; import utils.UserInterface; -import utils.storage.IStorage; +import utils.storage.IDataStorage; public abstract class Command { - public abstract void execute(CardList cardList, UserInterface ui, IStorage storage); + public abstract void execute(CardList cardList, UserInterface ui, IDataStorage storage); } diff --git a/src/main/java/utils/command/DeleteCommand.java b/src/main/java/utils/command/DeleteCommand.java index fd73c196ba..86f63e5e5f 100644 --- a/src/main/java/utils/command/DeleteCommand.java +++ b/src/main/java/utils/command/DeleteCommand.java @@ -2,7 +2,7 @@ import model.CardList; import utils.UserInterface; -import utils.storage.IStorage; +import utils.storage.IDataStorage; public class DeleteCommand extends Command { @@ -13,7 +13,7 @@ public DeleteCommand(int index) { } @Override - public void execute(CardList cardList, UserInterface ui, IStorage storage) { + public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { ui.printDeleteSuccess(); // if the input is delete 1, this will delete the first element of the array which is element 0. cardList.delete(this.index - 1); diff --git a/src/main/java/utils/command/ExceptionCommand.java b/src/main/java/utils/command/ExceptionCommand.java index 807e868533..7f7ecb2507 100644 --- a/src/main/java/utils/command/ExceptionCommand.java +++ b/src/main/java/utils/command/ExceptionCommand.java @@ -2,11 +2,11 @@ import model.CardList; import utils.UserInterface; -import utils.storage.IStorage; +import utils.storage.IDataStorage; public class ExceptionCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui, IStorage storage) { + public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { ui.printWrongCommand(); } } diff --git a/src/main/java/utils/command/ExportCommand.java b/src/main/java/utils/command/ExportCommand.java index 6d02992a0e..331fcb8df5 100644 --- a/src/main/java/utils/command/ExportCommand.java +++ b/src/main/java/utils/command/ExportCommand.java @@ -3,12 +3,12 @@ import model.CardList; import utils.UserInterface; import utils.exceptions.StorageSaveFailure; -import utils.storage.IStorage; +import utils.storage.IDataStorage; public class ExportCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui, IStorage storage) { + public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { try { storage.save(cardList); ui.printSaveSuccess(); diff --git a/src/main/java/utils/command/ListCommand.java b/src/main/java/utils/command/ListCommand.java index 8fba918246..92d405f4fd 100644 --- a/src/main/java/utils/command/ListCommand.java +++ b/src/main/java/utils/command/ListCommand.java @@ -2,11 +2,11 @@ import model.CardList; import utils.UserInterface; -import utils.storage.IStorage; +import utils.storage.IDataStorage; public class ListCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui, IStorage storage) { + public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { ui.printList(cardList); } } diff --git a/src/main/java/utils/command/TerminateCommand.java b/src/main/java/utils/command/TerminateCommand.java index 6ea5d779f0..225cad8561 100644 --- a/src/main/java/utils/command/TerminateCommand.java +++ b/src/main/java/utils/command/TerminateCommand.java @@ -2,11 +2,11 @@ import model.CardList; import utils.UserInterface; -import utils.storage.IStorage; +import utils.storage.IDataStorage; public class TerminateCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui, IStorage storage) { + public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { ui.printBye(); } } diff --git a/src/main/java/utils/storage/IStorage.java b/src/main/java/utils/storage/IDataStorage.java similarity index 88% rename from src/main/java/utils/storage/IStorage.java rename to src/main/java/utils/storage/IDataStorage.java index 915a8c9381..3778202d55 100644 --- a/src/main/java/utils/storage/IStorage.java +++ b/src/main/java/utils/storage/IDataStorage.java @@ -4,7 +4,7 @@ import utils.exceptions.StorageLoadFailure; import utils.exceptions.StorageSaveFailure; -public interface IStorage { +public interface IDataStorage { CardList load() throws StorageLoadFailure; void save(CardList cardList) throws StorageSaveFailure; diff --git a/src/main/java/utils/storage/JsonStorage.java b/src/main/java/utils/storage/JsonStorage.java index c48558cdf2..1d2c368cf1 100644 --- a/src/main/java/utils/storage/JsonStorage.java +++ b/src/main/java/utils/storage/JsonStorage.java @@ -8,7 +8,6 @@ import com.google.gson.reflect.TypeToken; import java.io.BufferedReader; import java.io.BufferedWriter; -import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; @@ -19,13 +18,11 @@ import utils.exceptions.StorageLoadFailure; import utils.exceptions.StorageSaveFailure; -public class JsonStorage implements IStorage { +public class JsonStorage extends Storage { private GsonBuilder gsonBuilder; - private File saveFile; - public JsonStorage(String filePath) { - saveFile = new File(filePath); + super(filePath); gsonBuilder = new GsonBuilder(); } diff --git a/src/main/java/utils/storage/Storage.java b/src/main/java/utils/storage/Storage.java new file mode 100644 index 0000000000..b683d737be --- /dev/null +++ b/src/main/java/utils/storage/Storage.java @@ -0,0 +1,21 @@ +package utils.storage; + +import java.io.File; +import java.io.IOException; + +public abstract class Storage implements IDataStorage { + + protected File saveFile; + + public Storage(String filePath) { + saveFile = new File(filePath); + } + + public boolean saveFileExists() { + return saveFile.exists() && saveFile.isFile(); + } + + public void createSaveFile() throws IOException { + saveFile.createNewFile(); + } +} From 63b9084e0f363b5c63528ab5cf770f7f0416401e Mon Sep 17 00:00:00 2001 From: Akhil Date: Thu, 16 Mar 2023 01:10:08 +0800 Subject: [PATCH 031/311] refactor: refactored exceptions into InkaExceptions --- savedata.json | 7 ---- src/main/java/Inka.java | 13 +++--- src/main/java/utils/UserInterface.java | 29 ++----------- .../java/utils/exceptions/AddEmptyAnswer.java | 5 ++- .../utils/exceptions/AddEmptyQuestion.java | 5 ++- .../exceptions/AddEmptyQuestionAndAnswer.java | 5 ++- .../java/utils/exceptions/AddGoneWrong.java | 5 ++- .../exceptions/DeleteDateWrongFormat.java | 5 ++- .../utils/exceptions/DeleteMissingNumber.java | 5 ++- .../utils/exceptions/DeleteRangeInvalid.java | 5 ++- .../utils/exceptions/ExceptionHandler.java | 41 ------------------- .../java/utils/exceptions/InkaException.java | 13 ++++++ 12 files changed, 53 insertions(+), 85 deletions(-) delete mode 100644 src/main/java/utils/exceptions/ExceptionHandler.java create mode 100644 src/main/java/utils/exceptions/InkaException.java diff --git a/savedata.json b/savedata.json index a84e2f4039..65872d5f79 100644 --- a/savedata.json +++ b/savedata.json @@ -1,12 +1,5 @@ { - "deckName": "lky deck", - "numCards": 2, "cards": [ - { - "uuid": 0, - "question": " is akhil a dirty commie ", - "answer": " yes" - }, { "uuid": 0, "question": "why do other groups keep attackin ian", diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index bd0550a15c..a9003816c9 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -3,7 +3,7 @@ import utils.Parser; import utils.UserInterface; import utils.command.Command; -import utils.exceptions.ExceptionHandler; +import utils.exceptions.InkaException; import utils.exceptions.StorageLoadFailure; import utils.storage.JsonStorage; import utils.storage.Storage; @@ -12,7 +12,6 @@ public class Inka { private final UserInterface ui; private final Parser parser; - private ExceptionHandler exceptionHandler; private Storage storage; private CardList cardList; @@ -21,7 +20,6 @@ public Inka(String filePath) { storage = new JsonStorage(filePath); ui = new UserInterface(); parser = new Parser(); - exceptionHandler = new ExceptionHandler(); cardList = loadSaveFile(); } @@ -66,8 +64,13 @@ public void run() { while (parser.getIsExecuting()) { String userInput = ui.getUserInput(); - Command command = exceptionHandler.mainExceptionHandler(parser, userInput, ui, cardList); - command.execute(cardList, ui, storage); + //Command command = exceptionHandler.mainExceptionHandler(parser, userInput, ui, cardList); + try { + Command command = parser.parseCommand(userInput, cardList); + command.execute(cardList, ui, storage); + } catch (InkaException e) { + ui.printException(e); + } } } } diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 05058f07ad..7815885d8f 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -3,6 +3,7 @@ import java.util.Scanner; import model.CardList; import utils.enums.StringArt; +import utils.exceptions.InkaException; public class UserInterface { private static final int LINE_LENGTH = 100; @@ -47,7 +48,7 @@ public void printDeleteSuccess() { } public void printWrongCommand() { - System.out.println("PLease re-enter a valid command!"); + System.out.println("Please re-enter a valid command!"); } public void printNoSaveFile() { @@ -74,32 +75,10 @@ public void printCard(CardList cardlist, int id) { System.out.println(cardlist.get(id)); } - public void printDeleteDateFormatError() { - System.out.println("Please ensure that your date is a number and not a string!"); - } - - public void printDeleteDateRangeError() { - System.out.println("Please ensure that the index you wish to delete exists!"); - } - - public void printDeleteError() { - System.out.println("Whoops, ensure that your delete command is valid!"); - } - public void addError() { - System.out.println("Please ensure use '-' to separate the question and answer to the add command!"); - } - - public void addMissingQuestionPrompt() { - System.out.println("Please ensure that you supply a valid question to Inka!"); - } - - public void addMissingAnswerPrompt() { - System.out.println("Please ensure that you supply a valid answer to Inka!"); - } - public void addMissingQuestionAndAnswerPrompt() { - System.out.println("Please ensure that you supply a valid question and answer to Inka!"); + public void printException(InkaException e) { + System.out.println(e.getUiMessage()); } public void printList(CardList cardList) { diff --git a/src/main/java/utils/exceptions/AddEmptyAnswer.java b/src/main/java/utils/exceptions/AddEmptyAnswer.java index 15882af5e5..4430517841 100644 --- a/src/main/java/utils/exceptions/AddEmptyAnswer.java +++ b/src/main/java/utils/exceptions/AddEmptyAnswer.java @@ -1,4 +1,7 @@ package utils.exceptions; -public class AddEmptyAnswer extends Exception { +public class AddEmptyAnswer extends InkaException { + public AddEmptyAnswer() { + super("Please ensure that you supply a valid answer to Inka!"); + } } diff --git a/src/main/java/utils/exceptions/AddEmptyQuestion.java b/src/main/java/utils/exceptions/AddEmptyQuestion.java index 5ed6af361a..b7aec6aa70 100644 --- a/src/main/java/utils/exceptions/AddEmptyQuestion.java +++ b/src/main/java/utils/exceptions/AddEmptyQuestion.java @@ -1,4 +1,7 @@ package utils.exceptions; -public class AddEmptyQuestion extends Exception { +public class AddEmptyQuestion extends InkaException { + public AddEmptyQuestion() { + super("Please ensure that you supply a valid question to Inka!"); + } } diff --git a/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java b/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java index 686647d3a1..8c895faf01 100644 --- a/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java +++ b/src/main/java/utils/exceptions/AddEmptyQuestionAndAnswer.java @@ -1,4 +1,7 @@ package utils.exceptions; -public class AddEmptyQuestionAndAnswer extends Exception { +public class AddEmptyQuestionAndAnswer extends InkaException { + public AddEmptyQuestionAndAnswer() { + super("Please ensure that you supply a valid question and answer to Inka!"); + } } diff --git a/src/main/java/utils/exceptions/AddGoneWrong.java b/src/main/java/utils/exceptions/AddGoneWrong.java index b05a8c11e5..fc5dceb95a 100644 --- a/src/main/java/utils/exceptions/AddGoneWrong.java +++ b/src/main/java/utils/exceptions/AddGoneWrong.java @@ -1,4 +1,7 @@ package utils.exceptions; -public class AddGoneWrong extends Exception { +public class AddGoneWrong extends InkaException { + public AddGoneWrong() { + super("Please ensure use '-' to separate the question and answer to the add command!"); + } } diff --git a/src/main/java/utils/exceptions/DeleteDateWrongFormat.java b/src/main/java/utils/exceptions/DeleteDateWrongFormat.java index 88ceea5775..cc63c77bbb 100644 --- a/src/main/java/utils/exceptions/DeleteDateWrongFormat.java +++ b/src/main/java/utils/exceptions/DeleteDateWrongFormat.java @@ -1,4 +1,7 @@ package utils.exceptions; -public class DeleteDateWrongFormat extends Exception { +public class DeleteDateWrongFormat extends InkaException { + public DeleteDateWrongFormat() { + super("Please ensure that your date is a number and not a string!"); + } } diff --git a/src/main/java/utils/exceptions/DeleteMissingNumber.java b/src/main/java/utils/exceptions/DeleteMissingNumber.java index 621abd4139..8325b1e93e 100644 --- a/src/main/java/utils/exceptions/DeleteMissingNumber.java +++ b/src/main/java/utils/exceptions/DeleteMissingNumber.java @@ -1,4 +1,7 @@ package utils.exceptions; -public class DeleteMissingNumber extends Exception { +public class DeleteMissingNumber extends InkaException { + public DeleteMissingNumber() { + super("Whoops, ensure that your delete command is valid!"); + } } diff --git a/src/main/java/utils/exceptions/DeleteRangeInvalid.java b/src/main/java/utils/exceptions/DeleteRangeInvalid.java index fcdfe9a18b..218b8980ff 100644 --- a/src/main/java/utils/exceptions/DeleteRangeInvalid.java +++ b/src/main/java/utils/exceptions/DeleteRangeInvalid.java @@ -1,4 +1,7 @@ package utils.exceptions; -public class DeleteRangeInvalid extends Exception { +public class DeleteRangeInvalid extends InkaException { + public DeleteRangeInvalid() { + super("Please ensure that your date is a number and not a string!"); + } } diff --git a/src/main/java/utils/exceptions/ExceptionHandler.java b/src/main/java/utils/exceptions/ExceptionHandler.java deleted file mode 100644 index 85b0fa5811..0000000000 --- a/src/main/java/utils/exceptions/ExceptionHandler.java +++ /dev/null @@ -1,41 +0,0 @@ -package utils.exceptions; - -import model.CardList; -import utils.Parser; -import utils.UserInterface; -import utils.command.Command; -import utils.command.ExceptionCommand; - -public class ExceptionHandler { - - public Command mainExceptionHandler(Parser parser, String userInput, UserInterface userInterface, - CardList cardList) { - Command command = new ExceptionCommand(); - - try { - command = parser.parseCommand(userInput, cardList); - } catch (DeleteMissingNumber e) { - userInterface.printDeleteError(); - } catch (NumberFormatException e) { - //print the error message here - userInterface.printDeleteDateFormatError(); - } catch (DeleteRangeInvalid e) { - //print the error message here - userInterface.printDeleteDateRangeError(); - } catch (AddGoneWrong e) { - //print the error here - userInterface.addError(); - } catch (AddEmptyQuestion e) { - //print something - userInterface.addMissingQuestionPrompt(); - } catch (AddEmptyAnswer e) { - //print something - userInterface.addMissingAnswerPrompt(); - } catch (AddEmptyQuestionAndAnswer e) { - //print something here - userInterface.addMissingQuestionAndAnswerPrompt(); - } - - return command; - } -} diff --git a/src/main/java/utils/exceptions/InkaException.java b/src/main/java/utils/exceptions/InkaException.java new file mode 100644 index 0000000000..90895b7cea --- /dev/null +++ b/src/main/java/utils/exceptions/InkaException.java @@ -0,0 +1,13 @@ +package utils.exceptions; + +public class InkaException extends Exception{ + protected String uiMessage = ""; + InkaException(String uiMessage) { + this.uiMessage = uiMessage; + } + + public String getUiMessage() { + return uiMessage; + } + +} From 5811524c145b1c564734a3c652a25d93e1bd293d Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 16 Mar 2023 21:10:02 +0800 Subject: [PATCH 032/311] feat: add auto-generated uuid for cards --- build.gradle | 1 - savedata.json | 5 +++-- src/main/java/model/Card.java | 10 ++++++---- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index 9030d9a1eb..481e8055b4 100644 --- a/build.gradle +++ b/build.gradle @@ -13,7 +13,6 @@ dependencies { testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' implementation 'com.google.code.gson:gson:2.8.9' - } test { diff --git a/savedata.json b/savedata.json index 65872d5f79..de2ab59633 100644 --- a/savedata.json +++ b/savedata.json @@ -1,9 +1,10 @@ { + "deckName" : "lky deck", "cards": [ { - "uuid": 0, + "uuid": "38271ef5-1d40-4570-9d6e-c8d12c17c853", "question": "why do other groups keep attackin ian", "answer": "he is not a dirty commie" } ] -} \ No newline at end of file +} diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 7613316472..c9cda638db 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -1,8 +1,9 @@ package model; +import java.util.UUID; //to be made into an abstract class containing a few types of Cards later, for now just a single Card will do public class Card { - private int uuid; //to be made into a hash later + private UUID uuid; //to be made into a hash later private String question; private String answer; @@ -10,10 +11,11 @@ public class Card { public Card(String question, String answer) { this.question = question; this.answer = answer; + this.uuid = UUID.randomUUID(); } - public int getUuid() { - return uuid; + public String getUuid() { + return this.uuid.toString() ; } public String getQuestion() { @@ -26,6 +28,6 @@ public String getAnswer() { @Override public String toString() { - return this.question + " " + this.answer; + return "Qn: " + this.question + "\nAns: " + this.answer + "\nUUID: " + this.uuid; } // return the card } From 22d27333074aa71c564bae96969b0f54c410ee64 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 16 Mar 2023 21:12:06 +0800 Subject: [PATCH 033/311] bugs: re-add deckName field in json file --- savedata.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/savedata.json b/savedata.json index de2ab59633..f833730422 100644 --- a/savedata.json +++ b/savedata.json @@ -1,5 +1,5 @@ { - "deckName" : "lky deck", + "deckName" : "lky deck", "cards": [ { "uuid": "38271ef5-1d40-4570-9d6e-c8d12c17c853", @@ -8,3 +8,4 @@ } ] } + From 2c3d619ed11d475f12385eea9638c36b8211ce64 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 16 Mar 2023 23:31:44 +0800 Subject: [PATCH 034/311] add assertions in parser --- META-INF/MANIFEST.MF | 3 +++ src/main/java/utils/Parser.java | 3 +++ 2 files changed, 6 insertions(+) create mode 100644 META-INF/MANIFEST.MF diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..571acd935f --- /dev/null +++ b/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: Inka + diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java index 4039d7b1c2..e988f75eb1 100644 --- a/src/main/java/utils/Parser.java +++ b/src/main/java/utils/Parser.java @@ -35,12 +35,14 @@ public Command parseCommand(String userCommand, CardList cardList) throws DeleteMissingNumber, DeleteRangeInvalid, AddGoneWrong, AddEmptyQuestion, AddEmptyAnswer, AddEmptyQuestionAndAnswer { String[] userCommandSplit = userCommand.split("-", 3); + assert userCommandSplit.length >=1 : "User Command must be specified"; if (userCommandSplit[0].startsWith("list")) { return new ListCommand(); } else if (userCommandSplit[0].startsWith("add") || userCommandSplit[0].startsWith(" add")) { if (userCommandSplit.length < 3) { throw new AddGoneWrong(); } else if (userCommandSplit[1].isBlank() && userCommandSplit[2].isBlank()) { + assert userCommandSplit.length < 3 : "Questions and answers should be specified " ; throw new AddEmptyQuestionAndAnswer(); } else if (userCommandSplit[1].isBlank()) { throw new AddEmptyQuestion(); @@ -61,6 +63,7 @@ public Command parseCommand(String userCommand, CardList cardList) throw new DeleteRangeInvalid(); } int deleteIndex = Integer.parseInt(userCommandSplit[1]); + assert deleteIndex >= 0 : "deleteIndex should be a number"; return new DeleteCommand(deleteIndex); } else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")) { return new ExportCommand(); From 7848f842b0e91827bcf4dc68e25b9ee1ec0f9a05 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 16 Mar 2023 23:32:20 +0800 Subject: [PATCH 035/311] add assertions in parser --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index acf223cc12..2d701d689d 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ /out/ /*.iml /*.class +/*.jar # Gradle build files /.gradle/ From 8faad9e24a2229848b704680e64cbb7a0738eb85 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 16 Mar 2023 23:39:36 +0800 Subject: [PATCH 036/311] add logger in JsonStorage --- src/main/java/utils/Parser.java | 3 +++ src/main/java/utils/storage/JsonStorage.java | 8 ++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java index e988f75eb1..db24c7ce4d 100644 --- a/src/main/java/utils/Parser.java +++ b/src/main/java/utils/Parser.java @@ -2,6 +2,8 @@ import model.Card; import model.CardList; + + import utils.command.AddCommand; import utils.command.Command; import utils.command.DeleteCommand; @@ -19,6 +21,7 @@ public class Parser { private boolean isExecuting; + public Parser() { this.isExecuting = true; } diff --git a/src/main/java/utils/storage/JsonStorage.java b/src/main/java/utils/storage/JsonStorage.java index 1d2c368cf1..9788c1d50c 100644 --- a/src/main/java/utils/storage/JsonStorage.java +++ b/src/main/java/utils/storage/JsonStorage.java @@ -1,5 +1,6 @@ package utils.storage; +import java.util.logging.*; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; @@ -13,6 +14,7 @@ import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; +import java.util.logging.Logger; import model.Card; import model.CardList; import utils.exceptions.StorageLoadFailure; @@ -20,7 +22,7 @@ public class JsonStorage extends Storage { private GsonBuilder gsonBuilder; - + private static Logger logger = Logger.getLogger("storage.JsonStorage"); public JsonStorage(String filePath) { super(filePath); gsonBuilder = new GsonBuilder(); @@ -43,7 +45,8 @@ public CardList load() throws StorageLoadFailure { ArrayList cards = gson.fromJson(jsonArray, cardListType); cardList = new CardList(cards); - } catch (IOException E) { + } catch (IOException e) { + logger.log(Level.WARNING, "Failed to load file from savedata.json", e); throw new StorageLoadFailure(); } @@ -77,6 +80,7 @@ public void save(CardList cardList) throws StorageSaveFailure { bufferedWriter.write(serialized); } catch (IOException e) { + logger.log(Level.WARNING, "Failed to save data to savedata.json", e); throw new StorageSaveFailure(); } } From 009048a5aeef93b478b0bc68754381475dbdac48 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 16 Mar 2023 23:45:00 +0800 Subject: [PATCH 037/311] fix logger imports style --- src/main/java/utils/storage/JsonStorage.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/utils/storage/JsonStorage.java b/src/main/java/utils/storage/JsonStorage.java index 9788c1d50c..c9c451c56a 100644 --- a/src/main/java/utils/storage/JsonStorage.java +++ b/src/main/java/utils/storage/JsonStorage.java @@ -1,6 +1,7 @@ package utils.storage; -import java.util.logging.*; +import java.util.logging.Logger; +import java.util.logging.Level; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; @@ -14,15 +15,15 @@ import java.io.IOException; import java.lang.reflect.Type; import java.util.ArrayList; -import java.util.logging.Logger; import model.Card; import model.CardList; import utils.exceptions.StorageLoadFailure; import utils.exceptions.StorageSaveFailure; public class JsonStorage extends Storage { - private GsonBuilder gsonBuilder; private static Logger logger = Logger.getLogger("storage.JsonStorage"); + private GsonBuilder gsonBuilder; + public JsonStorage(String filePath) { super(filePath); gsonBuilder = new GsonBuilder(); From b0a590bd40be64605ca7ba29d9aafe057eec36f3 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Fri, 17 Mar 2023 10:39:42 +0800 Subject: [PATCH 038/311] fix: some storage bug fixes --- src/main/java/Inka.java | 12 ++---------- src/main/java/utils/storage/JsonStorage.java | 2 +- 2 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index a9003816c9..a79f218221 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,4 +1,3 @@ -import java.io.IOException; import model.CardList; import utils.Parser; import utils.UserInterface; @@ -32,18 +31,11 @@ public static void main(String[] args) { * Attempts to load from save file * * @return CardList containing all saved cards - * @note Will create a new file if no file exists */ private CardList loadSaveFile() { - // No previously saved file + // Notify user of no previously saved file if (!storage.saveFileExists()) { - try { - storage.createSaveFile(); - ui.printNoSaveFile(); - } catch (IOException e) { - ui.printSaveFailure(); - } - + ui.printNoSaveFile(); return new CardList(); } diff --git a/src/main/java/utils/storage/JsonStorage.java b/src/main/java/utils/storage/JsonStorage.java index c9c451c56a..ec4c49aa78 100644 --- a/src/main/java/utils/storage/JsonStorage.java +++ b/src/main/java/utils/storage/JsonStorage.java @@ -77,7 +77,7 @@ public void save(CardList cardList) throws StorageSaveFailure { BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { Gson gson = gsonBuilder.setPrettyPrinting().create(); - String serialized = gson.toJson(cardList); + String serialized = gson.toJson(exportData); bufferedWriter.write(serialized); } catch (IOException e) { From 5cb727b990f75c403ac48b21d1953ccbdd550f4a Mon Sep 17 00:00:00 2001 From: ltzehan Date: Fri, 17 Mar 2023 12:54:17 +0800 Subject: [PATCH 039/311] test: Added basic tests for JsonStorage --- savedata.json | 11 ++++-- src/main/java/utils/storage/JsonStorage.java | 7 +++- src/test/data/storage/empty.json | 0 src/test/data/storage/malformed.json | 3 ++ src/test/data/storage/valid.json | 16 ++++++++ .../java/utils/storage/JsonStorageTest.java | 37 +++++++++++++++++++ 6 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 src/test/data/storage/empty.json create mode 100644 src/test/data/storage/malformed.json create mode 100644 src/test/data/storage/valid.json create mode 100644 src/test/java/utils/storage/JsonStorageTest.java diff --git a/savedata.json b/savedata.json index f833730422..3b2160d37d 100644 --- a/savedata.json +++ b/savedata.json @@ -1,11 +1,16 @@ { - "deckName" : "lky deck", + "deckName": "lky deck", + "numCards": 2, "cards": [ { - "uuid": "38271ef5-1d40-4570-9d6e-c8d12c17c853", + "uuid": "00000000-0000-0000-0000-000000000000", + "question": "is akhil a dirty commie", + "answer": "yes" + }, + { + "uuid": "00000000-0000-0000-0000-000000000001", "question": "why do other groups keep attackin ian", "answer": "he is not a dirty commie" } ] } - diff --git a/src/main/java/utils/storage/JsonStorage.java b/src/main/java/utils/storage/JsonStorage.java index ec4c49aa78..3b3d3744fb 100644 --- a/src/main/java/utils/storage/JsonStorage.java +++ b/src/main/java/utils/storage/JsonStorage.java @@ -1,5 +1,6 @@ package utils.storage; +import com.google.gson.JsonSyntaxException; import java.util.logging.Logger; import java.util.logging.Level; import com.google.gson.Gson; @@ -47,7 +48,11 @@ public CardList load() throws StorageLoadFailure { ArrayList cards = gson.fromJson(jsonArray, cardListType); cardList = new CardList(cards); } catch (IOException e) { - logger.log(Level.WARNING, "Failed to load file from savedata.json", e); + logger.log(Level.WARNING, "Failed to load file from " + this.saveFile.getAbsolutePath(), e); + throw new StorageLoadFailure(); + } catch (NullPointerException | JsonSyntaxException e) { + logger.log(Level.WARNING, "Corrupted save file: " + this.saveFile.getAbsolutePath(), e); + // TODO: New exception type? throw new StorageLoadFailure(); } diff --git a/src/test/data/storage/empty.json b/src/test/data/storage/empty.json new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/test/data/storage/malformed.json b/src/test/data/storage/malformed.json new file mode 100644 index 0000000000..80c6b7fe73 --- /dev/null +++ b/src/test/data/storage/malformed.json @@ -0,0 +1,3 @@ +{{ + +} diff --git a/src/test/data/storage/valid.json b/src/test/data/storage/valid.json new file mode 100644 index 0000000000..3b2160d37d --- /dev/null +++ b/src/test/data/storage/valid.json @@ -0,0 +1,16 @@ +{ + "deckName": "lky deck", + "numCards": 2, + "cards": [ + { + "uuid": "00000000-0000-0000-0000-000000000000", + "question": "is akhil a dirty commie", + "answer": "yes" + }, + { + "uuid": "00000000-0000-0000-0000-000000000001", + "question": "why do other groups keep attackin ian", + "answer": "he is not a dirty commie" + } + ] +} diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java new file mode 100644 index 0000000000..1966bb6733 --- /dev/null +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -0,0 +1,37 @@ +package utils.storage; + +import java.nio.file.Path; +import model.CardList; +import org.junit.jupiter.api.Test; +import utils.exceptions.StorageLoadFailure; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class JsonStorageTest { + + private static final Path TEST_DATA_FOLDER = Path.of("src/test/data/storage"); + + /* Test cases */ + private static final Path EMPTY_FILE = TEST_DATA_FOLDER.resolve("empty.json"); + private static final Path MALFORMED_FILE = TEST_DATA_FOLDER.resolve("malformed.json"); + private static final Path VALID_FILE = TEST_DATA_FOLDER.resolve("valid.json"); + + @Test + public void load_emptyFile() { + Storage storage = new JsonStorage(EMPTY_FILE.toString()); + assertThrows(StorageLoadFailure.class, storage::load); + } + + @Test + public void load_malformedFile() { + Storage storage = new JsonStorage(MALFORMED_FILE.toString()); + assertThrows(StorageLoadFailure.class, storage::load); + } + + @Test + public void load_validFile() throws StorageLoadFailure { + Storage storage = new JsonStorage(VALID_FILE.toString()); + CardList cardList = storage.load(); + + assert cardList.size() == 2; + } +} From 5d2b921c629ffe0f88c1131414bb90feb41bd38f Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Fri, 17 Mar 2023 13:56:30 +0800 Subject: [PATCH 040/311] add Tag class --- src/main/java/model/Tag.java | 15 ++++++++ src/main/java/model/TagList.java | 38 +++++++++++++++++++ src/main/java/utils/Parser.java | 4 +- .../{AddCommand.java => AddCardCommand.java} | 4 +- 4 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 src/main/java/model/Tag.java create mode 100644 src/main/java/model/TagList.java rename src/main/java/utils/command/{AddCommand.java => AddCardCommand.java} (82%) diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java new file mode 100644 index 0000000000..08b19be0bb --- /dev/null +++ b/src/main/java/model/Tag.java @@ -0,0 +1,15 @@ +package model; + +import java.util.ArrayList; +import java.util.UUID; + +public class Tag { + private UUID uuid; + private String tagName; + private ArrayList cards = new ArrayList<>(); + + public Tag (String tagName, UUID cardUUID) { + this.tagName = tagName; + cards.add(cardUUID); + } +} diff --git a/src/main/java/model/TagList.java b/src/main/java/model/TagList.java new file mode 100644 index 0000000000..df7755db7b --- /dev/null +++ b/src/main/java/model/TagList.java @@ -0,0 +1,38 @@ +package model; + +import java.util.ArrayList; +import java.util.List; + +public class TagList { + private List tags; + + // Initialize with no cards + public TagList() { + this.tags = new ArrayList<>(); + } + + // Initialize from existing container of cards + public TagList(List tags) { + this.tags = tags; + } + + public void addCard(Tag tag) { + this.tags.add(tag); + } + + public void delete(int id) { + this.tags.remove(id); + } + + public boolean isEmpty() { + return tags.isEmpty(); + } + + public int size() { + return this.tags.size(); + } + + public Tag get(int id) { + return this.tags.get(id); + } +} diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java index db24c7ce4d..0c616a9afd 100644 --- a/src/main/java/utils/Parser.java +++ b/src/main/java/utils/Parser.java @@ -4,7 +4,7 @@ import model.CardList; -import utils.command.AddCommand; +import utils.command.AddCardCommand; import utils.command.Command; import utils.command.DeleteCommand; import utils.command.ExceptionCommand; @@ -55,7 +55,7 @@ public Command parseCommand(String userCommand, CardList cardList) String question = userCommandSplit[1]; String answer = userCommandSplit[2]; Card card = new Card(question, answer); - return new AddCommand(card); // main command return + return new AddCardCommand(card); // main command return } else if (userCommandSplit[0].startsWith("delete") || userCommandSplit[0].startsWith("delete ")) { if (userCommandSplit.length == 1) { diff --git a/src/main/java/utils/command/AddCommand.java b/src/main/java/utils/command/AddCardCommand.java similarity index 82% rename from src/main/java/utils/command/AddCommand.java rename to src/main/java/utils/command/AddCardCommand.java index 53d08bc5b0..3516f59124 100644 --- a/src/main/java/utils/command/AddCommand.java +++ b/src/main/java/utils/command/AddCardCommand.java @@ -5,10 +5,10 @@ import utils.UserInterface; import utils.storage.IDataStorage; -public class AddCommand extends Command { +public class AddCardCommand extends Command { private final Card card; - public AddCommand(Card card) { + public AddCardCommand(Card card) { this.card = card; } From 23d2945b8ed5eeac04740903517837b0d02fae85 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Fri, 17 Mar 2023 13:58:35 +0800 Subject: [PATCH 041/311] ref : change Command naming --- src/main/java/utils/Parser.java | 4 ++-- .../utils/command/{ListCommand.java => ListCardCommand.java} | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) rename src/main/java/utils/command/{ListCommand.java => ListCardCommand.java} (84%) diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java index 0c616a9afd..22fc111343 100644 --- a/src/main/java/utils/Parser.java +++ b/src/main/java/utils/Parser.java @@ -9,7 +9,7 @@ import utils.command.DeleteCommand; import utils.command.ExceptionCommand; import utils.command.ExportCommand; -import utils.command.ListCommand; +import utils.command.ListCardCommand; import utils.command.TerminateCommand; import utils.exceptions.AddEmptyAnswer; import utils.exceptions.AddEmptyQuestion; @@ -40,7 +40,7 @@ public Command parseCommand(String userCommand, CardList cardList) String[] userCommandSplit = userCommand.split("-", 3); assert userCommandSplit.length >=1 : "User Command must be specified"; if (userCommandSplit[0].startsWith("list")) { - return new ListCommand(); + return new ListCardCommand(); } else if (userCommandSplit[0].startsWith("add") || userCommandSplit[0].startsWith(" add")) { if (userCommandSplit.length < 3) { throw new AddGoneWrong(); diff --git a/src/main/java/utils/command/ListCommand.java b/src/main/java/utils/command/ListCardCommand.java similarity index 84% rename from src/main/java/utils/command/ListCommand.java rename to src/main/java/utils/command/ListCardCommand.java index 92d405f4fd..c0250b7f19 100644 --- a/src/main/java/utils/command/ListCommand.java +++ b/src/main/java/utils/command/ListCardCommand.java @@ -4,7 +4,7 @@ import utils.UserInterface; import utils.storage.IDataStorage; -public class ListCommand extends Command { +public class ListCardCommand extends Command { @Override public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { ui.printList(cardList); From 96dad27e5b1b1d0846985afe3b1a691c711bd1af Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Fri, 17 Mar 2023 14:35:42 +0800 Subject: [PATCH 042/311] feat: add tags listing --- src/main/java/Inka.java | 7 +++++-- src/main/java/model/CardList.java | 2 +- src/main/java/model/Tag.java | 5 +++++ src/main/java/utils/Parser.java | 20 +++++++++++-------- src/main/java/utils/UserInterface.java | 12 +++++++++++ .../java/utils/command/AddCardCommand.java | 3 ++- src/main/java/utils/command/Command.java | 6 ++++-- ...eteCommand.java => DeleteCardCommand.java} | 7 ++++--- .../java/utils/command/ExceptionCommand.java | 3 ++- .../java/utils/command/ExportCommand.java | 3 ++- .../java/utils/command/ListCardCommand.java | 3 ++- .../java/utils/command/ListTagsCommand.java | 13 ++++++++++++ .../java/utils/command/TerminateCommand.java | 3 ++- src/main/java/utils/tagcommand/Command.java | 9 +++++++++ 14 files changed, 75 insertions(+), 21 deletions(-) rename src/main/java/utils/command/{DeleteCommand.java => DeleteCardCommand.java} (65%) create mode 100644 src/main/java/utils/command/ListTagsCommand.java create mode 100644 src/main/java/utils/tagcommand/Command.java diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index a79f218221..12998df55f 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,4 +1,5 @@ import model.CardList; +import model.TagList; import utils.Parser; import utils.UserInterface; import utils.command.Command; @@ -14,6 +15,7 @@ public class Inka { private Storage storage; private CardList cardList; + private TagList tagList; public Inka(String filePath) { storage = new JsonStorage(filePath); @@ -21,6 +23,7 @@ public Inka(String filePath) { parser = new Parser(); cardList = loadSaveFile(); + tagList = new TagList(); } public static void main(String[] args) { @@ -58,8 +61,8 @@ public void run() { String userInput = ui.getUserInput(); //Command command = exceptionHandler.mainExceptionHandler(parser, userInput, ui, cardList); try { - Command command = parser.parseCommand(userInput, cardList); - command.execute(cardList, ui, storage); + Command command = parser.parseCommand(userInput, cardList, tagList); + command.execute(cardList, tagList, ui, storage); } catch (InkaException e) { ui.printException(e); } diff --git a/src/main/java/model/CardList.java b/src/main/java/model/CardList.java index fb90c1bbf1..e43d419490 100644 --- a/src/main/java/model/CardList.java +++ b/src/main/java/model/CardList.java @@ -3,7 +3,7 @@ import java.util.ArrayList; import java.util.List; -public class CardList { +public class CardList { private List cards; diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 08b19be0bb..21ebd8b1b2 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -12,4 +12,9 @@ public Tag (String tagName, UUID cardUUID) { this.tagName = tagName; cards.add(cardUUID); } + + @Override + public String toString() { + return "Tag name : " + tagName + ", tag uuid : " + uuid; + } } diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java index 22fc111343..4433cecaff 100644 --- a/src/main/java/utils/Parser.java +++ b/src/main/java/utils/Parser.java @@ -3,13 +3,14 @@ import model.Card; import model.CardList; - +import model.TagList; import utils.command.AddCardCommand; import utils.command.Command; -import utils.command.DeleteCommand; +import utils.command.DeleteCardCommand; import utils.command.ExceptionCommand; import utils.command.ExportCommand; import utils.command.ListCardCommand; +import utils.command.ListTagsCommand; import utils.command.TerminateCommand; import utils.exceptions.AddEmptyAnswer; import utils.exceptions.AddEmptyQuestion; @@ -34,14 +35,14 @@ public void setIsExecuting(boolean bool) { this.isExecuting = bool; } - public Command parseCommand(String userCommand, CardList cardList) + public Command parseCommand(String userCommand, CardList cardList, TagList tagList) throws DeleteMissingNumber, DeleteRangeInvalid, AddGoneWrong, AddEmptyQuestion, AddEmptyAnswer, AddEmptyQuestionAndAnswer { String[] userCommandSplit = userCommand.split("-", 3); assert userCommandSplit.length >=1 : "User Command must be specified"; - if (userCommandSplit[0].startsWith("list")) { + if (userCommandSplit[0].startsWith("card list")) { return new ListCardCommand(); - } else if (userCommandSplit[0].startsWith("add") || userCommandSplit[0].startsWith(" add")) { + } else if (userCommandSplit[0].startsWith("card add")) { if (userCommandSplit.length < 3) { throw new AddGoneWrong(); } else if (userCommandSplit[1].isBlank() && userCommandSplit[2].isBlank()) { @@ -56,7 +57,7 @@ public Command parseCommand(String userCommand, CardList cardList) String answer = userCommandSplit[2]; Card card = new Card(question, answer); return new AddCardCommand(card); // main command return - } else if (userCommandSplit[0].startsWith("delete") || userCommandSplit[0].startsWith("delete ")) { + } else if (userCommandSplit[0].startsWith("card delete")) { if (userCommandSplit.length == 1) { throw new DeleteMissingNumber(); @@ -67,8 +68,11 @@ public Command parseCommand(String userCommand, CardList cardList) } int deleteIndex = Integer.parseInt(userCommandSplit[1]); assert deleteIndex >= 0 : "deleteIndex should be a number"; - return new DeleteCommand(deleteIndex); - } else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")) { + return new DeleteCardCommand(deleteIndex); + } else if (userCommandSplit[0].startsWith("tag list")) { + return new ListTagsCommand(); + } + else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")) { return new ExportCommand(); } else if (userCommandSplit[0].startsWith("bye")) { this.setIsExecuting(false); diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 7815885d8f..0ba01732dc 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -2,6 +2,7 @@ import java.util.Scanner; import model.CardList; +import model.TagList; import utils.enums.StringArt; import utils.exceptions.InkaException; @@ -91,4 +92,15 @@ public void printList(CardList cardList) { } } } + + public void printTagList(TagList tagList) { + if (tagList.isEmpty()) { + System.out.println("Your current list of tags is empty."); + } else { + System.out.println("Here is your current list of tags:"); + for (int i = 0; i < tagList.size(); ++i) { + System.out.println((i + 1) + "." + tagList.get(i)); + } + } + } } diff --git a/src/main/java/utils/command/AddCardCommand.java b/src/main/java/utils/command/AddCardCommand.java index 3516f59124..74f2318593 100644 --- a/src/main/java/utils/command/AddCardCommand.java +++ b/src/main/java/utils/command/AddCardCommand.java @@ -2,6 +2,7 @@ import model.Card; import model.CardList; +import model.TagList; import utils.UserInterface; import utils.storage.IDataStorage; @@ -13,7 +14,7 @@ public AddCardCommand(Card card) { } @Override - public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { cardList.addCard(card); ui.printAddQuestionSuccess(); ui.printNumOfQuestions(cardList); diff --git a/src/main/java/utils/command/Command.java b/src/main/java/utils/command/Command.java index fa123e3e89..79e4689523 100644 --- a/src/main/java/utils/command/Command.java +++ b/src/main/java/utils/command/Command.java @@ -1,9 +1,11 @@ package utils.command; import model.CardList; +import model.TagList; import utils.UserInterface; import utils.storage.IDataStorage; -public abstract class Command { - public abstract void execute(CardList cardList, UserInterface ui, IDataStorage storage); + public abstract class Command { + public abstract void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage); + } diff --git a/src/main/java/utils/command/DeleteCommand.java b/src/main/java/utils/command/DeleteCardCommand.java similarity index 65% rename from src/main/java/utils/command/DeleteCommand.java rename to src/main/java/utils/command/DeleteCardCommand.java index 86f63e5e5f..ad044cde6d 100644 --- a/src/main/java/utils/command/DeleteCommand.java +++ b/src/main/java/utils/command/DeleteCardCommand.java @@ -1,19 +1,20 @@ package utils.command; import model.CardList; +import model.TagList; import utils.UserInterface; import utils.storage.IDataStorage; -public class DeleteCommand extends Command { +public class DeleteCardCommand extends Command { private int index; - public DeleteCommand(int index) { + public DeleteCardCommand(int index) { this.index = index; } @Override - public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { ui.printDeleteSuccess(); // if the input is delete 1, this will delete the first element of the array which is element 0. cardList.delete(this.index - 1); diff --git a/src/main/java/utils/command/ExceptionCommand.java b/src/main/java/utils/command/ExceptionCommand.java index 7f7ecb2507..3dbe4ea245 100644 --- a/src/main/java/utils/command/ExceptionCommand.java +++ b/src/main/java/utils/command/ExceptionCommand.java @@ -1,12 +1,13 @@ package utils.command; import model.CardList; +import model.TagList; import utils.UserInterface; import utils.storage.IDataStorage; public class ExceptionCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { ui.printWrongCommand(); } } diff --git a/src/main/java/utils/command/ExportCommand.java b/src/main/java/utils/command/ExportCommand.java index 331fcb8df5..b8a2eaa807 100644 --- a/src/main/java/utils/command/ExportCommand.java +++ b/src/main/java/utils/command/ExportCommand.java @@ -1,6 +1,7 @@ package utils.command; import model.CardList; +import model.TagList; import utils.UserInterface; import utils.exceptions.StorageSaveFailure; import utils.storage.IDataStorage; @@ -8,7 +9,7 @@ public class ExportCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { try { storage.save(cardList); ui.printSaveSuccess(); diff --git a/src/main/java/utils/command/ListCardCommand.java b/src/main/java/utils/command/ListCardCommand.java index c0250b7f19..25f0d03ca8 100644 --- a/src/main/java/utils/command/ListCardCommand.java +++ b/src/main/java/utils/command/ListCardCommand.java @@ -1,12 +1,13 @@ package utils.command; import model.CardList; +import model.TagList; import utils.UserInterface; import utils.storage.IDataStorage; public class ListCardCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { ui.printList(cardList); } } diff --git a/src/main/java/utils/command/ListTagsCommand.java b/src/main/java/utils/command/ListTagsCommand.java new file mode 100644 index 0000000000..1e4f6c2f4c --- /dev/null +++ b/src/main/java/utils/command/ListTagsCommand.java @@ -0,0 +1,13 @@ +package utils.command; + +import model.CardList; +import model.TagList; +import utils.UserInterface; +import utils.storage.IDataStorage; + +public class ListTagsCommand extends Command { + @Override + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + ui.printTagList(tagList); + } +} diff --git a/src/main/java/utils/command/TerminateCommand.java b/src/main/java/utils/command/TerminateCommand.java index 225cad8561..23e741e311 100644 --- a/src/main/java/utils/command/TerminateCommand.java +++ b/src/main/java/utils/command/TerminateCommand.java @@ -1,12 +1,13 @@ package utils.command; import model.CardList; +import model.TagList; import utils.UserInterface; import utils.storage.IDataStorage; public class TerminateCommand extends Command { @Override - public void execute(CardList cardList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { ui.printBye(); } } diff --git a/src/main/java/utils/tagcommand/Command.java b/src/main/java/utils/tagcommand/Command.java new file mode 100644 index 0000000000..8e76953816 --- /dev/null +++ b/src/main/java/utils/tagcommand/Command.java @@ -0,0 +1,9 @@ +package utils.tagcommand; + +import model.TagList; +import utils.UserInterface; +import utils.storage.IDataStorage; + +public abstract class Command { + public abstract void execute(TagList tagList, UserInterface ui, IDataStorage storage); +} From 022174b8f01058637d2ddcde200f19d626ab94a4 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Fri, 17 Mar 2023 15:04:34 +0800 Subject: [PATCH 043/311] feat: assign tag to a card --- savedata.json | 2 +- src/main/java/model/Tag.java | 5 ++-- src/main/java/model/TagList.java | 2 +- src/main/java/utils/Parser.java | 27 +++++++++++++------ .../java/utils/command/AddTagCommand.java | 22 +++++++++++++++ 5 files changed, 46 insertions(+), 12 deletions(-) create mode 100644 src/main/java/utils/command/AddTagCommand.java diff --git a/savedata.json b/savedata.json index 3b2160d37d..db75da94bb 100644 --- a/savedata.json +++ b/savedata.json @@ -3,7 +3,7 @@ "numCards": 2, "cards": [ { - "uuid": "00000000-0000-0000-0000-000000000000", + "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", "question": "is akhil a dirty commie", "answer": "yes" }, diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 21ebd8b1b2..d20af057bd 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -8,9 +8,10 @@ public class Tag { private String tagName; private ArrayList cards = new ArrayList<>(); - public Tag (String tagName, UUID cardUUID) { + public Tag (String tagName, String cardUUID) { this.tagName = tagName; - cards.add(cardUUID); + this.uuid = UUID.randomUUID(); + cards.add(UUID.fromString(cardUUID)); } @Override diff --git a/src/main/java/model/TagList.java b/src/main/java/model/TagList.java index df7755db7b..939e0d624e 100644 --- a/src/main/java/model/TagList.java +++ b/src/main/java/model/TagList.java @@ -16,7 +16,7 @@ public TagList(List tags) { this.tags = tags; } - public void addCard(Tag tag) { + public void addTag(Tag tag) { this.tags.add(tag); } diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java index 4433cecaff..1930cd3d4b 100644 --- a/src/main/java/utils/Parser.java +++ b/src/main/java/utils/Parser.java @@ -3,8 +3,10 @@ import model.Card; import model.CardList; +import model.Tag; import model.TagList; import utils.command.AddCardCommand; +import utils.command.AddTagCommand; import utils.command.Command; import utils.command.DeleteCardCommand; import utils.command.ExceptionCommand; @@ -18,6 +20,7 @@ import utils.exceptions.AddGoneWrong; import utils.exceptions.DeleteMissingNumber; import utils.exceptions.DeleteRangeInvalid; +import utils.exceptions.InkaException; public class Parser { private boolean isExecuting; @@ -35,14 +38,13 @@ public void setIsExecuting(boolean bool) { this.isExecuting = bool; } - public Command parseCommand(String userCommand, CardList cardList, TagList tagList) - throws DeleteMissingNumber, DeleteRangeInvalid, AddGoneWrong, AddEmptyQuestion, AddEmptyAnswer, - AddEmptyQuestionAndAnswer { - String[] userCommandSplit = userCommand.split("-", 3); + public Command parseCommand(String userCommand, CardList cardList, TagList tagList) throws InkaException { + String[] userCommandSplit = userCommand.split("--", 3); assert userCommandSplit.length >=1 : "User Command must be specified"; if (userCommandSplit[0].startsWith("card list")) { return new ListCardCommand(); - } else if (userCommandSplit[0].startsWith("card add")) { + } + else if (userCommandSplit[0].startsWith("card add")) { if (userCommandSplit.length < 3) { throw new AddGoneWrong(); } else if (userCommandSplit[1].isBlank() && userCommandSplit[2].isBlank()) { @@ -57,7 +59,8 @@ public Command parseCommand(String userCommand, CardList cardList, TagList tagLi String answer = userCommandSplit[2]; Card card = new Card(question, answer); return new AddCardCommand(card); // main command return - } else if (userCommandSplit[0].startsWith("card delete")) { + } + else if (userCommandSplit[0].startsWith("card delete")) { if (userCommandSplit.length == 1) { throw new DeleteMissingNumber(); @@ -69,12 +72,20 @@ public Command parseCommand(String userCommand, CardList cardList, TagList tagLi int deleteIndex = Integer.parseInt(userCommandSplit[1]); assert deleteIndex >= 0 : "deleteIndex should be a number"; return new DeleteCardCommand(deleteIndex); - } else if (userCommandSplit[0].startsWith("tag list")) { + } + else if (userCommandSplit[0].startsWith("card tag")) { + String cardUUID = userCommandSplit[1].trim(); + String tagName = userCommandSplit[2]; + Tag tag = new Tag(tagName,cardUUID); + return new AddTagCommand(tag); + } + else if (userCommandSplit[0].startsWith("tag list")) { return new ListTagsCommand(); } else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")) { return new ExportCommand(); - } else if (userCommandSplit[0].startsWith("bye")) { + } + else if (userCommandSplit[0].startsWith("bye")) { this.setIsExecuting(false); return new TerminateCommand(); } else { diff --git a/src/main/java/utils/command/AddTagCommand.java b/src/main/java/utils/command/AddTagCommand.java new file mode 100644 index 0000000000..e3c0de22ba --- /dev/null +++ b/src/main/java/utils/command/AddTagCommand.java @@ -0,0 +1,22 @@ +package utils.command; + +import model.CardList; +import model.Tag; +import model.TagList; +import utils.UserInterface; +import utils.storage.IDataStorage; + +public class AddTagCommand extends Command { + private final Tag tag; + + public AddTagCommand(Tag tag) { + this.tag = tag; + } + + @Override + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + tagList.addTag(tag); + ui.printAddQuestionSuccess(); + ui.printNumOfQuestions(cardList); + } +} From 45ca68691fee4ff9f74ba26e3bf49714575e2395 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Fri, 17 Mar 2023 17:09:30 +0800 Subject: [PATCH 044/311] feat : card holds a reference to tags --- src/main/java/model/Card.java | 6 +++ src/main/java/model/CardList.java | 13 +++++ src/main/java/model/Tag.java | 15 ++++++ src/main/java/model/TagList.java | 9 ++++ src/main/java/utils/Parser.java | 22 ++++++-- src/main/java/utils/UserInterface.java | 2 +- .../utils/command/AddCardToTagCommand.java | 52 +++++++++++++++++++ .../java/utils/command/AddTagCommand.java | 22 -------- .../java/utils/command/ListCardCommand.java | 2 +- .../command/ListCardsUnderTagCommand.java | 40 ++++++++++++++ 10 files changed, 155 insertions(+), 28 deletions(-) create mode 100644 src/main/java/utils/command/AddCardToTagCommand.java delete mode 100644 src/main/java/utils/command/AddTagCommand.java create mode 100644 src/main/java/utils/command/ListCardsUnderTagCommand.java diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index c9cda638db..8ffd779b17 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -1,4 +1,5 @@ package model; +import java.util.ArrayList; import java.util.UUID; //to be made into an abstract class containing a few types of Cards later, for now just a single Card will do @@ -6,6 +7,7 @@ public class Card { private UUID uuid; //to be made into a hash later private String question; private String answer; + private ArrayList tags; // Temporary constructor for Card, to be revised later to also consider uuid and tag etc public Card(String question, String answer) { @@ -26,6 +28,10 @@ public String getAnswer() { return answer; } + public void addTag(UUID uuid) { + tags.add(uuid); + } + @Override public String toString() { return "Qn: " + this.question + "\nAns: " + this.answer + "\nUUID: " + this.uuid; diff --git a/src/main/java/model/CardList.java b/src/main/java/model/CardList.java index e43d419490..e569acc8b9 100644 --- a/src/main/java/model/CardList.java +++ b/src/main/java/model/CardList.java @@ -25,6 +25,19 @@ public void delete(int id) { this.cards.remove(id); } + public List getCards() { + return this.cards; + } + + public Card findCard(String cardUUID) { + for (Card card : cards) { + if (card.getUuid().equals(cardUUID)) { + return card; + } + } + return null; + } + public boolean isEmpty() { return cards.isEmpty(); } diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index d20af057bd..9647c49afd 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -14,6 +14,21 @@ public Tag (String tagName, String cardUUID) { cards.add(UUID.fromString(cardUUID)); } + public String getUUID() { + return this.uuid.toString(); + } + public String getTagName() { + return this.tagName; + } + + public ArrayList getCards() { + return this.cards; + } + + public void addCard(UUID cardUUID) { + cards.add(cardUUID); + } + @Override public String toString() { return "Tag name : " + tagName + ", tag uuid : " + uuid; diff --git a/src/main/java/model/TagList.java b/src/main/java/model/TagList.java index 939e0d624e..a6a292a9cf 100644 --- a/src/main/java/model/TagList.java +++ b/src/main/java/model/TagList.java @@ -20,6 +20,15 @@ public void addTag(Tag tag) { this.tags.add(tag); } + public Tag findTag(String tagName) { + for (Tag tag : tags) { + if (tag.getTagName().equals(tagName)) { + return tag; + } + } + return null; + } + public void delete(int id) { this.tags.remove(id); } diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java index 1930cd3d4b..2a11265eae 100644 --- a/src/main/java/utils/Parser.java +++ b/src/main/java/utils/Parser.java @@ -1,19 +1,22 @@ package utils; +import java.util.UUID; import model.Card; import model.CardList; import model.Tag; import model.TagList; import utils.command.AddCardCommand; -import utils.command.AddTagCommand; +import utils.command.AddCardToTagCommand; import utils.command.Command; import utils.command.DeleteCardCommand; import utils.command.ExceptionCommand; import utils.command.ExportCommand; import utils.command.ListCardCommand; +import utils.command.ListCardsUnderTagCommand; import utils.command.ListTagsCommand; import utils.command.TerminateCommand; +import utils.command.ViewCardCommand; import utils.exceptions.AddEmptyAnswer; import utils.exceptions.AddEmptyQuestion; import utils.exceptions.AddEmptyQuestionAndAnswer; @@ -60,6 +63,10 @@ else if (userCommandSplit[0].startsWith("card add")) { Card card = new Card(question, answer); return new AddCardCommand(card); // main command return } + else if (userCommandSplit[0].startsWith("card view")) { + String cardUUID = userCommandSplit[1]; + return new ViewCardCommand(cardUUID); + } else if (userCommandSplit[0].startsWith("card delete")) { if (userCommandSplit.length == 1) { @@ -76,11 +83,18 @@ else if (userCommandSplit[0].startsWith("card delete")) { else if (userCommandSplit[0].startsWith("card tag")) { String cardUUID = userCommandSplit[1].trim(); String tagName = userCommandSplit[2]; - Tag tag = new Tag(tagName,cardUUID); - return new AddTagCommand(tag); + + return new AddCardToTagCommand(tagName, cardUUID); } else if (userCommandSplit[0].startsWith("tag list")) { - return new ListTagsCommand(); + if (userCommandSplit.length >1) { + String tagName = userCommandSplit[1]; + return new ListCardsUnderTagCommand(tagName); + } + else { + return new ListTagsCommand(); + } + } else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")) { return new ExportCommand(); diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 0ba01732dc..4b642397bd 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -82,7 +82,7 @@ public void printException(InkaException e) { System.out.println(e.getUiMessage()); } - public void printList(CardList cardList) { + public void printCardList(CardList cardList) { if (cardList.isEmpty()) { System.out.println("Your current list is empty."); } else { diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java new file mode 100644 index 0000000000..6ebbb95cf8 --- /dev/null +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -0,0 +1,52 @@ +package utils.command; + +import java.util.UUID; +import model.Card; +import model.CardList; +import model.Tag; +import model.TagList; +import utils.UserInterface; +import utils.storage.IDataStorage; + +public class AddCardToTagCommand extends Command { + private String tagName; + private String cardUUID ; + + public AddCardToTagCommand(String tagName, String cardUUID) { + this.tagName = tagName; + this.cardUUID = cardUUID; + } + + + + protected Tag AddCardToTag(TagList tagList, CardList cardList) { + //find the corresponding Tag and Card based on its tagName and card uuid + Tag tagToAdd = tagList.findTag(tagName); + Card cardToAdd = cardList.findCard(cardUUID); + + if (cardToAdd ==null) { + //throw exceptions + } + + if (tagToAdd ==null) { + System.out.println("Tag does not exist.. creating a new one"); + tagToAdd = new Tag(tagName,cardUUID); + tagList.addTag(tagToAdd); + } else { + System.out.println("Tag already exists, adding card too the tag"); + tagToAdd.addCard(UUID.fromString(cardUUID)); + } + + //add the tag uuid to the card + String tagUUID = tagToAdd.getUUID(); + cardToAdd.addTag(UUID.fromString(tagUUID)); + return tagToAdd; + } + + @Override + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + Tag tagToAdd = AddCardToTag(tagList, cardList); + ui.printAddQuestionSuccess(); + ui.printNumOfQuestions(cardList); + } +} diff --git a/src/main/java/utils/command/AddTagCommand.java b/src/main/java/utils/command/AddTagCommand.java deleted file mode 100644 index e3c0de22ba..0000000000 --- a/src/main/java/utils/command/AddTagCommand.java +++ /dev/null @@ -1,22 +0,0 @@ -package utils.command; - -import model.CardList; -import model.Tag; -import model.TagList; -import utils.UserInterface; -import utils.storage.IDataStorage; - -public class AddTagCommand extends Command { - private final Tag tag; - - public AddTagCommand(Tag tag) { - this.tag = tag; - } - - @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { - tagList.addTag(tag); - ui.printAddQuestionSuccess(); - ui.printNumOfQuestions(cardList); - } -} diff --git a/src/main/java/utils/command/ListCardCommand.java b/src/main/java/utils/command/ListCardCommand.java index 25f0d03ca8..0205be12d4 100644 --- a/src/main/java/utils/command/ListCardCommand.java +++ b/src/main/java/utils/command/ListCardCommand.java @@ -8,6 +8,6 @@ public class ListCardCommand extends Command { @Override public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { - ui.printList(cardList); + ui.printCardList(cardList); } } diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java new file mode 100644 index 0000000000..21d59ee727 --- /dev/null +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -0,0 +1,40 @@ +package utils.command; + +import java.util.ArrayList; +import java.util.UUID; +import model.Card; +import model.CardList; +import model.Tag; +import model.TagList; +import utils.UserInterface; +import utils.storage.IDataStorage; + +public class ListCardsUnderTagCommand extends Command{ + private String tagName; + + public ListCardsUnderTagCommand(String tagName) { + this.tagName = tagName; + } + + protected CardList findCardsUnderTag(CardList cardList, TagList tagList) { + Tag foundTag = tagList.findTag(tagName); + if (foundTag == null) { + //throw exceptions + } + + ArrayList cardsUUID = foundTag.getCards(); + CardList foundCardList = new CardList(); + + for (Card card : cardList.getCards()) { + if (cardsUUID.contains(UUID.fromString(card.getUuid()))) { + foundCardList.addCard(card); + } + } + return foundCardList; + } + @Override + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + CardList foundCardList = findCardsUnderTag(cardList,tagList); + ui.printCardList(foundCardList); + } +} From 50f299d65a0701c6b4fc603777242c82e5190fe8 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Fri, 17 Mar 2023 19:54:20 +0800 Subject: [PATCH 045/311] feat: add card view --- savedata.json | 6 ++- src/main/java/model/Card.java | 15 +++++-- src/main/java/model/Tag.java | 2 +- src/main/java/model/TagList.java | 4 ++ src/main/java/utils/UserInterface.java | 19 ++++++++ .../utils/command/AddCardToTagCommand.java | 1 + .../command/ListCardsUnderTagCommand.java | 2 +- .../java/utils/command/ViewCardCommand.java | 44 +++++++++++++++++++ 8 files changed, 85 insertions(+), 8 deletions(-) create mode 100644 src/main/java/utils/command/ViewCardCommand.java diff --git a/savedata.json b/savedata.json index db75da94bb..cb7ab1daa5 100644 --- a/savedata.json +++ b/savedata.json @@ -5,12 +5,14 @@ { "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", "question": "is akhil a dirty commie", - "answer": "yes" + "answer": "yes", + "tags": [] }, { "uuid": "00000000-0000-0000-0000-000000000001", "question": "why do other groups keep attackin ian", - "answer": "he is not a dirty commie" + "answer": "he is not a dirty commie", + "tags": [] } ] } diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 8ffd779b17..86af4e3a5b 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -1,4 +1,5 @@ package model; + import java.util.ArrayList; import java.util.UUID; @@ -7,19 +8,23 @@ public class Card { private UUID uuid; //to be made into a hash later private String question; private String answer; - private ArrayList tags; + private ArrayList tags = new ArrayList<>(); // Temporary constructor for Card, to be revised later to also consider uuid and tag etc public Card(String question, String answer) { this.question = question; this.answer = answer; this.uuid = UUID.randomUUID(); + tags.add(UUID.fromString("f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454")); } public String getUuid() { return this.uuid.toString() ; } + public ArrayList getTagsUUID () { + return this.tags; + } public String getQuestion() { return question; } @@ -28,12 +33,14 @@ public String getAnswer() { return answer; } - public void addTag(UUID uuid) { - tags.add(uuid); + public void addTag(UUID tagUUID) { + //System.out.println(tags.size()); + tags.add(tagUUID); + //tags.add(tagUUID); } @Override public String toString() { - return "Qn: " + this.question + "\nAns: " + this.answer + "\nUUID: " + this.uuid; + return "Qn: " + this.question + "\nAns: " + this.answer + "\nUUID: " + this.uuid ; } // return the card } diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 9647c49afd..8e806ac132 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -21,7 +21,7 @@ public String getTagName() { return this.tagName; } - public ArrayList getCards() { + public ArrayList getCardsUUID() { return this.cards; } diff --git a/src/main/java/model/TagList.java b/src/main/java/model/TagList.java index a6a292a9cf..1c86fa426b 100644 --- a/src/main/java/model/TagList.java +++ b/src/main/java/model/TagList.java @@ -16,6 +16,10 @@ public TagList(List tags) { this.tags = tags; } + public List getTags() { + return this.tags; + } + public void addTag(Tag tag) { this.tags.add(tag); } diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 4b642397bd..48b900b9f8 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -1,7 +1,10 @@ package utils; +import java.util.ArrayList; import java.util.Scanner; +import model.Card; import model.CardList; +import model.Tag; import model.TagList; import utils.enums.StringArt; import utils.exceptions.InkaException; @@ -76,6 +79,10 @@ public void printCard(CardList cardlist, int id) { System.out.println(cardlist.get(id)); } + public void printCard(Card card) { + System.out.println(card); + } + public void printException(InkaException e) { @@ -103,4 +110,16 @@ public void printTagList(TagList tagList) { } } } + + public void printTags(ArrayList tags) { + if (tags.isEmpty()) { + System.out.println("There is currently no tags"); + } else { + System.out.println("Here are the tags : "); + for (int i = 0; i < tags.size(); ++i) { + System.out.println((i + 1) + "." + tags.get(i)); + } + } + + } } diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 6ebbb95cf8..a5db9d1fd5 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -39,6 +39,7 @@ protected Tag AddCardToTag(TagList tagList, CardList cardList) { //add the tag uuid to the card String tagUUID = tagToAdd.getUUID(); + System.out.println(cardToAdd); cardToAdd.addTag(UUID.fromString(tagUUID)); return tagToAdd; } diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java index 21d59ee727..db3f58bbfe 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -22,7 +22,7 @@ protected CardList findCardsUnderTag(CardList cardList, TagList tagList) { //throw exceptions } - ArrayList cardsUUID = foundTag.getCards(); + ArrayList cardsUUID = foundTag.getCardsUUID(); CardList foundCardList = new CardList(); for (Card card : cardList.getCards()) { diff --git a/src/main/java/utils/command/ViewCardCommand.java b/src/main/java/utils/command/ViewCardCommand.java new file mode 100644 index 0000000000..7c2d724615 --- /dev/null +++ b/src/main/java/utils/command/ViewCardCommand.java @@ -0,0 +1,44 @@ +package utils.command; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import model.Card; +import model.CardList; +import model.Tag; +import model.TagList; +import utils.UserInterface; +import utils.storage.IDataStorage; + +public class ViewCardCommand extends Command { + private String cardUUID; + + public ViewCardCommand(String cardUUID) { + this.cardUUID = cardUUID; + } + + public ArrayList findTagsFromTagUUID (ArrayList uuids, TagList tagList) { + ArrayList tags = new ArrayList<>(); + for (UUID uuid : uuids) { + for (Tag tag : tagList.getTags()) { + if (tag.getUUID().equals(uuid.toString())) { + tags.add(tag); + } + } + } + return tags; + } + + public void execute (CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + List cards = cardList.getCards(); + ArrayList tags; + for (Card card : cards) { + if (card.getUuid().equals(cardUUID)) { + ui.printCard(card); + ArrayList tagsUUID = card.getTagsUUID(); + tags = findTagsFromTagUUID(tagsUUID, tagList); + ui.printTags(tags); + } + } + } +} From aee1794c41909933fe524314b86aceb496ab1651 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Fri, 17 Mar 2023 20:38:38 +0800 Subject: [PATCH 046/311] feat: add tag delete --- src/main/java/model/Card.java | 10 +++-- src/main/java/model/CardList.java | 2 +- src/main/java/model/Tag.java | 4 +- src/main/java/model/TagList.java | 4 ++ src/main/java/utils/Parser.java | 7 +++- src/main/java/utils/UserInterface.java | 8 ++++ .../utils/command/AddCardToTagCommand.java | 4 +- .../java/utils/command/DeleteTagCommand.java | 37 +++++++++++++++++++ .../command/ListCardsUnderTagCommand.java | 2 +- .../java/utils/command/ViewCardCommand.java | 4 +- src/main/java/utils/storage/JsonStorage.java | 2 +- 11 files changed, 70 insertions(+), 14 deletions(-) create mode 100644 src/main/java/utils/command/DeleteTagCommand.java diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 86af4e3a5b..7bb4d54655 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -18,8 +18,8 @@ public Card(String question, String answer) { tags.add(UUID.fromString("f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454")); } - public String getUuid() { - return this.uuid.toString() ; + public UUID getUuid() { + return this.uuid ; } public ArrayList getTagsUUID () { @@ -34,10 +34,12 @@ public String getAnswer() { } public void addTag(UUID tagUUID) { - //System.out.println(tags.size()); tags.add(tagUUID); - //tags.add(tagUUID); } + public void removeTag(UUID tagUUID) { + tags.remove(tagUUID); + } + @Override public String toString() { diff --git a/src/main/java/model/CardList.java b/src/main/java/model/CardList.java index e569acc8b9..cd44c1e778 100644 --- a/src/main/java/model/CardList.java +++ b/src/main/java/model/CardList.java @@ -31,7 +31,7 @@ public List getCards() { public Card findCard(String cardUUID) { for (Card card : cards) { - if (card.getUuid().equals(cardUUID)) { + if (card.getUuid().toString().equals(cardUUID)) { return card; } } diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 8e806ac132..a68b0b91c5 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -14,8 +14,8 @@ public Tag (String tagName, String cardUUID) { cards.add(UUID.fromString(cardUUID)); } - public String getUUID() { - return this.uuid.toString(); + public UUID getUUID() { + return this.uuid; } public String getTagName() { return this.tagName; diff --git a/src/main/java/model/TagList.java b/src/main/java/model/TagList.java index 1c86fa426b..f2ccaf3cae 100644 --- a/src/main/java/model/TagList.java +++ b/src/main/java/model/TagList.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.UUID; public class TagList { private List tags; @@ -33,6 +34,9 @@ public Tag findTag(String tagName) { return null; } + public void deleteTagByUUID(UUID uuid) { + tags.removeIf(tag -> (tag.getUUID().equals(uuid))); + } public void delete(int id) { this.tags.remove(id); } diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java index 2a11265eae..61140916d7 100644 --- a/src/main/java/utils/Parser.java +++ b/src/main/java/utils/Parser.java @@ -10,6 +10,7 @@ import utils.command.AddCardToTagCommand; import utils.command.Command; import utils.command.DeleteCardCommand; +import utils.command.DeleteTagCommand; import utils.command.ExceptionCommand; import utils.command.ExportCommand; import utils.command.ListCardCommand; @@ -94,7 +95,11 @@ else if (userCommandSplit[0].startsWith("tag list")) { else { return new ListTagsCommand(); } - + } + else if (userCommandSplit[0].startsWith("tag delete")) { + //please check for exception + String tagName = userCommandSplit[1]; + return new DeleteTagCommand(tagName); } else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")) { return new ExportCommand(); diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 48b900b9f8..d82648693c 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.Scanner; +import java.util.UUID; import model.Card; import model.CardList; import model.Tag; @@ -120,6 +121,13 @@ public void printTags(ArrayList tags) { System.out.println((i + 1) + "." + tags.get(i)); } } + } + + public void printRemoveTagFromCard(UUID cardUUID, UUID tagUUID) { + System.out.println("Successfully removed tag " + tagUUID + " from card " + cardUUID); + } + public void printRemoveTagFromTagList(UUID tagUUID) { + System.out.println("Successfully removed tag " + tagUUID +" from the tag list."); } } diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index a5db9d1fd5..8c08f56315 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -38,9 +38,9 @@ protected Tag AddCardToTag(TagList tagList, CardList cardList) { } //add the tag uuid to the card - String tagUUID = tagToAdd.getUUID(); + UUID tagUUID = tagToAdd.getUUID(); System.out.println(cardToAdd); - cardToAdd.addTag(UUID.fromString(tagUUID)); + cardToAdd.addTag(tagUUID); return tagToAdd; } diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java new file mode 100644 index 0000000000..74ad860d67 --- /dev/null +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -0,0 +1,37 @@ +package utils.command; + +import java.util.ArrayList; +import java.util.UUID; +import model.Card; +import model.CardList; +import model.Tag; +import model.TagList; +import utils.UserInterface; +import utils.storage.IDataStorage; + +public class DeleteTagCommand extends Command{ + private String tagName; + private UUID tagUUID; + + public DeleteTagCommand(String tagName) { + this.tagName= tagName; + } + + private void removeTagFromCards (CardList cardList, TagList tagList, UserInterface ui) { + Tag tag = tagList.findTag(tagName); + tagUUID = tag.getUUID(); + + //for each card whose uuid is listed under the tag, remove the tag uuid from that card + for (UUID cardUUID : tag.getCardsUUID()) { + Card affectedCard = cardList.findCard(cardUUID.toString()); + affectedCard.removeTag(tagUUID); + ui.printRemoveTagFromCard(affectedCard.getUuid() , tagUUID); + } + } + @Override + public void execute (CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + removeTagFromCards(cardList,tagList, ui); + tagList.deleteTagByUUID(tagUUID); + ui.printRemoveTagFromTagList (tagUUID); + } +} diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java index db3f58bbfe..5e9953a036 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -26,7 +26,7 @@ protected CardList findCardsUnderTag(CardList cardList, TagList tagList) { CardList foundCardList = new CardList(); for (Card card : cardList.getCards()) { - if (cardsUUID.contains(UUID.fromString(card.getUuid()))) { + if (cardsUUID.contains(card.getUuid())) { foundCardList.addCard(card); } } diff --git a/src/main/java/utils/command/ViewCardCommand.java b/src/main/java/utils/command/ViewCardCommand.java index 7c2d724615..d22a26a619 100644 --- a/src/main/java/utils/command/ViewCardCommand.java +++ b/src/main/java/utils/command/ViewCardCommand.java @@ -21,7 +21,7 @@ public ArrayList findTagsFromTagUUID (ArrayList uuids, TagList tagLi ArrayList tags = new ArrayList<>(); for (UUID uuid : uuids) { for (Tag tag : tagList.getTags()) { - if (tag.getUUID().equals(uuid.toString())) { + if (tag.getUUID().equals(uuid)) { tags.add(tag); } } @@ -33,7 +33,7 @@ public void execute (CardList cardList, TagList tagList, UserInterface ui, IData List cards = cardList.getCards(); ArrayList tags; for (Card card : cards) { - if (card.getUuid().equals(cardUUID)) { + if (card.getUuid().toString().equals(cardUUID)) { ui.printCard(card); ArrayList tagsUUID = card.getTagsUUID(); tags = findTagsFromTagUUID(tagsUUID, tagList); diff --git a/src/main/java/utils/storage/JsonStorage.java b/src/main/java/utils/storage/JsonStorage.java index 3b3d3744fb..fd2b87e917 100644 --- a/src/main/java/utils/storage/JsonStorage.java +++ b/src/main/java/utils/storage/JsonStorage.java @@ -71,7 +71,7 @@ public void save(CardList cardList) throws StorageSaveFailure { for (int i = 0; i < cardList.size(); i++) { Card card = cardList.get(i); JsonObject cardObject = new JsonObject(); - cardObject.addProperty("uuid", card.getUuid()); + cardObject.addProperty("uuid", card.getUuid().toString()); cardObject.addProperty("question", card.getQuestion()); cardObject.addProperty("answer", card.getAnswer()); cardData.add(cardObject); From 3a74807f5759e1817aa1a9475e749838ca2eefb7 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Fri, 17 Mar 2023 20:56:42 +0800 Subject: [PATCH 047/311] docs: add comment to non-trivial method --- src/main/java/model/CardList.java | 5 +++-- src/main/java/model/Tag.java | 4 ++-- src/main/java/utils/UserInterface.java | 8 ++++--- .../utils/command/AddCardToTagCommand.java | 22 +++++++++---------- .../java/utils/command/DeleteTagCommand.java | 2 +- .../command/ListCardsUnderTagCommand.java | 2 +- .../java/utils/command/ViewCardCommand.java | 8 ++++--- 7 files changed, 27 insertions(+), 24 deletions(-) diff --git a/src/main/java/model/CardList.java b/src/main/java/model/CardList.java index cd44c1e778..fe7699f247 100644 --- a/src/main/java/model/CardList.java +++ b/src/main/java/model/CardList.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.UUID; public class CardList { @@ -29,9 +30,9 @@ public List getCards() { return this.cards; } - public Card findCard(String cardUUID) { + public Card findCard(UUID cardUUID) { for (Card card : cards) { - if (card.getUuid().toString().equals(cardUUID)) { + if (card.getUuid().equals(cardUUID)) { return card; } } diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index a68b0b91c5..3c7942d2d0 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -8,10 +8,10 @@ public class Tag { private String tagName; private ArrayList cards = new ArrayList<>(); - public Tag (String tagName, String cardUUID) { + public Tag (String tagName, UUID cardUUID) { this.tagName = tagName; this.uuid = UUID.randomUUID(); - cards.add(UUID.fromString(cardUUID)); + cards.add(cardUUID); } public UUID getUUID() { diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index d82648693c..584c020a68 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -84,8 +84,6 @@ public void printCard(Card card) { System.out.println(card); } - - public void printException(InkaException e) { System.out.println(e.getUiMessage()); } @@ -94,7 +92,7 @@ public void printCardList(CardList cardList) { if (cardList.isEmpty()) { System.out.println("Your current list is empty."); } else { - System.out.println("Here is your current list of questions buddy:"); + System.out.println("Here is a list of your cards :"); for (int i = 0; i < cardList.size(); ++i) { System.out.println((i + 1) + "." + cardList.get(i)); // 1. question answer } @@ -123,6 +121,10 @@ public void printTags(ArrayList tags) { } } + public void printAddTagToCardSuccess(UUID cardUUID, UUID tagUUID) { + System.out.println("Successfully added tag " + tagUUID + " to card " + cardUUID); + } + public void printRemoveTagFromCard(UUID cardUUID, UUID tagUUID) { System.out.println("Successfully removed tag " + tagUUID + " from card " + cardUUID); } diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 8c08f56315..1d91278164 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -10,22 +10,23 @@ public class AddCardToTagCommand extends Command { private String tagName; - private String cardUUID ; + private UUID tagUUID; + private UUID cardUUID ; public AddCardToTagCommand(String tagName, String cardUUID) { this.tagName = tagName; - this.cardUUID = cardUUID; + this.cardUUID = UUID.fromString(cardUUID); } - protected Tag AddCardToTag(TagList tagList, CardList cardList) { + protected void AddCardToTag(TagList tagList, CardList cardList) { //find the corresponding Tag and Card based on its tagName and card uuid Tag tagToAdd = tagList.findTag(tagName); Card cardToAdd = cardList.findCard(cardUUID); if (cardToAdd ==null) { - //throw exceptions + //means the card doesn't exist yet, throw exception } if (tagToAdd ==null) { @@ -33,21 +34,18 @@ protected Tag AddCardToTag(TagList tagList, CardList cardList) { tagToAdd = new Tag(tagName,cardUUID); tagList.addTag(tagToAdd); } else { - System.out.println("Tag already exists, adding card too the tag"); - tagToAdd.addCard(UUID.fromString(cardUUID)); + System.out.println("Tag already exists, adding tag to the card and vice versa"); + tagToAdd.addCard(cardUUID); } //add the tag uuid to the card - UUID tagUUID = tagToAdd.getUUID(); - System.out.println(cardToAdd); + tagUUID = tagToAdd.getUUID(); cardToAdd.addTag(tagUUID); - return tagToAdd; } @Override public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { - Tag tagToAdd = AddCardToTag(tagList, cardList); - ui.printAddQuestionSuccess(); - ui.printNumOfQuestions(cardList); + AddCardToTag(tagList, cardList); + ui.printAddTagToCardSuccess(cardUUID, tagUUID); } } diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 74ad860d67..ad0f12e046 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -23,7 +23,7 @@ private void removeTagFromCards (CardList cardList, TagList tagList, UserInterfa //for each card whose uuid is listed under the tag, remove the tag uuid from that card for (UUID cardUUID : tag.getCardsUUID()) { - Card affectedCard = cardList.findCard(cardUUID.toString()); + Card affectedCard = cardList.findCard(cardUUID); affectedCard.removeTag(tagUUID); ui.printRemoveTagFromCard(affectedCard.getUuid() , tagUUID); } diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java index 5e9953a036..0960f9bd5e 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -19,7 +19,7 @@ public ListCardsUnderTagCommand(String tagName) { protected CardList findCardsUnderTag(CardList cardList, TagList tagList) { Tag foundTag = tagList.findTag(tagName); if (foundTag == null) { - //throw exceptions + //means the tag does not even exist to begin with , throw exception } ArrayList cardsUUID = foundTag.getCardsUUID(); diff --git a/src/main/java/utils/command/ViewCardCommand.java b/src/main/java/utils/command/ViewCardCommand.java index d22a26a619..f863f0c843 100644 --- a/src/main/java/utils/command/ViewCardCommand.java +++ b/src/main/java/utils/command/ViewCardCommand.java @@ -11,10 +11,10 @@ import utils.storage.IDataStorage; public class ViewCardCommand extends Command { - private String cardUUID; + private UUID cardUUID; public ViewCardCommand(String cardUUID) { - this.cardUUID = cardUUID; + this.cardUUID = UUID.fromString(cardUUID); } public ArrayList findTagsFromTagUUID (ArrayList uuids, TagList tagList) { @@ -32,8 +32,10 @@ public ArrayList findTagsFromTagUUID (ArrayList uuids, TagList tagLi public void execute (CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { List cards = cardList.getCards(); ArrayList tags; + + //find the card with the specified uuid, print the card, find all the tags under it, print all the tags for (Card card : cards) { - if (card.getUuid().toString().equals(cardUUID)) { + if (card.getUuid().equals(cardUUID)) { ui.printCard(card); ArrayList tagsUUID = card.getTagsUUID(); tags = findTagsFromTagUUID(tagsUUID, tagList); From 274eb159958289067d7e471aabe30b3a75ad1c6c Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Fri, 17 Mar 2023 23:25:01 +0800 Subject: [PATCH 048/311] ref: fix gradle checkstyle --- src/main/java/utils/Parser.java | 33 +++++++------------ .../utils/command/AddCardToTagCommand.java | 4 +-- src/main/java/utils/command/Command.java | 2 +- .../java/utils/command/DeleteTagCommand.java | 1 - .../java/utils/command/ViewCardCommand.java | 16 ++++----- 5 files changed, 22 insertions(+), 34 deletions(-) diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java index 61140916d7..ce55506731 100644 --- a/src/main/java/utils/Parser.java +++ b/src/main/java/utils/Parser.java @@ -1,10 +1,7 @@ package utils; -import java.util.UUID; import model.Card; import model.CardList; - -import model.Tag; import model.TagList; import utils.command.AddCardCommand; import utils.command.AddCardToTagCommand; @@ -42,13 +39,14 @@ public void setIsExecuting(boolean bool) { this.isExecuting = bool; } + + //Sorry I know this is painful to read, thanks for migrating it to a parser library! public Command parseCommand(String userCommand, CardList cardList, TagList tagList) throws InkaException { String[] userCommandSplit = userCommand.split("--", 3); assert userCommandSplit.length >=1 : "User Command must be specified"; if (userCommandSplit[0].startsWith("card list")) { return new ListCardCommand(); - } - else if (userCommandSplit[0].startsWith("card add")) { + } else if (userCommandSplit[0].startsWith("card add")) { if (userCommandSplit.length < 3) { throw new AddGoneWrong(); } else if (userCommandSplit[1].isBlank() && userCommandSplit[2].isBlank()) { @@ -63,13 +61,10 @@ else if (userCommandSplit[0].startsWith("card add")) { String answer = userCommandSplit[2]; Card card = new Card(question, answer); return new AddCardCommand(card); // main command return - } - else if (userCommandSplit[0].startsWith("card view")) { + } else if (userCommandSplit[0].startsWith("card view")) { String cardUUID = userCommandSplit[1]; return new ViewCardCommand(cardUUID); - } - else if (userCommandSplit[0].startsWith("card delete")) { - + } else if (userCommandSplit[0].startsWith("card delete")) { if (userCommandSplit.length == 1) { throw new DeleteMissingNumber(); } else if (Integer.parseInt(userCommandSplit[1]) < 1 @@ -80,31 +75,25 @@ else if (userCommandSplit[0].startsWith("card delete")) { int deleteIndex = Integer.parseInt(userCommandSplit[1]); assert deleteIndex >= 0 : "deleteIndex should be a number"; return new DeleteCardCommand(deleteIndex); - } - else if (userCommandSplit[0].startsWith("card tag")) { + } else if (userCommandSplit[0].startsWith("card tag")) { String cardUUID = userCommandSplit[1].trim(); String tagName = userCommandSplit[2]; return new AddCardToTagCommand(tagName, cardUUID); - } - else if (userCommandSplit[0].startsWith("tag list")) { + } else if (userCommandSplit[0].startsWith("tag list")) { if (userCommandSplit.length >1) { String tagName = userCommandSplit[1]; return new ListCardsUnderTagCommand(tagName); - } - else { + } else { return new ListTagsCommand(); } - } - else if (userCommandSplit[0].startsWith("tag delete")) { + } else if (userCommandSplit[0].startsWith("tag delete")) { //please check for exception String tagName = userCommandSplit[1]; return new DeleteTagCommand(tagName); - } - else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")) { + } else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")) { return new ExportCommand(); - } - else if (userCommandSplit[0].startsWith("bye")) { + } else if (userCommandSplit[0].startsWith("bye")) { this.setIsExecuting(false); return new TerminateCommand(); } else { diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 1d91278164..3d810c738e 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -20,7 +20,7 @@ public AddCardToTagCommand(String tagName, String cardUUID) { - protected void AddCardToTag(TagList tagList, CardList cardList) { + protected void addCardToTag(TagList tagList, CardList cardList) { //find the corresponding Tag and Card based on its tagName and card uuid Tag tagToAdd = tagList.findTag(tagName); Card cardToAdd = cardList.findCard(cardUUID); @@ -45,7 +45,7 @@ protected void AddCardToTag(TagList tagList, CardList cardList) { @Override public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { - AddCardToTag(tagList, cardList); + addCardToTag(tagList, cardList); ui.printAddTagToCardSuccess(cardUUID, tagUUID); } } diff --git a/src/main/java/utils/command/Command.java b/src/main/java/utils/command/Command.java index 79e4689523..eb6747256b 100644 --- a/src/main/java/utils/command/Command.java +++ b/src/main/java/utils/command/Command.java @@ -5,7 +5,7 @@ import utils.UserInterface; import utils.storage.IDataStorage; - public abstract class Command { +public abstract class Command { public abstract void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage); } diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index ad0f12e046..3c05d7e613 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -1,6 +1,5 @@ package utils.command; -import java.util.ArrayList; import java.util.UUID; import model.Card; import model.CardList; diff --git a/src/main/java/utils/command/ViewCardCommand.java b/src/main/java/utils/command/ViewCardCommand.java index f863f0c843..890065f160 100644 --- a/src/main/java/utils/command/ViewCardCommand.java +++ b/src/main/java/utils/command/ViewCardCommand.java @@ -19,14 +19,14 @@ public ViewCardCommand(String cardUUID) { public ArrayList findTagsFromTagUUID (ArrayList uuids, TagList tagList) { ArrayList tags = new ArrayList<>(); - for (UUID uuid : uuids) { - for (Tag tag : tagList.getTags()) { - if (tag.getUUID().equals(uuid)) { - tags.add(tag); - } - } - } - return tags; + for (UUID uuid : uuids) { + for (Tag tag : tagList.getTags()) { + if (tag.getUUID().equals(uuid)) { + tags.add(tag); + } + } + } + return tags; } public void execute (CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { From a7e7d02fe912c20a356bc0f4b0b0886fe4b2dba8 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 18 Mar 2023 14:24:31 +0800 Subject: [PATCH 049/311] ref: separate UUID into cardUUID and tagUUID --- src/main/java/Inka.java | 2 +- src/main/java/model/Card.java | 22 +++++++-------- src/main/java/model/CardList.java | 4 +-- src/main/java/model/CardUUID.java | 20 +++++++++++++ src/main/java/model/Tag.java | 15 +++++----- src/main/java/model/TagList.java | 7 +++-- src/main/java/model/TagUUID.java | 20 +++++++++++++ src/main/java/utils/UserInterface.java | 14 +++++++--- .../utils/command/AddCardToTagCommand.java | 28 +++++++++---------- src/main/java/utils/command/Command.java | 3 +- .../java/utils/command/DeleteTagCommand.java | 28 +++++++++++-------- .../command/ListCardsUnderTagCommand.java | 18 +++++++----- .../java/utils/command/ViewCardCommand.java | 14 ++++++---- 13 files changed, 126 insertions(+), 69 deletions(-) create mode 100644 src/main/java/model/CardUUID.java create mode 100644 src/main/java/model/TagUUID.java diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 12998df55f..ab42f441eb 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -14,7 +14,7 @@ public class Inka { private final Parser parser; private Storage storage; - private CardList cardList; + private CardList cardList = new CardList(); private TagList tagList; public Inka(String filePath) { diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 7bb4d54655..ea9d069c3c 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -5,26 +5,26 @@ //to be made into an abstract class containing a few types of Cards later, for now just a single Card will do public class Card { - private UUID uuid; //to be made into a hash later + private CardUUID uuid; //to be made into a hash later private String question; private String answer; - private ArrayList tags = new ArrayList<>(); + private ArrayList tags = new ArrayList<>(); // Temporary constructor for Card, to be revised later to also consider uuid and tag etc public Card(String question, String answer) { this.question = question; this.answer = answer; - this.uuid = UUID.randomUUID(); - tags.add(UUID.fromString("f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454")); + this.uuid = new CardUUID(UUID.randomUUID()); } - public UUID getUuid() { - return this.uuid ; + public CardUUID getUuid() { + return this.uuid; } - public ArrayList getTagsUUID () { + public ArrayList getTagsUUID() { return this.tags; } + public String getQuestion() { return question; } @@ -33,16 +33,16 @@ public String getAnswer() { return answer; } - public void addTag(UUID tagUUID) { + public void addTag(TagUUID tagUUID) { tags.add(tagUUID); } - public void removeTag(UUID tagUUID) { + + public void removeTag(TagUUID tagUUID) { tags.remove(tagUUID); } - @Override public String toString() { - return "Qn: " + this.question + "\nAns: " + this.answer + "\nUUID: " + this.uuid ; + return "Qn: " + this.question + "\nAns: " + this.answer + "\nUUID: " + this.uuid; } // return the card } diff --git a/src/main/java/model/CardList.java b/src/main/java/model/CardList.java index fe7699f247..a10b31a221 100644 --- a/src/main/java/model/CardList.java +++ b/src/main/java/model/CardList.java @@ -4,7 +4,7 @@ import java.util.List; import java.util.UUID; -public class CardList { +public class CardList { private List cards; @@ -30,7 +30,7 @@ public List getCards() { return this.cards; } - public Card findCard(UUID cardUUID) { + public Card findCardFromUUID(CardUUID cardUUID) { for (Card card : cards) { if (card.getUuid().equals(cardUUID)) { return card; diff --git a/src/main/java/model/CardUUID.java b/src/main/java/model/CardUUID.java new file mode 100644 index 0000000000..0b2c3a8b44 --- /dev/null +++ b/src/main/java/model/CardUUID.java @@ -0,0 +1,20 @@ +package model; + +import java.util.UUID; + +public class CardUUID { + UUID uuid; + + public CardUUID(UUID uuid) { + this.uuid = uuid; + } + + public boolean equals(CardUUID cardUUID) { + return this.uuid.equals(cardUUID.uuid); + } + + @Override + public String toString() { + return this.uuid.toString(); + } +} diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 3c7942d2d0..7c1211b3cc 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -4,28 +4,29 @@ import java.util.UUID; public class Tag { - private UUID uuid; + private TagUUID uuid; private String tagName; - private ArrayList cards = new ArrayList<>(); + private ArrayList cards = new ArrayList<>(); - public Tag (String tagName, UUID cardUUID) { + public Tag(String tagName, CardUUID cardUUID) { this.tagName = tagName; - this.uuid = UUID.randomUUID(); + this.uuid = new TagUUID(UUID.randomUUID()); cards.add(cardUUID); } - public UUID getUUID() { + public TagUUID getUUID() { return this.uuid; } + public String getTagName() { return this.tagName; } - public ArrayList getCardsUUID() { + public ArrayList getCardsUUID() { return this.cards; } - public void addCard(UUID cardUUID) { + public void addCard(CardUUID cardUUID) { cards.add(cardUUID); } diff --git a/src/main/java/model/TagList.java b/src/main/java/model/TagList.java index f2ccaf3cae..9eecdddc04 100644 --- a/src/main/java/model/TagList.java +++ b/src/main/java/model/TagList.java @@ -25,7 +25,7 @@ public void addTag(Tag tag) { this.tags.add(tag); } - public Tag findTag(String tagName) { + public Tag findTagFromName(String tagName) { for (Tag tag : tags) { if (tag.getTagName().equals(tagName)) { return tag; @@ -34,9 +34,10 @@ public Tag findTag(String tagName) { return null; } - public void deleteTagByUUID(UUID uuid) { - tags.removeIf(tag -> (tag.getUUID().equals(uuid))); + public boolean deleteTagByUUID(TagUUID uuid) { + return tags.removeIf(tag -> (tag.getUUID().equals(uuid))); } + public void delete(int id) { this.tags.remove(id); } diff --git a/src/main/java/model/TagUUID.java b/src/main/java/model/TagUUID.java new file mode 100644 index 0000000000..c3011a938e --- /dev/null +++ b/src/main/java/model/TagUUID.java @@ -0,0 +1,20 @@ +package model; + +import java.util.UUID; + +public class TagUUID { + UUID uuid; + + public TagUUID(UUID uuid) { + this.uuid = uuid; + } + + public boolean equals(TagUUID tagUUID) { + return this.uuid.equals(tagUUID.uuid); + } + + @Override + public String toString() { + return this.uuid.toString(); + } +} diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 584c020a68..872732a073 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -5,8 +5,10 @@ import java.util.UUID; import model.Card; import model.CardList; +import model.CardUUID; import model.Tag; import model.TagList; +import model.TagUUID; import utils.enums.StringArt; import utils.exceptions.InkaException; @@ -121,15 +123,19 @@ public void printTags(ArrayList tags) { } } - public void printAddTagToCardSuccess(UUID cardUUID, UUID tagUUID) { + public void printAddTagToCardSuccess(CardUUID cardUUID, TagUUID tagUUID) { System.out.println("Successfully added tag " + tagUUID + " to card " + cardUUID); } - public void printRemoveTagFromCard(UUID cardUUID, UUID tagUUID) { + public void printTagCreationSuccess() { + System.out.println("Tag does not exist.. creating a new one"); + } + + public void printRemoveTagFromCard(CardUUID cardUUID, TagUUID tagUUID) { System.out.println("Successfully removed tag " + tagUUID + " from card " + cardUUID); } - public void printRemoveTagFromTagList(UUID tagUUID) { - System.out.println("Successfully removed tag " + tagUUID +" from the tag list."); + public void printRemoveTagFromTagList(TagUUID tagUUID) { + System.out.println("Successfully removed tag " + tagUUID + " from the tag list."); } } diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 3d810c738e..c176e0bd12 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -3,49 +3,49 @@ import java.util.UUID; import model.Card; import model.CardList; +import model.CardUUID; import model.Tag; import model.TagList; +import model.TagUUID; import utils.UserInterface; import utils.storage.IDataStorage; public class AddCardToTagCommand extends Command { private String tagName; - private UUID tagUUID; - private UUID cardUUID ; + private TagUUID tagUUID; + private CardUUID cardUUID; public AddCardToTagCommand(String tagName, String cardUUID) { this.tagName = tagName; - this.cardUUID = UUID.fromString(cardUUID); + this.cardUUID = new CardUUID(UUID.fromString(cardUUID)); } - - - protected void addCardToTag(TagList tagList, CardList cardList) { + private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) { //find the corresponding Tag and Card based on its tagName and card uuid - Tag tagToAdd = tagList.findTag(tagName); - Card cardToAdd = cardList.findCard(cardUUID); + Tag tagToAdd = tagList.findTagFromName(tagName); + Card cardToAdd = cardList.findCardFromUUID(cardUUID); - if (cardToAdd ==null) { + if (cardToAdd == null) { //means the card doesn't exist yet, throw exception } - if (tagToAdd ==null) { - System.out.println("Tag does not exist.. creating a new one"); - tagToAdd = new Tag(tagName,cardUUID); + if (tagToAdd == null) { + ui.printTagCreationSuccess(); + tagToAdd = new Tag(tagName, cardUUID); tagList.addTag(tagToAdd); } else { - System.out.println("Tag already exists, adding tag to the card and vice versa"); tagToAdd.addCard(cardUUID); } //add the tag uuid to the card tagUUID = tagToAdd.getUUID(); + System.out.println(cardToAdd); cardToAdd.addTag(tagUUID); } @Override public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { - addCardToTag(tagList, cardList); + addCardToTag(tagList, cardList, ui); ui.printAddTagToCardSuccess(cardUUID, tagUUID); } } diff --git a/src/main/java/utils/command/Command.java b/src/main/java/utils/command/Command.java index eb6747256b..945cbeeb0d 100644 --- a/src/main/java/utils/command/Command.java +++ b/src/main/java/utils/command/Command.java @@ -6,6 +6,5 @@ import utils.storage.IDataStorage; public abstract class Command { - public abstract void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage); - + public abstract void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage); } diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 3c05d7e613..51401b45a7 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -3,34 +3,38 @@ import java.util.UUID; import model.Card; import model.CardList; +import model.CardUUID; import model.Tag; import model.TagList; +import model.TagUUID; import utils.UserInterface; import utils.storage.IDataStorage; -public class DeleteTagCommand extends Command{ +public class DeleteTagCommand extends Command { private String tagName; - private UUID tagUUID; + private TagUUID tagUUID; public DeleteTagCommand(String tagName) { - this.tagName= tagName; + this.tagName = tagName; } - private void removeTagFromCards (CardList cardList, TagList tagList, UserInterface ui) { - Tag tag = tagList.findTag(tagName); + private void removeTagFromCards(CardList cardList, TagList tagList, UserInterface ui) { + Tag tag = tagList.findTagFromName(tagName); tagUUID = tag.getUUID(); //for each card whose uuid is listed under the tag, remove the tag uuid from that card - for (UUID cardUUID : tag.getCardsUUID()) { - Card affectedCard = cardList.findCard(cardUUID); + for (CardUUID cardUUID : tag.getCardsUUID()) { + Card affectedCard = cardList.findCardFromUUID(cardUUID); affectedCard.removeTag(tagUUID); - ui.printRemoveTagFromCard(affectedCard.getUuid() , tagUUID); + ui.printRemoveTagFromCard(affectedCard.getUuid(), tagUUID); } } + @Override - public void execute (CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { - removeTagFromCards(cardList,tagList, ui); - tagList.deleteTagByUUID(tagUUID); - ui.printRemoveTagFromTagList (tagUUID); + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + removeTagFromCards(cardList, tagList, ui); + boolean IsDeleted = tagList.deleteTagByUUID(tagUUID); + // if isDeleted is false, it means tag doesn't exist in the first place, throw exception here + ui.printRemoveTagFromTagList(tagUUID); } } diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java index 0960f9bd5e..baa7971aef 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -4,37 +4,41 @@ import java.util.UUID; import model.Card; import model.CardList; +import model.CardUUID; import model.Tag; import model.TagList; import utils.UserInterface; import utils.storage.IDataStorage; -public class ListCardsUnderTagCommand extends Command{ +public class ListCardsUnderTagCommand extends Command { private String tagName; public ListCardsUnderTagCommand(String tagName) { this.tagName = tagName; } - protected CardList findCardsUnderTag(CardList cardList, TagList tagList) { - Tag foundTag = tagList.findTag(tagName); + private CardList findCardsUnderTag(CardList cardList, TagList tagList) { + Tag foundTag = tagList.findTagFromName(tagName); if (foundTag == null) { //means the tag does not even exist to begin with , throw exception } - ArrayList cardsUUID = foundTag.getCardsUUID(); + ArrayList cardsUUID = foundTag.getCardsUUID(); CardList foundCardList = new CardList(); for (Card card : cardList.getCards()) { - if (cardsUUID.contains(card.getUuid())) { - foundCardList.addCard(card); + for (CardUUID cardUUID : cardsUUID) { + if (cardUUID.equals(card.getUuid())) { + foundCardList.addCard(card); + } } } return foundCardList; } + @Override public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { - CardList foundCardList = findCardsUnderTag(cardList,tagList); + CardList foundCardList = findCardsUnderTag(cardList, tagList); ui.printCardList(foundCardList); } } diff --git a/src/main/java/utils/command/ViewCardCommand.java b/src/main/java/utils/command/ViewCardCommand.java index 890065f160..9eff147e29 100644 --- a/src/main/java/utils/command/ViewCardCommand.java +++ b/src/main/java/utils/command/ViewCardCommand.java @@ -5,21 +5,23 @@ import java.util.UUID; import model.Card; import model.CardList; +import model.CardUUID; import model.Tag; import model.TagList; +import model.TagUUID; import utils.UserInterface; import utils.storage.IDataStorage; public class ViewCardCommand extends Command { - private UUID cardUUID; + private CardUUID cardUUID; public ViewCardCommand(String cardUUID) { - this.cardUUID = UUID.fromString(cardUUID); + this.cardUUID = new CardUUID(UUID.fromString(cardUUID)); } - public ArrayList findTagsFromTagUUID (ArrayList uuids, TagList tagList) { + public ArrayList findTagsFromTagUUID(ArrayList uuids, TagList tagList) { ArrayList tags = new ArrayList<>(); - for (UUID uuid : uuids) { + for (TagUUID uuid : uuids) { for (Tag tag : tagList.getTags()) { if (tag.getUUID().equals(uuid)) { tags.add(tag); @@ -29,7 +31,7 @@ public ArrayList findTagsFromTagUUID (ArrayList uuids, TagList tagLi return tags; } - public void execute (CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { List cards = cardList.getCards(); ArrayList tags; @@ -37,7 +39,7 @@ public void execute (CardList cardList, TagList tagList, UserInterface ui, IData for (Card card : cards) { if (card.getUuid().equals(cardUUID)) { ui.printCard(card); - ArrayList tagsUUID = card.getTagsUUID(); + ArrayList tagsUUID = card.getTagsUUID(); tags = findTagsFromTagUUID(tagsUUID, tagList); ui.printTags(tags); } From af0039c6fea0c679900cd284e420643cb5191ce3 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 18 Mar 2023 14:28:36 +0800 Subject: [PATCH 050/311] chore: cleanup imports --- src/main/java/model/CardList.java | 1 - src/main/java/model/TagList.java | 1 - src/main/java/utils/UserInterface.java | 1 - src/main/java/utils/command/DeleteTagCommand.java | 3 +-- src/main/java/utils/command/ListCardsUnderTagCommand.java | 1 - 5 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/main/java/model/CardList.java b/src/main/java/model/CardList.java index a10b31a221..65b3e7ce77 100644 --- a/src/main/java/model/CardList.java +++ b/src/main/java/model/CardList.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.UUID; public class CardList { diff --git a/src/main/java/model/TagList.java b/src/main/java/model/TagList.java index 9eecdddc04..048ea4c4b6 100644 --- a/src/main/java/model/TagList.java +++ b/src/main/java/model/TagList.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.List; -import java.util.UUID; public class TagList { private List tags; diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 872732a073..03de39263a 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -2,7 +2,6 @@ import java.util.ArrayList; import java.util.Scanner; -import java.util.UUID; import model.Card; import model.CardList; import model.CardUUID; diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 51401b45a7..c39ef18827 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -1,6 +1,5 @@ package utils.command; -import java.util.UUID; import model.Card; import model.CardList; import model.CardUUID; @@ -33,7 +32,7 @@ private void removeTagFromCards(CardList cardList, TagList tagList, UserInterfac @Override public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { removeTagFromCards(cardList, tagList, ui); - boolean IsDeleted = tagList.deleteTagByUUID(tagUUID); + boolean isDeleted = tagList.deleteTagByUUID(tagUUID); // if isDeleted is false, it means tag doesn't exist in the first place, throw exception here ui.printRemoveTagFromTagList(tagUUID); } diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java index baa7971aef..9e9d194d50 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -1,7 +1,6 @@ package utils.command; import java.util.ArrayList; -import java.util.UUID; import model.Card; import model.CardList; import model.CardUUID; From 46151ab04c12a0f59de1f118f0b0e33b1d286a18 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 18 Mar 2023 20:56:43 +0800 Subject: [PATCH 051/311] fix : add gsonBuilder to serialize and deserialize cardUUID and tagUUID --- src/main/java/Inka.java | 2 +- .../storage/json/CardUuidJsonAdapter.java | 22 +++++++++++++++++++ .../utils/storage/{ => json}/JsonStorage.java | 13 ++++++++--- .../storage/json/TagUuidJsonAdapter.java | 22 +++++++++++++++++++ .../java/utils/storage/JsonStorageTest.java | 2 ++ 5 files changed, 57 insertions(+), 4 deletions(-) create mode 100644 src/main/java/utils/storage/json/CardUuidJsonAdapter.java rename src/main/java/utils/storage/{ => json}/JsonStorage.java (88%) create mode 100644 src/main/java/utils/storage/json/TagUuidJsonAdapter.java diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index ab42f441eb..14cd75519f 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -5,7 +5,7 @@ import utils.command.Command; import utils.exceptions.InkaException; import utils.exceptions.StorageLoadFailure; -import utils.storage.JsonStorage; +import utils.storage.json.JsonStorage; import utils.storage.Storage; public class Inka { diff --git a/src/main/java/utils/storage/json/CardUuidJsonAdapter.java b/src/main/java/utils/storage/json/CardUuidJsonAdapter.java new file mode 100644 index 0000000000..eb12c94e41 --- /dev/null +++ b/src/main/java/utils/storage/json/CardUuidJsonAdapter.java @@ -0,0 +1,22 @@ +package utils.storage.json; + +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.UUID; +import model.CardUUID; + +public class CardUuidJsonAdapter extends TypeAdapter { + + @Override + public void write(JsonWriter out, CardUUID value) throws IOException { + out.value(value.toString()); + } + + @Override + public CardUUID read(JsonReader in) throws IOException { + UUID uuid = UUID.fromString(in.nextString()); + return new CardUUID(uuid); + } +} diff --git a/src/main/java/utils/storage/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java similarity index 88% rename from src/main/java/utils/storage/JsonStorage.java rename to src/main/java/utils/storage/json/JsonStorage.java index fd2b87e917..2e16686451 100644 --- a/src/main/java/utils/storage/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -1,4 +1,4 @@ -package utils.storage; +package utils.storage.json; import com.google.gson.JsonSyntaxException; import java.util.logging.Logger; @@ -18,16 +18,23 @@ import java.util.ArrayList; import model.Card; import model.CardList; +import model.CardUUID; +import model.TagUUID; import utils.exceptions.StorageLoadFailure; import utils.exceptions.StorageSaveFailure; +import utils.storage.Storage; public class JsonStorage extends Storage { private static Logger logger = Logger.getLogger("storage.JsonStorage"); - private GsonBuilder gsonBuilder; + private GsonBuilder gsonBuilder = new GsonBuilder(); public JsonStorage(String filePath) { super(filePath); gsonBuilder = new GsonBuilder(); + + //Add custom adapters + gsonBuilder.registerTypeAdapter(CardUUID.class, new CardUuidJsonAdapter()); + gsonBuilder.registerTypeAdapter(TagUUID.class, new TagUuidJsonAdapter()); } @Override @@ -45,7 +52,7 @@ public CardList load() throws StorageLoadFailure { Type cardListType = new TypeToken>() { }.getType(); - ArrayList cards = gson.fromJson(jsonArray, cardListType); + ArrayList cards = gsonBuilder.create().fromJson(jsonArray, cardListType); cardList = new CardList(cards); } catch (IOException e) { logger.log(Level.WARNING, "Failed to load file from " + this.saveFile.getAbsolutePath(), e); diff --git a/src/main/java/utils/storage/json/TagUuidJsonAdapter.java b/src/main/java/utils/storage/json/TagUuidJsonAdapter.java new file mode 100644 index 0000000000..4787880469 --- /dev/null +++ b/src/main/java/utils/storage/json/TagUuidJsonAdapter.java @@ -0,0 +1,22 @@ +package utils.storage.json; + +import com.google.gson.TypeAdapter; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonWriter; +import java.io.IOException; +import java.util.UUID; +import model.TagUUID; + +public class TagUuidJsonAdapter extends TypeAdapter { + + @Override + public void write(JsonWriter out, TagUUID value) throws IOException { + out.value(value.toString()); + } + + @Override + public TagUUID read(JsonReader in) throws IOException { + UUID uuid = UUID.fromString(in.nextString()); + return new TagUUID(uuid); + } +} diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index 1966bb6733..6fb5684d0b 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -4,6 +4,8 @@ import model.CardList; import org.junit.jupiter.api.Test; import utils.exceptions.StorageLoadFailure; +import utils.storage.json.JsonStorage; + import static org.junit.jupiter.api.Assertions.assertThrows; public class JsonStorageTest { From a9b75e58dcc9da8371310752a3c25e1dbfa35071 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 18 Mar 2023 22:48:38 +0800 Subject: [PATCH 052/311] chore : add exceptions for tagging feature --- src/main/java/model/CardList.java | 12 ++++++-- src/main/java/model/TagList.java | 8 ++++++ .../utils/command/AddCardToTagCommand.java | 28 +++++++++++++------ src/main/java/utils/command/Command.java | 4 ++- .../java/utils/command/DeleteTagCommand.java | 18 ++++++++++-- .../command/ListCardsUnderTagCommand.java | 18 ++++++++++-- .../java/utils/command/ViewCardCommand.java | 26 +++++++++++++++-- .../java/utils/exceptions/AddGoneWrong.java | 2 +- .../exceptions/CardNotFoundException.java | 7 +++++ .../exceptions/TagNotFoundException.java | 7 +++++ .../exceptions/UUIDWrongFormatException.java | 7 +++++ 11 files changed, 116 insertions(+), 21 deletions(-) create mode 100644 src/main/java/utils/exceptions/CardNotFoundException.java create mode 100644 src/main/java/utils/exceptions/TagNotFoundException.java create mode 100644 src/main/java/utils/exceptions/UUIDWrongFormatException.java diff --git a/src/main/java/model/CardList.java b/src/main/java/model/CardList.java index 65b3e7ce77..7ba85f3152 100644 --- a/src/main/java/model/CardList.java +++ b/src/main/java/model/CardList.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import utils.exceptions.CardNotFoundException; public class CardList { @@ -29,13 +30,20 @@ public List getCards() { return this.cards; } - public Card findCardFromUUID(CardUUID cardUUID) { + /** + * Find the card with cardUUID from the cardList. + * + * @param cardUUID + * @return The card with the cardUUID specified that exists in the cardList + * @throws CardNotFoundException + */ + public Card findCardFromUUID(CardUUID cardUUID) throws CardNotFoundException { for (Card card : cards) { if (card.getUuid().equals(cardUUID)) { return card; } } - return null; + throw new CardNotFoundException(); } public boolean isEmpty() { diff --git a/src/main/java/model/TagList.java b/src/main/java/model/TagList.java index 048ea4c4b6..16b92f93b1 100644 --- a/src/main/java/model/TagList.java +++ b/src/main/java/model/TagList.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import utils.exceptions.TagNotFoundException; public class TagList { private List tags; @@ -24,6 +25,13 @@ public void addTag(Tag tag) { this.tags.add(tag); } + /** + * Find the tag with tagName specified from the tagList. + * + * @param tagName + * @return The tag with the tagName specified if the tag is found, returns null otherwise. + * @throws TagNotFoundException + */ public Tag findTagFromName(String tagName) { for (Tag tag : tags) { if (tag.getTagName().equals(tagName)) { diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index c176e0bd12..93d68c3dd0 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -8,6 +8,8 @@ import model.TagList; import model.TagUUID; import utils.UserInterface; +import utils.exceptions.InkaException; +import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; public class AddCardToTagCommand extends Command { @@ -15,20 +17,28 @@ public class AddCardToTagCommand extends Command { private TagUUID tagUUID; private CardUUID cardUUID; - public AddCardToTagCommand(String tagName, String cardUUID) { + public AddCardToTagCommand(String tagName, String cardUUID) throws InkaException { this.tagName = tagName; - this.cardUUID = new CardUUID(UUID.fromString(cardUUID)); + try { + this.cardUUID = new CardUUID(UUID.fromString(cardUUID)); + } catch (IllegalArgumentException e) { + throw new UUIDWrongFormatException(); + } } - private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) { + /** + * Adds the tagName tag to the Card with cardUUID, creates the tag beforehand if it currently does not exist. + * + * @param tagList The tagList into which to add the tag that has been created + * @param cardList The cardList from which to find the card with cardUUID + * @param ui The userInterface to print the success of the tag creation + * @throws InkaException + */ + private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) throws InkaException { //find the corresponding Tag and Card based on its tagName and card uuid Tag tagToAdd = tagList.findTagFromName(tagName); Card cardToAdd = cardList.findCardFromUUID(cardUUID); - if (cardToAdd == null) { - //means the card doesn't exist yet, throw exception - } - if (tagToAdd == null) { ui.printTagCreationSuccess(); tagToAdd = new Tag(tagName, cardUUID); @@ -39,12 +49,12 @@ private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) //add the tag uuid to the card tagUUID = tagToAdd.getUUID(); - System.out.println(cardToAdd); cardToAdd.addTag(tagUUID); } @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { addCardToTag(tagList, cardList, ui); ui.printAddTagToCardSuccess(cardUUID, tagUUID); } diff --git a/src/main/java/utils/command/Command.java b/src/main/java/utils/command/Command.java index 945cbeeb0d..f346685ae7 100644 --- a/src/main/java/utils/command/Command.java +++ b/src/main/java/utils/command/Command.java @@ -3,8 +3,10 @@ import model.CardList; import model.TagList; import utils.UserInterface; +import utils.exceptions.InkaException; import utils.storage.IDataStorage; public abstract class Command { - public abstract void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage); + public abstract void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException; } diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index c39ef18827..36488eb156 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -7,6 +7,8 @@ import model.TagList; import model.TagUUID; import utils.UserInterface; +import utils.exceptions.InkaException; +import utils.exceptions.TagNotFoundException; import utils.storage.IDataStorage; public class DeleteTagCommand extends Command { @@ -17,8 +19,19 @@ public DeleteTagCommand(String tagName) { this.tagName = tagName; } - private void removeTagFromCards(CardList cardList, TagList tagList, UserInterface ui) { + /** + * Remoove the tagName tag from the tagList and all the cards that currently have the tagName tag. + * + * @param cardList The cardList from which to look for the cards with tagName tag. + * @param tagList The tagList from which to delete the tagName tag. + * @param ui The userInterface to print the success of removal of the tag from the cards. + * @throws InkaException + */ + private void removeTagFromCards(CardList cardList, TagList tagList, UserInterface ui) throws InkaException { Tag tag = tagList.findTagFromName(tagName); + if (tag == null) { + throw new TagNotFoundException(); + } tagUUID = tag.getUUID(); //for each card whose uuid is listed under the tag, remove the tag uuid from that card @@ -30,7 +43,8 @@ private void removeTagFromCards(CardList cardList, TagList tagList, UserInterfac } @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { removeTagFromCards(cardList, tagList, ui); boolean isDeleted = tagList.deleteTagByUUID(tagUUID); // if isDeleted is false, it means tag doesn't exist in the first place, throw exception here diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java index 9e9d194d50..721757c919 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -7,6 +7,8 @@ import model.Tag; import model.TagList; import utils.UserInterface; +import utils.exceptions.InkaException; +import utils.exceptions.TagNotFoundException; import utils.storage.IDataStorage; public class ListCardsUnderTagCommand extends Command { @@ -16,10 +18,19 @@ public ListCardsUnderTagCommand(String tagName) { this.tagName = tagName; } - private CardList findCardsUnderTag(CardList cardList, TagList tagList) { + /** + * Finds all the cards that have been tagged with tagName tag. + * + * @param cardList The cardList from which to search for the cards. + * @param tagList The tagList that contains the specified tagName. + * @return The ArrayList containing all the cards that has the tagName tag. + * @throws InkaException + */ + private CardList findCardsUnderTag(CardList cardList, TagList tagList) throws InkaException { Tag foundTag = tagList.findTagFromName(tagName); + if (foundTag == null) { - //means the tag does not even exist to begin with , throw exception + throw new TagNotFoundException(); } ArrayList cardsUUID = foundTag.getCardsUUID(); @@ -36,7 +47,8 @@ private CardList findCardsUnderTag(CardList cardList, TagList tagList) { } @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { CardList foundCardList = findCardsUnderTag(cardList, tagList); ui.printCardList(foundCardList); } diff --git a/src/main/java/utils/command/ViewCardCommand.java b/src/main/java/utils/command/ViewCardCommand.java index 9eff147e29..30ad75b450 100644 --- a/src/main/java/utils/command/ViewCardCommand.java +++ b/src/main/java/utils/command/ViewCardCommand.java @@ -10,15 +10,29 @@ import model.TagList; import model.TagUUID; import utils.UserInterface; +import utils.exceptions.CardNotFoundException; +import utils.exceptions.InkaException; +import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; public class ViewCardCommand extends Command { private CardUUID cardUUID; - public ViewCardCommand(String cardUUID) { - this.cardUUID = new CardUUID(UUID.fromString(cardUUID)); + public ViewCardCommand(String cardUUID) throws InkaException { + try { + this.cardUUID = new CardUUID(UUID.fromString(cardUUID)); + } catch (IllegalArgumentException e) { + throw new UUIDWrongFormatException(); + } } + /** + * Find all the tags from the tagList whose UUID is specified in the uuids ArrayList. + * + * @param uuids The ArrayList containing the UUID of the tag that is to be searched for. + * @param tagList The tagList from which to look for the tags. + * @return The ArrayList consisting the tags that have been found based on the UUID specified. + */ public ArrayList findTagsFromTagUUID(ArrayList uuids, TagList tagList) { ArrayList tags = new ArrayList<>(); for (TagUUID uuid : uuids) { @@ -31,18 +45,24 @@ public ArrayList findTagsFromTagUUID(ArrayList uuids, TagList tagL return tags; } - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { List cards = cardList.getCards(); ArrayList tags; + boolean cardFound = false; //find the card with the specified uuid, print the card, find all the tags under it, print all the tags for (Card card : cards) { if (card.getUuid().equals(cardUUID)) { + cardFound = true; ui.printCard(card); ArrayList tagsUUID = card.getTagsUUID(); tags = findTagsFromTagUUID(tagsUUID, tagList); ui.printTags(tags); } } + if (!cardFound) { + throw new CardNotFoundException(); + } } } diff --git a/src/main/java/utils/exceptions/AddGoneWrong.java b/src/main/java/utils/exceptions/AddGoneWrong.java index fc5dceb95a..9d457ae3fd 100644 --- a/src/main/java/utils/exceptions/AddGoneWrong.java +++ b/src/main/java/utils/exceptions/AddGoneWrong.java @@ -2,6 +2,6 @@ public class AddGoneWrong extends InkaException { public AddGoneWrong() { - super("Please ensure use '-' to separate the question and answer to the add command!"); + super("Please ensure use '--' to separate the question and answer to the add command!"); } } diff --git a/src/main/java/utils/exceptions/CardNotFoundException.java b/src/main/java/utils/exceptions/CardNotFoundException.java new file mode 100644 index 0000000000..2e25be4c08 --- /dev/null +++ b/src/main/java/utils/exceptions/CardNotFoundException.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class CardNotFoundException extends InkaException { + public CardNotFoundException() { + super("Card cannot be found"); + } +} diff --git a/src/main/java/utils/exceptions/TagNotFoundException.java b/src/main/java/utils/exceptions/TagNotFoundException.java new file mode 100644 index 0000000000..bc96737dfe --- /dev/null +++ b/src/main/java/utils/exceptions/TagNotFoundException.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class TagNotFoundException extends InkaException { + public TagNotFoundException() { + super("Tag cannot be found"); + } +} diff --git a/src/main/java/utils/exceptions/UUIDWrongFormatException.java b/src/main/java/utils/exceptions/UUIDWrongFormatException.java new file mode 100644 index 0000000000..ad2cbf0194 --- /dev/null +++ b/src/main/java/utils/exceptions/UUIDWrongFormatException.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class UUIDWrongFormatException extends InkaException { + public UUIDWrongFormatException() { + super("Please ensure that the UUID format is correct."); + } +} From 9f6a768104b0b7d86eba689ca9cbdf4391c3a127 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 19 Mar 2023 10:15:48 +0800 Subject: [PATCH 053/311] test: generate unit test for non-trivial method for cardList --- src/main/java/model/Card.java | 13 ++++++++++++ src/test/java/model/CardListTest.java | 29 +++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 src/test/java/model/CardListTest.java diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index ea9d069c3c..2b69f4cc65 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -17,6 +17,19 @@ public Card(String question, String answer) { this.uuid = new CardUUID(UUID.randomUUID()); } + /** + * Constructor function where user specifies the UUID himself, mainly used for unit testing purposes + * + * @param question The question in the card. + * @param answer The answer in the card. + * @param UUIDStr The custom UUID String that the user specifies for the card. + */ + public Card(String question, String answer, String UUIDStr) { + this.question = question; + this.answer = answer; + this.uuid = new CardUUID(UUID.fromString(UUIDStr)); + } + public CardUUID getUuid() { return this.uuid; } diff --git a/src/test/java/model/CardListTest.java b/src/test/java/model/CardListTest.java new file mode 100644 index 0000000000..9a50c96986 --- /dev/null +++ b/src/test/java/model/CardListTest.java @@ -0,0 +1,29 @@ +package model; + +import static org.junit.jupiter.api.Assertions.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import org.junit.jupiter.api.Test; +import utils.exceptions.CardNotFoundException; + +class CardListTest { + private static final String UUID_1 = "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454"; + private static final String UUID_2 = "00000000-0000-0000-0000-000000000001"; + Card card1 = new Card("is akhil a dirty commie", "yes", UUID_1); + Card card2 = new Card("why do other groups keep attackin ian", "he is not a dirty commie", UUID_2); + + @Test + void findCardFromUUID() { + ArrayList cards = new ArrayList(Arrays.asList(card1, card2)); + CardList cardList = new CardList(cards); + try { + assertEquals(card1, cardList.findCardFromUUID(new CardUUID(UUID.fromString(UUID_1)))); + assertEquals(card2, cardList.findCardFromUUID(new CardUUID(UUID.fromString(UUID_2)))); + } catch (CardNotFoundException e) { + assertEquals("Card cannot be found", e.getMessage()); + } + } +} From 7205f2c8165bc90c4e0f4bacffcc9d26792d91f9 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 19 Mar 2023 10:20:32 +0800 Subject: [PATCH 054/311] chore: remove trivial ui unit test --- src/main/java/model/Card.java | 4 ++-- src/test/java/model/CardListTest.java | 8 +++---- .../userinterface/UserInterfaceTest.java | 23 ------------------- 3 files changed, 6 insertions(+), 29 deletions(-) delete mode 100644 src/test/java/utils/userinterface/UserInterfaceTest.java diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 2b69f4cc65..f012a2bc0b 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -24,10 +24,10 @@ public Card(String question, String answer) { * @param answer The answer in the card. * @param UUIDStr The custom UUID String that the user specifies for the card. */ - public Card(String question, String answer, String UUIDStr) { + public Card(String question, String answer, String uuidStr) { this.question = question; this.answer = answer; - this.uuid = new CardUUID(UUID.fromString(UUIDStr)); + this.uuid = new CardUUID(UUID.fromString(uuidStr)); } public CardUUID getUuid() { diff --git a/src/test/java/model/CardListTest.java b/src/test/java/model/CardListTest.java index 9a50c96986..9e3b6ad3c2 100644 --- a/src/test/java/model/CardListTest.java +++ b/src/test/java/model/CardListTest.java @@ -1,10 +1,9 @@ package model; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.util.ArrayList; import java.util.Arrays; -import java.util.List; import java.util.UUID; import org.junit.jupiter.api.Test; import utils.exceptions.CardNotFoundException; @@ -12,8 +11,9 @@ class CardListTest { private static final String UUID_1 = "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454"; private static final String UUID_2 = "00000000-0000-0000-0000-000000000001"; - Card card1 = new Card("is akhil a dirty commie", "yes", UUID_1); - Card card2 = new Card("why do other groups keep attackin ian", "he is not a dirty commie", UUID_2); + private static final Card card1 = new Card("is akhil a dirty commie", "yes", UUID_1); + private static final Card card2 = new Card("why do other groups keep attackin ian", "he is not a dirty commie", + UUID_2); @Test void findCardFromUUID() { diff --git a/src/test/java/utils/userinterface/UserInterfaceTest.java b/src/test/java/utils/userinterface/UserInterfaceTest.java deleted file mode 100644 index 4090488f16..0000000000 --- a/src/test/java/utils/userinterface/UserInterfaceTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package utils.userinterface; - -import org.junit.jupiter.api.Test; - -class UserInterfaceTest { - - @Test - void getCommand() { - - } - - @Test - void printLine() { - } - - @Test - void printGreeting() { - } - - @Test - void printBye() { - } -} From c3e8eed6f3917d4a95e6f05b31320050acd9dbfd Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 19 Mar 2023 10:27:39 +0800 Subject: [PATCH 055/311] chore: add non-null assertion in findCardByUUID --- src/main/java/utils/command/AddCardToTagCommand.java | 1 + src/main/java/utils/command/DeleteTagCommand.java | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 93d68c3dd0..e4ae1fc896 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -38,6 +38,7 @@ private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) //find the corresponding Tag and Card based on its tagName and card uuid Tag tagToAdd = tagList.findTagFromName(tagName); Card cardToAdd = cardList.findCardFromUUID(cardUUID); + assert cardToAdd != null; if (tagToAdd == null) { ui.printTagCreationSuccess(); diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 36488eb156..63cafa0372 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -37,6 +37,7 @@ private void removeTagFromCards(CardList cardList, TagList tagList, UserInterfac //for each card whose uuid is listed under the tag, remove the tag uuid from that card for (CardUUID cardUUID : tag.getCardsUUID()) { Card affectedCard = cardList.findCardFromUUID(cardUUID); + assert affectedCard != null; affectedCard.removeTag(tagUUID); ui.printRemoveTagFromCard(affectedCard.getUuid(), tagUUID); } From 5f68dd84bec11de4c02b88f597407293844a2d76 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 19 Mar 2023 15:39:29 +0800 Subject: [PATCH 056/311] feat: add tag edit tagName --- src/main/java/model/Tag.java | 4 +++ src/main/java/utils/Parser.java | 19 ++++++++---- src/main/java/utils/UserInterface.java | 5 ++++ .../utils/command/EditTagNameCommand.java | 30 +++++++++++++++++++ .../EditTagNameIncompleteException.java | 7 +++++ 5 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 src/main/java/utils/command/EditTagNameCommand.java create mode 100644 src/main/java/utils/exceptions/EditTagNameIncompleteException.java diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 7c1211b3cc..9169fea06a 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -22,6 +22,10 @@ public String getTagName() { return this.tagName; } + public void editTagName(String newTagName) { + this.tagName = newTagName; + } + public ArrayList getCardsUUID() { return this.cards; } diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java index ce55506731..d15ada8f16 100644 --- a/src/main/java/utils/Parser.java +++ b/src/main/java/utils/Parser.java @@ -8,6 +8,7 @@ import utils.command.Command; import utils.command.DeleteCardCommand; import utils.command.DeleteTagCommand; +import utils.command.EditTagNameCommand; import utils.command.ExceptionCommand; import utils.command.ExportCommand; import utils.command.ListCardCommand; @@ -21,12 +22,12 @@ import utils.exceptions.AddGoneWrong; import utils.exceptions.DeleteMissingNumber; import utils.exceptions.DeleteRangeInvalid; +import utils.exceptions.EditTagNameIncompleteException; import utils.exceptions.InkaException; public class Parser { private boolean isExecuting; - public Parser() { this.isExecuting = true; } @@ -39,18 +40,17 @@ public void setIsExecuting(boolean bool) { this.isExecuting = bool; } - //Sorry I know this is painful to read, thanks for migrating it to a parser library! public Command parseCommand(String userCommand, CardList cardList, TagList tagList) throws InkaException { String[] userCommandSplit = userCommand.split("--", 3); - assert userCommandSplit.length >=1 : "User Command must be specified"; + assert userCommandSplit.length >= 1 : "User Command must be specified"; if (userCommandSplit[0].startsWith("card list")) { return new ListCardCommand(); } else if (userCommandSplit[0].startsWith("card add")) { if (userCommandSplit.length < 3) { throw new AddGoneWrong(); } else if (userCommandSplit[1].isBlank() && userCommandSplit[2].isBlank()) { - assert userCommandSplit.length < 3 : "Questions and answers should be specified " ; + assert userCommandSplit.length < 3 : "Questions and answers should be specified "; throw new AddEmptyQuestionAndAnswer(); } else if (userCommandSplit[1].isBlank()) { throw new AddEmptyQuestion(); @@ -81,7 +81,7 @@ public Command parseCommand(String userCommand, CardList cardList, TagList tagLi return new AddCardToTagCommand(tagName, cardUUID); } else if (userCommandSplit[0].startsWith("tag list")) { - if (userCommandSplit.length >1) { + if (userCommandSplit.length > 1) { String tagName = userCommandSplit[1]; return new ListCardsUnderTagCommand(tagName); } else { @@ -91,6 +91,15 @@ public Command parseCommand(String userCommand, CardList cardList, TagList tagLi //please check for exception String tagName = userCommandSplit[1]; return new DeleteTagCommand(tagName); + } else if (userCommandSplit[0].startsWith("tag edit")) { + if (userCommandSplit.length < 3) { + throw new EditTagNameIncompleteException(); + } + + String oldTagName = userCommandSplit[1].trim(); + String newTagName = userCommandSplit[2].trim(); + + return new EditTagNameCommand(oldTagName, newTagName); } else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")) { return new ExportCommand(); } else if (userCommandSplit[0].startsWith("bye")) { diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 03de39263a..ef3d376cf8 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -137,4 +137,9 @@ public void printRemoveTagFromCard(CardUUID cardUUID, TagUUID tagUUID) { public void printRemoveTagFromTagList(TagUUID tagUUID) { System.out.println("Successfully removed tag " + tagUUID + " from the tag list."); } + + public void printEditTagNameSuccess(String oldTagName, Tag tag) { + System.out.println( + "Tag " + tag.getUUID() + "tag name has been changed from " + oldTagName + " to " + tag.getTagName()); + } } diff --git a/src/main/java/utils/command/EditTagNameCommand.java b/src/main/java/utils/command/EditTagNameCommand.java new file mode 100644 index 0000000000..1e4de30126 --- /dev/null +++ b/src/main/java/utils/command/EditTagNameCommand.java @@ -0,0 +1,30 @@ +package utils.command; + +import model.CardList; +import model.Tag; +import model.TagList; +import utils.UserInterface; +import utils.exceptions.InkaException; +import utils.exceptions.TagNotFoundException; +import utils.storage.IDataStorage; + +public class EditTagNameCommand extends Command { + String oldTagName; + String newTagName; + + public EditTagNameCommand(String oldTagName, String newTagName) { + this.oldTagName = oldTagName; + this.newTagName = newTagName; + } + + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { + Tag tag = tagList.findTagFromName(oldTagName); + if (tag == null) { + throw new TagNotFoundException(); + } + + tag.editTagName(newTagName); + ui.printEditTagNameSuccess(oldTagName, tag); + } +} diff --git a/src/main/java/utils/exceptions/EditTagNameIncompleteException.java b/src/main/java/utils/exceptions/EditTagNameIncompleteException.java new file mode 100644 index 0000000000..434a9eaff6 --- /dev/null +++ b/src/main/java/utils/exceptions/EditTagNameIncompleteException.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class EditTagNameIncompleteException extends InkaException { + public EditTagNameIncompleteException() { + super("Please specify the old tag name and the new tag name."); + } +} From fac74c2faad4f734726da3359ebacf84012dfcc0 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 19 Mar 2023 15:48:41 +0800 Subject: [PATCH 057/311] chore: add more exceptions in parser --- src/main/java/utils/Parser.java | 13 ++++++++++++- .../utils/exceptions/DeleteTagNameIncomplete.java | 7 +++++++ .../utils/exceptions/TagCardIncompleteInput.java | 7 +++++++ .../java/utils/exceptions/ViewCardMissingUUID.java | 7 +++++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 src/main/java/utils/exceptions/DeleteTagNameIncomplete.java create mode 100644 src/main/java/utils/exceptions/TagCardIncompleteInput.java create mode 100644 src/main/java/utils/exceptions/ViewCardMissingUUID.java diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java index d15ada8f16..439253a8ef 100644 --- a/src/main/java/utils/Parser.java +++ b/src/main/java/utils/Parser.java @@ -22,8 +22,11 @@ import utils.exceptions.AddGoneWrong; import utils.exceptions.DeleteMissingNumber; import utils.exceptions.DeleteRangeInvalid; +import utils.exceptions.DeleteTagNameIncomplete; import utils.exceptions.EditTagNameIncompleteException; import utils.exceptions.InkaException; +import utils.exceptions.TagCardIncompleteInput; +import utils.exceptions.ViewCardMissingUUID; public class Parser { private boolean isExecuting; @@ -62,6 +65,9 @@ public Command parseCommand(String userCommand, CardList cardList, TagList tagLi Card card = new Card(question, answer); return new AddCardCommand(card); // main command return } else if (userCommandSplit[0].startsWith("card view")) { + if (userCommandSplit.length < 2) { + throw new ViewCardMissingUUID(); + } String cardUUID = userCommandSplit[1]; return new ViewCardCommand(cardUUID); } else if (userCommandSplit[0].startsWith("card delete")) { @@ -76,6 +82,9 @@ public Command parseCommand(String userCommand, CardList cardList, TagList tagLi assert deleteIndex >= 0 : "deleteIndex should be a number"; return new DeleteCardCommand(deleteIndex); } else if (userCommandSplit[0].startsWith("card tag")) { + if (userCommandSplit.length < 3) { + throw new TagCardIncompleteInput(); + } String cardUUID = userCommandSplit[1].trim(); String tagName = userCommandSplit[2]; @@ -88,7 +97,9 @@ public Command parseCommand(String userCommand, CardList cardList, TagList tagLi return new ListTagsCommand(); } } else if (userCommandSplit[0].startsWith("tag delete")) { - //please check for exception + if (userCommandSplit.length < 2) { + throw new DeleteTagNameIncomplete(); + } String tagName = userCommandSplit[1]; return new DeleteTagCommand(tagName); } else if (userCommandSplit[0].startsWith("tag edit")) { diff --git a/src/main/java/utils/exceptions/DeleteTagNameIncomplete.java b/src/main/java/utils/exceptions/DeleteTagNameIncomplete.java new file mode 100644 index 0000000000..da5d1aa0c1 --- /dev/null +++ b/src/main/java/utils/exceptions/DeleteTagNameIncomplete.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class DeleteTagNameIncomplete extends InkaException { + public DeleteTagNameIncomplete() { + super("Please specify the tag name of the tag that you wish to delete."); + } +} diff --git a/src/main/java/utils/exceptions/TagCardIncompleteInput.java b/src/main/java/utils/exceptions/TagCardIncompleteInput.java new file mode 100644 index 0000000000..1b63491030 --- /dev/null +++ b/src/main/java/utils/exceptions/TagCardIncompleteInput.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class TagCardIncompleteInput extends InkaException { + public TagCardIncompleteInput() { + super("Please ensure that you have entered the card UUID and the tag name that you wish to tag the card with."); + } +} diff --git a/src/main/java/utils/exceptions/ViewCardMissingUUID.java b/src/main/java/utils/exceptions/ViewCardMissingUUID.java new file mode 100644 index 0000000000..7ad38af23b --- /dev/null +++ b/src/main/java/utils/exceptions/ViewCardMissingUUID.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class ViewCardMissingUUID extends InkaException { + public ViewCardMissingUUID() { + super("Please specify the uuid of the card that you wish to view"); + } +} From 39488e6135beccd54f10cb63701be8dc90889f3e Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 20 Mar 2023 14:45:26 +0800 Subject: [PATCH 058/311] ref: change overloading constructor to a static factory method --- src/main/java/model/Card.java | 20 +++++++++++++++++--- src/test/java/model/CardListTest.java | 5 +++-- 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index f012a2bc0b..7f5ee629e9 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -18,18 +18,32 @@ public Card(String question, String answer) { } /** - * Constructor function where user specifies the UUID himself, mainly used for unit testing purposes + * Constructor function where user specifies the UUID himself This is private and is only called by the static + * factory method createCardWithUUID() * * @param question The question in the card. * @param answer The answer in the card. - * @param UUIDStr The custom UUID String that the user specifies for the card. + * @param uuidStr The custom UUID String that the user specifies for the card. */ - public Card(String question, String answer, String uuidStr) { + private Card(String question, String answer, String uuidStr) { this.question = question; this.answer = answer; this.uuid = new CardUUID(UUID.fromString(uuidStr)); } + /** + * A method that calls a private constructor function where user can specify the UUID himself. This method is mainly + * used for unit-testing purpose + * + * @param question The question in the card + * @param answer The answer in the card + * @param uuidStr The custom UUID String that the user wants for the card + * @return + */ + public static Card createCardWithUUID(String question, String answer, String uuidStr) { + return new Card(question, answer, uuidStr); + } + public CardUUID getUuid() { return this.uuid; } diff --git a/src/test/java/model/CardListTest.java b/src/test/java/model/CardListTest.java index 9e3b6ad3c2..ed44aaea3c 100644 --- a/src/test/java/model/CardListTest.java +++ b/src/test/java/model/CardListTest.java @@ -11,8 +11,9 @@ class CardListTest { private static final String UUID_1 = "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454"; private static final String UUID_2 = "00000000-0000-0000-0000-000000000001"; - private static final Card card1 = new Card("is akhil a dirty commie", "yes", UUID_1); - private static final Card card2 = new Card("why do other groups keep attackin ian", "he is not a dirty commie", + private static final Card card1 = Card.createCardWithUUID("is akhil a dirty commie", "yes", UUID_1); + private static final Card card2 = Card.createCardWithUUID("why do other groups keep attackin ian", + "he is not a dirty commie", UUID_2); @Test From fd524d32924dc08d707b13f47210f864e926c6af Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 20 Mar 2023 11:56:10 +0800 Subject: [PATCH 059/311] temp: Checking something else out --- build.gradle | 1 + src/main/java/Inka.java | 5 +- src/main/java/utils/UserInterface.java | 2 +- .../exceptions/InvalidCommandException.java | 6 + .../java/utils/parser/CardTokenParser.java | 150 ++++++++++++++++++ src/main/java/utils/parser/Parser.java | 75 +++++++++ .../java/utils/parser/TagTokenParser.java | 35 ++++ 7 files changed, 270 insertions(+), 4 deletions(-) create mode 100644 src/main/java/utils/exceptions/InvalidCommandException.java create mode 100644 src/main/java/utils/parser/CardTokenParser.java create mode 100644 src/main/java/utils/parser/Parser.java create mode 100644 src/main/java/utils/parser/TagTokenParser.java diff --git a/build.gradle b/build.gradle index 481e8055b4..2d31a7d1a1 100644 --- a/build.gradle +++ b/build.gradle @@ -13,6 +13,7 @@ dependencies { testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' implementation 'com.google.code.gson:gson:2.8.9' + implementation 'commons-cli:commons-cli:1.5.0' } test { diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 14cd75519f..84e7f366f0 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,6 +1,6 @@ import model.CardList; import model.TagList; -import utils.Parser; +import utils.parser.Parser; import utils.UserInterface; import utils.command.Command; import utils.exceptions.InkaException; @@ -59,9 +59,8 @@ public void run() { while (parser.getIsExecuting()) { String userInput = ui.getUserInput(); - //Command command = exceptionHandler.mainExceptionHandler(parser, userInput, ui, cardList); try { - Command command = parser.parseCommand(userInput, cardList, tagList); + Command command = parser.parseCommand(userInput); command.execute(cardList, tagList, ui, storage); } catch (InkaException e) { ui.printException(e); diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index ef3d376cf8..d3f55a0227 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -20,7 +20,7 @@ public UserInterface() { } public String getUserInput() { - return scanner.nextLine(); + return scanner.nextLine().trim(); } public void printDivider() { diff --git a/src/main/java/utils/exceptions/InvalidCommandException.java b/src/main/java/utils/exceptions/InvalidCommandException.java new file mode 100644 index 0000000000..05d0b393da --- /dev/null +++ b/src/main/java/utils/exceptions/InvalidCommandException.java @@ -0,0 +1,6 @@ +package utils.exceptions; +public class InvalidCommandException extends InkaException { + public InvalidCommandException() { + super("Please enter a valid command!"); + } +} diff --git a/src/main/java/utils/parser/CardTokenParser.java b/src/main/java/utils/parser/CardTokenParser.java new file mode 100644 index 0000000000..f1df8b18c5 --- /dev/null +++ b/src/main/java/utils/parser/CardTokenParser.java @@ -0,0 +1,150 @@ +package utils.parser; + +import java.util.List; +import model.Card; +import org.apache.commons.cli.Option; +import org.apache.commons.cli.Options; +import utils.command.AddCardCommand; +import utils.command.AddCardToTagCommand; +import utils.command.Command; +import utils.command.DeleteCardCommand; +import utils.command.ListCardCommand; +import utils.command.ViewCardCommand; +import utils.exceptions.AddEmptyAnswer; +import utils.exceptions.AddEmptyQuestion; +import utils.exceptions.AddEmptyQuestionAndAnswer; +import utils.exceptions.AddGoneWrong; +import utils.exceptions.DeleteMissingNumber; +import utils.exceptions.DeleteRangeInvalid; +import utils.exceptions.InkaException; +import utils.exceptions.InvalidCommandException; + +public class CardTokenParser { + + private final static String CARD_ADD_ACTION = "add"; + private final static String CARD_DELETE_ACTION = "delete"; + private final static String CARD_LIST_ACTION = "list"; + private final static String CARD_TAG_ACTION = "tag"; + private final static String CARD_VIEW_ACTION = "view"; + private final Options addOptions = buildAddOptions(); + private final Options deleteOptions = buildDeleteOptions(); + private final Options tagOptions = buildTagOptions(); + private final Options viewOptions = buildViewOptions(); + + public CardTokenParser() { + + } + + /** + * Builds options for use with the {@link #CARD_ADD_ACTION} action + */ + private static Options buildAddOptions() { + Options options = new Options(); + // + Option addOption = new Option(CARD_ADD_ACTION, true, "add a new card"); + } + + /** + * Builds options for use with the {@link #CARD_LIST_ACTION} action + */ + private static Options buildListOptions() { + // TODO: Possibly change verbosity of output? + return new Options(); + } + + /** + * Builds options for use with the {@link #CARD_DELETE_ACTION} action + */ + private static Options buildDeleteOptions() { + + } + + /** + * Builds options for use with the {@link #CARD_VIEW_ACTION} action + */ + private static Options buildViewOptions() { + + } + + private static Options buildTagOptions() { + Options options = new Options(); + options.addRequiredOption("c", "card", true, "card UUID"); + options.addRequiredOption("t", "tag", true, "tag name"); + + return options; + } + + public Command parseTokens(List tokens) throws InkaException { + + String action = tokens.get(0); + List flags = tokens.subList(1, tokens.size()); + + switch (action) { + case CARD_ADD_ACTION: + return handleAdd(flags); + case CARD_DELETE_ACTION: + return handleDelete(flags); + case CARD_LIST_ACTION: + return handleList(flags); + case CARD_TAG_ACTION: + return handleTag(flags); + case CARD_VIEW_ACTION: + return handleView(flags); + default: + throw new InvalidCommandException(); + } + + // TODO: + if (userCommandSplit[0].startsWith("card add")) { + if (userCommandSplit.length < 3) { + throw new AddGoneWrong(); + } else if (userCommandSplit[1].isBlank() && userCommandSplit[2].isBlank()) { + assert userCommandSplit.length < 3 : "Questions and answers should be specified "; + throw new AddEmptyQuestionAndAnswer(); + } else if (userCommandSplit[1].isBlank()) { + throw new AddEmptyQuestion(); + } else if (userCommandSplit[2].isBlank()) { + throw new AddEmptyAnswer(); + } + String question = userCommandSplit[1]; + String answer = userCommandSplit[2]; + Card card = new Card(question, answer); + return new AddCardCommand(card); // main command return + } else if (userCommandSplit[0].startsWith("card view")) { + String cardUUID = userCommandSplit[1]; + return new ViewCardCommand(cardUUID); + } else if (userCommandSplit[0].startsWith("card delete")) { + if (userCommandSplit.length == 1) { + throw new DeleteMissingNumber(); + } else if (Integer.parseInt(userCommandSplit[1]) < 1 + || Integer.parseInt(userCommandSplit[1]) > cardList.size()) { + + throw new DeleteRangeInvalid(); + } + int deleteIndex = Integer.parseInt(userCommandSplit[1]); + assert deleteIndex >= 0 : "deleteIndex should be a number"; + return new DeleteCardCommand(deleteIndex); + } else if (userCommandSplit[0].startsWith("card tag")) { + + } + } + + private Command handleAdd(List tokens) { + } + + private Command handleDelete(List tokens) { + } + + private Command handleList(List tokens) { + return new ListCardCommand(); + } + + private Command handleTag(List tokens) { + + + return new AddCardToTagCommand(tagName, cardUUID); + } + + private Command handleView(List tokens) { + } +} diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/parser/Parser.java new file mode 100644 index 0000000000..4e468e25b4 --- /dev/null +++ b/src/main/java/utils/parser/Parser.java @@ -0,0 +1,75 @@ +package utils.parser; + +import java.util.Arrays; +import java.util.List; +import utils.command.Command; +import utils.command.ExportCommand; +import utils.command.TerminateCommand; +import utils.exceptions.InkaException; +import utils.exceptions.InvalidCommandException; + +public class Parser { + + /* Card-related tokens */ + private final static String CARD_KEYWORD = "card"; + + /* Tag-related tokens */ + private final static String TAG_KEYWORD = "tag"; + + /* Miscellaneous tokens */ + private final static String EXPORT_KEYWORD = "exit"; + private final static String EXIT_KEYWORD = "bye"; + + // Keyword-specific parsers + private final CardTokenParser cardTokenParser = new CardTokenParser(); + private final TagTokenParser tagTokenParser = new TagTokenParser(); + + private boolean isExecuting; + + public Parser() { + this.isExecuting = true; + } + + public boolean getIsExecuting() { + return isExecuting; + } + + public void setIsExecuting(boolean bool) { + this.isExecuting = bool; + } + + public Command parseCommand(String userInput) throws InkaException { + /* + * User input is split into: + * [keyword] [action (optional)] [flag(s) (optional)] + */ + + List userInputTokens = Arrays.asList(userInput.split("")); + + if (userInputTokens.size() == 0) { + throw new InvalidCommandException(); + } + + // Parse action and flags based on keyword + String keyword = userInputTokens.get(0); + List optionTokens = userInputTokens.subList(1, userInputTokens.size()); + + switch (keyword) { + case CARD_KEYWORD: + return cardTokenParser.parseTokens(optionTokens); + + case TAG_KEYWORD: + return tagTokenParser.parseToken(optionTokens); + + case EXPORT_KEYWORD: + return new ExportCommand(); + + case EXIT_KEYWORD: + this.setIsExecuting(false); + return new TerminateCommand(); + + default: + throw new InvalidCommandException(); + } + } +} diff --git a/src/main/java/utils/parser/TagTokenParser.java b/src/main/java/utils/parser/TagTokenParser.java new file mode 100644 index 0000000000..4a27300a95 --- /dev/null +++ b/src/main/java/utils/parser/TagTokenParser.java @@ -0,0 +1,35 @@ +package utils.parser; + +import java.util.List; +import utils.command.Command; +import utils.command.DeleteTagCommand; +import utils.command.ListCardsUnderTagCommand; +import utils.command.ListTagsCommand; +import utils.exceptions.InkaException; +import utils.exceptions.InvalidCommandException; + +public class TagTokenParser { + + public TagTokenParser() { + + } + + public Command parseToken(List tokens) throws InkaException { + // TODO: + if (userCommandSplit[0].startsWith("tag list")) { + if (userCommandSplit.length > 1) { + String tagName = userCommandSplit[1]; + return new ListCardsUnderTagCommand(tagName); + } else { + return new ListTagsCommand(); + } + } else if (userCommandSplit[0].startsWith("tag delete")) { + //please check for exception + String tagName = userCommandSplit[1]; + return new DeleteTagCommand(tagName); + } + + throw new InvalidCommandException(); + } +} +} From 72dd262bcb3bf32b6dd83d52fe0580f1c3947aae Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 20 Mar 2023 12:53:03 +0800 Subject: [PATCH 060/311] refactor: splitting stuff up to integrate with library --- .../java/utils/command/AddCardCommand.java | 4 +- .../java/utils/command/DeleteCardCommand.java | 17 +- .../java/utils/command/ExceptionCommand.java | 4 +- .../java/utils/command/ExportCommand.java | 4 +- .../java/utils/command/ListCardCommand.java | 4 +- .../command/ListCardsUnderTagCommand.java | 1 - .../java/utils/command/ListTagsCommand.java | 4 +- .../java/utils/command/TerminateCommand.java | 4 +- .../exceptions/InvalidCommandException.java | 6 - .../exceptions/InvalidSyntaxException.java | 8 + .../UnrecognizedCommandException.java | 6 + .../java/utils/parser/CardTokenParser.java | 157 ++++++++---------- src/main/java/utils/parser/Parser.java | 36 ++-- .../java/utils/parser/TagTokenParser.java | 51 ++++-- 14 files changed, 164 insertions(+), 142 deletions(-) delete mode 100644 src/main/java/utils/exceptions/InvalidCommandException.java create mode 100644 src/main/java/utils/exceptions/InvalidSyntaxException.java create mode 100644 src/main/java/utils/exceptions/UnrecognizedCommandException.java diff --git a/src/main/java/utils/command/AddCardCommand.java b/src/main/java/utils/command/AddCardCommand.java index 74f2318593..aba90193d3 100644 --- a/src/main/java/utils/command/AddCardCommand.java +++ b/src/main/java/utils/command/AddCardCommand.java @@ -4,6 +4,7 @@ import model.CardList; import model.TagList; import utils.UserInterface; +import utils.exceptions.InkaException; import utils.storage.IDataStorage; public class AddCardCommand extends Command { @@ -14,7 +15,8 @@ public AddCardCommand(Card card) { } @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { cardList.addCard(card); ui.printAddQuestionSuccess(); ui.printNumOfQuestions(cardList); diff --git a/src/main/java/utils/command/DeleteCardCommand.java b/src/main/java/utils/command/DeleteCardCommand.java index ad044cde6d..b24af7b473 100644 --- a/src/main/java/utils/command/DeleteCardCommand.java +++ b/src/main/java/utils/command/DeleteCardCommand.java @@ -3,6 +3,8 @@ import model.CardList; import model.TagList; import utils.UserInterface; +import utils.exceptions.DeleteRangeInvalid; +import utils.exceptions.InkaException; import utils.storage.IDataStorage; public class DeleteCardCommand extends Command { @@ -14,10 +16,15 @@ public DeleteCardCommand(int index) { } @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { - ui.printDeleteSuccess(); - // if the input is delete 1, this will delete the first element of the array which is element 0. - cardList.delete(this.index - 1); - ui.printNumOfQuestions(cardList); + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { + try { + // if the input is delete 1, this will delete the first element of the array which is element 0. + cardList.delete(this.index - 1); + ui.printDeleteSuccess(); + ui.printNumOfQuestions(cardList); + } catch (IndexOutOfBoundsException e) { + throw new DeleteRangeInvalid(); + } } } diff --git a/src/main/java/utils/command/ExceptionCommand.java b/src/main/java/utils/command/ExceptionCommand.java index 3dbe4ea245..4ec8840b5d 100644 --- a/src/main/java/utils/command/ExceptionCommand.java +++ b/src/main/java/utils/command/ExceptionCommand.java @@ -3,11 +3,13 @@ import model.CardList; import model.TagList; import utils.UserInterface; +import utils.exceptions.InkaException; import utils.storage.IDataStorage; public class ExceptionCommand extends Command { @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { ui.printWrongCommand(); } } diff --git a/src/main/java/utils/command/ExportCommand.java b/src/main/java/utils/command/ExportCommand.java index b8a2eaa807..22e2d51ad6 100644 --- a/src/main/java/utils/command/ExportCommand.java +++ b/src/main/java/utils/command/ExportCommand.java @@ -3,13 +3,15 @@ import model.CardList; import model.TagList; import utils.UserInterface; +import utils.exceptions.InkaException; import utils.exceptions.StorageSaveFailure; import utils.storage.IDataStorage; public class ExportCommand extends Command { @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { try { storage.save(cardList); ui.printSaveSuccess(); diff --git a/src/main/java/utils/command/ListCardCommand.java b/src/main/java/utils/command/ListCardCommand.java index 0205be12d4..46252b4383 100644 --- a/src/main/java/utils/command/ListCardCommand.java +++ b/src/main/java/utils/command/ListCardCommand.java @@ -3,11 +3,13 @@ import model.CardList; import model.TagList; import utils.UserInterface; +import utils.exceptions.InkaException; import utils.storage.IDataStorage; public class ListCardCommand extends Command { @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { ui.printCardList(cardList); } } diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java index 721757c919..9709f60bc1 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -28,7 +28,6 @@ public ListCardsUnderTagCommand(String tagName) { */ private CardList findCardsUnderTag(CardList cardList, TagList tagList) throws InkaException { Tag foundTag = tagList.findTagFromName(tagName); - if (foundTag == null) { throw new TagNotFoundException(); } diff --git a/src/main/java/utils/command/ListTagsCommand.java b/src/main/java/utils/command/ListTagsCommand.java index 1e4f6c2f4c..3f95bcde31 100644 --- a/src/main/java/utils/command/ListTagsCommand.java +++ b/src/main/java/utils/command/ListTagsCommand.java @@ -3,11 +3,13 @@ import model.CardList; import model.TagList; import utils.UserInterface; +import utils.exceptions.InkaException; import utils.storage.IDataStorage; public class ListTagsCommand extends Command { @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { ui.printTagList(tagList); } } diff --git a/src/main/java/utils/command/TerminateCommand.java b/src/main/java/utils/command/TerminateCommand.java index 23e741e311..d7795a74a2 100644 --- a/src/main/java/utils/command/TerminateCommand.java +++ b/src/main/java/utils/command/TerminateCommand.java @@ -3,11 +3,13 @@ import model.CardList; import model.TagList; import utils.UserInterface; +import utils.exceptions.InkaException; import utils.storage.IDataStorage; public class TerminateCommand extends Command { @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) { + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { ui.printBye(); } } diff --git a/src/main/java/utils/exceptions/InvalidCommandException.java b/src/main/java/utils/exceptions/InvalidCommandException.java deleted file mode 100644 index 05d0b393da..0000000000 --- a/src/main/java/utils/exceptions/InvalidCommandException.java +++ /dev/null @@ -1,6 +0,0 @@ -package utils.exceptions; -public class InvalidCommandException extends InkaException { - public InvalidCommandException() { - super("Please enter a valid command!"); - } -} diff --git a/src/main/java/utils/exceptions/InvalidSyntaxException.java b/src/main/java/utils/exceptions/InvalidSyntaxException.java new file mode 100644 index 0000000000..a782453899 --- /dev/null +++ b/src/main/java/utils/exceptions/InvalidSyntaxException.java @@ -0,0 +1,8 @@ +package utils.exceptions; + +public class InvalidSyntaxException extends InkaException { + + public InvalidSyntaxException() { + super("That command looks weird... Did you enter it correctly?"); + } +} diff --git a/src/main/java/utils/exceptions/UnrecognizedCommandException.java b/src/main/java/utils/exceptions/UnrecognizedCommandException.java new file mode 100644 index 0000000000..335f5e1567 --- /dev/null +++ b/src/main/java/utils/exceptions/UnrecognizedCommandException.java @@ -0,0 +1,6 @@ +package utils.exceptions; +public class UnrecognizedCommandException extends InkaException { + public UnrecognizedCommandException() { + super("Please enter a valid command!"); + } +} diff --git a/src/main/java/utils/parser/CardTokenParser.java b/src/main/java/utils/parser/CardTokenParser.java index f1df8b18c5..82880e9202 100644 --- a/src/main/java/utils/parser/CardTokenParser.java +++ b/src/main/java/utils/parser/CardTokenParser.java @@ -2,7 +2,6 @@ import java.util.List; import model.Card; -import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import utils.command.AddCardCommand; import utils.command.AddCardToTagCommand; @@ -15,57 +14,22 @@ import utils.exceptions.AddEmptyQuestionAndAnswer; import utils.exceptions.AddGoneWrong; import utils.exceptions.DeleteMissingNumber; -import utils.exceptions.DeleteRangeInvalid; import utils.exceptions.InkaException; -import utils.exceptions.InvalidCommandException; +import utils.exceptions.InvalidSyntaxException; +import utils.exceptions.UnrecognizedCommandException; public class CardTokenParser { - private final static String CARD_ADD_ACTION = "add"; - private final static String CARD_DELETE_ACTION = "delete"; - private final static String CARD_LIST_ACTION = "list"; - private final static String CARD_TAG_ACTION = "tag"; - private final static String CARD_VIEW_ACTION = "view"; - private final Options addOptions = buildAddOptions(); - private final Options deleteOptions = buildDeleteOptions(); - private final Options tagOptions = buildTagOptions(); - private final Options viewOptions = buildViewOptions(); + private static final String CARD_ADD_ACTION = "add"; + private static final String CARD_DELETE_ACTION = "delete"; + private static final String CARD_LIST_ACTION = "list"; + private static final String CARD_TAG_ACTION = "tag"; + private static final String CARD_VIEW_ACTION = "view"; public CardTokenParser() { } - /** - * Builds options for use with the {@link #CARD_ADD_ACTION} action - */ - private static Options buildAddOptions() { - Options options = new Options(); - // - Option addOption = new Option(CARD_ADD_ACTION, true, "add a new card"); - } - - /** - * Builds options for use with the {@link #CARD_LIST_ACTION} action - */ - private static Options buildListOptions() { - // TODO: Possibly change verbosity of output? - return new Options(); - } - - /** - * Builds options for use with the {@link #CARD_DELETE_ACTION} action - */ - private static Options buildDeleteOptions() { - - } - - /** - * Builds options for use with the {@link #CARD_VIEW_ACTION} action - */ - private static Options buildViewOptions() { - - } - private static Options buildTagOptions() { Options options = new Options(); options.addRequiredOption("c", "card", true, "card UUID"); @@ -75,76 +39,87 @@ private static Options buildTagOptions() { } public Command parseTokens(List tokens) throws InkaException { + if (tokens.size() == 0) { + throw new InvalidSyntaxException(); + } String action = tokens.get(0); List flags = tokens.subList(1, tokens.size()); switch (action) { - case CARD_ADD_ACTION: - return handleAdd(flags); - case CARD_DELETE_ACTION: - return handleDelete(flags); - case CARD_LIST_ACTION: - return handleList(flags); - case CARD_TAG_ACTION: - return handleTag(flags); - case CARD_VIEW_ACTION: - return handleView(flags); - default: - throw new InvalidCommandException(); + case CARD_ADD_ACTION: + return handleAdd(flags); + case CARD_DELETE_ACTION: + return handleDelete(flags); + case CARD_LIST_ACTION: + return handleList(flags); + case CARD_TAG_ACTION: + return handleTag(flags); + case CARD_VIEW_ACTION: + return handleView(flags); + default: + throw new UnrecognizedCommandException(); + } + } + + private Command handleAdd(List tokens) throws InkaException { + if (tokens.size() != 2) { + throw new AddGoneWrong(); } - // TODO: - if (userCommandSplit[0].startsWith("card add")) { - if (userCommandSplit.length < 3) { - throw new AddGoneWrong(); - } else if (userCommandSplit[1].isBlank() && userCommandSplit[2].isBlank()) { - assert userCommandSplit.length < 3 : "Questions and answers should be specified "; - throw new AddEmptyQuestionAndAnswer(); - } else if (userCommandSplit[1].isBlank()) { - throw new AddEmptyQuestion(); - } else if (userCommandSplit[2].isBlank()) { - throw new AddEmptyAnswer(); - } - String question = userCommandSplit[1]; - String answer = userCommandSplit[2]; - Card card = new Card(question, answer); - return new AddCardCommand(card); // main command return - } else if (userCommandSplit[0].startsWith("card view")) { - String cardUUID = userCommandSplit[1]; - return new ViewCardCommand(cardUUID); - } else if (userCommandSplit[0].startsWith("card delete")) { - if (userCommandSplit.length == 1) { - throw new DeleteMissingNumber(); - } else if (Integer.parseInt(userCommandSplit[1]) < 1 - || Integer.parseInt(userCommandSplit[1]) > cardList.size()) { - - throw new DeleteRangeInvalid(); - } - int deleteIndex = Integer.parseInt(userCommandSplit[1]); - assert deleteIndex >= 0 : "deleteIndex should be a number"; - return new DeleteCardCommand(deleteIndex); - } else if (userCommandSplit[0].startsWith("card tag")) { + boolean emptyQuestion = tokens.get(0).isBlank(); + boolean emptyAnswer = tokens.get(1).isBlank(); + if (emptyAnswer && emptyQuestion) { + throw new AddEmptyQuestionAndAnswer(); + } else if (emptyQuestion) { + throw new AddEmptyQuestion(); + } else if (emptyAnswer) { + throw new AddEmptyAnswer(); } - } - private Command handleAdd(List tokens) { + String question = tokens.get(0).trim(); + String answer = tokens.get(1).trim(); + + Card card = new Card(question, answer); + return new AddCardCommand(card); } - private Command handleDelete(List tokens) { + private Command handleDelete(List tokens) throws InkaException { + if (tokens.size() != 1) { + throw new DeleteMissingNumber(); + } + + // Check for invalid index + // TODO: Move OOB check elsewhere + // TODO: Unhandled NumberFormatException + int deleteIndex = Integer.parseInt(tokens.get(0)); + assert deleteIndex >= 0 : "deleteIndex should be a number"; + + return new DeleteCardCommand(deleteIndex); } private Command handleList(List tokens) { return new ListCardCommand(); } - private Command handleTag(List tokens) { + private Command handleTag(List tokens) throws InkaException { + if (tokens.size() != 2) { + throw new InvalidSyntaxException(); + } + String cardUUID = tokens.get(0); + String tagName = tokens.get(1); return new AddCardToTagCommand(tagName, cardUUID); } - private Command handleView(List tokens) { + private Command handleView(List tokens) throws InkaException { + if (tokens.size() != 1) { + throw new InvalidSyntaxException(); + } + + String cardUUID = tokens.get(0); + return new ViewCardCommand(cardUUID); } } diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/parser/Parser.java index 4e468e25b4..21b1f72682 100644 --- a/src/main/java/utils/parser/Parser.java +++ b/src/main/java/utils/parser/Parser.java @@ -6,19 +6,19 @@ import utils.command.ExportCommand; import utils.command.TerminateCommand; import utils.exceptions.InkaException; -import utils.exceptions.InvalidCommandException; +import utils.exceptions.UnrecognizedCommandException; public class Parser { /* Card-related tokens */ - private final static String CARD_KEYWORD = "card"; + private static final String CARD_KEYWORD = "card"; /* Tag-related tokens */ - private final static String TAG_KEYWORD = "tag"; + private static final String TAG_KEYWORD = "tag"; /* Miscellaneous tokens */ - private final static String EXPORT_KEYWORD = "exit"; - private final static String EXIT_KEYWORD = "bye"; + private static final String EXPORT_KEYWORD = "export"; + private static final String EXIT_KEYWORD = "bye"; // Keyword-specific parsers private final CardTokenParser cardTokenParser = new CardTokenParser(); @@ -44,10 +44,10 @@ public Command parseCommand(String userInput) throws InkaException { * [keyword] [action (optional)] [flag(s) (optional)] */ - List userInputTokens = Arrays.asList(userInput.split("")); + List userInputTokens = Arrays.asList(userInput.split("\\s+")); if (userInputTokens.size() == 0) { - throw new InvalidCommandException(); + throw new UnrecognizedCommandException(); } // Parse action and flags based on keyword @@ -55,21 +55,21 @@ public Command parseCommand(String userInput) throws InkaException { List optionTokens = userInputTokens.subList(1, userInputTokens.size()); switch (keyword) { - case CARD_KEYWORD: - return cardTokenParser.parseTokens(optionTokens); + case CARD_KEYWORD: + return cardTokenParser.parseTokens(optionTokens); - case TAG_KEYWORD: - return tagTokenParser.parseToken(optionTokens); + case TAG_KEYWORD: + return tagTokenParser.parseToken(optionTokens); - case EXPORT_KEYWORD: - return new ExportCommand(); + case EXPORT_KEYWORD: + return new ExportCommand(); - case EXIT_KEYWORD: - this.setIsExecuting(false); - return new TerminateCommand(); + case EXIT_KEYWORD: + this.setIsExecuting(false); + return new TerminateCommand(); - default: - throw new InvalidCommandException(); + default: + throw new UnrecognizedCommandException(); } } } diff --git a/src/main/java/utils/parser/TagTokenParser.java b/src/main/java/utils/parser/TagTokenParser.java index 4a27300a95..949399c9dc 100644 --- a/src/main/java/utils/parser/TagTokenParser.java +++ b/src/main/java/utils/parser/TagTokenParser.java @@ -6,30 +6,51 @@ import utils.command.ListCardsUnderTagCommand; import utils.command.ListTagsCommand; import utils.exceptions.InkaException; -import utils.exceptions.InvalidCommandException; +import utils.exceptions.InvalidSyntaxException; +import utils.exceptions.UnrecognizedCommandException; public class TagTokenParser { + private static final String TAG_LIST_ACTION = "add"; + private static final String TAG_DELETE_ACTION = "delete"; + public TagTokenParser() { } public Command parseToken(List tokens) throws InkaException { - // TODO: - if (userCommandSplit[0].startsWith("tag list")) { - if (userCommandSplit.length > 1) { - String tagName = userCommandSplit[1]; - return new ListCardsUnderTagCommand(tagName); - } else { - return new ListTagsCommand(); - } - } else if (userCommandSplit[0].startsWith("tag delete")) { - //please check for exception - String tagName = userCommandSplit[1]; - return new DeleteTagCommand(tagName); + if (tokens.size() == 0) { + throw new InvalidSyntaxException(); } - throw new InvalidCommandException(); + String action = tokens.get(0); + List flags = tokens.subList(1, tokens.size()); + + switch (action) { + case TAG_DELETE_ACTION: + return handleDelete(flags); + case TAG_LIST_ACTION: + return handleList(flags); + default: + throw new UnrecognizedCommandException(); + } + } + + private Command handleList(List flags) { + if (flags.size() > 1) { + String tagName = flags.get(0); + return new ListCardsUnderTagCommand(tagName); + } else { + return new ListTagsCommand(); + } + } + + private Command handleDelete(List flags) throws InkaException { + if (flags.size() != 1) { + throw new InvalidSyntaxException(); + } + + String tagName = flags.get(0); + return new DeleteTagCommand(tagName); } -} } From c6ee31c79ac324e80bd4d802315a47b382f7ac28 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 20 Mar 2023 13:07:48 +0800 Subject: [PATCH 061/311] fix: Made exceptions clearer --- src/main/java/Inka.java | 11 ++++---- src/main/java/utils/UserInterface.java | 8 ------ .../java/utils/command/DeleteCardCommand.java | 4 +-- .../java/utils/command/ExportCommand.java | 9 ++----- .../utils/exceptions/DeleteRangeInvalid.java | 7 ----- .../java/utils/exceptions/DeleteUnknown.java | 7 +++++ .../utils/exceptions/StorageCorrupted.java | 7 +++++ .../utils/exceptions/StorageLoadFailure.java | 5 +++- .../utils/exceptions/StorageSaveFailure.java | 5 +++- src/main/java/utils/storage/IDataStorage.java | 7 +++-- .../java/utils/storage/json/JsonStorage.java | 26 ++++++++++++------- .../java/utils/storage/JsonStorageTest.java | 13 +++++----- 12 files changed, 57 insertions(+), 52 deletions(-) delete mode 100644 src/main/java/utils/exceptions/DeleteRangeInvalid.java create mode 100644 src/main/java/utils/exceptions/DeleteUnknown.java create mode 100644 src/main/java/utils/exceptions/StorageCorrupted.java diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 84e7f366f0..d3d870e52b 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,12 +1,11 @@ import model.CardList; import model.TagList; -import utils.parser.Parser; import utils.UserInterface; import utils.command.Command; import utils.exceptions.InkaException; -import utils.exceptions.StorageLoadFailure; -import utils.storage.json.JsonStorage; +import utils.parser.Parser; import utils.storage.Storage; +import utils.storage.json.JsonStorage; public class Inka { @@ -14,7 +13,7 @@ public class Inka { private final Parser parser; private Storage storage; - private CardList cardList = new CardList(); + private CardList cardList; private TagList tagList; public Inka(String filePath) { @@ -47,8 +46,8 @@ private CardList loadSaveFile() { try { cardList = storage.load(); ui.printLoadSuccess(); - } catch (StorageLoadFailure e) { - ui.printLoadFailure(); + } catch (InkaException e) { + ui.printException(e); } return cardList; diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index d3f55a0227..c8e000a607 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -69,14 +69,6 @@ public void printLoadSuccess() { System.out.println("Deck loaded!"); } - public void printLoadFailure() { - System.out.println("Failed to load deck :("); - } - - public void printSaveFailure() { - System.out.println("Failed to save deck :("); - } - public void printCard(CardList cardlist, int id) { System.out.println(cardlist.get(id)); } diff --git a/src/main/java/utils/command/DeleteCardCommand.java b/src/main/java/utils/command/DeleteCardCommand.java index b24af7b473..5a00959324 100644 --- a/src/main/java/utils/command/DeleteCardCommand.java +++ b/src/main/java/utils/command/DeleteCardCommand.java @@ -3,7 +3,7 @@ import model.CardList; import model.TagList; import utils.UserInterface; -import utils.exceptions.DeleteRangeInvalid; +import utils.exceptions.DeleteUnknown; import utils.exceptions.InkaException; import utils.storage.IDataStorage; @@ -24,7 +24,7 @@ public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataS ui.printDeleteSuccess(); ui.printNumOfQuestions(cardList); } catch (IndexOutOfBoundsException e) { - throw new DeleteRangeInvalid(); + throw new DeleteUnknown(); } } } diff --git a/src/main/java/utils/command/ExportCommand.java b/src/main/java/utils/command/ExportCommand.java index 22e2d51ad6..31d0e14ef5 100644 --- a/src/main/java/utils/command/ExportCommand.java +++ b/src/main/java/utils/command/ExportCommand.java @@ -4,7 +4,6 @@ import model.TagList; import utils.UserInterface; import utils.exceptions.InkaException; -import utils.exceptions.StorageSaveFailure; import utils.storage.IDataStorage; public class ExportCommand extends Command { @@ -12,11 +11,7 @@ public class ExportCommand extends Command { @Override public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) throws InkaException { - try { - storage.save(cardList); - ui.printSaveSuccess(); - } catch (StorageSaveFailure e) { - ui.printSaveFailure(); - } + storage.save(cardList); + ui.printSaveSuccess(); } } diff --git a/src/main/java/utils/exceptions/DeleteRangeInvalid.java b/src/main/java/utils/exceptions/DeleteRangeInvalid.java deleted file mode 100644 index 218b8980ff..0000000000 --- a/src/main/java/utils/exceptions/DeleteRangeInvalid.java +++ /dev/null @@ -1,7 +0,0 @@ -package utils.exceptions; - -public class DeleteRangeInvalid extends InkaException { - public DeleteRangeInvalid() { - super("Please ensure that your date is a number and not a string!"); - } -} diff --git a/src/main/java/utils/exceptions/DeleteUnknown.java b/src/main/java/utils/exceptions/DeleteUnknown.java new file mode 100644 index 0000000000..cbd78e4f3f --- /dev/null +++ b/src/main/java/utils/exceptions/DeleteUnknown.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class DeleteUnknown extends InkaException { + public DeleteUnknown() { + super("Can't find what you're referring to..."); + } +} diff --git a/src/main/java/utils/exceptions/StorageCorrupted.java b/src/main/java/utils/exceptions/StorageCorrupted.java new file mode 100644 index 0000000000..f91ebe5f47 --- /dev/null +++ b/src/main/java/utils/exceptions/StorageCorrupted.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class StorageCorrupted extends InkaException { + public StorageCorrupted(String filePath) { + super("Save file " + filePath + " seems corrupted... Will pretend it doesn't exist..."); + } +} diff --git a/src/main/java/utils/exceptions/StorageLoadFailure.java b/src/main/java/utils/exceptions/StorageLoadFailure.java index ecf7535111..576e6687ff 100644 --- a/src/main/java/utils/exceptions/StorageLoadFailure.java +++ b/src/main/java/utils/exceptions/StorageLoadFailure.java @@ -1,4 +1,7 @@ package utils.exceptions; -public class StorageLoadFailure extends Exception { +public class StorageLoadFailure extends InkaException { + public StorageLoadFailure(String filePath) { + super("Failed to load deck from " + filePath + " :("); + } } diff --git a/src/main/java/utils/exceptions/StorageSaveFailure.java b/src/main/java/utils/exceptions/StorageSaveFailure.java index a36bd54b13..82277f5051 100644 --- a/src/main/java/utils/exceptions/StorageSaveFailure.java +++ b/src/main/java/utils/exceptions/StorageSaveFailure.java @@ -1,4 +1,7 @@ package utils.exceptions; -public class StorageSaveFailure extends Exception { +public class StorageSaveFailure extends InkaException { + public StorageSaveFailure(String filePath) { + super("Failed to save deck to " + filePath + " :("); + } } diff --git a/src/main/java/utils/storage/IDataStorage.java b/src/main/java/utils/storage/IDataStorage.java index 3778202d55..e51dc1e6d2 100644 --- a/src/main/java/utils/storage/IDataStorage.java +++ b/src/main/java/utils/storage/IDataStorage.java @@ -1,12 +1,11 @@ package utils.storage; import model.CardList; -import utils.exceptions.StorageLoadFailure; -import utils.exceptions.StorageSaveFailure; +import utils.exceptions.InkaException; public interface IDataStorage { - CardList load() throws StorageLoadFailure; - void save(CardList cardList) throws StorageSaveFailure; + CardList load() throws InkaException; + void save(CardList cardList) throws InkaException; } diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 2e16686451..9f387e0d0e 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -20,13 +20,15 @@ import model.CardList; import model.CardUUID; import model.TagUUID; +import utils.exceptions.InkaException; +import utils.exceptions.StorageCorrupted; import utils.exceptions.StorageLoadFailure; import utils.exceptions.StorageSaveFailure; import utils.storage.Storage; public class JsonStorage extends Storage { private static Logger logger = Logger.getLogger("storage.JsonStorage"); - private GsonBuilder gsonBuilder = new GsonBuilder(); + private GsonBuilder gsonBuilder; public JsonStorage(String filePath) { super(filePath); @@ -38,12 +40,11 @@ public JsonStorage(String filePath) { } @Override - public CardList load() throws StorageLoadFailure { + public CardList load() throws InkaException { CardList cardList; try (FileReader fileReader = new FileReader(saveFile); BufferedReader bufferedReader = new BufferedReader(fileReader)) { - Gson gson = new Gson(); JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonObject(); String deckName = jsonObject.get("deckName").getAsString(); @@ -55,12 +56,15 @@ public CardList load() throws StorageLoadFailure { ArrayList cards = gsonBuilder.create().fromJson(jsonArray, cardListType); cardList = new CardList(cards); } catch (IOException e) { - logger.log(Level.WARNING, "Failed to load file from " + this.saveFile.getAbsolutePath(), e); - throw new StorageLoadFailure(); + String absolutePath = this.saveFile.getAbsolutePath(); + logger.log(Level.WARNING, "Failed to load file from " + absolutePath, e); + + throw new StorageLoadFailure(absolutePath); } catch (NullPointerException | JsonSyntaxException e) { - logger.log(Level.WARNING, "Corrupted save file: " + this.saveFile.getAbsolutePath(), e); - // TODO: New exception type? - throw new StorageLoadFailure(); + String absolutePath = this.saveFile.getAbsolutePath(); + logger.log(Level.WARNING, "Corrupted save file: " + absolutePath, e); + + throw new StorageCorrupted(absolutePath); } return cardList; @@ -93,8 +97,10 @@ public void save(CardList cardList) throws StorageSaveFailure { bufferedWriter.write(serialized); } catch (IOException e) { - logger.log(Level.WARNING, "Failed to save data to savedata.json", e); - throw new StorageSaveFailure(); + String absolutePath = this.saveFile.getAbsolutePath(); + logger.log(Level.WARNING, "Failed to save data to savedata.json" + absolutePath, e); + + throw new StorageSaveFailure(absolutePath); } } } diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index 6fb5684d0b..4e00f4001a 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -1,13 +1,14 @@ package utils.storage; +import static org.junit.jupiter.api.Assertions.assertThrows; + import java.nio.file.Path; import model.CardList; import org.junit.jupiter.api.Test; -import utils.exceptions.StorageLoadFailure; +import utils.exceptions.InkaException; +import utils.exceptions.StorageCorrupted; import utils.storage.json.JsonStorage; -import static org.junit.jupiter.api.Assertions.assertThrows; - public class JsonStorageTest { private static final Path TEST_DATA_FOLDER = Path.of("src/test/data/storage"); @@ -20,17 +21,17 @@ public class JsonStorageTest { @Test public void load_emptyFile() { Storage storage = new JsonStorage(EMPTY_FILE.toString()); - assertThrows(StorageLoadFailure.class, storage::load); + assertThrows(StorageCorrupted.class, storage::load); } @Test public void load_malformedFile() { Storage storage = new JsonStorage(MALFORMED_FILE.toString()); - assertThrows(StorageLoadFailure.class, storage::load); + assertThrows(StorageCorrupted.class, storage::load); } @Test - public void load_validFile() throws StorageLoadFailure { + public void load_validFile() throws InkaException { Storage storage = new JsonStorage(VALID_FILE.toString()); CardList cardList = storage.load(); From 11625f1504e9fba5ee09c93690e0b1277e02daca Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 20 Mar 2023 13:08:18 +0800 Subject: [PATCH 062/311] chore: removed unused class --- src/main/java/utils/tagcommand/Command.java | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 src/main/java/utils/tagcommand/Command.java diff --git a/src/main/java/utils/tagcommand/Command.java b/src/main/java/utils/tagcommand/Command.java deleted file mode 100644 index 8e76953816..0000000000 --- a/src/main/java/utils/tagcommand/Command.java +++ /dev/null @@ -1,9 +0,0 @@ -package utils.tagcommand; - -import model.TagList; -import utils.UserInterface; -import utils.storage.IDataStorage; - -public abstract class Command { - public abstract void execute(TagList tagList, UserInterface ui, IDataStorage storage); -} From 4f7e53a3b26d71e8539980178195ff7b81b7d288 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 20 Mar 2023 16:20:18 +0800 Subject: [PATCH 063/311] feat: card add and delete --- .../exceptions/InvalidSyntaxException.java | 20 ++- .../java/utils/parser/CardTokenParser.java | 120 +++++++++++------- .../java/utils/parser/TagTokenParser.java | 4 +- 3 files changed, 92 insertions(+), 52 deletions(-) diff --git a/src/main/java/utils/exceptions/InvalidSyntaxException.java b/src/main/java/utils/exceptions/InvalidSyntaxException.java index a782453899..ed459d2d31 100644 --- a/src/main/java/utils/exceptions/InvalidSyntaxException.java +++ b/src/main/java/utils/exceptions/InvalidSyntaxException.java @@ -2,7 +2,23 @@ public class InvalidSyntaxException extends InkaException { - public InvalidSyntaxException() { - super("That command looks weird... Did you enter it correctly?"); + private InvalidSyntaxException(String message) { + super(message); + } + + public static InvalidSyntaxException buildGenericMessage() { + return new InvalidSyntaxException("That command looks weird... Did you enter it correctly?"); + } + + public static InvalidSyntaxException buildBadFormatMessage(String badInput) { + return new InvalidSyntaxException("Your input \"" + badInput + "\" doesn't look right..."); + } + + public static InvalidSyntaxException buildMissingOptionMessage(String option) { + return new InvalidSyntaxException("Looks like you're missing some flags: " + option); + } + + public static InvalidSyntaxException buildMissingArgumentMessage(String option) { + return new InvalidSyntaxException("Looks like you're missing an argument for \"" + option + "\"..."); } } diff --git a/src/main/java/utils/parser/CardTokenParser.java b/src/main/java/utils/parser/CardTokenParser.java index 82880e9202..2a71e4e986 100644 --- a/src/main/java/utils/parser/CardTokenParser.java +++ b/src/main/java/utils/parser/CardTokenParser.java @@ -1,19 +1,21 @@ package utils.parser; import java.util.List; +import java.util.stream.Collectors; import model.Card; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.MissingArgumentException; +import org.apache.commons.cli.MissingOptionException; +import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; import utils.command.AddCardCommand; import utils.command.AddCardToTagCommand; import utils.command.Command; import utils.command.DeleteCardCommand; import utils.command.ListCardCommand; import utils.command.ViewCardCommand; -import utils.exceptions.AddEmptyAnswer; -import utils.exceptions.AddEmptyQuestion; -import utils.exceptions.AddEmptyQuestionAndAnswer; -import utils.exceptions.AddGoneWrong; -import utils.exceptions.DeleteMissingNumber; import utils.exceptions.InkaException; import utils.exceptions.InvalidSyntaxException; import utils.exceptions.UnrecognizedCommandException; @@ -26,8 +28,37 @@ public class CardTokenParser { private static final String CARD_TAG_ACTION = "tag"; private static final String CARD_VIEW_ACTION = "view"; + private DefaultParser parser; + public CardTokenParser() { + this.parser = new DefaultParser(false); + } + + private static Options buildAddOptions() { + Options options = new Options(); + + Option questionOption = new Option("q", "question", true, "card question"); + questionOption.setRequired(true); + questionOption.setArgs(Option.UNLIMITED_VALUES); + options.addOption(questionOption); + + Option answerOption = new Option("a", "answer", true, "card answer"); + answerOption.setRequired(true); + answerOption.setArgs(Option.UNLIMITED_VALUES); + options.addOption(answerOption); + + return options; + } + + private static Options buildDeleteOptions() { + Options options = new Options(); + Option indexOption = new Option("i", "index", true, "card index"); + indexOption.setRequired(true); + indexOption.setType(Number.class); + options.addOption(indexOption); + + return options; } private static Options buildTagOptions() { @@ -38,63 +69,56 @@ private static Options buildTagOptions() { return options; } + @SuppressWarnings("unchecked") // Safe, CLI library just returns List instead of List public Command parseTokens(List tokens) throws InkaException { if (tokens.size() == 0) { - throw new InvalidSyntaxException(); + throw InvalidSyntaxException.buildGenericMessage(); } String action = tokens.get(0); List flags = tokens.subList(1, tokens.size()); - switch (action) { - case CARD_ADD_ACTION: - return handleAdd(flags); - case CARD_DELETE_ACTION: - return handleDelete(flags); - case CARD_LIST_ACTION: - return handleList(flags); - case CARD_TAG_ACTION: - return handleTag(flags); - case CARD_VIEW_ACTION: - return handleView(flags); - default: - throw new UnrecognizedCommandException(); + try { + switch (action) { + case CARD_ADD_ACTION: + return handleAdd(flags); + case CARD_DELETE_ACTION: + return handleDelete(flags); + case CARD_LIST_ACTION: + return handleList(flags); + case CARD_TAG_ACTION: + return handleTag(flags); + case CARD_VIEW_ACTION: + return handleView(flags); + default: + throw new UnrecognizedCommandException(); + } + } catch (MissingArgumentException e) { + String missingArgumentOption = e.getOption().getArgName(); + throw InvalidSyntaxException.buildMissingArgumentMessage(missingArgumentOption); + } catch (MissingOptionException e) { + List opts = e.getMissingOptions(); + String missingOptions = opts.stream().map(str -> "-" + str).collect(Collectors.joining(", ")); + throw InvalidSyntaxException.buildMissingOptionMessage(missingOptions); + } catch (ParseException e) { + throw InvalidSyntaxException.buildGenericMessage(); } } - private Command handleAdd(List tokens) throws InkaException { - if (tokens.size() != 2) { - throw new AddGoneWrong(); - } - - boolean emptyQuestion = tokens.get(0).isBlank(); - boolean emptyAnswer = tokens.get(1).isBlank(); - - if (emptyAnswer && emptyQuestion) { - throw new AddEmptyQuestionAndAnswer(); - } else if (emptyQuestion) { - throw new AddEmptyQuestion(); - } else if (emptyAnswer) { - throw new AddEmptyAnswer(); - } - - String question = tokens.get(0).trim(); - String answer = tokens.get(1).trim(); + private Command handleAdd(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildAddOptions(), tokens.toArray(new String[0])); + String question = String.join(" ", cmd.getOptionValues("q")); + String answer = String.join(" ", cmd.getOptionValues("a")); Card card = new Card(question, answer); + return new AddCardCommand(card); } - private Command handleDelete(List tokens) throws InkaException { - if (tokens.size() != 1) { - throw new DeleteMissingNumber(); - } + private Command handleDelete(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildDeleteOptions(), tokens.toArray(new String[0])); - // Check for invalid index - // TODO: Move OOB check elsewhere - // TODO: Unhandled NumberFormatException - int deleteIndex = Integer.parseInt(tokens.get(0)); - assert deleteIndex >= 0 : "deleteIndex should be a number"; + int deleteIndex = ((Number) cmd.getParsedOptionValue("i")).intValue(); return new DeleteCardCommand(deleteIndex); } @@ -105,7 +129,7 @@ private Command handleList(List tokens) { private Command handleTag(List tokens) throws InkaException { if (tokens.size() != 2) { - throw new InvalidSyntaxException(); + throw InvalidSyntaxException.buildGenericMessage(); } String cardUUID = tokens.get(0); @@ -116,7 +140,7 @@ private Command handleTag(List tokens) throws InkaException { private Command handleView(List tokens) throws InkaException { if (tokens.size() != 1) { - throw new InvalidSyntaxException(); + throw InvalidSyntaxException.buildGenericMessage(); } String cardUUID = tokens.get(0); diff --git a/src/main/java/utils/parser/TagTokenParser.java b/src/main/java/utils/parser/TagTokenParser.java index 949399c9dc..3a6e384942 100644 --- a/src/main/java/utils/parser/TagTokenParser.java +++ b/src/main/java/utils/parser/TagTokenParser.java @@ -20,7 +20,7 @@ public TagTokenParser() { public Command parseToken(List tokens) throws InkaException { if (tokens.size() == 0) { - throw new InvalidSyntaxException(); + throw InvalidSyntaxException.buildGenericMessage(); } String action = tokens.get(0); @@ -47,7 +47,7 @@ private Command handleList(List flags) { private Command handleDelete(List flags) throws InkaException { if (flags.size() != 1) { - throw new InvalidSyntaxException(); + throw InvalidSyntaxException.buildGenericMessage(); } String tagName = flags.get(0); From 3006eed62cc345aac0afa86bf012805017a9777a Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 20 Mar 2023 16:46:02 +0800 Subject: [PATCH 064/311] test: card add --- src/main/java/utils/storage/FakeStorage.java | 23 +++++ src/test/java/utils/parser/ParserTest.java | 88 +++++++++++++++++++ .../java/utils/storage/JsonStorageTest.java | 6 +- 3 files changed, 114 insertions(+), 3 deletions(-) create mode 100644 src/main/java/utils/storage/FakeStorage.java create mode 100644 src/test/java/utils/parser/ParserTest.java diff --git a/src/main/java/utils/storage/FakeStorage.java b/src/main/java/utils/storage/FakeStorage.java new file mode 100644 index 0000000000..1f206f238d --- /dev/null +++ b/src/main/java/utils/storage/FakeStorage.java @@ -0,0 +1,23 @@ +package utils.storage; + +import model.CardList; + +/** + * For testing without writing to file system + */ +public class FakeStorage extends Storage { + + public FakeStorage() { + super(""); + } + + @Override + public CardList load() { + return new CardList(); + } + + @Override + public void save(CardList cardList) { + + } +} diff --git a/src/test/java/utils/parser/ParserTest.java b/src/test/java/utils/parser/ParserTest.java new file mode 100644 index 0000000000..e9138f8190 --- /dev/null +++ b/src/test/java/utils/parser/ParserTest.java @@ -0,0 +1,88 @@ +package utils.parser; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +import model.Card; +import model.CardList; +import model.TagList; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import utils.UserInterface; +import utils.command.Command; +import utils.exceptions.InkaException; +import utils.exceptions.InvalidSyntaxException; +import utils.storage.FakeStorage; +import utils.storage.Storage; + +public class ParserTest { + + private CardList cardList; + private TagList tagList; + private UserInterface ui; + private Storage storage; + + private Parser parser; + + /** + * Each test should have a new instance of all these + */ + @BeforeEach + void init() { + cardList = new CardList(); + tagList = new TagList(); + ui = new UserInterface(); + storage = new FakeStorage(); + parser = new Parser(); + } + + @Test + public void parse_card_add() throws InkaException { + Command cmd = parser.parseCommand("card add -q QUESTION -a ANSWER"); + cmd.execute(cardList, tagList, ui, storage); + + Card card = cardList.get(0); + assert card.getQuestion().equals("QUESTION") : "Unexpected question parsed"; + assert card.getAnswer().equals("ANSWER") : "Unexpected answer parsed"; + } + + @Test + public void parse_card_addLongFlag() throws InkaException { + Command cmd = parser.parseCommand("card add --question QUESTION --answer ANSWER"); + cmd.execute(cardList, tagList, ui, storage); + + Card card = cardList.get(0); + assert card.getQuestion().equals("QUESTION") : "Unexpected question parsed"; + assert card.getAnswer().equals("ANSWER") : "Unexpected answer parsed"; + } + + @Test + public void parse_card_addWithWhitespaces() throws InkaException { + Command cmd = parser.parseCommand("card add -q MULTI WORD QUESTION -a MULTI WORD ANSWER"); + cmd.execute(cardList, tagList, ui, storage); + + Card card = cardList.get(0); + assert card.getQuestion().equals("MULTI WORD QUESTION") : "Unexpected question parsed"; + assert card.getAnswer().equals("MULTI WORD ANSWER") : "Unexpected answer parsed"; + } + + @Test + public void parse_card_addMissingFlags() { + String[] testInputs = {"card add", "card add -q", "card add -a"}; + for (String testInput : testInputs) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testInput), + "Should be invalid syntax"); + } + } + + @Test + public void parse_card_addMissingQuestion() { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand("card add -a ANSWER -q"), + "Should be invalid syntax"); + } + + @Test + public void parse_card_addMissingAnswer() { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand("card add -q QUESTION -a"), + "Should be invalid syntax"); + } +} diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index 4e00f4001a..e0c714c7d5 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -21,13 +21,13 @@ public class JsonStorageTest { @Test public void load_emptyFile() { Storage storage = new JsonStorage(EMPTY_FILE.toString()); - assertThrows(StorageCorrupted.class, storage::load); + assertThrows(StorageCorrupted.class, storage::load, "Expected a StorageCorrupted exception"); } @Test public void load_malformedFile() { Storage storage = new JsonStorage(MALFORMED_FILE.toString()); - assertThrows(StorageCorrupted.class, storage::load); + assertThrows(StorageCorrupted.class, storage::load, "Expected a StorageCorrupted exception"); } @Test @@ -35,6 +35,6 @@ public void load_validFile() throws InkaException { Storage storage = new JsonStorage(VALID_FILE.toString()); CardList cardList = storage.load(); - assert cardList.size() == 2; + assert cardList.size() == 2 : "Expected 2 Cards from save file"; } } From 809d57660daee6058613750aa6ed6f348812b2cf Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 20 Mar 2023 16:51:28 +0800 Subject: [PATCH 065/311] test: card delete --- src/test/java/utils/parser/ParserTest.java | 43 ++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/test/java/utils/parser/ParserTest.java b/src/test/java/utils/parser/ParserTest.java index e9138f8190..25593026fe 100644 --- a/src/test/java/utils/parser/ParserTest.java +++ b/src/test/java/utils/parser/ParserTest.java @@ -9,6 +9,7 @@ import org.junit.jupiter.api.Test; import utils.UserInterface; import utils.command.Command; +import utils.exceptions.DeleteUnknown; import utils.exceptions.InkaException; import utils.exceptions.InvalidSyntaxException; import utils.storage.FakeStorage; @@ -35,6 +36,7 @@ void init() { parser = new Parser(); } + //region `card add` tests @Test public void parse_card_add() throws InkaException { Command cmd = parser.parseCommand("card add -q QUESTION -a ANSWER"); @@ -85,4 +87,45 @@ public void parse_card_addMissingAnswer() { assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand("card add -q QUESTION -a"), "Should be invalid syntax"); } + //endregion + + //region `card delete` tests + + @Test + public void parse_card_delete() throws InkaException { + cardList.addCard(new Card("QUESTION", "ANSWER")); + + Command cmd = parser.parseCommand("card delete -i 1"); + cmd.execute(cardList, tagList, ui, storage); + + assert cardList.isEmpty() : "Should have deleted Card"; + } + + @Test + public void parse_card_deleteLongFlag() throws InkaException { + cardList.addCard(new Card("QUESTION", "ANSWER")); + + Command cmd = parser.parseCommand("card delete --index 1"); + cmd.execute(cardList, tagList, ui, storage); + + assert cardList.isEmpty() : "Should have deleted Card"; + } + + @Test + public void parse_card_deleteEmpty() throws InkaException { + Command cmd = parser.parseCommand("card delete -i 1"); + assertThrows(DeleteUnknown.class, () -> cmd.execute(cardList, tagList, ui, storage), + "Should fail to delete nothing"); + } + + @Test + public void parse_card_deleteBadIndex() throws InkaException { + cardList.addCard(new Card("QUESTION", "ANSWER")); + + Command cmd = parser.parseCommand("card delete -i 0"); + assertThrows(DeleteUnknown.class, () -> cmd.execute(cardList, tagList, ui, storage), + "Should fail to delete nothing"); + } + + //endregion } From 6d735a24a96b4083a4b5e94dbc975849dbeee73d Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 20 Mar 2023 17:08:12 +0800 Subject: [PATCH 066/311] test: tests for all card keywords --- .../java/utils/parser/CardTokenParser.java | 26 ++--- .../{ParserTest.java => CardParserTest.java} | 98 ++++++++++++++++--- 2 files changed, 100 insertions(+), 24 deletions(-) rename src/test/java/utils/parser/{ParserTest.java => CardParserTest.java} (56%) diff --git a/src/main/java/utils/parser/CardTokenParser.java b/src/main/java/utils/parser/CardTokenParser.java index 2a71e4e986..f5ffd71c24 100644 --- a/src/main/java/utils/parser/CardTokenParser.java +++ b/src/main/java/utils/parser/CardTokenParser.java @@ -69,6 +69,13 @@ private static Options buildTagOptions() { return options; } + private static Options buildViewOptions() { + Options options = new Options(); + options.addRequiredOption("c", "card", true, "card UUID"); + + return options; + } + @SuppressWarnings("unchecked") // Safe, CLI library just returns List instead of List public Command parseTokens(List tokens) throws InkaException { if (tokens.size() == 0) { @@ -127,23 +134,20 @@ private Command handleList(List tokens) { return new ListCardCommand(); } - private Command handleTag(List tokens) throws InkaException { - if (tokens.size() != 2) { - throw InvalidSyntaxException.buildGenericMessage(); - } + private Command handleTag(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildTagOptions(), tokens.toArray(new String[0])); - String cardUUID = tokens.get(0); - String tagName = tokens.get(1); + String cardUUID = cmd.getOptionValue("c"); + String tagName = cmd.getOptionValue("t"); return new AddCardToTagCommand(tagName, cardUUID); } - private Command handleView(List tokens) throws InkaException { - if (tokens.size() != 1) { - throw InvalidSyntaxException.buildGenericMessage(); - } + private Command handleView(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildViewOptions(), tokens.toArray(new String[0])); - String cardUUID = tokens.get(0); + String cardUUID = cmd.getOptionValue("c"); return new ViewCardCommand(cardUUID); } + } diff --git a/src/test/java/utils/parser/ParserTest.java b/src/test/java/utils/parser/CardParserTest.java similarity index 56% rename from src/test/java/utils/parser/ParserTest.java rename to src/test/java/utils/parser/CardParserTest.java index 25593026fe..0324797897 100644 --- a/src/test/java/utils/parser/ParserTest.java +++ b/src/test/java/utils/parser/CardParserTest.java @@ -8,20 +8,22 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import utils.UserInterface; +import utils.command.AddCardCommand; +import utils.command.AddCardToTagCommand; import utils.command.Command; +import utils.command.DeleteCardCommand; +import utils.command.ViewCardCommand; import utils.exceptions.DeleteUnknown; import utils.exceptions.InkaException; import utils.exceptions.InvalidSyntaxException; import utils.storage.FakeStorage; import utils.storage.Storage; -public class ParserTest { - +public class CardParserTest { private CardList cardList; private TagList tagList; private UserInterface ui; private Storage storage; - private Parser parser; /** @@ -40,6 +42,7 @@ void init() { @Test public void parse_card_add() throws InkaException { Command cmd = parser.parseCommand("card add -q QUESTION -a ANSWER"); + assert cmd instanceof AddCardCommand; cmd.execute(cardList, tagList, ui, storage); Card card = cardList.get(0); @@ -50,6 +53,7 @@ public void parse_card_add() throws InkaException { @Test public void parse_card_addLongFlag() throws InkaException { Command cmd = parser.parseCommand("card add --question QUESTION --answer ANSWER"); + assert cmd instanceof AddCardCommand; cmd.execute(cardList, tagList, ui, storage); Card card = cardList.get(0); @@ -60,6 +64,7 @@ public void parse_card_addLongFlag() throws InkaException { @Test public void parse_card_addWithWhitespaces() throws InkaException { Command cmd = parser.parseCommand("card add -q MULTI WORD QUESTION -a MULTI WORD ANSWER"); + assert cmd instanceof AddCardCommand; cmd.execute(cardList, tagList, ui, storage); Card card = cardList.get(0); @@ -68,7 +73,7 @@ public void parse_card_addWithWhitespaces() throws InkaException { } @Test - public void parse_card_addMissingFlags() { + public void parse_card_addMissingOptions() { String[] testInputs = {"card add", "card add -q", "card add -a"}; for (String testInput : testInputs) { assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testInput), @@ -77,15 +82,12 @@ public void parse_card_addMissingFlags() { } @Test - public void parse_card_addMissingQuestion() { - assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand("card add -a ANSWER -q"), - "Should be invalid syntax"); - } - - @Test - public void parse_card_addMissingAnswer() { - assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand("card add -q QUESTION -a"), - "Should be invalid syntax"); + public void parse_card_addMissingArguments() { + String[] testInputs = {"card add -a ANSWER -q", "card add -q QUESTION -a"}; + for (String testInput : testInputs) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testInput), + "Should be invalid syntax"); + } } //endregion @@ -96,6 +98,7 @@ public void parse_card_delete() throws InkaException { cardList.addCard(new Card("QUESTION", "ANSWER")); Command cmd = parser.parseCommand("card delete -i 1"); + assert cmd instanceof DeleteCardCommand; cmd.execute(cardList, tagList, ui, storage); assert cardList.isEmpty() : "Should have deleted Card"; @@ -106,6 +109,7 @@ public void parse_card_deleteLongFlag() throws InkaException { cardList.addCard(new Card("QUESTION", "ANSWER")); Command cmd = parser.parseCommand("card delete --index 1"); + assert cmd instanceof DeleteCardCommand; cmd.execute(cardList, tagList, ui, storage); assert cardList.isEmpty() : "Should have deleted Card"; @@ -127,5 +131,73 @@ public void parse_card_deleteBadIndex() throws InkaException { "Should fail to delete nothing"); } + @Test + public void parse_card_deleteMissingOptions() { + String[] testInputs = {"card delete"}; + for (String testInput : testInputs) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testInput), + "Should be invalid syntax"); + } + } + + @Test + public void parse_card_deleteMissingArguments() { + String[] testInputs = {"card delete -i"}; + for (String testInput : testInputs) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testInput), + "Should be invalid syntax"); + } + } + + //endregion + + //region `card tag` tests + + @Test + public void parse_card_tag() throws InkaException { + Command cmd = parser.parseCommand("card tag -c 00000000-0000-0000-0000-000000000000 -t tagName"); + assert cmd instanceof AddCardToTagCommand; + } + + @Test + public void parse_card_tagLongFlag() throws InkaException { + Command cmd = parser.parseCommand("card tag --card 00000000-0000-0000-0000-000000000000 --tag tagName"); + assert cmd instanceof AddCardToTagCommand; + } + + @Test + public void parse_card_viewMissingOptions() { + String[] testInputs = {"card view"}; + for (String testInput : testInputs) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testInput), + "Should be invalid syntax"); + } + } + + @Test + public void parse_card_viewMissingArguments() { + String[] testInputs = {"card view -i"}; + for (String testInput : testInputs) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testInput), + "Should be invalid syntax"); + } + } + + //endregion + + //region `card view` tests + + @Test + public void parse_card_view() throws InkaException { + Command cmd = parser.parseCommand("card view -c 00000000-0000-0000-0000-000000000000 "); + assert cmd instanceof ViewCardCommand; + } + + @Test + public void parse_card_viewLongFlag() throws InkaException { + Command cmd = parser.parseCommand("card view --card 00000000-0000-0000-0000-000000000000"); + assert cmd instanceof ViewCardCommand; + } + //endregion } From 893f99e3ef9f287ed9a2068fcac61b99d936b44c Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 20 Mar 2023 17:26:53 +0800 Subject: [PATCH 067/311] test: tests for all tag keywords --- .../java/utils/command/DeleteCardCommand.java | 4 +- .../java/utils/command/DeleteTagCommand.java | 7 +- .../{DeleteUnknown.java => UnknownItem.java} | 4 +- .../java/utils/parser/TagTokenParser.java | 66 ++++++++++++++----- .../java/utils/parser/CardParserTest.java | 6 +- src/test/java/utils/parser/TagParserTest.java | 66 +++++++++++++++++++ 6 files changed, 127 insertions(+), 26 deletions(-) rename src/main/java/utils/exceptions/{DeleteUnknown.java => UnknownItem.java} (53%) create mode 100644 src/test/java/utils/parser/TagParserTest.java diff --git a/src/main/java/utils/command/DeleteCardCommand.java b/src/main/java/utils/command/DeleteCardCommand.java index 5a00959324..b8592fa38a 100644 --- a/src/main/java/utils/command/DeleteCardCommand.java +++ b/src/main/java/utils/command/DeleteCardCommand.java @@ -3,7 +3,7 @@ import model.CardList; import model.TagList; import utils.UserInterface; -import utils.exceptions.DeleteUnknown; +import utils.exceptions.UnknownItem; import utils.exceptions.InkaException; import utils.storage.IDataStorage; @@ -24,7 +24,7 @@ public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataS ui.printDeleteSuccess(); ui.printNumOfQuestions(cardList); } catch (IndexOutOfBoundsException e) { - throw new DeleteUnknown(); + throw new UnknownItem(); } } } diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 63cafa0372..6a84767da5 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -37,9 +37,10 @@ private void removeTagFromCards(CardList cardList, TagList tagList, UserInterfac //for each card whose uuid is listed under the tag, remove the tag uuid from that card for (CardUUID cardUUID : tag.getCardsUUID()) { Card affectedCard = cardList.findCardFromUUID(cardUUID); - assert affectedCard != null; - affectedCard.removeTag(tagUUID); - ui.printRemoveTagFromCard(affectedCard.getUuid(), tagUUID); + if (affectedCard != null) { + affectedCard.removeTag(tagUUID); + ui.printRemoveTagFromCard(affectedCard.getUuid(), tagUUID); + } } } diff --git a/src/main/java/utils/exceptions/DeleteUnknown.java b/src/main/java/utils/exceptions/UnknownItem.java similarity index 53% rename from src/main/java/utils/exceptions/DeleteUnknown.java rename to src/main/java/utils/exceptions/UnknownItem.java index cbd78e4f3f..6ebc7a6654 100644 --- a/src/main/java/utils/exceptions/DeleteUnknown.java +++ b/src/main/java/utils/exceptions/UnknownItem.java @@ -1,7 +1,7 @@ package utils.exceptions; -public class DeleteUnknown extends InkaException { - public DeleteUnknown() { +public class UnknownItem extends InkaException { + public UnknownItem() { super("Can't find what you're referring to..."); } } diff --git a/src/main/java/utils/parser/TagTokenParser.java b/src/main/java/utils/parser/TagTokenParser.java index 3a6e384942..202c495022 100644 --- a/src/main/java/utils/parser/TagTokenParser.java +++ b/src/main/java/utils/parser/TagTokenParser.java @@ -1,6 +1,13 @@ package utils.parser; import java.util.List; +import java.util.stream.Collectors; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.MissingArgumentException; +import org.apache.commons.cli.MissingOptionException; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; import utils.command.Command; import utils.command.DeleteTagCommand; import utils.command.ListCardsUnderTagCommand; @@ -11,11 +18,27 @@ public class TagTokenParser { - private static final String TAG_LIST_ACTION = "add"; + private static final String TAG_LIST_ACTION = "list"; private static final String TAG_DELETE_ACTION = "delete"; + private DefaultParser parser; + public TagTokenParser() { + this.parser = new DefaultParser(false); + } + + private static Options buildDeleteOptions() { + Options options = new Options(); + options.addRequiredOption("t", "tag", true, "tag name"); + + return options; + } + private static Options buildListOptions() { + Options options = new Options(); + options.addOption("t", "tag", true, "tag name"); + + return options; } public Command parseToken(List tokens) throws InkaException { @@ -26,31 +49,42 @@ public Command parseToken(List tokens) throws InkaException { String action = tokens.get(0); List flags = tokens.subList(1, tokens.size()); - switch (action) { - case TAG_DELETE_ACTION: - return handleDelete(flags); - case TAG_LIST_ACTION: - return handleList(flags); - default: - throw new UnrecognizedCommandException(); + try { + switch (action) { + case TAG_DELETE_ACTION: + return handleDelete(flags); + case TAG_LIST_ACTION: + return handleList(flags); + default: + throw new UnrecognizedCommandException(); + } + } catch (MissingArgumentException e) { + String missingArgumentOption = e.getOption().getArgName(); + throw InvalidSyntaxException.buildMissingArgumentMessage(missingArgumentOption); + } catch (MissingOptionException e) { + List opts = e.getMissingOptions(); + String missingOptions = opts.stream().map(str -> "-" + str).collect(Collectors.joining(", ")); + throw InvalidSyntaxException.buildMissingOptionMessage(missingOptions); + } catch (ParseException e) { + throw InvalidSyntaxException.buildGenericMessage(); } } - private Command handleList(List flags) { - if (flags.size() > 1) { - String tagName = flags.get(0); + private Command handleList(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildListOptions(), tokens.toArray(new String[0])); + + if (cmd.hasOption("t")) { + String tagName = cmd.getOptionValue("t"); return new ListCardsUnderTagCommand(tagName); } else { return new ListTagsCommand(); } } - private Command handleDelete(List flags) throws InkaException { - if (flags.size() != 1) { - throw InvalidSyntaxException.buildGenericMessage(); - } + private Command handleDelete(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildDeleteOptions(), tokens.toArray(new String[0])); - String tagName = flags.get(0); + String tagName = cmd.getOptionValue("t"); return new DeleteTagCommand(tagName); } } diff --git a/src/test/java/utils/parser/CardParserTest.java b/src/test/java/utils/parser/CardParserTest.java index 0324797897..707d3ee2a2 100644 --- a/src/test/java/utils/parser/CardParserTest.java +++ b/src/test/java/utils/parser/CardParserTest.java @@ -13,7 +13,7 @@ import utils.command.Command; import utils.command.DeleteCardCommand; import utils.command.ViewCardCommand; -import utils.exceptions.DeleteUnknown; +import utils.exceptions.UnknownItem; import utils.exceptions.InkaException; import utils.exceptions.InvalidSyntaxException; import utils.storage.FakeStorage; @@ -118,7 +118,7 @@ public void parse_card_deleteLongFlag() throws InkaException { @Test public void parse_card_deleteEmpty() throws InkaException { Command cmd = parser.parseCommand("card delete -i 1"); - assertThrows(DeleteUnknown.class, () -> cmd.execute(cardList, tagList, ui, storage), + assertThrows(UnknownItem.class, () -> cmd.execute(cardList, tagList, ui, storage), "Should fail to delete nothing"); } @@ -127,7 +127,7 @@ public void parse_card_deleteBadIndex() throws InkaException { cardList.addCard(new Card("QUESTION", "ANSWER")); Command cmd = parser.parseCommand("card delete -i 0"); - assertThrows(DeleteUnknown.class, () -> cmd.execute(cardList, tagList, ui, storage), + assertThrows(UnknownItem.class, () -> cmd.execute(cardList, tagList, ui, storage), "Should fail to delete nothing"); } diff --git a/src/test/java/utils/parser/TagParserTest.java b/src/test/java/utils/parser/TagParserTest.java new file mode 100644 index 0000000000..97a54dfee4 --- /dev/null +++ b/src/test/java/utils/parser/TagParserTest.java @@ -0,0 +1,66 @@ +package utils.parser; + +import java.util.UUID; +import model.CardList; +import model.CardUUID; +import model.Tag; +import model.TagList; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import utils.UserInterface; +import utils.command.Command; +import utils.command.DeleteTagCommand; +import utils.command.ListCardsUnderTagCommand; +import utils.command.ListTagsCommand; +import utils.exceptions.InkaException; +import utils.storage.FakeStorage; +import utils.storage.Storage; + +public class TagParserTest { + private CardList cardList; + private TagList tagList; + private UserInterface ui; + private Storage storage; + private Parser parser; + + /** + * Each test should have a new instance of all these + */ + @BeforeEach + void init() { + cardList = new CardList(); + tagList = new TagList(); + ui = new UserInterface(); + storage = new FakeStorage(); + parser = new Parser(); + } + + @Test + public void parse_tag_list() throws InkaException { + Command cmd = parser.parseCommand("tag list"); + assert cmd instanceof ListTagsCommand; + } + + @Test + public void parse_tag_listWithTag() throws InkaException { + Command cmd = parser.parseCommand("tag list -t tagName"); + assert cmd instanceof ListCardsUnderTagCommand; + } + + @Test + public void parse_tag_listWithTagLongFlag() throws InkaException { + Command cmd = parser.parseCommand("tag list --tag tagName"); + assert cmd instanceof ListCardsUnderTagCommand; + } + + @Test + public void parse_tag_delete() throws InkaException { + CardUUID cardUUID = new CardUUID(UUID.fromString("00000000-0000-0000-0000-000000000000")); + tagList.addTag(new Tag("tagName", cardUUID)); + + Command cmd = parser.parseCommand("tag delete -t tagName"); + assert cmd instanceof DeleteTagCommand; + cmd.execute(cardList, tagList, ui, storage); + assert tagList.isEmpty(); + } +} From 85509086116f76f1a3c0d8d5cae50e05142de67f Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 20 Mar 2023 17:48:28 +0800 Subject: [PATCH 068/311] chore: cleanup rebasing --- src/main/java/utils/Parser.java | 123 ------------------ .../java/utils/command/DeleteTagCommand.java | 6 +- .../java/utils/parser/CardTokenParser.java | 4 +- src/test/java/utils/parser/TagParserTest.java | 19 ++- 4 files changed, 19 insertions(+), 133 deletions(-) delete mode 100644 src/main/java/utils/Parser.java diff --git a/src/main/java/utils/Parser.java b/src/main/java/utils/Parser.java deleted file mode 100644 index 439253a8ef..0000000000 --- a/src/main/java/utils/Parser.java +++ /dev/null @@ -1,123 +0,0 @@ -package utils; - -import model.Card; -import model.CardList; -import model.TagList; -import utils.command.AddCardCommand; -import utils.command.AddCardToTagCommand; -import utils.command.Command; -import utils.command.DeleteCardCommand; -import utils.command.DeleteTagCommand; -import utils.command.EditTagNameCommand; -import utils.command.ExceptionCommand; -import utils.command.ExportCommand; -import utils.command.ListCardCommand; -import utils.command.ListCardsUnderTagCommand; -import utils.command.ListTagsCommand; -import utils.command.TerminateCommand; -import utils.command.ViewCardCommand; -import utils.exceptions.AddEmptyAnswer; -import utils.exceptions.AddEmptyQuestion; -import utils.exceptions.AddEmptyQuestionAndAnswer; -import utils.exceptions.AddGoneWrong; -import utils.exceptions.DeleteMissingNumber; -import utils.exceptions.DeleteRangeInvalid; -import utils.exceptions.DeleteTagNameIncomplete; -import utils.exceptions.EditTagNameIncompleteException; -import utils.exceptions.InkaException; -import utils.exceptions.TagCardIncompleteInput; -import utils.exceptions.ViewCardMissingUUID; - -public class Parser { - private boolean isExecuting; - - public Parser() { - this.isExecuting = true; - } - - public boolean getIsExecuting() { - return isExecuting; - } - - public void setIsExecuting(boolean bool) { - this.isExecuting = bool; - } - - //Sorry I know this is painful to read, thanks for migrating it to a parser library! - public Command parseCommand(String userCommand, CardList cardList, TagList tagList) throws InkaException { - String[] userCommandSplit = userCommand.split("--", 3); - assert userCommandSplit.length >= 1 : "User Command must be specified"; - if (userCommandSplit[0].startsWith("card list")) { - return new ListCardCommand(); - } else if (userCommandSplit[0].startsWith("card add")) { - if (userCommandSplit.length < 3) { - throw new AddGoneWrong(); - } else if (userCommandSplit[1].isBlank() && userCommandSplit[2].isBlank()) { - assert userCommandSplit.length < 3 : "Questions and answers should be specified "; - throw new AddEmptyQuestionAndAnswer(); - } else if (userCommandSplit[1].isBlank()) { - throw new AddEmptyQuestion(); - } else if (userCommandSplit[2].isBlank()) { - throw new AddEmptyAnswer(); - } - String question = userCommandSplit[1]; - String answer = userCommandSplit[2]; - Card card = new Card(question, answer); - return new AddCardCommand(card); // main command return - } else if (userCommandSplit[0].startsWith("card view")) { - if (userCommandSplit.length < 2) { - throw new ViewCardMissingUUID(); - } - String cardUUID = userCommandSplit[1]; - return new ViewCardCommand(cardUUID); - } else if (userCommandSplit[0].startsWith("card delete")) { - if (userCommandSplit.length == 1) { - throw new DeleteMissingNumber(); - } else if (Integer.parseInt(userCommandSplit[1]) < 1 - || Integer.parseInt(userCommandSplit[1]) > cardList.size()) { - - throw new DeleteRangeInvalid(); - } - int deleteIndex = Integer.parseInt(userCommandSplit[1]); - assert deleteIndex >= 0 : "deleteIndex should be a number"; - return new DeleteCardCommand(deleteIndex); - } else if (userCommandSplit[0].startsWith("card tag")) { - if (userCommandSplit.length < 3) { - throw new TagCardIncompleteInput(); - } - String cardUUID = userCommandSplit[1].trim(); - String tagName = userCommandSplit[2]; - - return new AddCardToTagCommand(tagName, cardUUID); - } else if (userCommandSplit[0].startsWith("tag list")) { - if (userCommandSplit.length > 1) { - String tagName = userCommandSplit[1]; - return new ListCardsUnderTagCommand(tagName); - } else { - return new ListTagsCommand(); - } - } else if (userCommandSplit[0].startsWith("tag delete")) { - if (userCommandSplit.length < 2) { - throw new DeleteTagNameIncomplete(); - } - String tagName = userCommandSplit[1]; - return new DeleteTagCommand(tagName); - } else if (userCommandSplit[0].startsWith("tag edit")) { - if (userCommandSplit.length < 3) { - throw new EditTagNameIncompleteException(); - } - - String oldTagName = userCommandSplit[1].trim(); - String newTagName = userCommandSplit[2].trim(); - - return new EditTagNameCommand(oldTagName, newTagName); - } else if (userCommandSplit[0].startsWith("export") || userCommandSplit[0].startsWith("export ")) { - return new ExportCommand(); - } else if (userCommandSplit[0].startsWith("bye")) { - this.setIsExecuting(false); - return new TerminateCommand(); - } else { - return new ExceptionCommand(); - } - } -} diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 6a84767da5..36488eb156 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -37,10 +37,8 @@ private void removeTagFromCards(CardList cardList, TagList tagList, UserInterfac //for each card whose uuid is listed under the tag, remove the tag uuid from that card for (CardUUID cardUUID : tag.getCardsUUID()) { Card affectedCard = cardList.findCardFromUUID(cardUUID); - if (affectedCard != null) { - affectedCard.removeTag(tagUUID); - ui.printRemoveTagFromCard(affectedCard.getUuid(), tagUUID); - } + affectedCard.removeTag(tagUUID); + ui.printRemoveTagFromCard(affectedCard.getUuid(), tagUUID); } } diff --git a/src/main/java/utils/parser/CardTokenParser.java b/src/main/java/utils/parser/CardTokenParser.java index f5ffd71c24..1f72a016b9 100644 --- a/src/main/java/utils/parser/CardTokenParser.java +++ b/src/main/java/utils/parser/CardTokenParser.java @@ -134,7 +134,7 @@ private Command handleList(List tokens) { return new ListCardCommand(); } - private Command handleTag(List tokens) throws ParseException { + private Command handleTag(List tokens) throws ParseException, InkaException { CommandLine cmd = parser.parse(buildTagOptions(), tokens.toArray(new String[0])); String cardUUID = cmd.getOptionValue("c"); @@ -143,7 +143,7 @@ private Command handleTag(List tokens) throws ParseException { return new AddCardToTagCommand(tagName, cardUUID); } - private Command handleView(List tokens) throws ParseException { + private Command handleView(List tokens) throws ParseException, InkaException { CommandLine cmd = parser.parse(buildViewOptions(), tokens.toArray(new String[0])); String cardUUID = cmd.getOptionValue("c"); diff --git a/src/test/java/utils/parser/TagParserTest.java b/src/test/java/utils/parser/TagParserTest.java index 97a54dfee4..c803237c86 100644 --- a/src/test/java/utils/parser/TagParserTest.java +++ b/src/test/java/utils/parser/TagParserTest.java @@ -1,8 +1,9 @@ package utils.parser; -import java.util.UUID; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import model.Card; import model.CardList; -import model.CardUUID; import model.Tag; import model.TagList; import org.junit.jupiter.api.BeforeEach; @@ -13,6 +14,7 @@ import utils.command.ListCardsUnderTagCommand; import utils.command.ListTagsCommand; import utils.exceptions.InkaException; +import utils.exceptions.TagNotFoundException; import utils.storage.FakeStorage; import utils.storage.Storage; @@ -55,12 +57,21 @@ public void parse_tag_listWithTagLongFlag() throws InkaException { @Test public void parse_tag_delete() throws InkaException { - CardUUID cardUUID = new CardUUID(UUID.fromString("00000000-0000-0000-0000-000000000000")); - tagList.addTag(new Tag("tagName", cardUUID)); + Card card = Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000"); + cardList.addCard(card); + tagList.addTag(new Tag("tagName", card.getUuid())); Command cmd = parser.parseCommand("tag delete -t tagName"); assert cmd instanceof DeleteTagCommand; cmd.execute(cardList, tagList, ui, storage); assert tagList.isEmpty(); } + + @Test + public void parse_tag_deleteUnknownTag() throws InkaException { + Command cmd = parser.parseCommand("tag delete -t tagName"); + assert cmd instanceof DeleteTagCommand; + assertThrows(TagNotFoundException.class, () -> cmd.execute(cardList, tagList, ui, storage), + "Should not delete non-existent tag"); + } } From 4702b0aa979a5d1f7d82640cb2cd72e65d4920df Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 20 Mar 2023 19:28:22 +0800 Subject: [PATCH 069/311] feat: help messages --- src/main/java/utils/UserInterface.java | 6 + .../java/utils/command/DeleteTagCommand.java | 3 +- .../java/utils/command/PrintHelpCommand.java | 22 ++++ ...okenParser.java => CardKeywordParser.java} | 88 +++++++-------- src/main/java/utils/parser/KeywordParser.java | 90 +++++++++++++++ src/main/java/utils/parser/Parser.java | 59 +++++++--- .../java/utils/parser/TagKeywordParser.java | 103 ++++++++++++++++++ .../java/utils/parser/TagTokenParser.java | 90 --------------- 8 files changed, 310 insertions(+), 151 deletions(-) create mode 100644 src/main/java/utils/command/PrintHelpCommand.java rename src/main/java/utils/parser/{CardTokenParser.java => CardKeywordParser.java} (61%) create mode 100644 src/main/java/utils/parser/KeywordParser.java create mode 100644 src/main/java/utils/parser/TagKeywordParser.java delete mode 100644 src/main/java/utils/parser/TagTokenParser.java diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index c8e000a607..522e082311 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -41,6 +41,12 @@ public void printBye() { printDivider(); } + public void printHelp(String helpMessage) { + printDivider(); + System.out.print(helpMessage); + printDivider(); + } + public void printNumOfQuestions(CardList cardList) { System.out.println("You now have " + cardList.size() + " questions in the bank."); } diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 36488eb156..2830442350 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -20,12 +20,11 @@ public DeleteTagCommand(String tagName) { } /** - * Remoove the tagName tag from the tagList and all the cards that currently have the tagName tag. + * Remove the tagName tag from the tagList and all the cards that currently have the tagName tag. * * @param cardList The cardList from which to look for the cards with tagName tag. * @param tagList The tagList from which to delete the tagName tag. * @param ui The userInterface to print the success of removal of the tag from the cards. - * @throws InkaException */ private void removeTagFromCards(CardList cardList, TagList tagList, UserInterface ui) throws InkaException { Tag tag = tagList.findTagFromName(tagName); diff --git a/src/main/java/utils/command/PrintHelpCommand.java b/src/main/java/utils/command/PrintHelpCommand.java new file mode 100644 index 0000000000..1b8f5c9c0e --- /dev/null +++ b/src/main/java/utils/command/PrintHelpCommand.java @@ -0,0 +1,22 @@ +package utils.command; + +import model.CardList; +import model.TagList; +import utils.UserInterface; +import utils.exceptions.InkaException; +import utils.storage.IDataStorage; + +public class PrintHelpCommand extends Command { + + private String helpMessage; + + public PrintHelpCommand(String helpMessage) { + this.helpMessage = helpMessage; + } + + @Override + public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + throws InkaException { + ui.printHelp(helpMessage); + } +} diff --git a/src/main/java/utils/parser/CardTokenParser.java b/src/main/java/utils/parser/CardKeywordParser.java similarity index 61% rename from src/main/java/utils/parser/CardTokenParser.java rename to src/main/java/utils/parser/CardKeywordParser.java index 1f72a016b9..6ab917425a 100644 --- a/src/main/java/utils/parser/CardTokenParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -1,12 +1,9 @@ package utils.parser; import java.util.List; -import java.util.stream.Collectors; import model.Card; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.DefaultParser; -import org.apache.commons.cli.MissingArgumentException; -import org.apache.commons.cli.MissingOptionException; import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; @@ -15,22 +12,23 @@ import utils.command.Command; import utils.command.DeleteCardCommand; import utils.command.ListCardCommand; +import utils.command.PrintHelpCommand; import utils.command.ViewCardCommand; import utils.exceptions.InkaException; -import utils.exceptions.InvalidSyntaxException; import utils.exceptions.UnrecognizedCommandException; -public class CardTokenParser { +public class CardKeywordParser extends KeywordParser { - private static final String CARD_ADD_ACTION = "add"; - private static final String CARD_DELETE_ACTION = "delete"; - private static final String CARD_LIST_ACTION = "list"; - private static final String CARD_TAG_ACTION = "tag"; - private static final String CARD_VIEW_ACTION = "view"; + public static final String ADD_ACTION = "add"; + public static final String DELETE_ACTION = "delete"; + public static final String HELP_ACTION = "help"; + public static final String LIST_ACTION = "list"; + public static final String TAG_ACTION = "tag"; + public static final String VIEW_ACTION = "view"; private DefaultParser parser; - public CardTokenParser() { + public CardKeywordParser() { this.parser = new DefaultParser(false); } @@ -76,39 +74,24 @@ private static Options buildViewOptions() { return options; } - @SuppressWarnings("unchecked") // Safe, CLI library just returns List instead of List - public Command parseTokens(List tokens) throws InkaException { - if (tokens.size() == 0) { - throw InvalidSyntaxException.buildGenericMessage(); - } - - String action = tokens.get(0); - List flags = tokens.subList(1, tokens.size()); - - try { - switch (action) { - case CARD_ADD_ACTION: - return handleAdd(flags); - case CARD_DELETE_ACTION: - return handleDelete(flags); - case CARD_LIST_ACTION: - return handleList(flags); - case CARD_TAG_ACTION: - return handleTag(flags); - case CARD_VIEW_ACTION: - return handleView(flags); - default: - throw new UnrecognizedCommandException(); - } - } catch (MissingArgumentException e) { - String missingArgumentOption = e.getOption().getArgName(); - throw InvalidSyntaxException.buildMissingArgumentMessage(missingArgumentOption); - } catch (MissingOptionException e) { - List opts = e.getMissingOptions(); - String missingOptions = opts.stream().map(str -> "-" + str).collect(Collectors.joining(", ")); - throw InvalidSyntaxException.buildMissingOptionMessage(missingOptions); - } catch (ParseException e) { - throw InvalidSyntaxException.buildGenericMessage(); + @Override + protected Command handleAction(String action, List tokens) + throws ParseException, InkaException { + switch (action) { + case ADD_ACTION: + return handleAdd(tokens); + case DELETE_ACTION: + return handleDelete(tokens); + case HELP_ACTION: + return handleHelp(); + case LIST_ACTION: + return handleList(); + case TAG_ACTION: + return handleTag(tokens); + case VIEW_ACTION: + return handleView(tokens); + default: + throw new UnrecognizedCommandException(); } } @@ -130,7 +113,21 @@ private Command handleDelete(List tokens) throws ParseException { return new DeleteCardCommand(deleteIndex); } - private Command handleList(List tokens) { + private Command handleHelp() { + // Combine all actions + // @formatter:off + String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, + VIEW_ACTION}; + // @formatter:on + String[] headerList = {"Adding cards", "Deleting cards", "List all cards", "Tagging cards", "View cards"}; + Options[] optionsList = {buildAddOptions(), buildDeleteOptions(), new Options(), buildTagOptions(), + buildViewOptions()}; + + String helpMessage = formatHelpMessage("card", actionList, headerList, optionsList); + return new PrintHelpCommand(helpMessage); + } + + private Command handleList() { return new ListCardCommand(); } @@ -149,5 +146,4 @@ private Command handleView(List tokens) throws ParseException, InkaExcep String cardUUID = cmd.getOptionValue("c"); return new ViewCardCommand(cardUUID); } - } diff --git a/src/main/java/utils/parser/KeywordParser.java b/src/main/java/utils/parser/KeywordParser.java new file mode 100644 index 0000000000..f99789c652 --- /dev/null +++ b/src/main/java/utils/parser/KeywordParser.java @@ -0,0 +1,90 @@ +package utils.parser; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.List; +import java.util.stream.Collectors; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.MissingArgumentException; +import org.apache.commons.cli.MissingOptionException; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import utils.command.Command; +import utils.exceptions.InkaException; +import utils.exceptions.InvalidSyntaxException; +import utils.exceptions.UnrecognizedCommandException; + +/** + * Abstract class for parsing keyword-specific commands + */ +public abstract class KeywordParser { + + protected static final int FORMAT_HELP_WIDTH = 200; + protected static final int FORMAT_HELP_LEFT_PAD = 0; + protected static final int FORMAT_HELP_DESC_PAD = 10; + + @SuppressWarnings("unchecked") // Safe, CLI library just returns List instead of List + public Command parseTokens(List tokens) throws InkaException { + if (tokens.size() == 0) { + throw InvalidSyntaxException.buildGenericMessage(); + } + + String action = tokens.get(0); + List flags = tokens.subList(1, tokens.size()); + + try { + return handleAction(action, flags); + } catch (MissingArgumentException e) { + String missingArgumentOption = e.getOption().getArgName(); + throw InvalidSyntaxException.buildMissingArgumentMessage(missingArgumentOption); + } catch (MissingOptionException e) { + List opts = e.getMissingOptions(); + String missingOptions = opts.stream().map(str -> "-" + str).collect(Collectors.joining(", ")); + throw InvalidSyntaxException.buildMissingOptionMessage(missingOptions); + } catch (ParseException e) { + throw InvalidSyntaxException.buildGenericMessage(); + } + } + + /** + * Derived classes should override this method and handle the action corresponding + * + * @param action Action of the corresponding keyword + * @param tokens Rest of the user input + * @return Parsed command + * @throws ParseException Syntax errors in command + * @throws UnrecognizedCommandException Unrecognized action for this keyword + */ + protected abstract Command handleAction(String action, List tokens) + throws ParseException, InkaException; + + /** + * Combines help messages for all actions into a single message + * + * @param keyword Associated keyword + * @param actionList Actions + * @param headerList Descriptions of actions + * @param optionsList All action Options for this keyword + * @return Formatted help string + */ + protected String formatHelpMessage(String keyword, String[] actionList, String[] headerList, + Options[] optionsList) { + assert optionsList.length == headerList.length; + assert optionsList.length == actionList.length; + + HelpFormatter formatter = new HelpFormatter(); + + StringWriter stringWriter = new StringWriter(); + PrintWriter printWriter = new PrintWriter(stringWriter); + + for (int i = 0; i < optionsList.length; i++) { + String syntax = "`" + keyword + " " + actionList[i] + "`"; + formatter.printHelp(printWriter, FORMAT_HELP_WIDTH, syntax, headerList[i], optionsList[i], + FORMAT_HELP_LEFT_PAD, FORMAT_HELP_DESC_PAD, "\n", + false); + } + + // Fix for extra newlines at end + return stringWriter.toString().trim() + System.lineSeparator(); + } +} diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/parser/Parser.java index 21b1f72682..be7348952d 100644 --- a/src/main/java/utils/parser/Parser.java +++ b/src/main/java/utils/parser/Parser.java @@ -4,25 +4,22 @@ import java.util.List; import utils.command.Command; import utils.command.ExportCommand; +import utils.command.PrintHelpCommand; import utils.command.TerminateCommand; import utils.exceptions.InkaException; import utils.exceptions.UnrecognizedCommandException; public class Parser { - /* Card-related tokens */ - private static final String CARD_KEYWORD = "card"; - - /* Tag-related tokens */ - private static final String TAG_KEYWORD = "tag"; - - /* Miscellaneous tokens */ - private static final String EXPORT_KEYWORD = "export"; - private static final String EXIT_KEYWORD = "bye"; + public static final String CARD_KEYWORD = "card"; + public static final String TAG_KEYWORD = "tag"; + public static final String EXPORT_KEYWORD = "export"; + public static final String EXIT_KEYWORD = "bye"; + public static final String HELP_KEYWORD = "help"; // Keyword-specific parsers - private final CardTokenParser cardTokenParser = new CardTokenParser(); - private final TagTokenParser tagTokenParser = new TagTokenParser(); + private final CardKeywordParser cardKeywordParser = new CardKeywordParser(); + private final TagKeywordParser tagKeywordParser = new TagKeywordParser(); private boolean isExecuting; @@ -56,10 +53,13 @@ public Command parseCommand(String userInput) throws InkaException { switch (keyword) { case CARD_KEYWORD: - return cardTokenParser.parseTokens(optionTokens); + return cardKeywordParser.parseTokens(optionTokens); case TAG_KEYWORD: - return tagTokenParser.parseToken(optionTokens); + return tagKeywordParser.parseTokens(optionTokens); + + case HELP_KEYWORD: + return new PrintHelpCommand(getTopLevelHelpMessage()); case EXPORT_KEYWORD: return new ExportCommand(); @@ -72,4 +72,37 @@ public Command parseCommand(String userInput) throws InkaException { throw new UnrecognizedCommandException(); } } + + /** + * Gets top-level help message for Inka + * + * @return Formatted help message + */ + private String getTopLevelHelpMessage() { + String helpMessage = ""; + + helpMessage += + "Welcome to Inka! Type " + HELP_KEYWORD + " at any time to show this message" + System.lineSeparator(); + helpMessage += "== Deck Management (run ` help` for more info) ===" + System.lineSeparator(); + helpMessage += formatHelpLine(CARD_KEYWORD, "Card-related functionality"); + helpMessage += formatHelpLine(TAG_KEYWORD, "Tag-related functionality)"); + helpMessage += "================== Miscellaneous Commands =================" + System.lineSeparator(); + helpMessage += formatHelpLine(EXPORT_KEYWORD, "Saves your deck"); + helpMessage += formatHelpLine(EXIT_KEYWORD, "Exits Inka"); + + return helpMessage; + } + + private String formatHelpLine(String keyword, String description) { + final int PAD_LENGTH = 12; + + String formatted = keyword; + // Right-pad to PAD_LENGTH + formatted += " ".repeat(PAD_LENGTH - formatted.length()); + formatted += " - "; + formatted += description; + formatted += System.lineSeparator(); + + return formatted; + } } diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java new file mode 100644 index 0000000000..d8d9983600 --- /dev/null +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -0,0 +1,103 @@ +package utils.parser; + +import java.util.List; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import utils.command.Command; +import utils.command.DeleteTagCommand; +import utils.command.EditTagNameCommand; +import utils.command.ListCardsUnderTagCommand; +import utils.command.ListTagsCommand; +import utils.command.PrintHelpCommand; +import utils.exceptions.UnrecognizedCommandException; + +public class TagKeywordParser extends KeywordParser { + + public static final String DELETE_ACTION = "delete"; + public static final String EDIT_ACTION = "edit"; + public static final String HELP_ACTION = "help"; + public static final String LIST_ACTION = "list"; + + private DefaultParser parser; + + public TagKeywordParser() { + this.parser = new DefaultParser(false); + } + + private static Options buildDeleteOptions() { + Options options = new Options(); + options.addRequiredOption("t", "tag", true, "tag name"); + + return options; + } + + private static Options buildEditOptions() { + Options options = new Options(); + options.addRequiredOption("o", "old", true, "Old tag name"); + options.addRequiredOption("n", "new", true, "New tag name"); + + return options; + } + + private static Options buildListOptions() { + Options options = new Options(); + options.addOption("t", "tag", true, "tag name"); + + return options; + } + + @Override + protected Command handleAction(String action, List tokens) + throws ParseException, UnrecognizedCommandException { + switch (action) { + case DELETE_ACTION: + return handleDelete(tokens); + case EDIT_ACTION: + return handleEdit(tokens); + case HELP_ACTION: + return handleHelp(); + case LIST_ACTION: + return handleList(tokens); + default: + throw new UnrecognizedCommandException(); + } + } + + private Command handleDelete(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildDeleteOptions(), tokens.toArray(new String[0])); + + String tagName = cmd.getOptionValue("t"); + return new DeleteTagCommand(tagName); + } + + private Command handleEdit(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildEditOptions(), tokens.toArray(new String[0])); + + String oldTagName = cmd.getOptionValue("o"); + String newTagName = cmd.getOptionValue("n"); + return new EditTagNameCommand(oldTagName, newTagName); + } + + private Command handleHelp() { + // Combine all actions + String[] actionList = {EDIT_ACTION, DELETE_ACTION, LIST_ACTION}; + String[] headerList = {"Edit existing tags", "Delete tags", "List tags"}; + Options[] optionsList = {buildEditOptions(), buildDeleteOptions(), buildListOptions()}; + + String helpMessage = formatHelpMessage("tag", actionList, headerList, optionsList); + return new PrintHelpCommand(helpMessage); + } + + private Command handleList(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildListOptions(), tokens.toArray(new String[0])); + + if (cmd.hasOption("t")) { + String tagName = cmd.getOptionValue("t"); + return new ListCardsUnderTagCommand(tagName); + } else { + return new ListTagsCommand(); + } + } +} diff --git a/src/main/java/utils/parser/TagTokenParser.java b/src/main/java/utils/parser/TagTokenParser.java deleted file mode 100644 index 202c495022..0000000000 --- a/src/main/java/utils/parser/TagTokenParser.java +++ /dev/null @@ -1,90 +0,0 @@ -package utils.parser; - -import java.util.List; -import java.util.stream.Collectors; -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.DefaultParser; -import org.apache.commons.cli.MissingArgumentException; -import org.apache.commons.cli.MissingOptionException; -import org.apache.commons.cli.Options; -import org.apache.commons.cli.ParseException; -import utils.command.Command; -import utils.command.DeleteTagCommand; -import utils.command.ListCardsUnderTagCommand; -import utils.command.ListTagsCommand; -import utils.exceptions.InkaException; -import utils.exceptions.InvalidSyntaxException; -import utils.exceptions.UnrecognizedCommandException; - -public class TagTokenParser { - - private static final String TAG_LIST_ACTION = "list"; - private static final String TAG_DELETE_ACTION = "delete"; - - private DefaultParser parser; - - public TagTokenParser() { - this.parser = new DefaultParser(false); - } - - private static Options buildDeleteOptions() { - Options options = new Options(); - options.addRequiredOption("t", "tag", true, "tag name"); - - return options; - } - - private static Options buildListOptions() { - Options options = new Options(); - options.addOption("t", "tag", true, "tag name"); - - return options; - } - - public Command parseToken(List tokens) throws InkaException { - if (tokens.size() == 0) { - throw InvalidSyntaxException.buildGenericMessage(); - } - - String action = tokens.get(0); - List flags = tokens.subList(1, tokens.size()); - - try { - switch (action) { - case TAG_DELETE_ACTION: - return handleDelete(flags); - case TAG_LIST_ACTION: - return handleList(flags); - default: - throw new UnrecognizedCommandException(); - } - } catch (MissingArgumentException e) { - String missingArgumentOption = e.getOption().getArgName(); - throw InvalidSyntaxException.buildMissingArgumentMessage(missingArgumentOption); - } catch (MissingOptionException e) { - List opts = e.getMissingOptions(); - String missingOptions = opts.stream().map(str -> "-" + str).collect(Collectors.joining(", ")); - throw InvalidSyntaxException.buildMissingOptionMessage(missingOptions); - } catch (ParseException e) { - throw InvalidSyntaxException.buildGenericMessage(); - } - } - - private Command handleList(List tokens) throws ParseException { - CommandLine cmd = parser.parse(buildListOptions(), tokens.toArray(new String[0])); - - if (cmd.hasOption("t")) { - String tagName = cmd.getOptionValue("t"); - return new ListCardsUnderTagCommand(tagName); - } else { - return new ListTagsCommand(); - } - } - - private Command handleDelete(List tokens) throws ParseException { - CommandLine cmd = parser.parse(buildDeleteOptions(), tokens.toArray(new String[0])); - - String tagName = cmd.getOptionValue("t"); - return new DeleteTagCommand(tagName); - } -} From 4baa467719378e04dccc1b51d2de4f7548bc83b0 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Wed, 22 Mar 2023 00:21:04 +0800 Subject: [PATCH 070/311] save data upon exit --- src/main/java/utils/command/TerminateCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/utils/command/TerminateCommand.java b/src/main/java/utils/command/TerminateCommand.java index d7795a74a2..a3c41cf49f 100644 --- a/src/main/java/utils/command/TerminateCommand.java +++ b/src/main/java/utils/command/TerminateCommand.java @@ -10,6 +10,7 @@ public class TerminateCommand extends Command { @Override public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) throws InkaException { + storage.save(cardList); ui.printBye(); } } From a6a1ac2fdf67e7585a858eca05a84afc31749df9 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Wed, 22 Mar 2023 00:58:00 +0800 Subject: [PATCH 071/311] make a hidden backup file --- .../java/utils/storage/json/JsonStorage.java | 41 ++++++++++++++----- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 9f387e0d0e..8716bdd387 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -1,6 +1,8 @@ package utils.storage.json; import com.google.gson.JsonSyntaxException; + +import java.io.*; import java.util.logging.Logger; import java.util.logging.Level; import com.google.gson.Gson; @@ -9,11 +11,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.FileReader; -import java.io.FileWriter; -import java.io.IOException; + import java.lang.reflect.Type; import java.util.ArrayList; import model.Card; @@ -29,9 +27,20 @@ public class JsonStorage extends Storage { private static Logger logger = Logger.getLogger("storage.JsonStorage"); private GsonBuilder gsonBuilder; + private File backupFile; public JsonStorage(String filePath) { super(filePath); + + // Create the backup file + String backupFilePath = filePath.replace(".json", "_backup.json"); + String backupFileDir = saveFile.getParent(); + if (backupFileDir == null) { + backupFileDir = "."; + } + backupFilePath = backupFileDir + File.separator + "." + backupFilePath.substring(backupFilePath.lastIndexOf(File.separator) + 1); + backupFile = new File(backupFilePath); + gsonBuilder = new GsonBuilder(); //Add custom adapters @@ -89,13 +98,12 @@ public void save(CardList cardList) throws StorageSaveFailure { } exportData.add("cards", cardData); - try (FileWriter fileWriter = new FileWriter(saveFile); - BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { - - Gson gson = gsonBuilder.setPrettyPrinting().create(); - String serialized = gson.toJson(exportData); + try { + // Save data to the main file + saveDataToFile(saveFile, exportData); - bufferedWriter.write(serialized); + // Save data to the backup file + saveDataToFile(backupFile, exportData); } catch (IOException e) { String absolutePath = this.saveFile.getAbsolutePath(); logger.log(Level.WARNING, "Failed to save data to savedata.json" + absolutePath, e); @@ -103,4 +111,15 @@ public void save(CardList cardList) throws StorageSaveFailure { throw new StorageSaveFailure(absolutePath); } } + + private void saveDataToFile(File file, JsonObject data) throws IOException { + try (FileWriter fileWriter = new FileWriter(file); + BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { + + Gson gson = gsonBuilder.setPrettyPrinting().create(); + String serialized = gson.toJson(data); + + bufferedWriter.write(serialized); + } + } } From 58cf40c49da3d581b38ba9a43cc80d70cae81e15 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Wed, 22 Mar 2023 01:13:37 +0800 Subject: [PATCH 072/311] try to add feature to load backup if corrupt --- .../java/utils/storage/json/JsonStorage.java | 34 +++++++++++++++---- 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 8716bdd387..d66218af9e 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -50,20 +50,21 @@ public JsonStorage(String filePath) { @Override public CardList load() throws InkaException { + CardList cardList = null; + boolean useBackup = false; + try { + FileReader fileReader = new FileReader(saveFile); - CardList cardList; - try (FileReader fileReader = new FileReader(saveFile); - BufferedReader bufferedReader = new BufferedReader(fileReader)) { + BufferedReader bufferedReader = new BufferedReader(fileReader); JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonObject(); String deckName = jsonObject.get("deckName").getAsString(); - JsonArray jsonArray = jsonObject.getAsJsonArray("cards"); Type cardListType = new TypeToken>() { }.getType(); - ArrayList cards = gsonBuilder.create().fromJson(jsonArray, cardListType); cardList = new CardList(cards); + } catch (IOException e) { String absolutePath = this.saveFile.getAbsolutePath(); logger.log(Level.WARNING, "Failed to load file from " + absolutePath, e); @@ -72,13 +73,34 @@ public CardList load() throws InkaException { } catch (NullPointerException | JsonSyntaxException e) { String absolutePath = this.saveFile.getAbsolutePath(); logger.log(Level.WARNING, "Corrupted save file: " + absolutePath, e); + useBackup = true; + } - throw new StorageCorrupted(absolutePath); + if (useBackup == true) { + logger.log(Level.INFO, "Trying to load backup file"); + try{ FileReader fileReader = new FileReader(backupFile); + BufferedReader bufferedReader = new BufferedReader(fileReader); + JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); + JsonObject jsonObject = jsonElement.getAsJsonObject(); + String deckName = jsonObject.get("deckName").getAsString(); + + JsonArray jsonArray = jsonObject.getAsJsonArray("cards"); + Type cardListType = new TypeToken>() { + }.getType(); + + ArrayList cards = gsonBuilder.create().fromJson(jsonArray, cardListType); + cardList = new CardList(cards); + } catch (IOException | NullPointerException | JsonSyntaxException ex) { + String absolutePath = this.backupFile.getAbsolutePath(); + logger.log(Level.WARNING, "Corrupted backup file: " + absolutePath, ex); + throw new StorageCorrupted(absolutePath); + } } return cardList; } + @Override public void save(CardList cardList) throws StorageSaveFailure { From a81f779d5bca5472c68894d474d4c900927470c6 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Wed, 22 Mar 2023 01:53:12 +0800 Subject: [PATCH 073/311] add redundancy to load a hidden backup savedata file if the original file is corrupt --- src/main/java/utils/storage/json/JsonStorage.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index d66218af9e..04a6b3451a 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -11,9 +11,12 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.MalformedJsonException; import java.lang.reflect.Type; import java.util.ArrayList; + + import model.Card; import model.CardList; import model.CardUUID; @@ -46,6 +49,7 @@ public JsonStorage(String filePath) { //Add custom adapters gsonBuilder.registerTypeAdapter(CardUUID.class, new CardUuidJsonAdapter()); gsonBuilder.registerTypeAdapter(TagUUID.class, new TagUuidJsonAdapter()); + } @Override @@ -56,6 +60,7 @@ public CardList load() throws InkaException { FileReader fileReader = new FileReader(saveFile); BufferedReader bufferedReader = new BufferedReader(fileReader); + gsonBuilder.setLenient(); JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonObject(); String deckName = jsonObject.get("deckName").getAsString(); @@ -74,6 +79,7 @@ public CardList load() throws InkaException { String absolutePath = this.saveFile.getAbsolutePath(); logger.log(Level.WARNING, "Corrupted save file: " + absolutePath, e); useBackup = true; + throw new StorageCorrupted(absolutePath); } if (useBackup == true) { From eb841fc14eccd24e544ce591b3d7a2da608565b2 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Wed, 22 Mar 2023 01:54:29 +0800 Subject: [PATCH 074/311] added pull request simplifier --- .../java/utils/storage/json/JsonStorage.java | 162 +++++++++++++++++- 1 file changed, 161 insertions(+), 1 deletion(-) diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 04a6b3451a..5cdaaf87e2 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -1,3 +1,164 @@ + +/*d + + + +s + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +*/ + + + package utils.storage.json; import com.google.gson.JsonSyntaxException; @@ -127,7 +288,6 @@ public void save(CardList cardList) throws StorageSaveFailure { exportData.add("cards", cardData); try { - // Save data to the main file saveDataToFile(saveFile, exportData); // Save data to the backup file From a31a92422a93c3c4fcc0c9a9452779c2445bec19 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Fri, 24 Mar 2023 01:20:02 +0800 Subject: [PATCH 075/311] fix checkstyle --- src/main/java/utils/storage/json/JsonStorage.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 5cdaaf87e2..a9c2656a25 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -172,7 +172,6 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; -import com.google.gson.stream.MalformedJsonException; import java.lang.reflect.Type; import java.util.ArrayList; @@ -246,7 +245,7 @@ public CardList load() throws InkaException { if (useBackup == true) { logger.log(Level.INFO, "Trying to load backup file"); try{ FileReader fileReader = new FileReader(backupFile); - BufferedReader bufferedReader = new BufferedReader(fileReader); + BufferedReader bufferedReader = new BufferedReader(fileReader); JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonObject(); String deckName = jsonObject.get("deckName").getAsString(); @@ -295,7 +294,6 @@ public void save(CardList cardList) throws StorageSaveFailure { } catch (IOException e) { String absolutePath = this.saveFile.getAbsolutePath(); logger.log(Level.WARNING, "Failed to save data to savedata.json" + absolutePath, e); - throw new StorageSaveFailure(absolutePath); } } From 9c3baace4c7005986e20fb2450f022da9b9cad1d Mon Sep 17 00:00:00 2001 From: iantenkai Date: Fri, 24 Mar 2023 10:30:46 +0800 Subject: [PATCH 076/311] fix more checkstyle --- .../java/utils/storage/json/JsonStorage.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index a9c2656a25..68875d6ada 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -157,13 +157,16 @@ */ - - package utils.storage.json; import com.google.gson.JsonSyntaxException; -import java.io.*; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; import java.util.logging.Logger; import java.util.logging.Level; import com.google.gson.Gson; @@ -176,7 +179,6 @@ import java.lang.reflect.Type; import java.util.ArrayList; - import model.Card; import model.CardList; import model.CardUUID; @@ -201,7 +203,8 @@ public JsonStorage(String filePath) { if (backupFileDir == null) { backupFileDir = "."; } - backupFilePath = backupFileDir + File.separator + "." + backupFilePath.substring(backupFilePath.lastIndexOf(File.separator) + 1); + backupFilePath = backupFileDir + File.separator + "." + backupFilePath.substring( + backupFilePath.lastIndexOf(File.separator) + 1); backupFile = new File(backupFilePath); gsonBuilder = new GsonBuilder(); @@ -209,7 +212,6 @@ public JsonStorage(String filePath) { //Add custom adapters gsonBuilder.registerTypeAdapter(CardUUID.class, new CardUuidJsonAdapter()); gsonBuilder.registerTypeAdapter(TagUUID.class, new TagUuidJsonAdapter()); - } @Override @@ -217,9 +219,9 @@ public CardList load() throws InkaException { CardList cardList = null; boolean useBackup = false; try { - FileReader fileReader = new FileReader(saveFile); + FileReader fileReader = new FileReader(saveFile); - BufferedReader bufferedReader = new BufferedReader(fileReader); + BufferedReader bufferedReader = new BufferedReader(fileReader); gsonBuilder.setLenient(); JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonObject(); @@ -229,7 +231,6 @@ public CardList load() throws InkaException { }.getType(); ArrayList cards = gsonBuilder.create().fromJson(jsonArray, cardListType); cardList = new CardList(cards); - } catch (IOException e) { String absolutePath = this.saveFile.getAbsolutePath(); logger.log(Level.WARNING, "Failed to load file from " + absolutePath, e); @@ -244,7 +245,8 @@ public CardList load() throws InkaException { if (useBackup == true) { logger.log(Level.INFO, "Trying to load backup file"); - try{ FileReader fileReader = new FileReader(backupFile); + try { + FileReader fileReader = new FileReader(backupFile); BufferedReader bufferedReader = new BufferedReader(fileReader); JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonObject(); @@ -266,7 +268,6 @@ public CardList load() throws InkaException { return cardList; } - @Override public void save(CardList cardList) throws StorageSaveFailure { @@ -300,7 +301,7 @@ public void save(CardList cardList) throws StorageSaveFailure { private void saveDataToFile(File file, JsonObject data) throws IOException { try (FileWriter fileWriter = new FileWriter(file); - BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { + BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { Gson gson = gsonBuilder.setPrettyPrinting().create(); String serialized = gson.toJson(data); From 1a172f9c370d9881e5c4a9170388e6a2322fb99d Mon Sep 17 00:00:00 2001 From: JangusRoundstone <88696064+JangusRoundstone@users.noreply.github.com> Date: Fri, 24 Mar 2023 15:56:44 +0800 Subject: [PATCH 077/311] Update DeveloperGuide.md Initial skeleton for developer guide --- docs/DeveloperGuide.md | 55 +++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 64e1f0ed2b..c6d6d5727b 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -1,38 +1,59 @@ # Developer Guide +* [Acknowledgements](#acknowledgements) +* [Setting up, getting started](#setting-up-getting-started) +* [Design](#design) + * [Architecture](#architecture) + * [UI Component](#ui-component) + * [Parser Component](#parser-component) +* [Implementation](#implementation) + +* [Appendix: Requirements](#appendix-requirements) + * [Product scope](#product-scope) + * [Target user profile](#target-user-profile) + * [Value proposition](#value-proposition) + * [User Stories](#user-stories) + * [Non-Functional Requirements](#non-functional-requirements) + * [Glossary](#glossary) + +--- + ## Acknowledgements -{list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well} +{list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- +include links to the original source as well} + +--- -## Design & implementation +## Setting up, getting started -{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} +--- +## Design -## Product scope -### Target user profile +* [Architecture](#architecture) +* [UI Component](#ui-component) +* [Parser Component](#parser-component) -{Describe the target user profile} +### Architecture -### Value proposition -{Describe the value proposition: what problem does it solve?} +### UI Component +API: Ui.java -## User Stories +### Parser Component +API: Parser.java -|Version| As a ... | I want to ... | So that I can ...| -|--------|----------|---------------|------------------| -|v1.0|new user|see usage instructions|refer to them when I forget how to use the application| -|v2.0|user|find a to-do item by name|locate a to-do without having to go through the entire list| -## Non-Functional Requirements +### Non-Functional Requirements {Give non-functional requirements} -## Glossary +### Glossary * *glossary item* - Definition -## Instructions for manual testing +### Instructions for manual testing -{Give instructions on how to do a manual product testing e.g., how to load sample data to be used for testing} +{Give instructions on how to do a manual product testing e.g., how to load sample data to be used +for testing} From 846a832290e926b1daa1f815b867f54b3873bb40 Mon Sep 17 00:00:00 2001 From: JangusRoundstone <88696064+JangusRoundstone@users.noreply.github.com> Date: Fri, 24 Mar 2023 18:52:55 +0800 Subject: [PATCH 078/311] Updated developer guide skeleton Updated to include fill-ins for progress made until v2.0 --- docs/DeveloperGuide.md | 87 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index c6d6d5727b..4c00c454a9 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -6,7 +6,14 @@ * [Architecture](#architecture) * [UI Component](#ui-component) * [Parser Component](#parser-component) + * [Storage Component](#storage-component) + * [CardList Component](#cardlist-component) + * [TagList Component](#taglist-component) * [Implementation](#implementation) + * [card feature](#card-feature) + * [tag feature](#tag-feature) + * [export feature](#export-feature) + * [[Proposed] deck feature](#deck-feature) * [Appendix: Requirements](#appendix-requirements) * [Product scope](#product-scope) @@ -34,6 +41,9 @@ include links to the original source as well} * [Architecture](#architecture) * [UI Component](#ui-component) * [Parser Component](#parser-component) +* [Storage Component](#storage-component) +* [CardList Component](#cardlist-component) +* [TagList Component](#taglist-component) ### Architecture @@ -44,6 +54,83 @@ API: Ui.java ### Parser Component API: Parser.java +### Storage Component +API: Storage.java + +### CardList Component +API: CardList.java + +### TagList Component + +API: TagList.java + +## Implementation + +* [card feature](#card-feature) +* [tag feature](#tag-feature) +* [export feature](#export-feature) +* [[Proposed] deck feature](#deck-feature) + +### Card Feature + +The current functionalities: +* add card to the cardlist +* delete card from the cardlist +* show all cards the cardlist contains +* add tag to a card +* view the card by its uuid + +The implementation of the features are shown below: + +* Adding a card +1. When the user enters ```card add -q ... -a ...```, the input is passed to ```Parser``` class which calls ```Parser#parseCommand()```. +2. The parser detects the keyword "card", then calls the ```Parser#CardKeywordParser()```. +3. + +The sequence diagram below shows how this feature works: +{UML will be added here.} + + +### Tag Feature + +### Export Feature + +### Deck Feature + +--- +## Appendix: Requirements + +### Product scope + +### Target user profile + +- Person who wants a convenient, versatile and portable way to revise concepts while doing coding assignments +- Person who wants to effectively learn a new language while doing coding assignments +- Person who wants to be challenged to come up with answers quickly against time pressure. + +### Value proposition + +User will be able to revise while coding or using the terminal so they don't have to switch between apps. This will maximize their productivity and refresh their memory instantly whenever they want to recall some topics suddenly appear on their mind. + + +### User Stories + +| Version | As a ... | I want to ... | So that I could ... | +|---------|----------|---------------------------------------------------|-------------------------------------------------------------------| +| v1.0 | new user | add a card containing the questions and answers | store the question in the system for later revision | +| v1.0 | new user | see a list of all cards | I can see what are all the cards I have regardless of their tags | +| v1.0 | new user | delete some cards | I can remove unwanted cards | +| v1.0 | new user | save cards to a local file | I can reuse the cards the next time I use the software | +| v1.0 | new user | load questions and answers from a file | I can use the database of flashcards | +| v1.0 | new user | save cards to a local file | I can reuse the cards the next time I use the software | +| v1.0 | new user | load questions and answers from a file | I can use the database of flashcards | +| v2.0 | new user | update the content of the card | I can ensure that the content of the card is up-to-date | +| v2.0 | new user | group my cards according to my will into "Deck" | I can easily access all of my cards in a certain category | +| v2.0 | new user | tag each card into one or more topics | I can organize my cards according to the topics associated | +| v2.0 | new user | remove the tag from a card | I can ensure that my cards have the correct tag | +| v2.0 | new user | see a list of existing tags | I can know what are the tags I have | +| v2.0 | new user | see the list of cards under a certain tag | I can know what are the cards I have under a certain tag | +| v2.0 | new user | rename an existing tag | I can update the tag with a more accurate naming | ### Non-Functional Requirements From 2b2dd10f0089f2e2d4a76465d81e6b666d42d5aa Mon Sep 17 00:00:00 2001 From: Akhil Date: Mon, 27 Mar 2023 18:20:57 +0800 Subject: [PATCH 079/311] feat: added Deck --- .savedata_backup.json | 36 ++++++ savedata.json | 30 ++++- src/main/java/Inka.java | 6 +- src/main/java/model/Card.java | 12 ++ src/main/java/model/Deck.java | 66 +++++++++++ src/main/java/model/DeckList.java | 47 ++++++++ src/main/java/model/DeckUUID.java | 19 ++++ src/main/java/model/Tag.java | 8 ++ src/main/java/model/TagList.java | 9 ++ src/main/java/utils/UserInterface.java | 43 ++++++++ .../java/utils/command/AddCardCommand.java | 3 +- .../utils/command/AddCardToDeckCommand.java | 57 ++++++++++ .../utils/command/AddCardToTagCommand.java | 3 +- .../utils/command/AddTagToDeckCommand.java | 64 +++++++++++ src/main/java/utils/command/Command.java | 4 +- .../java/utils/command/DeleteCardCommand.java | 3 +- .../java/utils/command/DeleteDeckCommand.java | 64 +++++++++++ .../java/utils/command/DeleteTagCommand.java | 3 +- .../utils/command/EditDeckNameCommand.java | 32 ++++++ .../utils/command/EditTagNameCommand.java | 4 +- .../java/utils/command/ExceptionCommand.java | 3 +- .../java/utils/command/ExportCommand.java | 3 +- .../java/utils/command/ListCardCommand.java | 3 +- .../command/ListCardsUnderDeckCommand.java | 47 ++++++++ .../command/ListCardsUnderTagCommand.java | 3 +- .../java/utils/command/ListDecksCommand.java | 16 +++ .../java/utils/command/ListTagsCommand.java | 3 +- .../command/ListTagsUnderDeckCommand.java | 45 ++++++++ .../java/utils/command/PrintHelpCommand.java | 3 +- .../java/utils/command/TerminateCommand.java | 3 +- .../java/utils/command/ViewCardCommand.java | 3 +- .../CreateTagBeforeAddingToDeck.java | 7 ++ .../exceptions/DeckNotFoundException.java | 7 ++ .../java/utils/parser/CardKeywordParser.java | 37 +++++-- .../java/utils/parser/DeckKeywordParser.java | 103 ++++++++++++++++++ src/main/java/utils/parser/Parser.java | 10 +- .../java/utils/parser/TagKeywordParser.java | 22 +++- 37 files changed, 798 insertions(+), 33 deletions(-) create mode 100644 .savedata_backup.json create mode 100644 src/main/java/model/Deck.java create mode 100644 src/main/java/model/DeckList.java create mode 100644 src/main/java/model/DeckUUID.java create mode 100644 src/main/java/utils/command/AddCardToDeckCommand.java create mode 100644 src/main/java/utils/command/AddTagToDeckCommand.java create mode 100644 src/main/java/utils/command/DeleteDeckCommand.java create mode 100644 src/main/java/utils/command/EditDeckNameCommand.java create mode 100644 src/main/java/utils/command/ListCardsUnderDeckCommand.java create mode 100644 src/main/java/utils/command/ListDecksCommand.java create mode 100644 src/main/java/utils/command/ListTagsUnderDeckCommand.java create mode 100644 src/main/java/utils/exceptions/CreateTagBeforeAddingToDeck.java create mode 100644 src/main/java/utils/exceptions/DeckNotFoundException.java create mode 100644 src/main/java/utils/parser/DeckKeywordParser.java diff --git a/.savedata_backup.json b/.savedata_backup.json new file mode 100644 index 0000000000..3c44700ba9 --- /dev/null +++ b/.savedata_backup.json @@ -0,0 +1,36 @@ +{ + "deckName": "lky deck", + "numCards": 6, + "cards": [ + { + "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", + "question": "is akhil a dirty commie", + "answer": "yes" + }, + { + "uuid": "00000000-0000-0000-0000-000000000001", + "question": "why do other groups keep attackin ian", + "answer": "he is not a dirty commie" + }, + { + "uuid": "fbfda5e0-7816-493a-a99e-5da006315d17", + "question": "how is this", + "answer": "dunno" + }, + { + "uuid": "5f8a7558-40dc-4e5a-8d3d-44678f3e01f8", + "question": "test_deck_creation", + "answer": "deck_creation_passed" + }, + { + "uuid": "6232a5eb-f3d1-4449-8e0c-8f82187e5fc8", + "question": "deck test", + "answer": "deck test" + }, + { + "uuid": "da243c73-4da1-4f24-b3aa-7a5a7d96d2b8", + "question": "rename_checker", + "answer": "rename_checker" + } + ] +} \ No newline at end of file diff --git a/savedata.json b/savedata.json index cb7ab1daa5..3c44700ba9 100644 --- a/savedata.json +++ b/savedata.json @@ -1,18 +1,36 @@ { "deckName": "lky deck", - "numCards": 2, + "numCards": 6, "cards": [ { "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", "question": "is akhil a dirty commie", - "answer": "yes", - "tags": [] + "answer": "yes" }, { "uuid": "00000000-0000-0000-0000-000000000001", "question": "why do other groups keep attackin ian", - "answer": "he is not a dirty commie", - "tags": [] + "answer": "he is not a dirty commie" + }, + { + "uuid": "fbfda5e0-7816-493a-a99e-5da006315d17", + "question": "how is this", + "answer": "dunno" + }, + { + "uuid": "5f8a7558-40dc-4e5a-8d3d-44678f3e01f8", + "question": "test_deck_creation", + "answer": "deck_creation_passed" + }, + { + "uuid": "6232a5eb-f3d1-4449-8e0c-8f82187e5fc8", + "question": "deck test", + "answer": "deck test" + }, + { + "uuid": "da243c73-4da1-4f24-b3aa-7a5a7d96d2b8", + "question": "rename_checker", + "answer": "rename_checker" } ] -} +} \ No newline at end of file diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index d3d870e52b..69ee111f27 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,4 +1,5 @@ import model.CardList; +import model.DeckList; import model.TagList; import utils.UserInterface; import utils.command.Command; @@ -15,12 +16,13 @@ public class Inka { private CardList cardList; private TagList tagList; + private DeckList deckList; public Inka(String filePath) { storage = new JsonStorage(filePath); ui = new UserInterface(); parser = new Parser(); - + deckList = new DeckList(); cardList = loadSaveFile(); tagList = new TagList(); } @@ -60,7 +62,7 @@ public void run() { String userInput = ui.getUserInput(); try { Command command = parser.parseCommand(userInput); - command.execute(cardList, tagList, ui, storage); + command.execute(cardList, tagList, deckList,ui, storage); } catch (InkaException e) { ui.printException(e); } diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 7f5ee629e9..55859b66b9 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -10,6 +10,8 @@ public class Card { private String answer; private ArrayList tags = new ArrayList<>(); + private ArrayList decks = new ArrayList<>(); + // Temporary constructor for Card, to be revised later to also consider uuid and tag etc public Card(String question, String answer) { this.question = question; @@ -51,6 +53,9 @@ public CardUUID getUuid() { public ArrayList getTagsUUID() { return this.tags; } + public ArrayList getDecksUUID() { + return this.decks; + } public String getQuestion() { return question; @@ -63,11 +68,18 @@ public String getAnswer() { public void addTag(TagUUID tagUUID) { tags.add(tagUUID); } + public void addDeck(DeckUUID deckUUID) { + decks.add(deckUUID); + } public void removeTag(TagUUID tagUUID) { tags.remove(tagUUID); } + public void removeDecks(DeckUUID deckUUID) { + decks.remove(deckUUID); + } + @Override public String toString() { return "Qn: " + this.question + "\nAns: " + this.answer + "\nUUID: " + this.uuid; diff --git a/src/main/java/model/Deck.java b/src/main/java/model/Deck.java new file mode 100644 index 0000000000..2a738d7c60 --- /dev/null +++ b/src/main/java/model/Deck.java @@ -0,0 +1,66 @@ +package model; + +import java.util.ArrayList; +import java.util.UUID; + +public class Deck { + private String deckName; + private DeckUUID deckUUID; + + private ArrayList cards = new ArrayList<>(); + private ArrayList tags = new ArrayList<>(); + + public Deck(String deckName) { + this.deckName = deckName; + this.deckUUID = new DeckUUID(UUID.randomUUID()); + } + + public Deck(String deckName, CardUUID cardUUID) { + this.deckName = deckName; + this.cards.add(cardUUID); + this.deckUUID = new DeckUUID(UUID.randomUUID()); + } + + public Deck(String deckName, TagUUID tagUUID) { + this.deckName = deckName; + this.tags.add(tagUUID); + this.deckUUID = new DeckUUID(UUID.randomUUID()); + } + public Deck(String deckName, TagUUID tagUUID, CardUUID cardUUID) { + this.deckName = deckName; + this.tags.add(tagUUID); + this.cards.add(cardUUID); + this.deckUUID = new DeckUUID(UUID.randomUUID()); + } + + public String getDeckName() { + return deckName; + } + + public DeckUUID getDeckUUID() { + return deckUUID; + } + + public ArrayList getCardsUUID() { + return cards; + } + + public ArrayList getTagsUUID() { + return tags; + } + + public void editDeckName(String newDeckName) { + this.deckName = newDeckName; + } + public void addCard(CardUUID cardUUID) { + cards.add(cardUUID); + } + public void addTag(TagUUID tagUUID) { + this.tags.add(tagUUID); + } + + @Override + public String toString() { + return "Deck name : " + deckName + ", deck uuid : " + deckUUID; + } +} diff --git a/src/main/java/model/DeckList.java b/src/main/java/model/DeckList.java new file mode 100644 index 0000000000..f659e8ab16 --- /dev/null +++ b/src/main/java/model/DeckList.java @@ -0,0 +1,47 @@ +package model; + +import java.util.ArrayList; +import java.util.List; + +public class DeckList { + private List deckList; + + public DeckList() { + this.deckList = new ArrayList<>(); + } + + public List getTags() { + return this.deckList; + } + + public void addDeck(Deck deck) { + this.deckList.add(deck); + } + + public boolean deleteDeckByUUID(DeckUUID uuid) { + return deckList.removeIf(deck -> (deck.getDeckUUID().equals(uuid))); + } + public boolean isEmpty() { + return deckList.isEmpty(); + } + + public int size() { + return this.deckList.size(); + } + + public Deck get(int id) { + return this.deckList.get(id); + } + + public Deck findDeckFromName(String deckName) { + for (Deck deck : deckList) { + if (deck.getDeckName().equals(deckName)) { + return deck; + } + } + return null; + } + public void delete(int id) { + this.deckList.remove(id); + } +} diff --git a/src/main/java/model/DeckUUID.java b/src/main/java/model/DeckUUID.java new file mode 100644 index 0000000000..cde45eb711 --- /dev/null +++ b/src/main/java/model/DeckUUID.java @@ -0,0 +1,19 @@ +package model; + +import java.util.UUID; +public class DeckUUID { + UUID uuid; + + public DeckUUID(UUID uuid) { + this.uuid = uuid; + } + + public boolean equals(DeckUUID deckUUID) { + return this.uuid.equals(deckUUID.uuid); + } + + @Override + public String toString() { + return this.uuid.toString(); + } +} diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 9169fea06a..140c8cda10 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -7,6 +7,7 @@ public class Tag { private TagUUID uuid; private String tagName; private ArrayList cards = new ArrayList<>(); + private ArrayList decks = new ArrayList<>(); public Tag(String tagName, CardUUID cardUUID) { this.tagName = tagName; @@ -33,6 +34,13 @@ public ArrayList getCardsUUID() { public void addCard(CardUUID cardUUID) { cards.add(cardUUID); } + public void removeDecks(DeckUUID deckUUID) { + decks.remove(deckUUID); + } + + public void addDeck(DeckUUID deckUUID) { + decks.add(deckUUID); + } @Override public String toString() { diff --git a/src/main/java/model/TagList.java b/src/main/java/model/TagList.java index 16b92f93b1..deb985eff4 100644 --- a/src/main/java/model/TagList.java +++ b/src/main/java/model/TagList.java @@ -41,6 +41,15 @@ public Tag findTagFromName(String tagName) { return null; } + public Tag findTagFromUUID(TagUUID tagUUID) { + for (Tag tag : tags) { + if (tag.getUUID().equals(tagUUID)) { + return tag; + } + } + return null; + } + public boolean deleteTagByUUID(TagUUID uuid) { return tags.removeIf(tag -> (tag.getUUID().equals(uuid))); } diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 522e082311..4aba8557d8 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -5,6 +5,9 @@ import model.Card; import model.CardList; import model.CardUUID; +import model.Deck; +import model.DeckList; +import model.DeckUUID; import model.Tag; import model.TagList; import model.TagUUID; @@ -109,6 +112,17 @@ public void printTagList(TagList tagList) { } } + public void printDeckList(DeckList deckList) { + if (deckList.isEmpty()) { + System.out.println("Your current list of decks is empty."); + } else { + System.out.println("Here is your current list of decks:"); + for (int i = 0; i < deckList.size(); ++i) { + System.out.println((i + 1) + "." + deckList.get(i)); + } + } + } + public void printTags(ArrayList tags) { if (tags.isEmpty()) { System.out.println("There is currently no tags"); @@ -124,20 +138,49 @@ public void printAddTagToCardSuccess(CardUUID cardUUID, TagUUID tagUUID) { System.out.println("Successfully added tag " + tagUUID + " to card " + cardUUID); } + public void printAddCardToDeckSuccess(CardUUID cardUUID, DeckUUID deckUUID) { + System.out.println("Successfully added card " + cardUUID + " to deck " + deckUUID); + } + public void printAddTagToDeckSuccess(TagUUID tagUUID, DeckUUID deckUUID) { + System.out.println("Successfully added tag " + tagUUID + " to deck " + deckUUID); + } + public void printTagCreationSuccess() { System.out.println("Tag does not exist.. creating a new one"); } + public void printDeckCreationSuccess() { + System.out.println("Deck does not exist.. creating a new one"); + } + public void printRemoveTagFromCard(CardUUID cardUUID, TagUUID tagUUID) { System.out.println("Successfully removed tag " + tagUUID + " from card " + cardUUID); } + public void printRemoveDeckFromCard(CardUUID cardUUID, DeckUUID deckUUID) { + System.out.println("Successfully removed deck " + deckUUID + " from card " + cardUUID); + } + + public void printRemoveDeckFromTag(TagUUID tagUUID, DeckUUID deckUUID) { + System.out.println("Successfully removed deck " + deckUUID + " from tag " + tagUUID); + } + public void printRemoveTagFromTagList(TagUUID tagUUID) { System.out.println("Successfully removed tag " + tagUUID + " from the tag list."); } + public void printRemoveDeckFromDeckList(DeckUUID deckUUID) { + System.out.println("Successfully removed deck " + deckUUID + " from the deck list."); + } + public void printEditTagNameSuccess(String oldTagName, Tag tag) { System.out.println( "Tag " + tag.getUUID() + "tag name has been changed from " + oldTagName + " to " + tag.getTagName()); } + + public void printEditDeckNameSuccess(String oldDeckName, Deck deck) { + System.out.println( + "Deck " + deck.getDeckUUID() + "deck name has been changed from " + oldDeckName + + " to " + deck.getDeckName()); + } } diff --git a/src/main/java/utils/command/AddCardCommand.java b/src/main/java/utils/command/AddCardCommand.java index aba90193d3..4f5472b12a 100644 --- a/src/main/java/utils/command/AddCardCommand.java +++ b/src/main/java/utils/command/AddCardCommand.java @@ -2,6 +2,7 @@ import model.Card; import model.CardList; +import model.DeckList; import model.TagList; import utils.UserInterface; import utils.exceptions.InkaException; @@ -15,7 +16,7 @@ public AddCardCommand(Card card) { } @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { cardList.addCard(card); ui.printAddQuestionSuccess(); diff --git a/src/main/java/utils/command/AddCardToDeckCommand.java b/src/main/java/utils/command/AddCardToDeckCommand.java new file mode 100644 index 0000000000..87bc7b0eee --- /dev/null +++ b/src/main/java/utils/command/AddCardToDeckCommand.java @@ -0,0 +1,57 @@ +package utils.command; + +import java.util.UUID; +import model.Card; +import model.CardList; +import model.CardUUID; +import model.Deck; +import model.DeckList; +import model.DeckUUID; +import model.TagList; +import utils.UserInterface; +import utils.exceptions.InkaException; +import utils.exceptions.UUIDWrongFormatException; +import utils.storage.IDataStorage; + +public class AddCardToDeckCommand extends Command { + + private String deckName; + private DeckUUID deckUUID; + private CardUUID cardUUID; + + public AddCardToDeckCommand(String deckName, String cardUUID) throws InkaException { + this.deckName = deckName; + try { + this.cardUUID = new CardUUID(UUID.fromString(cardUUID)); + } catch (IllegalArgumentException e) { + throw new UUIDWrongFormatException(); + } + } + + private void addCardToDeck(DeckList deckList, CardList cardList, UserInterface ui) throws InkaException { + //find the corresponding Deck and Card based on its deckName and card uuid + Deck deckToAdd = deckList.findDeckFromName(deckName); + Card cardToAdd = cardList.findCardFromUUID(cardUUID); + assert cardToAdd != null; + + if (deckToAdd == null) { + ui.printDeckCreationSuccess(); + deckToAdd = new Deck(deckName, cardUUID); + deckList.addDeck(deckToAdd); + } else { + deckToAdd.addCard(cardUUID); + } + + //add the tag uuid to the card + deckUUID = deckToAdd.getDeckUUID(); + cardToAdd.addDeck(deckUUID); + } + + @Override + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) + throws InkaException { + addCardToDeck(deckList, cardList, ui); + ui.printAddCardToDeckSuccess(cardUUID, deckUUID); + } + +} diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index e4ae1fc896..26fcc4afcf 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -4,6 +4,7 @@ import model.Card; import model.CardList; import model.CardUUID; +import model.DeckList; import model.Tag; import model.TagList; import model.TagUUID; @@ -54,7 +55,7 @@ private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) } @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { addCardToTag(tagList, cardList, ui); ui.printAddTagToCardSuccess(cardUUID, tagUUID); diff --git a/src/main/java/utils/command/AddTagToDeckCommand.java b/src/main/java/utils/command/AddTagToDeckCommand.java new file mode 100644 index 0000000000..925798815c --- /dev/null +++ b/src/main/java/utils/command/AddTagToDeckCommand.java @@ -0,0 +1,64 @@ +package utils.command; +import java.util.UUID; +import model.CardList; +import model.Deck; +import model.DeckList; +import model.DeckUUID; +import model.Tag; +import model.TagList; +import model.TagUUID; +import utils.UserInterface; +import utils.exceptions.CreateTagBeforeAddingToDeck; +import utils.exceptions.InkaException; +import utils.exceptions.UUIDWrongFormatException; +import utils.storage.IDataStorage; + +public class AddTagToDeckCommand extends Command { + private String deckName; + private DeckUUID deckUUID; + private TagUUID tagUUID; + + public AddTagToDeckCommand(String deckName, String tagUUID) throws InkaException { + this.deckName = deckName; + //this.tagName = tagName; + try { + this.tagUUID = new TagUUID(UUID.fromString(tagUUID)); + } catch (IllegalArgumentException e) { + throw new UUIDWrongFormatException(); + } + } + + private void addTagToDeck(DeckList deckList, TagList tagList, UserInterface ui) throws InkaException { + //find the corresponding Deck and Card based on its deckName and card uuid + Tag tagToAdd = tagList.findTagFromUUID(tagUUID); + if(tagToAdd==null) { + // exception here + throw new CreateTagBeforeAddingToDeck(); + } + //assert tagToAdd != null; // for the time being, can add newer windowed features later + + Deck deckToAdd = deckList.findDeckFromName(deckName); + if (deckToAdd == null) { + ui.printDeckCreationSuccess(); + deckToAdd = new Deck(deckName, tagUUID); + deckList.addDeck(deckToAdd); + } else { + deckToAdd.addTag(tagUUID); + } + deckUUID = deckToAdd.getDeckUUID(); + tagToAdd.addDeck(deckUUID); + + //TODO: Set up a relation between a Tag and Deck attached to, if any + //add the tag uuid to the card + //leave for the time being, no functionality at this case + // deckUUID = deckToAdd.getDeckUUID(); + // cardToAdd.addDeck(deckUUID); + } + + @Override + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) + throws InkaException { + addTagToDeck(deckList, tagList, ui); + ui.printAddTagToDeckSuccess(tagUUID, deckUUID); + } +} diff --git a/src/main/java/utils/command/Command.java b/src/main/java/utils/command/Command.java index f346685ae7..7d407c98b0 100644 --- a/src/main/java/utils/command/Command.java +++ b/src/main/java/utils/command/Command.java @@ -1,12 +1,14 @@ package utils.command; import model.CardList; +import model.DeckList; import model.TagList; import utils.UserInterface; import utils.exceptions.InkaException; import utils.storage.IDataStorage; public abstract class Command { - public abstract void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public abstract void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, + IDataStorage storage) throws InkaException; } diff --git a/src/main/java/utils/command/DeleteCardCommand.java b/src/main/java/utils/command/DeleteCardCommand.java index b8592fa38a..9572ab919d 100644 --- a/src/main/java/utils/command/DeleteCardCommand.java +++ b/src/main/java/utils/command/DeleteCardCommand.java @@ -1,6 +1,7 @@ package utils.command; import model.CardList; +import model.DeckList; import model.TagList; import utils.UserInterface; import utils.exceptions.UnknownItem; @@ -16,7 +17,7 @@ public DeleteCardCommand(int index) { } @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { try { // if the input is delete 1, this will delete the first element of the array which is element 0. diff --git a/src/main/java/utils/command/DeleteDeckCommand.java b/src/main/java/utils/command/DeleteDeckCommand.java new file mode 100644 index 0000000000..7e787d798d --- /dev/null +++ b/src/main/java/utils/command/DeleteDeckCommand.java @@ -0,0 +1,64 @@ +package utils.command; + +import model.Card; +import model.CardList; +import model.CardUUID; +import model.Deck; +import model.DeckList; +import model.DeckUUID; +import model.Tag; +import model.TagList; +import model.TagUUID; +import utils.UserInterface; +import utils.exceptions.DeckNotFoundException; +import utils.exceptions.InkaException; +import utils.storage.IDataStorage; + +public class DeleteDeckCommand extends Command{ + private String deckName; + private DeckUUID deckUUID; + private TagUUID tagUUID; + + public DeleteDeckCommand(String deckName) { + this.deckName = deckName; + } + + private void removeDeckFromCards(CardList cardList ,DeckList deckList, UserInterface userInterface) + throws InkaException { + Deck deck = deckList.findDeckFromName(deckName); + if(deck==null) { + throw new DeckNotFoundException(); + } + deckUUID = deck.getDeckUUID(); + for (CardUUID cardUUID : deck.getCardsUUID()) { + Card affectedCard = cardList.findCardFromUUID(cardUUID); + affectedCard.removeDecks(deckUUID); + userInterface.printRemoveDeckFromCard(affectedCard.getUuid(), deckUUID); + } + } + + private void removeDeckFromTags(TagList tagList ,DeckList deckList, UserInterface userInterface) + throws InkaException { + Deck deck = deckList.findDeckFromName(deckName); + if(deck==null) { + throw new DeckNotFoundException(); + } + deckUUID = deck.getDeckUUID(); + for (TagUUID tgUUID : deck.getTagsUUID()) { + Tag affectedTag = tagList.findTagFromUUID(tgUUID); + affectedTag.removeDecks(deckUUID); + userInterface.printRemoveDeckFromTag(affectedTag.getUUID(), deckUUID); + } + } + @Override + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) + throws InkaException { + removeDeckFromCards(cardList, deckList, ui); + removeDeckFromTags(tagList, deckList, ui); + boolean isDeleted = deckList.deleteDeckByUUID(deckUUID); + if(isDeleted==false) { + //throw exception here + } + ui.printRemoveDeckFromDeckList(deckUUID); + } +} diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 2830442350..6c390d6a6c 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -3,6 +3,7 @@ import model.Card; import model.CardList; import model.CardUUID; +import model.DeckList; import model.Tag; import model.TagList; import model.TagUUID; @@ -42,7 +43,7 @@ private void removeTagFromCards(CardList cardList, TagList tagList, UserInterfac } @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { removeTagFromCards(cardList, tagList, ui); boolean isDeleted = tagList.deleteTagByUUID(tagUUID); diff --git a/src/main/java/utils/command/EditDeckNameCommand.java b/src/main/java/utils/command/EditDeckNameCommand.java new file mode 100644 index 0000000000..4a9f9abfb8 --- /dev/null +++ b/src/main/java/utils/command/EditDeckNameCommand.java @@ -0,0 +1,32 @@ +package utils.command; + +import model.CardList; +import model.DeckList; +import model.TagList; +import utils.UserInterface; +import utils.exceptions.InkaException; +import utils.exceptions.TagNotFoundException; +import utils.storage.IDataStorage; +import model.Deck; + +public class EditDeckNameCommand extends Command{ + private String oldDeckName; + private String newDeckName; + + public EditDeckNameCommand(String oldDeckName, String newDeckName) { + this.oldDeckName = oldDeckName; + this.newDeckName = newDeckName; + } + + @Override + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) + throws InkaException { + Deck deck = deckList.findDeckFromName(oldDeckName); + if (deck == null) { + throw new TagNotFoundException(); + } + + deck.editDeckName(newDeckName); + ui.printEditDeckNameSuccess(oldDeckName, deck); + } +} diff --git a/src/main/java/utils/command/EditTagNameCommand.java b/src/main/java/utils/command/EditTagNameCommand.java index 1e4de30126..03fbc2e4bf 100644 --- a/src/main/java/utils/command/EditTagNameCommand.java +++ b/src/main/java/utils/command/EditTagNameCommand.java @@ -1,6 +1,7 @@ package utils.command; import model.CardList; +import model.DeckList; import model.Tag; import model.TagList; import utils.UserInterface; @@ -17,7 +18,8 @@ public EditTagNameCommand(String oldTagName, String newTagName) { this.newTagName = newTagName; } - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + @Override + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { Tag tag = tagList.findTagFromName(oldTagName); if (tag == null) { diff --git a/src/main/java/utils/command/ExceptionCommand.java b/src/main/java/utils/command/ExceptionCommand.java index 4ec8840b5d..250a20794a 100644 --- a/src/main/java/utils/command/ExceptionCommand.java +++ b/src/main/java/utils/command/ExceptionCommand.java @@ -1,6 +1,7 @@ package utils.command; import model.CardList; +import model.DeckList; import model.TagList; import utils.UserInterface; import utils.exceptions.InkaException; @@ -8,7 +9,7 @@ public class ExceptionCommand extends Command { @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { ui.printWrongCommand(); } diff --git a/src/main/java/utils/command/ExportCommand.java b/src/main/java/utils/command/ExportCommand.java index 31d0e14ef5..bad36fbf34 100644 --- a/src/main/java/utils/command/ExportCommand.java +++ b/src/main/java/utils/command/ExportCommand.java @@ -1,6 +1,7 @@ package utils.command; import model.CardList; +import model.DeckList; import model.TagList; import utils.UserInterface; import utils.exceptions.InkaException; @@ -9,7 +10,7 @@ public class ExportCommand extends Command { @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { storage.save(cardList); ui.printSaveSuccess(); diff --git a/src/main/java/utils/command/ListCardCommand.java b/src/main/java/utils/command/ListCardCommand.java index 46252b4383..1734291fdd 100644 --- a/src/main/java/utils/command/ListCardCommand.java +++ b/src/main/java/utils/command/ListCardCommand.java @@ -1,6 +1,7 @@ package utils.command; import model.CardList; +import model.DeckList; import model.TagList; import utils.UserInterface; import utils.exceptions.InkaException; @@ -8,7 +9,7 @@ public class ListCardCommand extends Command { @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { ui.printCardList(cardList); } diff --git a/src/main/java/utils/command/ListCardsUnderDeckCommand.java b/src/main/java/utils/command/ListCardsUnderDeckCommand.java new file mode 100644 index 0000000000..86b240ff6b --- /dev/null +++ b/src/main/java/utils/command/ListCardsUnderDeckCommand.java @@ -0,0 +1,47 @@ +package utils.command; + +import java.util.ArrayList; +import model.Card; +import model.CardList; +import model.CardUUID; +import model.Deck; +import model.DeckList; +import model.TagList; +import utils.UserInterface; +import utils.exceptions.DeckNotFoundException; +import utils.exceptions.InkaException; +import utils.storage.IDataStorage; + +public class ListCardsUnderDeckCommand extends Command{ + + private String deckName; + + public ListCardsUnderDeckCommand(String deckName) { + this.deckName = deckName; + } + + private CardList findCardSUnderDeck(CardList cardList, DeckList deckList) throws InkaException { + Deck foundDeck = deckList.findDeckFromName(deckName); + if(foundDeck==null) { + throw new DeckNotFoundException(); + } + ArrayList cardsUUID = foundDeck.getCardsUUID(); + CardList foundCardList = new CardList(); + + for (Card card : cardList.getCards()) { + for (CardUUID cardUUID : cardsUUID) { + if (cardUUID.equals(card.getUuid())) { + foundCardList.addCard(card); + } + } + } + return foundCardList; + } + + @Override + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) + throws InkaException { + CardList foundCardList = findCardSUnderDeck(cardList, deckList); + ui.printCardList(foundCardList); + } +} diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java index 9709f60bc1..0021a9a89c 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -4,6 +4,7 @@ import model.Card; import model.CardList; import model.CardUUID; +import model.DeckList; import model.Tag; import model.TagList; import utils.UserInterface; @@ -46,7 +47,7 @@ private CardList findCardsUnderTag(CardList cardList, TagList tagList) throws In } @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { CardList foundCardList = findCardsUnderTag(cardList, tagList); ui.printCardList(foundCardList); diff --git a/src/main/java/utils/command/ListDecksCommand.java b/src/main/java/utils/command/ListDecksCommand.java new file mode 100644 index 0000000000..4321905e47 --- /dev/null +++ b/src/main/java/utils/command/ListDecksCommand.java @@ -0,0 +1,16 @@ +package utils.command; + +import model.CardList; +import model.DeckList; +import model.TagList; +import utils.UserInterface; +import utils.exceptions.InkaException; +import utils.storage.IDataStorage; + +public class ListDecksCommand extends Command{ + @Override + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) + throws InkaException { + ui.printDeckList(deckList); + } +} diff --git a/src/main/java/utils/command/ListTagsCommand.java b/src/main/java/utils/command/ListTagsCommand.java index 3f95bcde31..71789223fa 100644 --- a/src/main/java/utils/command/ListTagsCommand.java +++ b/src/main/java/utils/command/ListTagsCommand.java @@ -1,6 +1,7 @@ package utils.command; import model.CardList; +import model.DeckList; import model.TagList; import utils.UserInterface; import utils.exceptions.InkaException; @@ -8,7 +9,7 @@ public class ListTagsCommand extends Command { @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { ui.printTagList(tagList); } diff --git a/src/main/java/utils/command/ListTagsUnderDeckCommand.java b/src/main/java/utils/command/ListTagsUnderDeckCommand.java new file mode 100644 index 0000000000..aa7220c3b2 --- /dev/null +++ b/src/main/java/utils/command/ListTagsUnderDeckCommand.java @@ -0,0 +1,45 @@ +package utils.command; + +import java.util.ArrayList; +import model.CardList; +import model.Deck; +import model.DeckList; +import model.Tag; +import model.TagList; +import model.TagUUID; +import utils.UserInterface; +import utils.exceptions.DeckNotFoundException; +import utils.exceptions.InkaException; +import utils.storage.IDataStorage; + +public class ListTagsUnderDeckCommand extends Command { + private String deckName; + + public ListTagsUnderDeckCommand(String deckName) { + this.deckName = deckName; + } + + private TagList findTagsUnderDeck(TagList tagList, DeckList deckList) throws InkaException { + Deck foundDeck = deckList.findDeckFromName(deckName); + if(foundDeck==null) { + throw new DeckNotFoundException(); + } + ArrayList tagUUIDS = foundDeck.getTagsUUID(); + TagList foundTagList = new TagList(); + + for (Tag tag : tagList.getTags()) { + for (TagUUID tagUUID : tagUUIDS) { + if (tagUUID.equals(tag.getUUID())) { + foundTagList.addTag(tag); + } + } + } + return foundTagList; + } + @Override + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) + throws InkaException { + TagList foundTagList = findTagsUnderDeck(tagList, deckList); + ui.printTagList(foundTagList); + } +} diff --git a/src/main/java/utils/command/PrintHelpCommand.java b/src/main/java/utils/command/PrintHelpCommand.java index 1b8f5c9c0e..e4cfdfdd03 100644 --- a/src/main/java/utils/command/PrintHelpCommand.java +++ b/src/main/java/utils/command/PrintHelpCommand.java @@ -1,6 +1,7 @@ package utils.command; import model.CardList; +import model.DeckList; import model.TagList; import utils.UserInterface; import utils.exceptions.InkaException; @@ -15,7 +16,7 @@ public PrintHelpCommand(String helpMessage) { } @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { ui.printHelp(helpMessage); } diff --git a/src/main/java/utils/command/TerminateCommand.java b/src/main/java/utils/command/TerminateCommand.java index a3c41cf49f..7d00c5c6e9 100644 --- a/src/main/java/utils/command/TerminateCommand.java +++ b/src/main/java/utils/command/TerminateCommand.java @@ -1,6 +1,7 @@ package utils.command; import model.CardList; +import model.DeckList; import model.TagList; import utils.UserInterface; import utils.exceptions.InkaException; @@ -8,7 +9,7 @@ public class TerminateCommand extends Command { @Override - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { storage.save(cardList); ui.printBye(); diff --git a/src/main/java/utils/command/ViewCardCommand.java b/src/main/java/utils/command/ViewCardCommand.java index 30ad75b450..e10a1cece0 100644 --- a/src/main/java/utils/command/ViewCardCommand.java +++ b/src/main/java/utils/command/ViewCardCommand.java @@ -6,6 +6,7 @@ import model.Card; import model.CardList; import model.CardUUID; +import model.DeckList; import model.Tag; import model.TagList; import model.TagUUID; @@ -45,7 +46,7 @@ public ArrayList findTagsFromTagUUID(ArrayList uuids, TagList tagL return tags; } - public void execute(CardList cardList, TagList tagList, UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { List cards = cardList.getCards(); ArrayList tags; diff --git a/src/main/java/utils/exceptions/CreateTagBeforeAddingToDeck.java b/src/main/java/utils/exceptions/CreateTagBeforeAddingToDeck.java new file mode 100644 index 0000000000..d1c9818e0f --- /dev/null +++ b/src/main/java/utils/exceptions/CreateTagBeforeAddingToDeck.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class CreateTagBeforeAddingToDeck extends InkaException{ + public CreateTagBeforeAddingToDeck() { + super("Please ensure that you create a tag first!"); + } +} diff --git a/src/main/java/utils/exceptions/DeckNotFoundException.java b/src/main/java/utils/exceptions/DeckNotFoundException.java new file mode 100644 index 0000000000..61987d82f9 --- /dev/null +++ b/src/main/java/utils/exceptions/DeckNotFoundException.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class DeckNotFoundException extends InkaException { + public DeckNotFoundException() { + super("Deck cannot be found"); + } +} diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 6ab917425a..c1da49e3d2 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -8,6 +8,7 @@ import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import utils.command.AddCardCommand; +import utils.command.AddCardToDeckCommand; import utils.command.AddCardToTagCommand; import utils.command.Command; import utils.command.DeleteCardCommand; @@ -26,6 +27,8 @@ public class CardKeywordParser extends KeywordParser { public static final String TAG_ACTION = "tag"; public static final String VIEW_ACTION = "view"; + public static final String DECK_ACTION = "deck"; + private DefaultParser parser; public CardKeywordParser() { @@ -67,6 +70,14 @@ private static Options buildTagOptions() { return options; } + private static Options buildDeckOptions() { + Options options = new Options(); + options.addRequiredOption("c", "card", true, "card UUID"); + options.addRequiredOption("d", "deck", true, "deck name"); + + return options; + } + private static Options buildViewOptions() { Options options = new Options(); options.addRequiredOption("c", "card", true, "card UUID"); @@ -75,6 +86,7 @@ private static Options buildViewOptions() { } @Override + //TODO: add a card to the deck command protected Command handleAction(String action, List tokens) throws ParseException, InkaException { switch (action) { @@ -82,6 +94,8 @@ protected Command handleAction(String action, List tokens) return handleAdd(tokens); case DELETE_ACTION: return handleDelete(tokens); + case DECK_ACTION: + return handleDeck(tokens); case HELP_ACTION: return handleHelp(); case LIST_ACTION: @@ -113,16 +127,14 @@ private Command handleDelete(List tokens) throws ParseException { return new DeleteCardCommand(deleteIndex); } + //TODO: Fix issue here private Command handleHelp() { - // Combine all actions - // @formatter:off - String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, - VIEW_ACTION}; - // @formatter:on - String[] headerList = {"Adding cards", "Deleting cards", "List all cards", "Tagging cards", "View cards"}; + // Combine all action + String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, VIEW_ACTION, DECK_ACTION}; + String[] headerList = new String[]{"Adding cards", + "Deleting cards", "List all cards", "Tagging cards", "View cards", "Adding cards to Deck"}; Options[] optionsList = {buildAddOptions(), buildDeleteOptions(), new Options(), buildTagOptions(), - buildViewOptions()}; - + buildViewOptions(), buildDeckOptions()}; String helpMessage = formatHelpMessage("card", actionList, headerList, optionsList); return new PrintHelpCommand(helpMessage); } @@ -140,6 +152,15 @@ private Command handleTag(List tokens) throws ParseException, InkaExcept return new AddCardToTagCommand(tagName, cardUUID); } + private Command handleDeck(List tokens) throws ParseException, InkaException { + CommandLine cmd = parser.parse(buildDeckOptions(), tokens.toArray(new String[0])); + + String cardUUID = cmd.getOptionValue("c"); + String deckName = cmd.getOptionValue("d"); + + return new AddCardToDeckCommand(deckName, cardUUID); + } + private Command handleView(List tokens) throws ParseException, InkaException { CommandLine cmd = parser.parse(buildViewOptions(), tokens.toArray(new String[0])); diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java new file mode 100644 index 0000000000..e5b7a7332a --- /dev/null +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -0,0 +1,103 @@ +package utils.parser; + +import java.util.List; +import org.apache.commons.cli.CommandLine; +import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.Options; +import org.apache.commons.cli.ParseException; +import utils.command.Command; +import utils.command.DeleteDeckCommand; +import utils.command.EditDeckNameCommand; +import utils.command.ListCardsUnderDeckCommand; +import utils.command.ListDecksCommand; +import utils.command.ListTagsUnderDeckCommand; +import utils.command.PrintHelpCommand; +import utils.exceptions.UnrecognizedCommandException; + +public class DeckKeywordParser extends KeywordParser{ + public static final String DELETE_ACTION = "delete"; + public static final String EDIT_ACTION = "edit"; + public static final String HELP_ACTION = "help"; + public static final String LIST_ACTION = "list"; + private DefaultParser parser; + public DeckKeywordParser() { + this.parser = new DefaultParser(false); + } + + private static Options buildDeleteOptions() { + Options options = new Options(); + options.addRequiredOption("d", "deck", true, "deck name"); + // extra stuff down here + // options.addOption("c", "card", true, "card name"); + // options.addOption("t", "tag", true, "tag name"); + + return options; + } + private static Options buildEditOptions() { + Options options = new Options(); + options.addRequiredOption("o", "old", true, "Old deck name"); + options.addRequiredOption("n", "new", true, "New deck name"); + + return options; + } + private static Options buildListOptions() { + Options options = new Options(); + options.addOption("c", "cards", true, "deck name"); + options.addOption("t", "tags", true, "deck name"); + return options; + } + @Override + protected Command handleAction(String action, List tokens) + throws ParseException, UnrecognizedCommandException { + switch (action) { + case DELETE_ACTION: + return handleDelete(tokens); + case EDIT_ACTION: + return handleEdit(tokens); + case HELP_ACTION: + return handleHelp(); + case LIST_ACTION: + return handleList(tokens); + default: + throw new UnrecognizedCommandException(); + } + } + + private Command handleDelete(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildDeleteOptions(), tokens.toArray(new String[0])); + + String deckName = cmd.getOptionValue("d"); + return new DeleteDeckCommand(deckName); + } + + private Command handleList(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildListOptions(), tokens.toArray(new String[0])); + + if (cmd.hasOption("c")) { + String deckName = cmd.getOptionValue("c"); + return new ListCardsUnderDeckCommand(deckName); + } else if(cmd.hasOption("t")) { + String deckName = cmd.getOptionValue("t"); + return new ListTagsUnderDeckCommand(deckName); + } else { + return new ListDecksCommand(); + } + } + private Command handleEdit(List tokens) throws ParseException { + CommandLine cmd = parser.parse(buildEditOptions(), tokens.toArray(new String[0])); + + String oldDeckName = cmd.getOptionValue("o"); + String newDeckName = cmd.getOptionValue("n"); + return new EditDeckNameCommand(oldDeckName, newDeckName); + } + + private Command handleHelp() { + // Combine all actions + String[] actionList = {EDIT_ACTION, DELETE_ACTION, LIST_ACTION}; + String[] headerList = {"Edit existing decks", "Delete decks", "List decks"}; + Options[] optionsList = {buildEditOptions(), buildDeleteOptions(), buildListOptions()}; + + String helpMessage = formatHelpMessage("deck", actionList, headerList, optionsList); + return new PrintHelpCommand(helpMessage); + } +} diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/parser/Parser.java index be7348952d..aa8ff6041f 100644 --- a/src/main/java/utils/parser/Parser.java +++ b/src/main/java/utils/parser/Parser.java @@ -13,6 +13,7 @@ public class Parser { public static final String CARD_KEYWORD = "card"; public static final String TAG_KEYWORD = "tag"; + public static final String DECK_KEYWORD = "deck"; public static final String EXPORT_KEYWORD = "export"; public static final String EXIT_KEYWORD = "bye"; public static final String HELP_KEYWORD = "help"; @@ -21,6 +22,8 @@ public class Parser { private final CardKeywordParser cardKeywordParser = new CardKeywordParser(); private final TagKeywordParser tagKeywordParser = new TagKeywordParser(); + private final DeckKeywordParser deckKeywordParser = new DeckKeywordParser(); + private boolean isExecuting; public Parser() { @@ -52,6 +55,9 @@ public Command parseCommand(String userInput) throws InkaException { List optionTokens = userInputTokens.subList(1, userInputTokens.size()); switch (keyword) { + case DECK_KEYWORD: + return deckKeywordParser.parseTokens(optionTokens); + case CARD_KEYWORD: return cardKeywordParser.parseTokens(optionTokens); @@ -94,11 +100,11 @@ private String getTopLevelHelpMessage() { } private String formatHelpLine(String keyword, String description) { - final int PAD_LENGTH = 12; + final int padLength = 12; String formatted = keyword; // Right-pad to PAD_LENGTH - formatted += " ".repeat(PAD_LENGTH - formatted.length()); + formatted += " ".repeat(padLength - formatted.length()); formatted += " - "; formatted += description; formatted += System.lineSeparator(); diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java index d8d9983600..bb14d6bf52 100644 --- a/src/main/java/utils/parser/TagKeywordParser.java +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -5,12 +5,14 @@ import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; +import utils.command.AddTagToDeckCommand; import utils.command.Command; import utils.command.DeleteTagCommand; import utils.command.EditTagNameCommand; import utils.command.ListCardsUnderTagCommand; import utils.command.ListTagsCommand; import utils.command.PrintHelpCommand; +import utils.exceptions.InkaException; import utils.exceptions.UnrecognizedCommandException; public class TagKeywordParser extends KeywordParser { @@ -19,6 +21,7 @@ public class TagKeywordParser extends KeywordParser { public static final String EDIT_ACTION = "edit"; public static final String HELP_ACTION = "help"; public static final String LIST_ACTION = "list"; + public static final String DECK_ACTION = "deck"; private DefaultParser parser; @@ -32,6 +35,13 @@ private static Options buildDeleteOptions() { return options; } + private static Options buildDeckOptions() { + Options options = new Options(); + options.addRequiredOption("t", "tag", true, "tag name"); + options.addRequiredOption("d", "deck", true, "deck name"); + + return options; + } private static Options buildEditOptions() { Options options = new Options(); @@ -50,8 +60,10 @@ private static Options buildListOptions() { @Override protected Command handleAction(String action, List tokens) - throws ParseException, UnrecognizedCommandException { + throws ParseException, InkaException { switch (action) { + case DECK_ACTION: + return handleDeck(tokens); case DELETE_ACTION: return handleDelete(tokens); case EDIT_ACTION: @@ -100,4 +112,12 @@ private Command handleList(List tokens) throws ParseException { return new ListTagsCommand(); } } + private Command handleDeck(List tokens) throws ParseException, InkaException { + CommandLine cmd = parser.parse(buildDeckOptions(), tokens.toArray(new String[0])); + + String tagUUID = cmd.getOptionValue("t"); + String deckName = cmd.getOptionValue("d"); + + return new AddTagToDeckCommand(deckName, tagUUID); + } } From 5eff7d2d19d0774779350261089ea265e4f3749d Mon Sep 17 00:00:00 2001 From: Akhil Date: Mon, 27 Mar 2023 18:36:50 +0800 Subject: [PATCH 080/311] fixed: tests --- src/test/java/utils/parser/CardParserTest.java | 17 ++++++++++------- src/test/java/utils/parser/TagParserTest.java | 7 +++++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/test/java/utils/parser/CardParserTest.java b/src/test/java/utils/parser/CardParserTest.java index 707d3ee2a2..4a7e02967a 100644 --- a/src/test/java/utils/parser/CardParserTest.java +++ b/src/test/java/utils/parser/CardParserTest.java @@ -4,6 +4,7 @@ import model.Card; import model.CardList; +import model.DeckList; import model.TagList; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -25,6 +26,7 @@ public class CardParserTest { private UserInterface ui; private Storage storage; private Parser parser; + private DeckList deckList; /** * Each test should have a new instance of all these @@ -36,6 +38,7 @@ void init() { ui = new UserInterface(); storage = new FakeStorage(); parser = new Parser(); + deckList = new DeckList(); } //region `card add` tests @@ -43,7 +46,7 @@ void init() { public void parse_card_add() throws InkaException { Command cmd = parser.parseCommand("card add -q QUESTION -a ANSWER"); assert cmd instanceof AddCardCommand; - cmd.execute(cardList, tagList, ui, storage); + cmd.execute(cardList, tagList, deckList , ui, storage); Card card = cardList.get(0); assert card.getQuestion().equals("QUESTION") : "Unexpected question parsed"; @@ -54,7 +57,7 @@ public void parse_card_add() throws InkaException { public void parse_card_addLongFlag() throws InkaException { Command cmd = parser.parseCommand("card add --question QUESTION --answer ANSWER"); assert cmd instanceof AddCardCommand; - cmd.execute(cardList, tagList, ui, storage); + cmd.execute(cardList, tagList, deckList ,ui, storage); Card card = cardList.get(0); assert card.getQuestion().equals("QUESTION") : "Unexpected question parsed"; @@ -65,7 +68,7 @@ public void parse_card_addLongFlag() throws InkaException { public void parse_card_addWithWhitespaces() throws InkaException { Command cmd = parser.parseCommand("card add -q MULTI WORD QUESTION -a MULTI WORD ANSWER"); assert cmd instanceof AddCardCommand; - cmd.execute(cardList, tagList, ui, storage); + cmd.execute(cardList, tagList, deckList ,ui, storage); Card card = cardList.get(0); assert card.getQuestion().equals("MULTI WORD QUESTION") : "Unexpected question parsed"; @@ -99,7 +102,7 @@ public void parse_card_delete() throws InkaException { Command cmd = parser.parseCommand("card delete -i 1"); assert cmd instanceof DeleteCardCommand; - cmd.execute(cardList, tagList, ui, storage); + cmd.execute(cardList, tagList, deckList, ui, storage); assert cardList.isEmpty() : "Should have deleted Card"; } @@ -110,7 +113,7 @@ public void parse_card_deleteLongFlag() throws InkaException { Command cmd = parser.parseCommand("card delete --index 1"); assert cmd instanceof DeleteCardCommand; - cmd.execute(cardList, tagList, ui, storage); + cmd.execute(cardList, tagList, deckList,ui, storage); assert cardList.isEmpty() : "Should have deleted Card"; } @@ -118,7 +121,7 @@ public void parse_card_deleteLongFlag() throws InkaException { @Test public void parse_card_deleteEmpty() throws InkaException { Command cmd = parser.parseCommand("card delete -i 1"); - assertThrows(UnknownItem.class, () -> cmd.execute(cardList, tagList, ui, storage), + assertThrows(UnknownItem.class, () -> cmd.execute(cardList, tagList, deckList,ui, storage), "Should fail to delete nothing"); } @@ -127,7 +130,7 @@ public void parse_card_deleteBadIndex() throws InkaException { cardList.addCard(new Card("QUESTION", "ANSWER")); Command cmd = parser.parseCommand("card delete -i 0"); - assertThrows(UnknownItem.class, () -> cmd.execute(cardList, tagList, ui, storage), + assertThrows(UnknownItem.class, () -> cmd.execute(cardList, tagList, deckList,ui, storage), "Should fail to delete nothing"); } diff --git a/src/test/java/utils/parser/TagParserTest.java b/src/test/java/utils/parser/TagParserTest.java index c803237c86..cccba8a50b 100644 --- a/src/test/java/utils/parser/TagParserTest.java +++ b/src/test/java/utils/parser/TagParserTest.java @@ -4,6 +4,7 @@ import model.Card; import model.CardList; +import model.DeckList; import model.Tag; import model.TagList; import org.junit.jupiter.api.BeforeEach; @@ -24,6 +25,7 @@ public class TagParserTest { private UserInterface ui; private Storage storage; private Parser parser; + private DeckList deckList; /** * Each test should have a new instance of all these @@ -35,6 +37,7 @@ void init() { ui = new UserInterface(); storage = new FakeStorage(); parser = new Parser(); + deckList = new DeckList(); } @Test @@ -63,7 +66,7 @@ public void parse_tag_delete() throws InkaException { Command cmd = parser.parseCommand("tag delete -t tagName"); assert cmd instanceof DeleteTagCommand; - cmd.execute(cardList, tagList, ui, storage); + cmd.execute(cardList, tagList, deckList,ui, storage); assert tagList.isEmpty(); } @@ -71,7 +74,7 @@ public void parse_tag_delete() throws InkaException { public void parse_tag_deleteUnknownTag() throws InkaException { Command cmd = parser.parseCommand("tag delete -t tagName"); assert cmd instanceof DeleteTagCommand; - assertThrows(TagNotFoundException.class, () -> cmd.execute(cardList, tagList, ui, storage), + assertThrows(TagNotFoundException.class, () -> cmd.execute(cardList, tagList, deckList,ui, storage), "Should not delete non-existent tag"); } } From 7bb2f780e0e318df3ace6c98ae444349f7d2eedd Mon Sep 17 00:00:00 2001 From: Akhil Date: Tue, 28 Mar 2023 17:10:09 +0800 Subject: [PATCH 081/311] feat: Added Card and Tag removal from Deck --- .savedata_backup.json | 13 +++-- savedata.json | 13 +++-- src/main/java/model/Deck.java | 9 ++++ src/main/java/utils/UserInterface.java | 8 +++ .../command/RemoveCardFromDeckCommand.java | 52 +++++++++++++++++++ .../command/RemoveTagFromDeckCommand.java | 50 ++++++++++++++++++ .../utils/exceptions/CardNeverWasInDeck.java | 7 +++ .../utils/exceptions/TagNeverWasInDeck.java | 7 +++ .../java/utils/parser/DeckKeywordParser.java | 19 +++++-- 9 files changed, 165 insertions(+), 13 deletions(-) create mode 100644 src/main/java/utils/command/RemoveCardFromDeckCommand.java create mode 100644 src/main/java/utils/command/RemoveTagFromDeckCommand.java create mode 100644 src/main/java/utils/exceptions/CardNeverWasInDeck.java create mode 100644 src/main/java/utils/exceptions/TagNeverWasInDeck.java diff --git a/.savedata_backup.json b/.savedata_backup.json index 3c44700ba9..5f03a55c29 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -1,6 +1,6 @@ { "deckName": "lky deck", - "numCards": 6, + "numCards": 7, "cards": [ { "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", @@ -28,9 +28,14 @@ "answer": "deck test" }, { - "uuid": "da243c73-4da1-4f24-b3aa-7a5a7d96d2b8", - "question": "rename_checker", - "answer": "rename_checker" + "uuid": "520f8e00-c6d6-4daa-844f-66566d1f02da", + "question": "card_test", + "answer": "card_answer" + }, + { + "uuid": "39c5c798-092b-4c44-8889-43995b425476", + "question": "tag_test", + "answer": "tag_answer" } ] } \ No newline at end of file diff --git a/savedata.json b/savedata.json index 3c44700ba9..5f03a55c29 100644 --- a/savedata.json +++ b/savedata.json @@ -1,6 +1,6 @@ { "deckName": "lky deck", - "numCards": 6, + "numCards": 7, "cards": [ { "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", @@ -28,9 +28,14 @@ "answer": "deck test" }, { - "uuid": "da243c73-4da1-4f24-b3aa-7a5a7d96d2b8", - "question": "rename_checker", - "answer": "rename_checker" + "uuid": "520f8e00-c6d6-4daa-844f-66566d1f02da", + "question": "card_test", + "answer": "card_answer" + }, + { + "uuid": "39c5c798-092b-4c44-8889-43995b425476", + "question": "tag_test", + "answer": "tag_answer" } ] } \ No newline at end of file diff --git a/src/main/java/model/Deck.java b/src/main/java/model/Deck.java index 2a738d7c60..65007e484f 100644 --- a/src/main/java/model/Deck.java +++ b/src/main/java/model/Deck.java @@ -37,6 +37,11 @@ public String getDeckName() { return deckName; } + + public void setTags(ArrayList tags) { + this.tags = tags; + } + public DeckUUID getDeckUUID() { return deckUUID; } @@ -59,6 +64,10 @@ public void addTag(TagUUID tagUUID) { this.tags.add(tagUUID); } + public void setCards(ArrayList cards) { + this.cards = cards; + } + @Override public String toString() { return "Deck name : " + deckName + ", deck uuid : " + deckUUID; diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 4aba8557d8..4a1d88dee0 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -141,6 +141,14 @@ public void printAddTagToCardSuccess(CardUUID cardUUID, TagUUID tagUUID) { public void printAddCardToDeckSuccess(CardUUID cardUUID, DeckUUID deckUUID) { System.out.println("Successfully added card " + cardUUID + " to deck " + deckUUID); } + + public void printRemoveCardFromDeckSuccess(CardUUID cardUUID, String deckName) { + System.out.println("Successfully removed card " + cardUUID + " from deck " + deckName); + } + + public void printRemoveTagFromDeckSuccess(TagUUID tagUUID, String deckName) { + System.out.println("Successfully removed tag " + tagUUID + " from deck " + deckName); + } public void printAddTagToDeckSuccess(TagUUID tagUUID, DeckUUID deckUUID) { System.out.println("Successfully added tag " + tagUUID + " to deck " + deckUUID); } diff --git a/src/main/java/utils/command/RemoveCardFromDeckCommand.java b/src/main/java/utils/command/RemoveCardFromDeckCommand.java new file mode 100644 index 0000000000..2acc26cb38 --- /dev/null +++ b/src/main/java/utils/command/RemoveCardFromDeckCommand.java @@ -0,0 +1,52 @@ +package utils.command; + +import java.util.ArrayList; +import java.util.UUID; +import model.CardList; +import model.CardUUID; +import model.Deck; +import model.DeckList; +import model.TagList; +import utils.UserInterface; +import utils.exceptions.CardNeverWasInDeck; +import utils.exceptions.DeckNotFoundException; +import utils.exceptions.InkaException; +import utils.exceptions.UUIDWrongFormatException; +import utils.storage.IDataStorage; + +public class RemoveCardFromDeckCommand extends Command{ + private CardUUID cardUUID; + + private String deckName; + + public RemoveCardFromDeckCommand(String cardUUID, String deckName) throws InkaException { + this.deckName = deckName; + //this.tagName = tagName; + try { + this.cardUUID = new CardUUID(UUID.fromString(cardUUID)); + } catch (IllegalArgumentException e) { + throw new UUIDWrongFormatException(); + } + } + + public void removeCardFromDeck(DeckList deckList,String deckName, CardUUID cardUUID) + throws InkaException { + Deck deck = deckList.findDeckFromName(deckName); + if(deck==null) { + throw new DeckNotFoundException(); + } + ArrayList deckCardList = deck.getCardsUUID(); + boolean wasCardInDeck = deckCardList.removeIf(card -> card.equals(cardUUID)); + if(wasCardInDeck==false) { + throw new CardNeverWasInDeck(); + } + deck.setCards(deckCardList); + } + @Override + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) + throws InkaException { + removeCardFromDeck(deckList, deckName, cardUUID); + ui.printRemoveCardFromDeckSuccess(cardUUID, deckName); + } + +} diff --git a/src/main/java/utils/command/RemoveTagFromDeckCommand.java b/src/main/java/utils/command/RemoveTagFromDeckCommand.java new file mode 100644 index 0000000000..577d4ea99b --- /dev/null +++ b/src/main/java/utils/command/RemoveTagFromDeckCommand.java @@ -0,0 +1,50 @@ +package utils.command; + +import java.util.ArrayList; +import java.util.UUID; +import model.CardList; +import model.Deck; +import model.DeckList; +import model.TagList; +import model.TagUUID; +import utils.UserInterface; +import utils.exceptions.DeckNotFoundException; +import utils.exceptions.InkaException; +import utils.exceptions.TagNeverWasInDeck; +import utils.exceptions.UUIDWrongFormatException; +import utils.storage.IDataStorage; + +public class RemoveTagFromDeckCommand extends Command { + private TagUUID tagUUID; + private String deckName; + + public RemoveTagFromDeckCommand(String tagUUID, String deckName) throws InkaException { + this.deckName = deckName; + //this.tagName = tagName; + try { + this.tagUUID = new TagUUID(UUID.fromString(tagUUID)); + } catch (IllegalArgumentException e) { + throw new UUIDWrongFormatException(); + } + } + + public void removeTagFromDeck(DeckList deckList,String deckName, TagUUID tagUUID) + throws InkaException { + Deck deck = deckList.findDeckFromName(deckName); + if(deck==null) { + throw new DeckNotFoundException(); + } + ArrayList deckTagList = deck.getTagsUUID(); + boolean wasTagInDeck = deckTagList.removeIf(tag -> tag.equals(tagUUID)); + if(wasTagInDeck==false) { + throw new TagNeverWasInDeck(); + } + deck.setTags(deckTagList); + } + @Override + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) + throws InkaException { + removeTagFromDeck(deckList, deckName, tagUUID); + ui.printRemoveTagFromDeckSuccess(tagUUID, deckName); + } +} diff --git a/src/main/java/utils/exceptions/CardNeverWasInDeck.java b/src/main/java/utils/exceptions/CardNeverWasInDeck.java new file mode 100644 index 0000000000..8f24bd1820 --- /dev/null +++ b/src/main/java/utils/exceptions/CardNeverWasInDeck.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class CardNeverWasInDeck extends InkaException { + public CardNeverWasInDeck() { + super("The card was never in the deck"); + } +} diff --git a/src/main/java/utils/exceptions/TagNeverWasInDeck.java b/src/main/java/utils/exceptions/TagNeverWasInDeck.java new file mode 100644 index 0000000000..c6de4c5751 --- /dev/null +++ b/src/main/java/utils/exceptions/TagNeverWasInDeck.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class TagNeverWasInDeck extends InkaException{ + public TagNeverWasInDeck() { + super("Tag was never in deck"); + } +} diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java index e5b7a7332a..82363f7eeb 100644 --- a/src/main/java/utils/parser/DeckKeywordParser.java +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -12,6 +12,9 @@ import utils.command.ListDecksCommand; import utils.command.ListTagsUnderDeckCommand; import utils.command.PrintHelpCommand; +import utils.command.RemoveCardFromDeckCommand; +import utils.command.RemoveTagFromDeckCommand; +import utils.exceptions.InkaException; import utils.exceptions.UnrecognizedCommandException; public class DeckKeywordParser extends KeywordParser{ @@ -28,8 +31,8 @@ private static Options buildDeleteOptions() { Options options = new Options(); options.addRequiredOption("d", "deck", true, "deck name"); // extra stuff down here - // options.addOption("c", "card", true, "card name"); - // options.addOption("t", "tag", true, "tag name"); + options.addOption("c", "card", true, "card name"); + options.addOption("t", "tag", true, "tag name"); return options; } @@ -48,7 +51,7 @@ private static Options buildListOptions() { } @Override protected Command handleAction(String action, List tokens) - throws ParseException, UnrecognizedCommandException { + throws ParseException, UnrecognizedCommandException, InkaException { switch (action) { case DELETE_ACTION: return handleDelete(tokens); @@ -63,11 +66,17 @@ protected Command handleAction(String action, List tokens) } } - private Command handleDelete(List tokens) throws ParseException { + private Command handleDelete(List tokens) throws ParseException, InkaException { CommandLine cmd = parser.parse(buildDeleteOptions(), tokens.toArray(new String[0])); String deckName = cmd.getOptionValue("d"); - return new DeleteDeckCommand(deckName); + if(cmd.hasOption("c")) { + return new RemoveCardFromDeckCommand(cmd.getOptionValue("c"), deckName); + } else if (cmd.hasOption("t")) { + return new RemoveTagFromDeckCommand(cmd.getOptionValue("t"), deckName); + } else { + return new DeleteDeckCommand(deckName); + } } private Command handleList(List tokens) throws ParseException { From f691d58049b4120bbe451ee172c5fbd98fb6747b Mon Sep 17 00:00:00 2001 From: Akhil Date: Tue, 28 Mar 2023 19:36:58 +0800 Subject: [PATCH 082/311] fix: fixed naming standards --- src/main/java/utils/command/ListCardsUnderDeckCommand.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/utils/command/ListCardsUnderDeckCommand.java b/src/main/java/utils/command/ListCardsUnderDeckCommand.java index 86b240ff6b..b5328595f0 100644 --- a/src/main/java/utils/command/ListCardsUnderDeckCommand.java +++ b/src/main/java/utils/command/ListCardsUnderDeckCommand.java @@ -20,7 +20,7 @@ public ListCardsUnderDeckCommand(String deckName) { this.deckName = deckName; } - private CardList findCardSUnderDeck(CardList cardList, DeckList deckList) throws InkaException { + private CardList findCardsUnderDeck(CardList cardList, DeckList deckList) throws InkaException { Deck foundDeck = deckList.findDeckFromName(deckName); if(foundDeck==null) { throw new DeckNotFoundException(); @@ -41,7 +41,7 @@ private CardList findCardSUnderDeck(CardList cardList, DeckList deckList) throws @Override public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { - CardList foundCardList = findCardSUnderDeck(cardList, deckList); + CardList foundCardList = findCardsUnderDeck(cardList, deckList); ui.printCardList(foundCardList); } } From 3965faecc482b937952e17841c324866a9a66b44 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 28 Mar 2023 20:28:15 +0800 Subject: [PATCH 083/311] feat: support for multiple token options --- .../java/utils/parser/CardKeywordParser.java | 26 +++++++++++-------- src/main/java/utils/parser/KeywordParser.java | 23 ++++++++++++++++ .../java/utils/parser/TagKeywordParser.java | 7 +++-- 3 files changed, 43 insertions(+), 13 deletions(-) diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index c1da49e3d2..0e66251c6c 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -38,14 +38,10 @@ public CardKeywordParser() { private static Options buildAddOptions() { Options options = new Options(); - Option questionOption = new Option("q", "question", true, "card question"); - questionOption.setRequired(true); - questionOption.setArgs(Option.UNLIMITED_VALUES); + Option questionOption = buildMultipleTokenOption("q", "question", true, "card question", true); options.addOption(questionOption); - Option answerOption = new Option("a", "answer", true, "card answer"); - answerOption.setRequired(true); - answerOption.setArgs(Option.UNLIMITED_VALUES); + Option answerOption = buildMultipleTokenOption("a", "answer", true, "card answer", true); options.addOption(answerOption); return options; @@ -65,7 +61,9 @@ private static Options buildDeleteOptions() { private static Options buildTagOptions() { Options options = new Options(); options.addRequiredOption("c", "card", true, "card UUID"); - options.addRequiredOption("t", "tag", true, "tag name"); + + Option tag = buildMultipleTokenOption("t", "tag", true, "tag name", true); + options.addOption(tag); return options; } @@ -132,7 +130,7 @@ private Command handleHelp() { // Combine all action String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, VIEW_ACTION, DECK_ACTION}; String[] headerList = new String[]{"Adding cards", - "Deleting cards", "List all cards", "Tagging cards", "View cards", "Adding cards to Deck"}; + "Deleting cards", "List all cards", "Tagging cards", "View cards", "Adding cards to Deck"}; Options[] optionsList = {buildAddOptions(), buildDeleteOptions(), new Options(), buildTagOptions(), buildViewOptions(), buildDeckOptions()}; String helpMessage = formatHelpMessage("card", actionList, headerList, optionsList); @@ -147,9 +145,15 @@ private Command handleTag(List tokens) throws ParseException, InkaExcept CommandLine cmd = parser.parse(buildTagOptions(), tokens.toArray(new String[0])); String cardUUID = cmd.getOptionValue("c"); - String tagName = cmd.getOptionValue("t"); - - return new AddCardToTagCommand(tagName, cardUUID); + String[] tagNameTokens = cmd.getOptionValues("t"); + if (tagNameTokens.length > 1) { + // Notify user + String tagName = String.join("-", tagNameTokens); + return new AddCardToTagCommand(tagName, cardUUID); + } + else { + return new AddCardToTagCommand(tagNameTokens[0], cardUUID); + } } private Command handleDeck(List tokens) throws ParseException, InkaException { diff --git a/src/main/java/utils/parser/KeywordParser.java b/src/main/java/utils/parser/KeywordParser.java index f99789c652..f76023149e 100644 --- a/src/main/java/utils/parser/KeywordParser.java +++ b/src/main/java/utils/parser/KeywordParser.java @@ -7,6 +7,7 @@ import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.MissingArgumentException; import org.apache.commons.cli.MissingOptionException; +import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import utils.command.Command; @@ -23,6 +24,28 @@ public abstract class KeywordParser { protected static final int FORMAT_HELP_LEFT_PAD = 0; protected static final int FORMAT_HELP_DESC_PAD = 10; + /** + * Wrapper around {@link Option} constructor to set option to accept multiple tokens (whitespace-separated + * arguments). The arguments to this option should then be obtained using + * {@link org.apache.commons.cli.CommandLine#getOptionValues(char)}. + * + * @param option See {@link Option#Option(String, String, boolean, String)} + * @param longOption See {@link Option#Option(String, String, boolean, String)} + * @param hasArg See {@link Option#Option(String, String, boolean, String)} + * @param description See {@link Option#Option(String, String, boolean, String)} + * @param required If Option is a required option + * @return Configured Option + */ + protected static Option buildMultipleTokenOption(String option, String longOption, boolean hasArg, + String description, + boolean required) { + Option opt = new Option(option, longOption, hasArg, description); + opt.setArgs(Option.UNLIMITED_VALUES); + opt.setRequired(required); + + return opt; + } + @SuppressWarnings("unchecked") // Safe, CLI library just returns List instead of List public Command parseTokens(List tokens) throws InkaException { if (tokens.size() == 0) { diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java index bb14d6bf52..b5e524419e 100644 --- a/src/main/java/utils/parser/TagKeywordParser.java +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -3,6 +3,7 @@ import java.util.List; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.DefaultParser; +import org.apache.commons.cli.Option; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import utils.command.AddTagToDeckCommand; @@ -46,14 +47,16 @@ private static Options buildDeckOptions() { private static Options buildEditOptions() { Options options = new Options(); options.addRequiredOption("o", "old", true, "Old tag name"); - options.addRequiredOption("n", "new", true, "New tag name"); + + Option newTag = buildMultipleTokenOption("n", "new", true, "New tag name", true); + options.addOption(newTag); return options; } private static Options buildListOptions() { Options options = new Options(); - options.addOption("t", "tag", true, "tag name"); + options.addOption("t", "tag", true, "tag name (optional)"); return options; } From d8b872d61a39fff21d7deb3c3600f3d64bfdf2fd Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 28 Mar 2023 20:28:59 +0800 Subject: [PATCH 084/311] test: support whitespace for tag names --- .../java/utils/parser/CardParserTest.java | 47 ++++++++++++------- src/test/java/utils/parser/TagParserTest.java | 27 ++++++++++- 2 files changed, 56 insertions(+), 18 deletions(-) diff --git a/src/test/java/utils/parser/CardParserTest.java b/src/test/java/utils/parser/CardParserTest.java index 4a7e02967a..e06fbb62de 100644 --- a/src/test/java/utils/parser/CardParserTest.java +++ b/src/test/java/utils/parser/CardParserTest.java @@ -158,32 +158,29 @@ public void parse_card_deleteMissingArguments() { @Test public void parse_card_tag() throws InkaException { + cardList.addCard(Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000")); Command cmd = parser.parseCommand("card tag -c 00000000-0000-0000-0000-000000000000 -t tagName"); assert cmd instanceof AddCardToTagCommand; + cmd.execute(cardList, tagList, deckList, ui, storage); + assert tagList.findTagFromName("tagName") != null; } @Test public void parse_card_tagLongFlag() throws InkaException { - Command cmd = parser.parseCommand("card tag --card 00000000-0000-0000-0000-000000000000 --tag tagName"); + cardList.addCard(Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000")); + Command cmd = parser.parseCommand("card tag -c 00000000-0000-0000-0000-000000000000 --tag tagName"); assert cmd instanceof AddCardToTagCommand; + cmd.execute(cardList, tagList, deckList, ui, storage); + assert tagList.findTagFromName("tagName") != null; } @Test - public void parse_card_viewMissingOptions() { - String[] testInputs = {"card view"}; - for (String testInput : testInputs) { - assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testInput), - "Should be invalid syntax"); - } - } - - @Test - public void parse_card_viewMissingArguments() { - String[] testInputs = {"card view -i"}; - for (String testInput : testInputs) { - assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testInput), - "Should be invalid syntax"); - } + public void parse_card_tagWhitespaceName() throws InkaException { + cardList.addCard(Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000")); + Command cmd = parser.parseCommand("card tag -c 00000000-0000-0000-0000-000000000000 -t tag name"); + assert cmd instanceof AddCardToTagCommand; + cmd.execute(cardList, tagList,deckList, ui, storage); + assert tagList.findTagFromName("tag-name") != null; } //endregion @@ -202,5 +199,23 @@ public void parse_card_viewLongFlag() throws InkaException { assert cmd instanceof ViewCardCommand; } + @Test + public void parse_card_viewMissingOptions() { + String[] testInputs = {"card view"}; + for (String testInput : testInputs) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testInput), + "Should be invalid syntax"); + } + } + + @Test + public void parse_card_viewMissingArguments() { + String[] testInputs = {"card view -i"}; + for (String testInput : testInputs) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testInput), + "Should be invalid syntax"); + } + } + //endregion } diff --git a/src/test/java/utils/parser/TagParserTest.java b/src/test/java/utils/parser/TagParserTest.java index cccba8a50b..09586bd722 100644 --- a/src/test/java/utils/parser/TagParserTest.java +++ b/src/test/java/utils/parser/TagParserTest.java @@ -2,8 +2,10 @@ import static org.junit.jupiter.api.Assertions.assertThrows; +import java.util.UUID; import model.Card; import model.CardList; +import model.CardUUID; import model.DeckList; import model.Tag; import model.TagList; @@ -12,6 +14,7 @@ import utils.UserInterface; import utils.command.Command; import utils.command.DeleteTagCommand; +import utils.command.EditTagNameCommand; import utils.command.ListCardsUnderTagCommand; import utils.command.ListTagsCommand; import utils.exceptions.InkaException; @@ -66,7 +69,7 @@ public void parse_tag_delete() throws InkaException { Command cmd = parser.parseCommand("tag delete -t tagName"); assert cmd instanceof DeleteTagCommand; - cmd.execute(cardList, tagList, deckList,ui, storage); + cmd.execute(cardList, tagList, deckList, ui, storage); assert tagList.isEmpty(); } @@ -74,7 +77,27 @@ public void parse_tag_delete() throws InkaException { public void parse_tag_deleteUnknownTag() throws InkaException { Command cmd = parser.parseCommand("tag delete -t tagName"); assert cmd instanceof DeleteTagCommand; - assertThrows(TagNotFoundException.class, () -> cmd.execute(cardList, tagList, deckList,ui, storage), + assertThrows(TagNotFoundException.class, () -> cmd.execute(cardList, tagList, deckList, ui, storage), + "Should not delete non-existent tag"); + } + + @Test + public void parse_tag_edit() throws InkaException { + CardUUID cardUUID = new CardUUID(UUID.fromString("00000000-0000-0000-0000-000000000000")); + tagList.addTag(new Tag("oldTag", cardUUID)); + + Command cmd = parser.parseCommand("tag edit -o oldTag -n newTag"); + assert cmd instanceof EditTagNameCommand; + cmd.execute(cardList, tagList, deckList, ui, storage); + assert tagList.findTagFromName("oldTag") == null; + assert tagList.findTagFromName("newTag") != null; + } + + @Test + public void parse_tag_editUnknownTag() throws InkaException { + Command cmd = parser.parseCommand("tag edit -o oldTag -n newTag"); + assert cmd instanceof EditTagNameCommand; + assertThrows(TagNotFoundException.class, () -> cmd.execute(cardList, tagList, deckList, ui, storage), "Should not delete non-existent tag"); } } From 0219cbd2ea39abd3d7aafa3eb5cec030ae900e55 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 28 Mar 2023 20:31:14 +0800 Subject: [PATCH 085/311] feat: display tagName when creating new tag --- src/main/java/utils/UserInterface.java | 4 ++-- src/main/java/utils/command/AddCardToTagCommand.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 4aba8557d8..2b62e8f98f 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -145,8 +145,8 @@ public void printAddTagToDeckSuccess(TagUUID tagUUID, DeckUUID deckUUID) { System.out.println("Successfully added tag " + tagUUID + " to deck " + deckUUID); } - public void printTagCreationSuccess() { - System.out.println("Tag does not exist.. creating a new one"); + public void printTagCreationSuccess(String tagName) { + System.out.println("Tag does not exist.. creating a new tag: " + tagName); } public void printDeckCreationSuccess() { diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 26fcc4afcf..220979e57f 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -42,7 +42,7 @@ private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) assert cardToAdd != null; if (tagToAdd == null) { - ui.printTagCreationSuccess(); + ui.printTagCreationSuccess(tagName); tagToAdd = new Tag(tagName, cardUUID); tagList.addTag(tagToAdd); } else { From 9eca07ac71c19830243fea709877eef5898de7e3 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Tue, 28 Mar 2023 23:05:42 +0800 Subject: [PATCH 086/311] fix: indent issue --- src/main/java/utils/parser/CardKeywordParser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 0e66251c6c..45fdeafcf0 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -130,7 +130,7 @@ private Command handleHelp() { // Combine all action String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, VIEW_ACTION, DECK_ACTION}; String[] headerList = new String[]{"Adding cards", - "Deleting cards", "List all cards", "Tagging cards", "View cards", "Adding cards to Deck"}; + "Deleting cards", "List all cards", "Tagging cards", "View cards", "Adding cards to Deck"}; Options[] optionsList = {buildAddOptions(), buildDeleteOptions(), new Options(), buildTagOptions(), buildViewOptions(), buildDeckOptions()}; String helpMessage = formatHelpMessage("card", actionList, headerList, optionsList); From 842d596639a5c0621be457ac7ed5c2b092c7a730 Mon Sep 17 00:00:00 2001 From: Akhil Date: Wed, 29 Mar 2023 01:02:07 +0800 Subject: [PATCH 087/311] fix: enabled assertions in gradle and indicated optional flags --- build.gradle | 1 + src/main/java/utils/parser/DeckKeywordParser.java | 8 ++++---- src/main/java/utils/parser/TagKeywordParser.java | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index 2d31a7d1a1..1eb83cbeca 100644 --- a/build.gradle +++ b/build.gradle @@ -45,4 +45,5 @@ checkstyle { run{ standardInput = System.in + enableAssertions = true } diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java index 82363f7eeb..6eef59a488 100644 --- a/src/main/java/utils/parser/DeckKeywordParser.java +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -31,8 +31,8 @@ private static Options buildDeleteOptions() { Options options = new Options(); options.addRequiredOption("d", "deck", true, "deck name"); // extra stuff down here - options.addOption("c", "card", true, "card name"); - options.addOption("t", "tag", true, "tag name"); + options.addOption("c", "card", true, "card name (optional)"); + options.addOption("t", "tag", true, "tag name (optional)"); return options; } @@ -45,8 +45,8 @@ private static Options buildEditOptions() { } private static Options buildListOptions() { Options options = new Options(); - options.addOption("c", "cards", true, "deck name"); - options.addOption("t", "tags", true, "deck name"); + options.addOption("c", "cards", true, "deck name to list cards from (optional)"); + options.addOption("t", "tags", true, "deck name to list tags from (optional)"); return options; } @Override diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java index bb14d6bf52..259e06138d 100644 --- a/src/main/java/utils/parser/TagKeywordParser.java +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -53,7 +53,7 @@ private static Options buildEditOptions() { private static Options buildListOptions() { Options options = new Options(); - options.addOption("t", "tag", true, "tag name"); + options.addOption("t", "tag", true, "tag name (optional)"); return options; } From 776fd1b1aa97ca0eea3de1c8473f53142b206d52 Mon Sep 17 00:00:00 2001 From: Akhil Date: Wed, 29 Mar 2023 13:41:25 +0800 Subject: [PATCH 088/311] fix: cards and tags deduplication for issues #74, #75, #76 --- .savedata_backup.json | 40 +++++-------------- savedata.json | 40 +++++-------------- src/main/java/model/Deck.java | 17 ++++++++ src/main/java/model/Tag.java | 8 ++++ .../utils/command/AddCardToDeckCommand.java | 3 ++ .../utils/command/AddCardToTagCommand.java | 3 ++ .../utils/command/AddTagToDeckCommand.java | 3 ++ .../utils/exceptions/CardInDeckException.java | 7 ++++ .../utils/exceptions/CardInTagException.java | 7 ++++ .../utils/exceptions/TagInDeckException.java | 7 ++++ 10 files changed, 75 insertions(+), 60 deletions(-) create mode 100644 src/main/java/utils/exceptions/CardInDeckException.java create mode 100644 src/main/java/utils/exceptions/CardInTagException.java create mode 100644 src/main/java/utils/exceptions/TagInDeckException.java diff --git a/.savedata_backup.json b/.savedata_backup.json index 5f03a55c29..3fe7d55e2c 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -1,41 +1,21 @@ { "deckName": "lky deck", - "numCards": 7, + "numCards": 3, "cards": [ { - "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", - "question": "is akhil a dirty commie", - "answer": "yes" + "uuid": "98685c9e-91d5-43f6-8d94-e6c73a425f5f", + "question": "deck_test_card", + "answer": "nothing" }, { - "uuid": "00000000-0000-0000-0000-000000000001", - "question": "why do other groups keep attackin ian", - "answer": "he is not a dirty commie" + "uuid": "b4ee4e97-21df-4459-8268-ac7f218cae7d", + "question": "tag_test_card", + "answer": "nothing" }, { - "uuid": "fbfda5e0-7816-493a-a99e-5da006315d17", - "question": "how is this", - "answer": "dunno" - }, - { - "uuid": "5f8a7558-40dc-4e5a-8d3d-44678f3e01f8", - "question": "test_deck_creation", - "answer": "deck_creation_passed" - }, - { - "uuid": "6232a5eb-f3d1-4449-8e0c-8f82187e5fc8", - "question": "deck test", - "answer": "deck test" - }, - { - "uuid": "520f8e00-c6d6-4daa-844f-66566d1f02da", - "question": "card_test", - "answer": "card_answer" - }, - { - "uuid": "39c5c798-092b-4c44-8889-43995b425476", - "question": "tag_test", - "answer": "tag_answer" + "uuid": "463d973a-48d6-45fa-8db1-5aaf4ce19492", + "question": "deck_test_tag", + "answer": "nothing" } ] } \ No newline at end of file diff --git a/savedata.json b/savedata.json index 5f03a55c29..3fe7d55e2c 100644 --- a/savedata.json +++ b/savedata.json @@ -1,41 +1,21 @@ { "deckName": "lky deck", - "numCards": 7, + "numCards": 3, "cards": [ { - "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", - "question": "is akhil a dirty commie", - "answer": "yes" + "uuid": "98685c9e-91d5-43f6-8d94-e6c73a425f5f", + "question": "deck_test_card", + "answer": "nothing" }, { - "uuid": "00000000-0000-0000-0000-000000000001", - "question": "why do other groups keep attackin ian", - "answer": "he is not a dirty commie" + "uuid": "b4ee4e97-21df-4459-8268-ac7f218cae7d", + "question": "tag_test_card", + "answer": "nothing" }, { - "uuid": "fbfda5e0-7816-493a-a99e-5da006315d17", - "question": "how is this", - "answer": "dunno" - }, - { - "uuid": "5f8a7558-40dc-4e5a-8d3d-44678f3e01f8", - "question": "test_deck_creation", - "answer": "deck_creation_passed" - }, - { - "uuid": "6232a5eb-f3d1-4449-8e0c-8f82187e5fc8", - "question": "deck test", - "answer": "deck test" - }, - { - "uuid": "520f8e00-c6d6-4daa-844f-66566d1f02da", - "question": "card_test", - "answer": "card_answer" - }, - { - "uuid": "39c5c798-092b-4c44-8889-43995b425476", - "question": "tag_test", - "answer": "tag_answer" + "uuid": "463d973a-48d6-45fa-8db1-5aaf4ce19492", + "question": "deck_test_tag", + "answer": "nothing" } ] } \ No newline at end of file diff --git a/src/main/java/model/Deck.java b/src/main/java/model/Deck.java index 65007e484f..162a95a879 100644 --- a/src/main/java/model/Deck.java +++ b/src/main/java/model/Deck.java @@ -36,6 +36,23 @@ public Deck(String deckName, TagUUID tagUUID, CardUUID cardUUID) { public String getDeckName() { return deckName; } + public boolean cardInDeck(CardUUID cardUUID) { + for(CardUUID cardUUIDHolder : cards) { + if(cardUUIDHolder.equals(cardUUID)) { + return true; + } + } + return false; + } + + public boolean tagInDeck(TagUUID tagUUID) { + for(TagUUID tagUUIDHolder : tags) { + if(tagUUIDHolder.equals(tagUUID)) { + return true; + } + } + return false; + } public void setTags(ArrayList tags) { diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 140c8cda10..9d36f2e456 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -26,6 +26,14 @@ public String getTagName() { public void editTagName(String newTagName) { this.tagName = newTagName; } + public boolean cardInTag(CardUUID cardUUID) { + for(CardUUID cardUUIDList : cards) { + if(cardUUIDList.equals(cardUUID)) { + return true; + } + } + return false; + } public ArrayList getCardsUUID() { return this.cards; diff --git a/src/main/java/utils/command/AddCardToDeckCommand.java b/src/main/java/utils/command/AddCardToDeckCommand.java index 87bc7b0eee..2e5972d9b2 100644 --- a/src/main/java/utils/command/AddCardToDeckCommand.java +++ b/src/main/java/utils/command/AddCardToDeckCommand.java @@ -9,6 +9,7 @@ import model.DeckUUID; import model.TagList; import utils.UserInterface; +import utils.exceptions.CardInDeckException; import utils.exceptions.InkaException; import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; @@ -38,6 +39,8 @@ private void addCardToDeck(DeckList deckList, CardList cardList, UserInterface u ui.printDeckCreationSuccess(); deckToAdd = new Deck(deckName, cardUUID); deckList.addDeck(deckToAdd); + } else if(deckToAdd.cardInDeck(cardUUID) == true) { + throw new CardInDeckException(); } else { deckToAdd.addCard(cardUUID); } diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 26fcc4afcf..618d530135 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -9,6 +9,7 @@ import model.TagList; import model.TagUUID; import utils.UserInterface; +import utils.exceptions.CardInTagException; import utils.exceptions.InkaException; import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; @@ -45,6 +46,8 @@ private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) ui.printTagCreationSuccess(); tagToAdd = new Tag(tagName, cardUUID); tagList.addTag(tagToAdd); + } else if(tagToAdd.cardInTag(cardUUID)) { + throw new CardInTagException(); } else { tagToAdd.addCard(cardUUID); } diff --git a/src/main/java/utils/command/AddTagToDeckCommand.java b/src/main/java/utils/command/AddTagToDeckCommand.java index 925798815c..d88da8ccd0 100644 --- a/src/main/java/utils/command/AddTagToDeckCommand.java +++ b/src/main/java/utils/command/AddTagToDeckCommand.java @@ -10,6 +10,7 @@ import utils.UserInterface; import utils.exceptions.CreateTagBeforeAddingToDeck; import utils.exceptions.InkaException; +import utils.exceptions.TagInDeckException; import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; @@ -42,6 +43,8 @@ private void addTagToDeck(DeckList deckList, TagList tagList, UserInterface ui) ui.printDeckCreationSuccess(); deckToAdd = new Deck(deckName, tagUUID); deckList.addDeck(deckToAdd); + } else if(deckToAdd.tagInDeck(tagUUID)) { + throw new TagInDeckException(); } else { deckToAdd.addTag(tagUUID); } diff --git a/src/main/java/utils/exceptions/CardInDeckException.java b/src/main/java/utils/exceptions/CardInDeckException.java new file mode 100644 index 0000000000..7d74576c98 --- /dev/null +++ b/src/main/java/utils/exceptions/CardInDeckException.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class CardInDeckException extends InkaException{ + public CardInDeckException() { + super("Card is already a part of the deck"); + } +} diff --git a/src/main/java/utils/exceptions/CardInTagException.java b/src/main/java/utils/exceptions/CardInTagException.java new file mode 100644 index 0000000000..78bcb897d0 --- /dev/null +++ b/src/main/java/utils/exceptions/CardInTagException.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class CardInTagException extends InkaException{ + public CardInTagException() { + super("Card is already a part of the Tag"); + } +} diff --git a/src/main/java/utils/exceptions/TagInDeckException.java b/src/main/java/utils/exceptions/TagInDeckException.java new file mode 100644 index 0000000000..e12f41d62a --- /dev/null +++ b/src/main/java/utils/exceptions/TagInDeckException.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class TagInDeckException extends InkaException{ + public TagInDeckException() { + super("Tag is already a part of the deck"); + } +} From d812969b5cf5c1267130c8931110096a535d65f0 Mon Sep 17 00:00:00 2001 From: Akhil Date: Wed, 29 Mar 2023 18:38:05 +0800 Subject: [PATCH 089/311] fix: Comment Removed --- src/main/java/utils/parser/DeckKeywordParser.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java index 6eef59a488..830ca16c80 100644 --- a/src/main/java/utils/parser/DeckKeywordParser.java +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -30,7 +30,6 @@ public DeckKeywordParser() { private static Options buildDeleteOptions() { Options options = new Options(); options.addRequiredOption("d", "deck", true, "deck name"); - // extra stuff down here options.addOption("c", "card", true, "card name (optional)"); options.addOption("t", "tag", true, "tag name (optional)"); From 693132b5dbed87855ddec399c7bda9ec9ee388c2 Mon Sep 17 00:00:00 2001 From: Akhil Date: Wed, 29 Mar 2023 20:41:13 +0800 Subject: [PATCH 090/311] fix: #69, #59, Naming Conventions --- src/main/java/model/Card.java | 7 +++++ src/main/java/model/Deck.java | 4 +-- src/main/java/model/DeckList.java | 9 ++++++ src/main/java/model/Tag.java | 10 ++++++- .../utils/command/AddCardToDeckCommand.java | 2 +- .../utils/command/AddCardToTagCommand.java | 2 +- .../utils/command/AddTagToDeckCommand.java | 2 +- .../java/utils/command/DeleteCardCommand.java | 26 +++++++++++++++-- .../java/utils/command/DeleteDeckCommand.java | 4 --- .../java/utils/command/DeleteTagCommand.java | 28 +++++++++++++------ 10 files changed, 74 insertions(+), 20 deletions(-) diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 55859b66b9..9632f887bb 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -79,6 +79,13 @@ public void removeTag(TagUUID tagUUID) { public void removeDecks(DeckUUID deckUUID) { decks.remove(deckUUID); } + public boolean deckEmpty() { + return this.decks.isEmpty(); + } + + public boolean tagEmpty() { + return this.tags.isEmpty(); + } @Override public String toString() { diff --git a/src/main/java/model/Deck.java b/src/main/java/model/Deck.java index 162a95a879..b877218eaf 100644 --- a/src/main/java/model/Deck.java +++ b/src/main/java/model/Deck.java @@ -36,7 +36,7 @@ public Deck(String deckName, TagUUID tagUUID, CardUUID cardUUID) { public String getDeckName() { return deckName; } - public boolean cardInDeck(CardUUID cardUUID) { + public boolean cardIsInDeck(CardUUID cardUUID) { for(CardUUID cardUUIDHolder : cards) { if(cardUUIDHolder.equals(cardUUID)) { return true; @@ -45,7 +45,7 @@ public boolean cardInDeck(CardUUID cardUUID) { return false; } - public boolean tagInDeck(TagUUID tagUUID) { + public boolean tagIsInDeck(TagUUID tagUUID) { for(TagUUID tagUUIDHolder : tags) { if(tagUUIDHolder.equals(tagUUID)) { return true; diff --git a/src/main/java/model/DeckList.java b/src/main/java/model/DeckList.java index f659e8ab16..a3997f858f 100644 --- a/src/main/java/model/DeckList.java +++ b/src/main/java/model/DeckList.java @@ -41,6 +41,15 @@ public Deck findDeckFromName(String deckName) { } return null; } + + public Deck findDeckFromUUID(DeckUUID deckUUID) { + for (Deck deck : deckList) { + if (deck.getDeckUUID().equals(deckUUID)) { + return deck; + } + } + return null; + } public void delete(int id) { this.deckList.remove(id); } diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 9d36f2e456..f3db23da8c 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -15,6 +15,14 @@ public Tag(String tagName, CardUUID cardUUID) { cards.add(cardUUID); } + public ArrayList getDecks() { + return decks; + } + + public boolean cardEmpty() { + return cards.isEmpty(); + } + public TagUUID getUUID() { return this.uuid; } @@ -26,7 +34,7 @@ public String getTagName() { public void editTagName(String newTagName) { this.tagName = newTagName; } - public boolean cardInTag(CardUUID cardUUID) { + public boolean cardIsInTag(CardUUID cardUUID) { for(CardUUID cardUUIDList : cards) { if(cardUUIDList.equals(cardUUID)) { return true; diff --git a/src/main/java/utils/command/AddCardToDeckCommand.java b/src/main/java/utils/command/AddCardToDeckCommand.java index 2e5972d9b2..534a9f19e9 100644 --- a/src/main/java/utils/command/AddCardToDeckCommand.java +++ b/src/main/java/utils/command/AddCardToDeckCommand.java @@ -39,7 +39,7 @@ private void addCardToDeck(DeckList deckList, CardList cardList, UserInterface u ui.printDeckCreationSuccess(); deckToAdd = new Deck(deckName, cardUUID); deckList.addDeck(deckToAdd); - } else if(deckToAdd.cardInDeck(cardUUID) == true) { + } else if(deckToAdd.cardIsInDeck(cardUUID)) { throw new CardInDeckException(); } else { deckToAdd.addCard(cardUUID); diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 618d530135..cd324fb79b 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -46,7 +46,7 @@ private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) ui.printTagCreationSuccess(); tagToAdd = new Tag(tagName, cardUUID); tagList.addTag(tagToAdd); - } else if(tagToAdd.cardInTag(cardUUID)) { + } else if(tagToAdd.cardIsInTag(cardUUID)) { throw new CardInTagException(); } else { tagToAdd.addCard(cardUUID); diff --git a/src/main/java/utils/command/AddTagToDeckCommand.java b/src/main/java/utils/command/AddTagToDeckCommand.java index d88da8ccd0..6d47081077 100644 --- a/src/main/java/utils/command/AddTagToDeckCommand.java +++ b/src/main/java/utils/command/AddTagToDeckCommand.java @@ -43,7 +43,7 @@ private void addTagToDeck(DeckList deckList, TagList tagList, UserInterface ui) ui.printDeckCreationSuccess(); deckToAdd = new Deck(deckName, tagUUID); deckList.addDeck(deckToAdd); - } else if(deckToAdd.tagInDeck(tagUUID)) { + } else if(deckToAdd.tagIsInDeck(tagUUID)) { throw new TagInDeckException(); } else { deckToAdd.addTag(tagUUID); diff --git a/src/main/java/utils/command/DeleteCardCommand.java b/src/main/java/utils/command/DeleteCardCommand.java index 9572ab919d..3c013b55d4 100644 --- a/src/main/java/utils/command/DeleteCardCommand.java +++ b/src/main/java/utils/command/DeleteCardCommand.java @@ -1,8 +1,13 @@ package utils.command; +import model.Card; import model.CardList; +import model.Deck; import model.DeckList; +import model.DeckUUID; +import model.Tag; import model.TagList; +import model.TagUUID; import utils.UserInterface; import utils.exceptions.UnknownItem; import utils.exceptions.InkaException; @@ -11,20 +16,37 @@ public class DeleteCardCommand extends Command { private int index; + private Card card; public DeleteCardCommand(int index) { this.index = index; } + //Assume this is silent removal, no UI message is displayed + public void cardRemovalFromDecks (CardList cardList, DeckList deckList) { + this.card = cardList.get(this.index-1); + for(DeckUUID deckUUID: card.getDecksUUID()) { + Deck deckToDeleteCardFrom = deckList.findDeckFromUUID(deckUUID); + deckToDeleteCardFrom.getCardsUUID().remove(card.getUuid()); + } + } + public void cardRemovalFromTag(TagList tagList) { + for(TagUUID tagUUID: card.getTagsUUID()) { + Tag tagToDeleteCardFrom = tagList.findTagFromUUID(tagUUID); + tagToDeleteCardFrom.getCardsUUID().remove(card.getUuid()); + } + } + @Override public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { try { - // if the input is delete 1, this will delete the first element of the array which is element 0. + cardRemovalFromDecks(cardList, deckList); + cardRemovalFromTag(tagList); cardList.delete(this.index - 1); ui.printDeleteSuccess(); ui.printNumOfQuestions(cardList); - } catch (IndexOutOfBoundsException e) { + } catch (IndexOutOfBoundsException | NullPointerException e ) { throw new UnknownItem(); } } diff --git a/src/main/java/utils/command/DeleteDeckCommand.java b/src/main/java/utils/command/DeleteDeckCommand.java index 7e787d798d..3eb40030fe 100644 --- a/src/main/java/utils/command/DeleteDeckCommand.java +++ b/src/main/java/utils/command/DeleteDeckCommand.java @@ -55,10 +55,6 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI throws InkaException { removeDeckFromCards(cardList, deckList, ui); removeDeckFromTags(tagList, deckList, ui); - boolean isDeleted = deckList.deleteDeckByUUID(deckUUID); - if(isDeleted==false) { - //throw exception here - } ui.printRemoveDeckFromDeckList(deckUUID); } } diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 6c390d6a6c..7308d41f4b 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -3,7 +3,9 @@ import model.Card; import model.CardList; import model.CardUUID; +import model.Deck; import model.DeckList; +import model.DeckUUID; import model.Tag; import model.TagList; import model.TagUUID; @@ -15,6 +17,7 @@ public class DeleteTagCommand extends Command { private String tagName; private TagUUID tagUUID; + private Tag tag; public DeleteTagCommand(String tagName) { this.tagName = tagName; @@ -28,17 +31,27 @@ public DeleteTagCommand(String tagName) { * @param ui The userInterface to print the success of removal of the tag from the cards. */ private void removeTagFromCards(CardList cardList, TagList tagList, UserInterface ui) throws InkaException { - Tag tag = tagList.findTagFromName(tagName); + this.tag = tagList.findTagFromName(tagName); if (tag == null) { throw new TagNotFoundException(); } - tagUUID = tag.getUUID(); + this.tagUUID = tag.getUUID(); //for each card whose uuid is listed under the tag, remove the tag uuid from that card - for (CardUUID cardUUID : tag.getCardsUUID()) { - Card affectedCard = cardList.findCardFromUUID(cardUUID); - affectedCard.removeTag(tagUUID); - ui.printRemoveTagFromCard(affectedCard.getUuid(), tagUUID); + if(!tag.cardEmpty()) { + for (CardUUID cardUUID : tag.getCardsUUID()) { + Card affectedCard = cardList.findCardFromUUID(cardUUID); + affectedCard.removeTag(tagUUID); + ui.printRemoveTagFromCard(affectedCard.getUuid(), tagUUID); + } + } + + } + + private void removeTagsFromDecks(DeckList deckList) { + for(DeckUUID deckUUID: tag.getDecks()) { + Deck deckToDeleteTagFrom = deckList.findDeckFromUUID(deckUUID); + deckToDeleteTagFrom.getTagsUUID().remove(tagUUID); } } @@ -46,8 +59,7 @@ private void removeTagFromCards(CardList cardList, TagList tagList, UserInterfac public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { removeTagFromCards(cardList, tagList, ui); - boolean isDeleted = tagList.deleteTagByUUID(tagUUID); - // if isDeleted is false, it means tag doesn't exist in the first place, throw exception here + removeTagsFromDecks(deckList); ui.printRemoveTagFromTagList(tagUUID); } } From edab2bc2b42c131e9ab63358f987ffae5538ebed Mon Sep 17 00:00:00 2001 From: Akhil Date: Wed, 29 Mar 2023 21:12:06 +0800 Subject: [PATCH 091/311] fix: Tag properly deleted from TagList --- src/main/java/utils/command/DeleteTagCommand.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 7308d41f4b..59f8aa8be4 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -49,9 +49,9 @@ private void removeTagFromCards(CardList cardList, TagList tagList, UserInterfac } private void removeTagsFromDecks(DeckList deckList) { - for(DeckUUID deckUUID: tag.getDecks()) { + for(DeckUUID deckUUID: this.tag.getDecks()) { Deck deckToDeleteTagFrom = deckList.findDeckFromUUID(deckUUID); - deckToDeleteTagFrom.getTagsUUID().remove(tagUUID); + deckToDeleteTagFrom.getTagsUUID().remove(tag.getUUID()); } } @@ -60,6 +60,7 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI throws InkaException { removeTagFromCards(cardList, tagList, ui); removeTagsFromDecks(deckList); + tagList.deleteTagByUUID(this.tagUUID); ui.printRemoveTagFromTagList(tagUUID); } } From 7b29742be7b00e5bf527797a3a3b37b521eb9803 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 30 Mar 2023 15:34:09 +0800 Subject: [PATCH 092/311] fix savedata.json --- .savedata_backup.json | 7 ++++++- savedata.json | 7 ++++++- src/main/java/utils/command/AddCardToTagCommand.java | 1 + 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.savedata_backup.json b/.savedata_backup.json index 3c44700ba9..63439deee5 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -1,6 +1,6 @@ { "deckName": "lky deck", - "numCards": 6, + "numCards": 7, "cards": [ { "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", @@ -31,6 +31,11 @@ "uuid": "da243c73-4da1-4f24-b3aa-7a5a7d96d2b8", "question": "rename_checker", "answer": "rename_checker" + }, + { + "uuid": "2ac3997b-cfe7-4773-93aa-e6594963e4f2", + "question": "test", + "answer": "test" } ] } \ No newline at end of file diff --git a/savedata.json b/savedata.json index 3c44700ba9..63439deee5 100644 --- a/savedata.json +++ b/savedata.json @@ -1,6 +1,6 @@ { "deckName": "lky deck", - "numCards": 6, + "numCards": 7, "cards": [ { "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", @@ -31,6 +31,11 @@ "uuid": "da243c73-4da1-4f24-b3aa-7a5a7d96d2b8", "question": "rename_checker", "answer": "rename_checker" + }, + { + "uuid": "2ac3997b-cfe7-4773-93aa-e6594963e4f2", + "question": "test", + "answer": "test" } ] } \ No newline at end of file diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 220979e57f..b9efe7c001 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -51,6 +51,7 @@ private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) //add the tag uuid to the card tagUUID = tagToAdd.getUUID(); + cardToAdd.addTag(tagUUID); } From 816d5ffe4970cba0627b90611649776b0d6b3bd6 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Thu, 30 Mar 2023 15:41:13 +0800 Subject: [PATCH 093/311] bug : add dummy tags and decks in save() --- .savedata_backup.json | 28 ++++++++++++++----- savedata.json | 28 ++++++++++++++----- .../java/utils/storage/json/JsonStorage.java | 2 ++ 3 files changed, 44 insertions(+), 14 deletions(-) diff --git a/.savedata_backup.json b/.savedata_backup.json index 63439deee5..19adbeab31 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -5,37 +5,51 @@ { "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", "question": "is akhil a dirty commie", - "answer": "yes" + "answer": "yes", + "tags": [], + "decks": [] }, { "uuid": "00000000-0000-0000-0000-000000000001", "question": "why do other groups keep attackin ian", - "answer": "he is not a dirty commie" + "answer": "he is not a dirty commie", + "tags": [], + "decks": [] }, { "uuid": "fbfda5e0-7816-493a-a99e-5da006315d17", "question": "how is this", - "answer": "dunno" + "answer": "dunno", + "tags": [], + "decks": [] }, { "uuid": "5f8a7558-40dc-4e5a-8d3d-44678f3e01f8", "question": "test_deck_creation", - "answer": "deck_creation_passed" + "answer": "deck_creation_passed", + "tags": [], + "decks": [] }, { "uuid": "6232a5eb-f3d1-4449-8e0c-8f82187e5fc8", "question": "deck test", - "answer": "deck test" + "answer": "deck test", + "tags": [], + "decks": [] }, { "uuid": "da243c73-4da1-4f24-b3aa-7a5a7d96d2b8", "question": "rename_checker", - "answer": "rename_checker" + "answer": "rename_checker", + "tags": [], + "decks": [] }, { "uuid": "2ac3997b-cfe7-4773-93aa-e6594963e4f2", "question": "test", - "answer": "test" + "answer": "test", + "tags": [], + "decks": [] } ] } \ No newline at end of file diff --git a/savedata.json b/savedata.json index 63439deee5..19adbeab31 100644 --- a/savedata.json +++ b/savedata.json @@ -5,37 +5,51 @@ { "uuid": "f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454", "question": "is akhil a dirty commie", - "answer": "yes" + "answer": "yes", + "tags": [], + "decks": [] }, { "uuid": "00000000-0000-0000-0000-000000000001", "question": "why do other groups keep attackin ian", - "answer": "he is not a dirty commie" + "answer": "he is not a dirty commie", + "tags": [], + "decks": [] }, { "uuid": "fbfda5e0-7816-493a-a99e-5da006315d17", "question": "how is this", - "answer": "dunno" + "answer": "dunno", + "tags": [], + "decks": [] }, { "uuid": "5f8a7558-40dc-4e5a-8d3d-44678f3e01f8", "question": "test_deck_creation", - "answer": "deck_creation_passed" + "answer": "deck_creation_passed", + "tags": [], + "decks": [] }, { "uuid": "6232a5eb-f3d1-4449-8e0c-8f82187e5fc8", "question": "deck test", - "answer": "deck test" + "answer": "deck test", + "tags": [], + "decks": [] }, { "uuid": "da243c73-4da1-4f24-b3aa-7a5a7d96d2b8", "question": "rename_checker", - "answer": "rename_checker" + "answer": "rename_checker", + "tags": [], + "decks": [] }, { "uuid": "2ac3997b-cfe7-4773-93aa-e6594963e4f2", "question": "test", - "answer": "test" + "answer": "test", + "tags": [], + "decks": [] } ] } \ No newline at end of file diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 68875d6ada..f0ab494a32 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -283,6 +283,8 @@ public void save(CardList cardList) throws StorageSaveFailure { cardObject.addProperty("uuid", card.getUuid().toString()); cardObject.addProperty("question", card.getQuestion()); cardObject.addProperty("answer", card.getAnswer()); + cardObject.add("tags", new JsonArray()); // dummy empty field for now + cardObject.add("decks", new JsonArray()); cardData.add(cardObject); } exportData.add("cards", cardData); From 399a161d14efc5a64aff9646a74fa6707ee5eb0b Mon Sep 17 00:00:00 2001 From: iantenkai Date: Thu, 30 Mar 2023 20:33:15 +0800 Subject: [PATCH 094/311] changed save and load methods to accomodate TagUUID, DeckUUID and cardUUID objects --- savedata.json | 35 ++++++---- .../java/utils/storage/json/JsonStorage.java | 69 +++++++++++++++---- 2 files changed, 78 insertions(+), 26 deletions(-) diff --git a/savedata.json b/savedata.json index 3fe7d55e2c..717c4f21a0 100644 --- a/savedata.json +++ b/savedata.json @@ -1,21 +1,30 @@ { - "deckName": "lky deck", - "numCards": 3, "cards": [ { - "uuid": "98685c9e-91d5-43f6-8d94-e6c73a425f5f", - "question": "deck_test_card", - "answer": "nothing" + "uuid": { + "uuid": "c2c61475-df53-4656-94c4-c2e36933d359" + }, + "question": "fdff", + "answer": "rerrr", + "tags": [], + "decks": [] }, { - "uuid": "b4ee4e97-21df-4459-8268-ac7f218cae7d", - "question": "tag_test_card", - "answer": "nothing" - }, - { - "uuid": "463d973a-48d6-45fa-8db1-5aaf4ce19492", - "question": "deck_test_tag", - "answer": "nothing" + "uuid": { + "uuid": "3b86b31c-6289-4716-a5c6-5afd43b9bbd3" + }, + "question": "fdf", + "answer": "ffffffffff", + "tags": [ + { + "uuid": "d480b453-f900-471b-8f1d-9e74504d5cf7" + } + ], + "decks": [ + { + "uuid": "ef2df71c-b645-4bcf-a8b7-c5d2a0349efa" + } + ] } ] } \ No newline at end of file diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 68875d6ada..967ada32f0 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -167,6 +167,7 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.util.UUID; import java.util.logging.Logger; import java.util.logging.Level; import com.google.gson.Gson; @@ -174,6 +175,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; + import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; @@ -183,6 +185,7 @@ import model.CardList; import model.CardUUID; import model.TagUUID; +import model.DeckUUID; import utils.exceptions.InkaException; import utils.exceptions.StorageCorrupted; import utils.exceptions.StorageLoadFailure; @@ -220,17 +223,58 @@ public CardList load() throws InkaException { boolean useBackup = false; try { FileReader fileReader = new FileReader(saveFile); - BufferedReader bufferedReader = new BufferedReader(fileReader); + gsonBuilder.setLenient(); JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonObject(); - String deckName = jsonObject.get("deckName").getAsString(); + JsonArray jsonArray = jsonObject.getAsJsonArray("cards"); - Type cardListType = new TypeToken>() { - }.getType(); - ArrayList cards = gsonBuilder.create().fromJson(jsonArray, cardListType); + ArrayList cards = new ArrayList<>(); + + for (JsonElement jsonCard : jsonArray) { + JsonObject cardObject = jsonCard.getAsJsonObject(); + + // Extract the UUID string from the nested UUID object + JsonObject uuidObject = cardObject.getAsJsonObject("uuid"); + String uuidString = uuidObject.get("uuid").getAsString(); + + // Extract the other properties from the JSON object + String question = cardObject.get("question").getAsString(); + String answer = cardObject.get("answer").getAsString(); + + + + // Create a new Card object from the extracted values + Card card = Card.createCardWithUUID(question, answer, uuidString); +// ArrayList tags = new ArrayList<>(); +// ArrayList decks = new ArrayList<>(); + + JsonArray tagsArray = cardObject.getAsJsonArray("tags"); + JsonArray decksArray = cardObject.getAsJsonArray("decks"); + + + for (JsonElement tagListElement : tagsArray) { + JsonObject tagUuidObject = tagListElement.getAsJsonObject(); + String tagUuidString = tagUuidObject.get("uuid").getAsString(); + card.addTag(new TagUUID(UUID.fromString(tagUuidString))); + + } + + for (JsonElement deckListElement : decksArray) { + JsonObject deckUuidObject = deckListElement.getAsJsonObject(); + String deckUuidString = deckUuidObject.get("uuid").getAsString(); + card.addDeck(new DeckUUID(UUID.fromString(deckUuidString))); + + } + + // Add the Card object to the ArrayList + cards.add(card); + } + +// Create a new CardList object from the ArrayList cardList = new CardList(cards); + } catch (IOException e) { String absolutePath = this.saveFile.getAbsolutePath(); logger.log(Level.WARNING, "Failed to load file from " + absolutePath, e); @@ -239,7 +283,7 @@ public CardList load() throws InkaException { } catch (NullPointerException | JsonSyntaxException e) { String absolutePath = this.saveFile.getAbsolutePath(); logger.log(Level.WARNING, "Corrupted save file: " + absolutePath, e); - useBackup = true; + //useBackup = true; throw new StorageCorrupted(absolutePath); } @@ -272,17 +316,16 @@ public CardList load() throws InkaException { public void save(CardList cardList) throws StorageSaveFailure { JsonObject exportData = new JsonObject(); - exportData.addProperty("deckName", "lky deck"); - exportData.addProperty("numCards", cardList.size()); - + Gson gson = new Gson(); // Serialize cards JsonArray cardData = new JsonArray(); for (int i = 0; i < cardList.size(); i++) { + // Convert the card object to a JsonObject using Gson Card card = cardList.get(i); - JsonObject cardObject = new JsonObject(); - cardObject.addProperty("uuid", card.getUuid().toString()); - cardObject.addProperty("question", card.getQuestion()); - cardObject.addProperty("answer", card.getAnswer()); + + JsonObject cardObject = gson.toJsonTree(card).getAsJsonObject(); + + // Add the card object to the cardData array cardData.add(cardObject); } exportData.add("cards", cardData); From 967e75fd6be8c2ae8bc819d1f399191e5caf6234 Mon Sep 17 00:00:00 2001 From: JangusRoundstone <88696064+JangusRoundstone@users.noreply.github.com> Date: Thu, 30 Mar 2023 20:34:13 +0800 Subject: [PATCH 095/311] Update Parser Component of DG This version has no diagram. --- docs/DeveloperGuide.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 4c00c454a9..f5f3af203c 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -52,7 +52,15 @@ include links to the original source as well} API: Ui.java ### Parser Component -API: Parser.java +API: ```Parser.java``` + +1. ```Parser``` parses user's inputs, some of which require using imported parser from the Apache Commons CLI library. +2. This results in a ```Command``` object which then executes itself in main. +3. The execution of ```Command``` may affect the ```CardList```, ```TagList``` and ```DeckList``` objects. +4. The execution of ```Command``` may also instruct the ```UI``` object to perform certain actions, such as printing out success message for adding a new card. + +Given below is the Sequence Diagram for interactions within the Parser component for the execute("card add -q Who is John Cena's crush -a Lao Gan Ma!") API call. + ### Storage Component API: Storage.java @@ -84,8 +92,8 @@ The implementation of the features are shown below: * Adding a card 1. When the user enters ```card add -q ... -a ...```, the input is passed to ```Parser``` class which calls ```Parser#parseCommand()```. -2. The parser detects the keyword "card", then calls the ```Parser#CardKeywordParser()```. -3. +2. The parser detects the keyword "card", then calls the ```Parser#CardKeywordParser()``` on the user inputs excluding the "card" keyword. +3. The ```Parser#CardKeywordParser()``` uses the Apache Commons CLI library to parse the remaining user input. The sequence diagram below shows how this feature works: {UML will be added here.} From 827fec101867fdab3f0f9c69f65c5b22e996f4f6 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Thu, 30 Mar 2023 20:48:19 +0800 Subject: [PATCH 096/311] fixed checkstyle errors --- .../java/utils/storage/json/JsonStorage.java | 87 +++++++++++++++++-- 1 file changed, 80 insertions(+), 7 deletions(-) diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 967ada32f0..72e5b1af08 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -161,9 +161,12 @@ import com.google.gson.JsonSyntaxException; + import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; + + import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; @@ -171,6 +174,8 @@ import java.util.logging.Logger; import java.util.logging.Level; import com.google.gson.Gson; + + import com.google.gson.GsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonElement; @@ -179,6 +184,8 @@ import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; + + import java.util.ArrayList; import model.Card; @@ -188,11 +195,15 @@ import model.DeckUUID; import utils.exceptions.InkaException; import utils.exceptions.StorageCorrupted; + + import utils.exceptions.StorageLoadFailure; import utils.exceptions.StorageSaveFailure; import utils.storage.Storage; public class JsonStorage extends Storage { + + private static Logger logger = Logger.getLogger("storage.JsonStorage"); private GsonBuilder gsonBuilder; private File backupFile; @@ -210,6 +221,18 @@ public JsonStorage(String filePath) { backupFilePath.lastIndexOf(File.separator) + 1); backupFile = new File(backupFilePath); + + + + + + + + + + + + gsonBuilder = new GsonBuilder(); //Add custom adapters @@ -226,56 +249,106 @@ public CardList load() throws InkaException { BufferedReader bufferedReader = new BufferedReader(fileReader); gsonBuilder.setLenient(); + + + JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject jsonObject = jsonElement.getAsJsonObject(); + JsonArray jsonArray = jsonObject.getAsJsonArray("cards"); ArrayList cards = new ArrayList<>(); + + + for (JsonElement jsonCard : jsonArray) { JsonObject cardObject = jsonCard.getAsJsonObject(); - // Extract the UUID string from the nested UUID object JsonObject uuidObject = cardObject.getAsJsonObject("uuid"); String uuidString = uuidObject.get("uuid").getAsString(); - // Extract the other properties from the JSON object String question = cardObject.get("question").getAsString(); String answer = cardObject.get("answer").getAsString(); - // Create a new Card object from the extracted values + + + + + + + + + + + Card card = Card.createCardWithUUID(question, answer, uuidString); -// ArrayList tags = new ArrayList<>(); -// ArrayList decks = new ArrayList<>(); JsonArray tagsArray = cardObject.getAsJsonArray("tags"); JsonArray decksArray = cardObject.getAsJsonArray("decks"); + + + + + + + + + + + for (JsonElement tagListElement : tagsArray) { JsonObject tagUuidObject = tagListElement.getAsJsonObject(); + + + String tagUuidString = tagUuidObject.get("uuid").getAsString(); card.addTag(new TagUUID(UUID.fromString(tagUuidString))); } for (JsonElement deckListElement : decksArray) { + JsonObject deckUuidObject = deckListElement.getAsJsonObject(); String deckUuidString = deckUuidObject.get("uuid").getAsString(); + + + + card.addDeck(new DeckUUID(UUID.fromString(deckUuidString))); } - // Add the Card object to the ArrayList cards.add(card); } -// Create a new CardList object from the ArrayList cardList = new CardList(cards); } catch (IOException e) { + + + + + + + + + + + + + + + + + + + + String absolutePath = this.saveFile.getAbsolutePath(); logger.log(Level.WARNING, "Failed to load file from " + absolutePath, e); From 1a77c9d7156a4e287fd2ffb15684b7bf7ff0ac70 Mon Sep 17 00:00:00 2001 From: Ian Teng <66109826+iantenkai@users.noreply.github.com> Date: Thu, 30 Mar 2023 20:56:14 +0800 Subject: [PATCH 097/311] updated valid.json with an updated deck format --- src/test/data/storage/valid.json | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/src/test/data/storage/valid.json b/src/test/data/storage/valid.json index 3b2160d37d..a4449e7946 100644 --- a/src/test/data/storage/valid.json +++ b/src/test/data/storage/valid.json @@ -1,16 +1,30 @@ { - "deckName": "lky deck", - "numCards": 2, "cards": [ { - "uuid": "00000000-0000-0000-0000-000000000000", - "question": "is akhil a dirty commie", - "answer": "yes" + "uuid": { + "uuid": "c2c61475-df53-4656-94c4-c2e36933d359" + }, + "question": "fdff", + "answer": "rerrr", + "tags": [], + "decks": [] }, { - "uuid": "00000000-0000-0000-0000-000000000001", - "question": "why do other groups keep attackin ian", - "answer": "he is not a dirty commie" + "uuid": { + "uuid": "3b86b31c-6289-4716-a5c6-5afd43b9bbd3" + }, + "question": "fdf", + "answer": "ffffffffff", + "tags": [ + { + "uuid": "d480b453-f900-471b-8f1d-9e74504d5cf7" + } + ], + "decks": [ + { + "uuid": "ef2df71c-b645-4bcf-a8b7-c5d2a0349efa" + } + ] } ] } From 126de4bcae61f1399dcdf23665973311304bb891 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Thu, 30 Mar 2023 21:17:55 +0800 Subject: [PATCH 098/311] updated test storage file --- src/test/data/storage/valid.json | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/test/data/storage/valid.json b/src/test/data/storage/valid.json index 3b2160d37d..717c4f21a0 100644 --- a/src/test/data/storage/valid.json +++ b/src/test/data/storage/valid.json @@ -1,16 +1,30 @@ { - "deckName": "lky deck", - "numCards": 2, "cards": [ { - "uuid": "00000000-0000-0000-0000-000000000000", - "question": "is akhil a dirty commie", - "answer": "yes" + "uuid": { + "uuid": "c2c61475-df53-4656-94c4-c2e36933d359" + }, + "question": "fdff", + "answer": "rerrr", + "tags": [], + "decks": [] }, { - "uuid": "00000000-0000-0000-0000-000000000001", - "question": "why do other groups keep attackin ian", - "answer": "he is not a dirty commie" + "uuid": { + "uuid": "3b86b31c-6289-4716-a5c6-5afd43b9bbd3" + }, + "question": "fdf", + "answer": "ffffffffff", + "tags": [ + { + "uuid": "d480b453-f900-471b-8f1d-9e74504d5cf7" + } + ], + "decks": [ + { + "uuid": "ef2df71c-b645-4bcf-a8b7-c5d2a0349efa" + } + ] } ] -} +} \ No newline at end of file From 347490bae993e56f55e0a3a0f1ca3a5efeb18c34 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Thu, 30 Mar 2023 18:07:48 +0800 Subject: [PATCH 099/311] feat: unified interface for card --- src/main/java/model/CardList.java | 42 ++++++++++++- src/main/java/model/CardSelector.java | 25 ++++++++ .../utils/command/AddCardToDeckCommand.java | 32 ++++------ .../utils/command/AddCardToTagCommand.java | 32 +++++----- .../java/utils/command/ViewCardCommand.java | 36 ++++------- .../java/utils/parser/CardKeywordParser.java | 32 +++++----- src/main/java/utils/parser/KeywordParser.java | 62 ++++++++++++++++++- src/main/java/utils/parser/Parser.java | 1 - .../java/utils/parser/CardParserTest.java | 60 +++++++++++------- 9 files changed, 217 insertions(+), 105 deletions(-) create mode 100644 src/main/java/model/CardSelector.java diff --git a/src/main/java/model/CardList.java b/src/main/java/model/CardList.java index 7ba85f3152..f727762c9d 100644 --- a/src/main/java/model/CardList.java +++ b/src/main/java/model/CardList.java @@ -2,6 +2,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Optional; import utils.exceptions.CardNotFoundException; public class CardList { @@ -22,10 +23,34 @@ public void addCard(Card card) { this.cards.add(card); } - public void delete(int id) { + public void delete(int id) throws IndexOutOfBoundsException { this.cards.remove(id); } + public void delete(CardSelector cardSelector) throws CardNotFoundException { + Optional index = cardSelector.getIndex(); + Optional uuid = cardSelector.getUuid(); + + if (index.isPresent()) { + // Index from user input is 1-indexed + try { + delete(index.get() - 1); + return; + } catch (IndexOutOfBoundsException e) { + throw new CardNotFoundException(); + } + } else if (uuid.isPresent()) { + for (int i = 0; i < cards.size(); i++) { + if (cards.get(i).getUuid().equals(uuid.get())) { + delete(i); + return; + } + } + } + + throw new CardNotFoundException(); + } + public List getCards() { return this.cards; } @@ -33,9 +58,9 @@ public List getCards() { /** * Find the card with cardUUID from the cardList. * - * @param cardUUID + * @param cardUUID Card with UUID to find * @return The card with the cardUUID specified that exists in the cardList - * @throws CardNotFoundException + * @throws CardNotFoundException No card with */ public Card findCardFromUUID(CardUUID cardUUID) throws CardNotFoundException { for (Card card : cards) { @@ -46,6 +71,17 @@ public Card findCardFromUUID(CardUUID cardUUID) throws CardNotFoundException { throw new CardNotFoundException(); } + public Card findCard(CardSelector cardSelector) throws CardNotFoundException { + if (cardSelector.getIndex().isPresent()) { + // Index from user input is 1-indexed + return cards.get(cardSelector.getIndex().get() - 1); + } else if (cardSelector.getUuid().isPresent()){ + return findCardFromUUID(cardSelector.getUuid().get()); + } + + return null; + } + public boolean isEmpty() { return cards.isEmpty(); } diff --git a/src/main/java/model/CardSelector.java b/src/main/java/model/CardSelector.java new file mode 100644 index 0000000000..93e85dcf74 --- /dev/null +++ b/src/main/java/model/CardSelector.java @@ -0,0 +1,25 @@ +package model; + +import java.util.Optional; +import java.util.UUID; + +public class CardSelector { + private Optional uuid = Optional.empty(); + private Optional index = Optional.empty(); + + public CardSelector(String uuid) { + this.uuid = Optional.of(new CardUUID(UUID.fromString(uuid))); + } + + public CardSelector(int index) { + this.index = Optional.of(index); + } + + public Optional getUuid() { + return uuid; + } + + public Optional getIndex() { + return index; + } +} diff --git a/src/main/java/utils/command/AddCardToDeckCommand.java b/src/main/java/utils/command/AddCardToDeckCommand.java index 534a9f19e9..da37e7a30f 100644 --- a/src/main/java/utils/command/AddCardToDeckCommand.java +++ b/src/main/java/utils/command/AddCardToDeckCommand.java @@ -1,9 +1,8 @@ package utils.command; -import java.util.UUID; import model.Card; import model.CardList; -import model.CardUUID; +import model.CardSelector; import model.Deck; import model.DeckList; import model.DeckUUID; @@ -11,38 +10,31 @@ import utils.UserInterface; import utils.exceptions.CardInDeckException; import utils.exceptions.InkaException; -import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; public class AddCardToDeckCommand extends Command { private String deckName; private DeckUUID deckUUID; - private CardUUID cardUUID; + private CardSelector cardSelector; - public AddCardToDeckCommand(String deckName, String cardUUID) throws InkaException { + public AddCardToDeckCommand(String deckName, CardSelector cardSelector) { this.deckName = deckName; - try { - this.cardUUID = new CardUUID(UUID.fromString(cardUUID)); - } catch (IllegalArgumentException e) { - throw new UUIDWrongFormatException(); - } + this.cardSelector = cardSelector; } - private void addCardToDeck(DeckList deckList, CardList cardList, UserInterface ui) throws InkaException { + private void addCardToDeck(DeckList deckList, Card cardToAdd, UserInterface ui) { //find the corresponding Deck and Card based on its deckName and card uuid Deck deckToAdd = deckList.findDeckFromName(deckName); - Card cardToAdd = cardList.findCardFromUUID(cardUUID); - assert cardToAdd != null; if (deckToAdd == null) { ui.printDeckCreationSuccess(); - deckToAdd = new Deck(deckName, cardUUID); + deckToAdd = new Deck(deckName, cardToAdd.getUuid()); deckList.addDeck(deckToAdd); } else if(deckToAdd.cardIsInDeck(cardUUID)) { throw new CardInDeckException(); } else { - deckToAdd.addCard(cardUUID); + deckToAdd.addCard(cardToAdd.getUuid()); } //add the tag uuid to the card @@ -51,10 +43,12 @@ private void addCardToDeck(DeckList deckList, CardList cardList, UserInterface u } @Override - public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { - addCardToDeck(deckList, cardList, ui); - ui.printAddCardToDeckSuccess(cardUUID, deckUUID); - } + Card cardToAdd = cardList.findCard(cardSelector); + assert cardToAdd != null; + addCardToDeck(deckList, cardToAdd, ui); + ui.printAddCardToDeckSuccess(cardToAdd.getUuid(), deckUUID); + } } diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 81012b0546..d645438077 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -1,9 +1,8 @@ package utils.command; -import java.util.UUID; import model.Card; import model.CardList; -import model.CardUUID; +import model.CardSelector; import model.DeckList; import model.Tag; import model.TagList; @@ -17,39 +16,37 @@ public class AddCardToTagCommand extends Command { private String tagName; private TagUUID tagUUID; - private CardUUID cardUUID; + private CardSelector cardSelector; - public AddCardToTagCommand(String tagName, String cardUUID) throws InkaException { + public AddCardToTagCommand(String tagName, CardSelector cardSelector) throws InkaException { this.tagName = tagName; try { - this.cardUUID = new CardUUID(UUID.fromString(cardUUID)); + this.cardSelector = cardSelector; } catch (IllegalArgumentException e) { throw new UUIDWrongFormatException(); } } /** - * Adds the tagName tag to the Card with cardUUID, creates the tag beforehand if it currently does not exist. + * Adds the tagName tag to the corresponding card, creates the tag beforehand if it currently does not exist. * - * @param tagList The tagList into which to add the tag that has been created - * @param cardList The cardList from which to find the card with cardUUID - * @param ui The userInterface to print the success of the tag creation + * @param tagList The tagList into which to add the tag that has been created + * @param cardToAdd The card to add to tag + * @param ui The userInterface to print the success of the tag creation * @throws InkaException */ - private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) throws InkaException { + private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) { //find the corresponding Tag and Card based on its tagName and card uuid Tag tagToAdd = tagList.findTagFromName(tagName); - Card cardToAdd = cardList.findCardFromUUID(cardUUID); - assert cardToAdd != null; if (tagToAdd == null) { ui.printTagCreationSuccess(tagName); - tagToAdd = new Tag(tagName, cardUUID); + tagToAdd = new Tag(tagName, cardToAdd.getUuid()); tagList.addTag(tagToAdd); } else if(tagToAdd.cardIsInTag(cardUUID)) { throw new CardInTagException(); } else { - tagToAdd.addCard(cardUUID); + tagToAdd.addCard(cardToAdd.getUuid()); } //add the tag uuid to the card @@ -60,7 +57,10 @@ private void addCardToTag(TagList tagList, CardList cardList, UserInterface ui) @Override public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { - addCardToTag(tagList, cardList, ui); - ui.printAddTagToCardSuccess(cardUUID, tagUUID); + Card cardToAdd = cardList.findCard(cardSelector); + assert cardToAdd != null; + + addCardToTag(tagList, cardToAdd, ui); + ui.printAddTagToCardSuccess(cardToAdd.getUuid(), tagUUID); } } diff --git a/src/main/java/utils/command/ViewCardCommand.java b/src/main/java/utils/command/ViewCardCommand.java index e10a1cece0..5b79deceaa 100644 --- a/src/main/java/utils/command/ViewCardCommand.java +++ b/src/main/java/utils/command/ViewCardCommand.java @@ -1,11 +1,9 @@ package utils.command; import java.util.ArrayList; -import java.util.List; -import java.util.UUID; import model.Card; import model.CardList; -import model.CardUUID; +import model.CardSelector; import model.DeckList; import model.Tag; import model.TagList; @@ -13,18 +11,13 @@ import utils.UserInterface; import utils.exceptions.CardNotFoundException; import utils.exceptions.InkaException; -import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; public class ViewCardCommand extends Command { - private CardUUID cardUUID; + private CardSelector cardSelector; - public ViewCardCommand(String cardUUID) throws InkaException { - try { - this.cardUUID = new CardUUID(UUID.fromString(cardUUID)); - } catch (IllegalArgumentException e) { - throw new UUIDWrongFormatException(); - } + public ViewCardCommand(CardSelector cardSelector) { + this.cardSelector = cardSelector; } /** @@ -46,23 +39,18 @@ public ArrayList findTagsFromTagUUID(ArrayList uuids, TagList tagL return tags; } - public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { - List cards = cardList.getCards(); + Card card = cardList.findCard(cardSelector); ArrayList tags; - boolean cardFound = false; //find the card with the specified uuid, print the card, find all the tags under it, print all the tags - for (Card card : cards) { - if (card.getUuid().equals(cardUUID)) { - cardFound = true; - ui.printCard(card); - ArrayList tagsUUID = card.getTagsUUID(); - tags = findTagsFromTagUUID(tagsUUID, tagList); - ui.printTags(tags); - } - } - if (!cardFound) { + if (card != null) { + ui.printCard(card); + ArrayList tagsUUID = card.getTagsUUID(); + tags = findTagsFromTagUUID(tagsUUID, tagList); + ui.printTags(tags); + } else { throw new CardNotFoundException(); } } diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 45fdeafcf0..af7918d798 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -2,6 +2,7 @@ import java.util.List; import model.Card; +import model.CardSelector; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.DefaultParser; import org.apache.commons.cli.Option; @@ -49,18 +50,14 @@ private static Options buildAddOptions() { private static Options buildDeleteOptions() { Options options = new Options(); - - Option indexOption = new Option("i", "index", true, "card index"); - indexOption.setRequired(true); - indexOption.setType(Number.class); - options.addOption(indexOption); + options.addOptionGroup(buildCardSelectOption()); return options; } private static Options buildTagOptions() { Options options = new Options(); - options.addRequiredOption("c", "card", true, "card UUID"); + options.addOptionGroup(buildCardSelectOption()); Option tag = buildMultipleTokenOption("t", "tag", true, "tag name", true); options.addOption(tag); @@ -70,7 +67,7 @@ private static Options buildTagOptions() { private static Options buildDeckOptions() { Options options = new Options(); - options.addRequiredOption("c", "card", true, "card UUID"); + options.addOptionGroup(buildCardSelectOption()); options.addRequiredOption("d", "deck", true, "deck name"); return options; @@ -78,7 +75,7 @@ private static Options buildDeckOptions() { private static Options buildViewOptions() { Options options = new Options(); - options.addRequiredOption("c", "card", true, "card UUID"); + options.addOptionGroup(buildCardSelectOption()); return options; } @@ -119,10 +116,9 @@ private Command handleAdd(List tokens) throws ParseException { private Command handleDelete(List tokens) throws ParseException { CommandLine cmd = parser.parse(buildDeleteOptions(), tokens.toArray(new String[0])); + CardSelector cardSelector = getSelectedCard(cmd); - int deleteIndex = ((Number) cmd.getParsedOptionValue("i")).intValue(); - - return new DeleteCardCommand(deleteIndex); + return new DeleteCardCommand(cardSelector); } //TODO: Fix issue here @@ -143,32 +139,32 @@ private Command handleList() { private Command handleTag(List tokens) throws ParseException, InkaException { CommandLine cmd = parser.parse(buildTagOptions(), tokens.toArray(new String[0])); + CardSelector cardSelector = getSelectedCard(cmd); - String cardUUID = cmd.getOptionValue("c"); String[] tagNameTokens = cmd.getOptionValues("t"); if (tagNameTokens.length > 1) { // Notify user String tagName = String.join("-", tagNameTokens); - return new AddCardToTagCommand(tagName, cardUUID); + return new AddCardToTagCommand(tagName, cardSelector); } else { - return new AddCardToTagCommand(tagNameTokens[0], cardUUID); + return new AddCardToTagCommand(tagNameTokens[0], cardSelector); } } private Command handleDeck(List tokens) throws ParseException, InkaException { CommandLine cmd = parser.parse(buildDeckOptions(), tokens.toArray(new String[0])); - String cardUUID = cmd.getOptionValue("c"); + CardSelector cardSelector = getSelectedCard(cmd); String deckName = cmd.getOptionValue("d"); - return new AddCardToDeckCommand(deckName, cardUUID); + return new AddCardToDeckCommand(deckName, cardSelector); } private Command handleView(List tokens) throws ParseException, InkaException { CommandLine cmd = parser.parse(buildViewOptions(), tokens.toArray(new String[0])); + CardSelector cardSelector = getSelectedCard(cmd); - String cardUUID = cmd.getOptionValue("c"); - return new ViewCardCommand(cardUUID); + return new ViewCardCommand(cardSelector); } } diff --git a/src/main/java/utils/parser/KeywordParser.java b/src/main/java/utils/parser/KeywordParser.java index f76023149e..b63f7d3580 100644 --- a/src/main/java/utils/parser/KeywordParser.java +++ b/src/main/java/utils/parser/KeywordParser.java @@ -2,12 +2,16 @@ import java.io.PrintWriter; import java.io.StringWriter; +import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; +import model.CardSelector; +import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.MissingArgumentException; import org.apache.commons.cli.MissingOptionException; import org.apache.commons.cli.Option; +import org.apache.commons.cli.OptionGroup; import org.apache.commons.cli.Options; import org.apache.commons.cli.ParseException; import utils.command.Command; @@ -20,6 +24,11 @@ */ public abstract class KeywordParser { + protected static final String FLAG_CARD_UUID = "c"; + protected static final String FLAG_LONG_CARD_UUID = "card"; + protected static final String FLAG_CARD_INDEX = "i"; + protected static final String FLAG_LONG_CARD_INDEX = "index"; + protected static final int FORMAT_HELP_WIDTH = 200; protected static final int FORMAT_HELP_LEFT_PAD = 0; protected static final int FORMAT_HELP_DESC_PAD = 10; @@ -46,6 +55,41 @@ protected static Option buildMultipleTokenOption(String option, String longOptio return opt; } + /** + * Build an {@link Option} for selecting Card based on either {@link model.CardUUID} or card index from list + * + * @return Configured OptionGroup + */ + protected static OptionGroup buildCardSelectOption() { + // Mutually exclusive options + OptionGroup optionGroup = new OptionGroup(); + optionGroup.setRequired(true); + + Option cardUuidOption = new Option(FLAG_CARD_UUID, FLAG_LONG_CARD_UUID, true, "card UUID"); + optionGroup.addOption(cardUuidOption); + + Option cardIndexOption = new Option(FLAG_CARD_INDEX, FLAG_LONG_CARD_INDEX, true, "card index"); + cardIndexOption.setType(Number.class); + optionGroup.addOption(cardIndexOption); + + return optionGroup; + } + + protected static CardSelector getSelectedCard(CommandLine cmd) throws ParseException { + + if (cmd.hasOption(FLAG_CARD_UUID)) { + String cardUUID = cmd.getOptionValue(FLAG_CARD_UUID); + return new CardSelector(cardUUID); + } else if (cmd.hasOption(FLAG_CARD_INDEX)) { + int index = ((Long) cmd.getParsedOptionValue(FLAG_CARD_INDEX)).intValue(); + return new CardSelector(index); + } + + // Shouldn't be called + assert false; + return null; + } + @SuppressWarnings("unchecked") // Safe, CLI library just returns List instead of List public Command parseTokens(List tokens) throws InkaException { if (tokens.size() == 0) { @@ -61,9 +105,21 @@ public Command parseTokens(List tokens) throws InkaException { String missingArgumentOption = e.getOption().getArgName(); throw InvalidSyntaxException.buildMissingArgumentMessage(missingArgumentOption); } catch (MissingOptionException e) { - List opts = e.getMissingOptions(); - String missingOptions = opts.stream().map(str -> "-" + str).collect(Collectors.joining(", ")); - throw InvalidSyntaxException.buildMissingOptionMessage(missingOptions); + // Apache will return a List containing either String or OptionGroup + List missingOptions = new ArrayList<>(); + for (Object obj : e.getMissingOptions()) { + if (obj instanceof String) { + missingOptions.add((String) obj); + } + else if (obj instanceof OptionGroup) { + OptionGroup optionGroup = (OptionGroup) obj; + String optionsInGroup = optionGroup.getOptions().stream().map(option -> "-" + option.getOpt()).collect(Collectors.joining("/")); + missingOptions.add(optionsInGroup); + } + } + + String missingOptionsStr = String.join(", ", missingOptions); + throw InvalidSyntaxException.buildMissingOptionMessage(missingOptionsStr); } catch (ParseException e) { throw InvalidSyntaxException.buildGenericMessage(); } diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/parser/Parser.java index aa8ff6041f..69bce67e60 100644 --- a/src/main/java/utils/parser/Parser.java +++ b/src/main/java/utils/parser/Parser.java @@ -21,7 +21,6 @@ public class Parser { // Keyword-specific parsers private final CardKeywordParser cardKeywordParser = new CardKeywordParser(); private final TagKeywordParser tagKeywordParser = new TagKeywordParser(); - private final DeckKeywordParser deckKeywordParser = new DeckKeywordParser(); private boolean isExecuting; diff --git a/src/test/java/utils/parser/CardParserTest.java b/src/test/java/utils/parser/CardParserTest.java index e06fbb62de..2c32d0d8b1 100644 --- a/src/test/java/utils/parser/CardParserTest.java +++ b/src/test/java/utils/parser/CardParserTest.java @@ -14,7 +14,7 @@ import utils.command.Command; import utils.command.DeleteCardCommand; import utils.command.ViewCardCommand; -import utils.exceptions.UnknownItem; +import utils.exceptions.CardNotFoundException; import utils.exceptions.InkaException; import utils.exceptions.InvalidSyntaxException; import utils.storage.FakeStorage; @@ -46,7 +46,7 @@ void init() { public void parse_card_add() throws InkaException { Command cmd = parser.parseCommand("card add -q QUESTION -a ANSWER"); assert cmd instanceof AddCardCommand; - cmd.execute(cardList, tagList, deckList , ui, storage); + cmd.execute(cardList, tagList, deckList, ui, storage); Card card = cardList.get(0); assert card.getQuestion().equals("QUESTION") : "Unexpected question parsed"; @@ -57,7 +57,7 @@ public void parse_card_add() throws InkaException { public void parse_card_addLongFlag() throws InkaException { Command cmd = parser.parseCommand("card add --question QUESTION --answer ANSWER"); assert cmd instanceof AddCardCommand; - cmd.execute(cardList, tagList, deckList ,ui, storage); + cmd.execute(cardList, tagList, deckList, ui, storage); Card card = cardList.get(0); assert card.getQuestion().equals("QUESTION") : "Unexpected question parsed"; @@ -68,7 +68,7 @@ public void parse_card_addLongFlag() throws InkaException { public void parse_card_addWithWhitespaces() throws InkaException { Command cmd = parser.parseCommand("card add -q MULTI WORD QUESTION -a MULTI WORD ANSWER"); assert cmd instanceof AddCardCommand; - cmd.execute(cardList, tagList, deckList ,ui, storage); + cmd.execute(cardList, tagList, deckList, ui, storage); Card card = cardList.get(0); assert card.getQuestion().equals("MULTI WORD QUESTION") : "Unexpected question parsed"; @@ -98,30 +98,36 @@ public void parse_card_addMissingArguments() { @Test public void parse_card_delete() throws InkaException { - cardList.addCard(new Card("QUESTION", "ANSWER")); + String[] testInputs = {"card delete -i 1", "card delete -c 00000000-0000-0000-0000-000000000000"}; + for (String testInput : testInputs) { + cardList.addCard(Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000")); - Command cmd = parser.parseCommand("card delete -i 1"); - assert cmd instanceof DeleteCardCommand; - cmd.execute(cardList, tagList, deckList, ui, storage); + Command cmd = parser.parseCommand(testInput); + assert cmd instanceof DeleteCardCommand; + cmd.execute(cardList, tagList, deckList, ui, storage); - assert cardList.isEmpty() : "Should have deleted Card"; + assert cardList.isEmpty() : "Should have deleted Card"; + } } @Test public void parse_card_deleteLongFlag() throws InkaException { - cardList.addCard(new Card("QUESTION", "ANSWER")); + String[] testInputs = {"card delete --index 1", "card delete --card 00000000-0000-0000-0000-000000000000"}; + for (String testInput : testInputs) { + cardList.addCard(Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000")); - Command cmd = parser.parseCommand("card delete --index 1"); - assert cmd instanceof DeleteCardCommand; - cmd.execute(cardList, tagList, deckList,ui, storage); + Command cmd = parser.parseCommand(testInput); + assert cmd instanceof DeleteCardCommand; + cmd.execute(cardList, tagList, deckList, ui, storage); - assert cardList.isEmpty() : "Should have deleted Card"; + assert cardList.isEmpty() : "Should have deleted Card"; + } } @Test public void parse_card_deleteEmpty() throws InkaException { Command cmd = parser.parseCommand("card delete -i 1"); - assertThrows(UnknownItem.class, () -> cmd.execute(cardList, tagList, deckList,ui, storage), + assertThrows(CardNotFoundException.class, () -> cmd.execute(cardList, tagList, deckList, ui, storage), "Should fail to delete nothing"); } @@ -130,7 +136,7 @@ public void parse_card_deleteBadIndex() throws InkaException { cardList.addCard(new Card("QUESTION", "ANSWER")); Command cmd = parser.parseCommand("card delete -i 0"); - assertThrows(UnknownItem.class, () -> cmd.execute(cardList, tagList, deckList,ui, storage), + assertThrows(CardNotFoundException.class, () -> cmd.execute(cardList, tagList, deckList, ui, storage), "Should fail to delete nothing"); } @@ -179,7 +185,7 @@ public void parse_card_tagWhitespaceName() throws InkaException { cardList.addCard(Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000")); Command cmd = parser.parseCommand("card tag -c 00000000-0000-0000-0000-000000000000 -t tag name"); assert cmd instanceof AddCardToTagCommand; - cmd.execute(cardList, tagList,deckList, ui, storage); + cmd.execute(cardList, tagList, deckList, ui, storage); assert tagList.findTagFromName("tag-name") != null; } @@ -189,14 +195,26 @@ public void parse_card_tagWhitespaceName() throws InkaException { @Test public void parse_card_view() throws InkaException { - Command cmd = parser.parseCommand("card view -c 00000000-0000-0000-0000-000000000000 "); - assert cmd instanceof ViewCardCommand; + String[] testInputs = {"card view -i 1", "card view -c 00000000-0000-0000-0000-000000000000"}; + for (String testInput : testInputs) { + cardList.addCard(Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000")); + + Command cmd = parser.parseCommand(testInput); + assert cmd instanceof ViewCardCommand; + cmd.execute(cardList, tagList, deckList, ui, storage); + } } @Test public void parse_card_viewLongFlag() throws InkaException { - Command cmd = parser.parseCommand("card view --card 00000000-0000-0000-0000-000000000000"); - assert cmd instanceof ViewCardCommand; + String[] testInputs = {"card view --index 1", "card view --card 00000000-0000-0000-0000-000000000000"}; + for (String testInput : testInputs) { + cardList.addCard(Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000")); + + Command cmd = parser.parseCommand(testInput); + assert cmd instanceof ViewCardCommand; + cmd.execute(cardList, tagList, deckList, ui, storage); + } } @Test From 23ec3992459746e34c8be2902bd37f1f5af020f0 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Thu, 30 Mar 2023 22:31:39 +0800 Subject: [PATCH 100/311] chore: rebase --- src/main/java/model/CardList.java | 8 +++- .../utils/command/AddCardToDeckCommand.java | 4 +- .../utils/command/AddCardToTagCommand.java | 5 +- .../java/utils/command/DeleteCardCommand.java | 47 ++++++++++--------- src/main/java/utils/parser/KeywordParser.java | 6 +-- 5 files changed, 39 insertions(+), 31 deletions(-) diff --git a/src/main/java/model/CardList.java b/src/main/java/model/CardList.java index f727762c9d..d94c388037 100644 --- a/src/main/java/model/CardList.java +++ b/src/main/java/model/CardList.java @@ -74,8 +74,12 @@ public Card findCardFromUUID(CardUUID cardUUID) throws CardNotFoundException { public Card findCard(CardSelector cardSelector) throws CardNotFoundException { if (cardSelector.getIndex().isPresent()) { // Index from user input is 1-indexed - return cards.get(cardSelector.getIndex().get() - 1); - } else if (cardSelector.getUuid().isPresent()){ + try { + return cards.get(cardSelector.getIndex().get() - 1); + } catch (IndexOutOfBoundsException e) { + throw new CardNotFoundException(); + } + } else if (cardSelector.getUuid().isPresent()) { return findCardFromUUID(cardSelector.getUuid().get()); } diff --git a/src/main/java/utils/command/AddCardToDeckCommand.java b/src/main/java/utils/command/AddCardToDeckCommand.java index da37e7a30f..e9029c3af3 100644 --- a/src/main/java/utils/command/AddCardToDeckCommand.java +++ b/src/main/java/utils/command/AddCardToDeckCommand.java @@ -23,7 +23,7 @@ public AddCardToDeckCommand(String deckName, CardSelector cardSelector) { this.cardSelector = cardSelector; } - private void addCardToDeck(DeckList deckList, Card cardToAdd, UserInterface ui) { + private void addCardToDeck(DeckList deckList, Card cardToAdd, UserInterface ui) throws CardInDeckException { //find the corresponding Deck and Card based on its deckName and card uuid Deck deckToAdd = deckList.findDeckFromName(deckName); @@ -31,7 +31,7 @@ private void addCardToDeck(DeckList deckList, Card cardToAdd, UserInterface ui) ui.printDeckCreationSuccess(); deckToAdd = new Deck(deckName, cardToAdd.getUuid()); deckList.addDeck(deckToAdd); - } else if(deckToAdd.cardIsInDeck(cardUUID)) { + } else if (deckToAdd.cardIsInDeck(cardToAdd.getUuid())) { throw new CardInDeckException(); } else { deckToAdd.addCard(cardToAdd.getUuid()); diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index d645438077..54c107ff92 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -33,9 +33,8 @@ public AddCardToTagCommand(String tagName, CardSelector cardSelector) throws Ink * @param tagList The tagList into which to add the tag that has been created * @param cardToAdd The card to add to tag * @param ui The userInterface to print the success of the tag creation - * @throws InkaException */ - private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) { + private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) throws CardInTagException { //find the corresponding Tag and Card based on its tagName and card uuid Tag tagToAdd = tagList.findTagFromName(tagName); @@ -43,7 +42,7 @@ private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) { ui.printTagCreationSuccess(tagName); tagToAdd = new Tag(tagName, cardToAdd.getUuid()); tagList.addTag(tagToAdd); - } else if(tagToAdd.cardIsInTag(cardUUID)) { + } else if (tagToAdd.cardIsInTag(cardToAdd.getUuid())) { throw new CardInTagException(); } else { tagToAdd.addCard(cardToAdd.getUuid()); diff --git a/src/main/java/utils/command/DeleteCardCommand.java b/src/main/java/utils/command/DeleteCardCommand.java index 3c013b55d4..5cd28e6045 100644 --- a/src/main/java/utils/command/DeleteCardCommand.java +++ b/src/main/java/utils/command/DeleteCardCommand.java @@ -2,6 +2,7 @@ import model.Card; import model.CardList; +import model.CardSelector; import model.Deck; import model.DeckList; import model.DeckUUID; @@ -9,45 +10,49 @@ import model.TagList; import model.TagUUID; import utils.UserInterface; -import utils.exceptions.UnknownItem; +import utils.exceptions.CardNotFoundException; import utils.exceptions.InkaException; import utils.storage.IDataStorage; public class DeleteCardCommand extends Command { - private int index; - private Card card; + private CardSelector cardSelector; - public DeleteCardCommand(int index) { - this.index = index; + public DeleteCardCommand(CardSelector cardSelector) { + this.cardSelector = cardSelector; } //Assume this is silent removal, no UI message is displayed - public void cardRemovalFromDecks (CardList cardList, DeckList deckList) { - this.card = cardList.get(this.index-1); - for(DeckUUID deckUUID: card.getDecksUUID()) { + public void cardRemovalFromDecks(Card cardToDelete, DeckList deckList) { + for (DeckUUID deckUUID : cardToDelete.getDecksUUID()) { Deck deckToDeleteCardFrom = deckList.findDeckFromUUID(deckUUID); - deckToDeleteCardFrom.getCardsUUID().remove(card.getUuid()); + deckToDeleteCardFrom.getCardsUUID().remove(cardToDelete.getUuid()); } } - public void cardRemovalFromTag(TagList tagList) { - for(TagUUID tagUUID: card.getTagsUUID()) { + + public void cardRemovalFromTag(Card cardToDelete, TagList tagList) { + for (TagUUID tagUUID : cardToDelete.getTagsUUID()) { Tag tagToDeleteCardFrom = tagList.findTagFromUUID(tagUUID); - tagToDeleteCardFrom.getCardsUUID().remove(card.getUuid()); + tagToDeleteCardFrom.getCardsUUID().remove(cardToDelete.getUuid()); } } @Override - public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { - try { - cardRemovalFromDecks(cardList, deckList); - cardRemovalFromTag(tagList); - cardList.delete(this.index - 1); - ui.printDeleteSuccess(); - ui.printNumOfQuestions(cardList); - } catch (IndexOutOfBoundsException | NullPointerException e ) { - throw new UnknownItem(); + Card cardToDelete = cardList.findCard(cardSelector); + if (cardToDelete == null) { + throw new CardNotFoundException(); } + + // Delete references to card + cardRemovalFromDecks(cardToDelete, deckList); + cardRemovalFromTag(cardToDelete, tagList); + + // Delete actual Card object + cardList.delete(cardSelector); + + ui.printDeleteSuccess(); + ui.printNumOfQuestions(cardList); } } diff --git a/src/main/java/utils/parser/KeywordParser.java b/src/main/java/utils/parser/KeywordParser.java index b63f7d3580..ba9543f4fe 100644 --- a/src/main/java/utils/parser/KeywordParser.java +++ b/src/main/java/utils/parser/KeywordParser.java @@ -110,10 +110,10 @@ public Command parseTokens(List tokens) throws InkaException { for (Object obj : e.getMissingOptions()) { if (obj instanceof String) { missingOptions.add((String) obj); - } - else if (obj instanceof OptionGroup) { + } else if (obj instanceof OptionGroup) { OptionGroup optionGroup = (OptionGroup) obj; - String optionsInGroup = optionGroup.getOptions().stream().map(option -> "-" + option.getOpt()).collect(Collectors.joining("/")); + String optionsInGroup = optionGroup.getOptions().stream().map(option -> "-" + option.getOpt()) + .collect(Collectors.joining("/")); missingOptions.add(optionsInGroup); } } From 5273d42abb6625dba5af1d90b4697cad09b15958 Mon Sep 17 00:00:00 2001 From: Ian Teng Date: Fri, 31 Mar 2023 01:01:09 +0800 Subject: [PATCH 101/311] added saving and loading decklist --- .savedata_backup.json | 64 ++++++++-- savedata.json | 57 +++++++-- src/main/java/Inka.java | 20 +-- src/main/java/model/Card.java | 2 + src/main/java/model/Deck.java | 5 + src/main/java/model/Memory.java | 45 +++++++ src/main/java/model/Tag.java | 9 ++ .../java/utils/command/ExportCommand.java | 2 +- .../java/utils/command/TerminateCommand.java | 2 +- src/main/java/utils/storage/FakeStorage.java | 9 +- src/main/java/utils/storage/IDataStorage.java | 7 +- .../java/utils/storage/json/JsonStorage.java | 118 +++++++++++++----- src/test/data/storage/valid.json | 57 +++++++-- .../java/utils/storage/JsonStorageTest.java | 5 +- 14 files changed, 314 insertions(+), 88 deletions(-) create mode 100644 src/main/java/model/Memory.java diff --git a/.savedata_backup.json b/.savedata_backup.json index 3fe7d55e2c..3608ad9773 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -1,21 +1,61 @@ { - "deckName": "lky deck", - "numCards": 3, "cards": [ { - "uuid": "98685c9e-91d5-43f6-8d94-e6c73a425f5f", - "question": "deck_test_card", - "answer": "nothing" - }, + "uuid": { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + }, + "question": "fdfds", + "answer": "ffffffghgg", + "tags": [ + { + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + } + ], + "decks": [ + { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + } + ] + } + ], + "tags": [ + { + "uuid": { + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + }, + "tagName": "tag1", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] + } + ], + "decks": [ { - "uuid": "b4ee4e97-21df-4459-8268-ac7f218cae7d", - "question": "tag_test_card", - "answer": "nothing" + "deckName": "deck1", + "deckUUID": { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + }, + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "tags": [] }, { - "uuid": "463d973a-48d6-45fa-8db1-5aaf4ce19492", - "question": "deck_test_tag", - "answer": "nothing" + "deckName": "decktag", + "deckUUID": { + "uuid": "46f82128-0ee7-4f8c-baa3-e4ca255eeb45" + }, + "cards": [], + "tags": [ + { + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + } + ] } ] } \ No newline at end of file diff --git a/savedata.json b/savedata.json index 717c4f21a0..3608ad9773 100644 --- a/savedata.json +++ b/savedata.json @@ -2,27 +2,58 @@ "cards": [ { "uuid": { - "uuid": "c2c61475-df53-4656-94c4-c2e36933d359" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" }, - "question": "fdff", - "answer": "rerrr", - "tags": [], - "decks": [] - }, + "question": "fdfds", + "answer": "ffffffghgg", + "tags": [ + { + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + } + ], + "decks": [ + { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + } + ] + } + ], + "tags": [ { "uuid": { - "uuid": "3b86b31c-6289-4716-a5c6-5afd43b9bbd3" + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" }, - "question": "fdf", - "answer": "ffffffffff", - "tags": [ + "tagName": "tag1", + "cards": [ { - "uuid": "d480b453-f900-471b-8f1d-9e74504d5cf7" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } ], - "decks": [ + "decks": [] + } + ], + "decks": [ + { + "deckName": "deck1", + "deckUUID": { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + }, + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "tags": [] + }, + { + "deckName": "decktag", + "deckUUID": { + "uuid": "46f82128-0ee7-4f8c-baa3-e4ca255eeb45" + }, + "cards": [], + "tags": [ { - "uuid": "ef2df71c-b645-4bcf-a8b7-c5d2a0349efa" + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" } ] } diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 69ee111f27..1bbb9fe625 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -1,5 +1,6 @@ import model.CardList; import model.DeckList; +import model.Memory; import model.TagList; import utils.UserInterface; import utils.command.Command; @@ -14,6 +15,8 @@ public class Inka { private final Parser parser; private Storage storage; + private Memory memory; + private CardList cardList; private TagList tagList; private DeckList deckList; @@ -22,9 +25,10 @@ public Inka(String filePath) { storage = new JsonStorage(filePath); ui = new UserInterface(); parser = new Parser(); - deckList = new DeckList(); - cardList = loadSaveFile(); - tagList = new TagList(); + memory = loadSaveFile(); + deckList = memory.getDeckList(); + cardList = memory.getCardList(); + tagList = memory.getTagList(); } public static void main(String[] args) { @@ -36,23 +40,23 @@ public static void main(String[] args) { * * @return CardList containing all saved cards */ - private CardList loadSaveFile() { + private Memory loadSaveFile() { // Notify user of no previously saved file if (!storage.saveFileExists()) { ui.printNoSaveFile(); - return new CardList(); + return new Memory(); } // File exists; try to load from it - CardList cardList = new CardList(); + Memory memory = new Memory(); try { - cardList = storage.load(); + memory = storage.load(); ui.printLoadSuccess(); } catch (InkaException e) { ui.printException(e); } - return cardList; + return memory; } public void run() { diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 9632f887bb..e8af496097 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -31,6 +31,8 @@ private Card(String question, String answer, String uuidStr) { this.question = question; this.answer = answer; this.uuid = new CardUUID(UUID.fromString(uuidStr)); + + } /** diff --git a/src/main/java/model/Deck.java b/src/main/java/model/Deck.java index b877218eaf..a4d015c6a7 100644 --- a/src/main/java/model/Deck.java +++ b/src/main/java/model/Deck.java @@ -63,6 +63,11 @@ public DeckUUID getDeckUUID() { return deckUUID; } + public void setDeckUUID(String uuidStr){ + this.deckUUID = new DeckUUID(UUID.fromString(uuidStr)); + } + + public ArrayList getCardsUUID() { return cards; } diff --git a/src/main/java/model/Memory.java b/src/main/java/model/Memory.java new file mode 100644 index 0000000000..474a4c8f73 --- /dev/null +++ b/src/main/java/model/Memory.java @@ -0,0 +1,45 @@ +package model; + +import java.util.ArrayList; + +public class Memory { + + private TagList tagList; + + private DeckList deckList; + + private CardList cardList; + + public Memory() { + + this.tagList = new TagList(); + this.deckList = new DeckList(); + this.cardList = new CardList(); + + + } + + public CardList getCardList() { + return cardList; + } + + public DeckList getDeckList() { + return deckList; + } + + public TagList getTagList() { + return tagList; + } + + public void setCardList(CardList cardList) { + this.cardList = cardList; + } + + public void setDeckList(DeckList deckList) { + this.deckList = deckList; + } + + public void setTagList(TagList tagList) { + this.tagList = tagList; + } +} diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index f3db23da8c..ca33408dad 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -9,12 +9,21 @@ public class Tag { private ArrayList cards = new ArrayList<>(); private ArrayList decks = new ArrayList<>(); + public Tag(String tagName, CardUUID cardUUID) { this.tagName = tagName; this.uuid = new TagUUID(UUID.randomUUID()); cards.add(cardUUID); } + public Tag(String tagName, String uuidStr, String password) { + if(password.equals("pw")) { + + this.tagName = tagName; + this.uuid = new TagUUID(UUID.fromString(uuidStr)); + } + } + public ArrayList getDecks() { return decks; } diff --git a/src/main/java/utils/command/ExportCommand.java b/src/main/java/utils/command/ExportCommand.java index bad36fbf34..4828c4731c 100644 --- a/src/main/java/utils/command/ExportCommand.java +++ b/src/main/java/utils/command/ExportCommand.java @@ -12,7 +12,7 @@ public class ExportCommand extends Command { @Override public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { - storage.save(cardList); + storage.save(cardList, tagList, deckList); ui.printSaveSuccess(); } } diff --git a/src/main/java/utils/command/TerminateCommand.java b/src/main/java/utils/command/TerminateCommand.java index 7d00c5c6e9..d0982c238c 100644 --- a/src/main/java/utils/command/TerminateCommand.java +++ b/src/main/java/utils/command/TerminateCommand.java @@ -11,7 +11,7 @@ public class TerminateCommand extends Command { @Override public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) throws InkaException { - storage.save(cardList); + storage.save(cardList, tagList, deckList); ui.printBye(); } } diff --git a/src/main/java/utils/storage/FakeStorage.java b/src/main/java/utils/storage/FakeStorage.java index 1f206f238d..ba372445e5 100644 --- a/src/main/java/utils/storage/FakeStorage.java +++ b/src/main/java/utils/storage/FakeStorage.java @@ -1,6 +1,9 @@ package utils.storage; import model.CardList; +import model.DeckList; +import model.Memory; +import model.TagList; /** * For testing without writing to file system @@ -12,12 +15,12 @@ public FakeStorage() { } @Override - public CardList load() { - return new CardList(); + public Memory load() { + return new Memory(); } @Override - public void save(CardList cardList) { + public void save(CardList cardList, TagList tagList, DeckList deckList) { } } diff --git a/src/main/java/utils/storage/IDataStorage.java b/src/main/java/utils/storage/IDataStorage.java index e51dc1e6d2..6a2e9a8676 100644 --- a/src/main/java/utils/storage/IDataStorage.java +++ b/src/main/java/utils/storage/IDataStorage.java @@ -1,11 +1,14 @@ package utils.storage; import model.CardList; +import model.DeckList; +import model.Memory; +import model.TagList; import utils.exceptions.InkaException; public interface IDataStorage { - CardList load() throws InkaException; + Memory load() throws InkaException; - void save(CardList cardList) throws InkaException; + void save(CardList cardList, TagList tagList, DeckList deckList) throws InkaException; } diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 72e5b1af08..f74ce542b6 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -188,11 +188,7 @@ import java.util.ArrayList; -import model.Card; -import model.CardList; -import model.CardUUID; -import model.TagUUID; -import model.DeckUUID; +import model.*; import utils.exceptions.InkaException; import utils.exceptions.StorageCorrupted; @@ -241,8 +237,10 @@ public JsonStorage(String filePath) { } @Override - public CardList load() throws InkaException { + public Memory load() throws InkaException { CardList cardList = null; + TagList tagList = null; + DeckList deckList = null; boolean useBackup = false; try { FileReader fileReader = new FileReader(saveFile); @@ -253,10 +251,10 @@ public CardList load() throws InkaException { JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); - JsonObject jsonObject = jsonElement.getAsJsonObject(); + JsonObject saveDataObject = jsonElement.getAsJsonObject(); - JsonArray jsonArray = jsonObject.getAsJsonArray("cards"); + JsonArray jsonArray = saveDataObject.getAsJsonArray("cards"); ArrayList cards = new ArrayList<>(); @@ -273,17 +271,6 @@ public CardList load() throws InkaException { - - - - - - - - - - - Card card = Card.createCardWithUUID(question, answer, uuidString); JsonArray tagsArray = cardObject.getAsJsonArray("tags"); @@ -291,16 +278,6 @@ public CardList load() throws InkaException { - - - - - - - - - - for (JsonElement tagListElement : tagsArray) { JsonObject tagUuidObject = tagListElement.getAsJsonObject(); @@ -326,28 +303,71 @@ public CardList load() throws InkaException { cards.add(card); } - cardList = new CardList(cards); + cardList = new CardList(cards); // assign cardList object with cards - } catch (IOException e) { + tagList = new TagList(); // construct empty taglist to append stuff to + JsonArray tagJsonArray = saveDataObject.getAsJsonArray("tags"); + for(JsonElement jsonTag : tagJsonArray) { + JsonObject tagObject = jsonTag.getAsJsonObject(); + JsonObject uuidObject = tagObject.getAsJsonObject("uuid"); + String uuidString = uuidObject.get("uuid").getAsString(); + + String tagName = tagObject.get("tagName").getAsString(); + JsonArray tagCardArray = tagObject.getAsJsonArray("cards"); + Tag tag = new Tag(tagName, uuidString, "pw"); + for (JsonElement cardListElement : tagCardArray) { + JsonObject cardUuidObject = cardListElement.getAsJsonObject(); + String cardUuidString = cardUuidObject.get("uuid").getAsString(); + tag.addCard(new CardUUID(UUID.fromString(cardUuidString))); + } + + tagList.addTag(tag); + } + deckList = new DeckList(); + JsonArray deckJsonArray = saveDataObject.getAsJsonArray("decks"); + for(JsonElement jsonDeck : deckJsonArray) { + JsonObject deckObject = jsonDeck.getAsJsonObject(); + JsonObject uuidObject = deckObject.getAsJsonObject("deckUUID"); + String uuidString = uuidObject.get("uuid").getAsString(); + String deckName = deckObject.get("deckName").getAsString(); + Deck deck = new Deck(deckName); + deck.setDeckUUID(uuidString); + //obtain cards from a jsonDeck + JsonArray deckCardArray = deckObject.getAsJsonArray("cards"); + for (JsonElement deckListElement : deckCardArray) { + JsonObject cardUuidObject = deckListElement.getAsJsonObject(); + String cardUuidString = cardUuidObject.get("uuid").getAsString(); + deck.addCard(new CardUUID(UUID.fromString(cardUuidString))); + } + //obtain tags from a jsonDeck + JsonArray deckTagArray = deckObject.getAsJsonArray("tags"); + for (JsonElement deckListElement : deckTagArray) { + JsonObject tagUuidObject = deckListElement.getAsJsonObject(); + String tagUuidString = tagUuidObject.get("uuid").getAsString(); + deck.addTag(new TagUUID(UUID.fromString(tagUuidString))); + } + deckList.addDeck(deck); + } + } catch (IOException e) { String absolutePath = this.saveFile.getAbsolutePath(); logger.log(Level.WARNING, "Failed to load file from " + absolutePath, e); @@ -382,11 +402,16 @@ public CardList load() throws InkaException { } } - return cardList; + Memory savedMemory = new Memory(); + savedMemory.setCardList(cardList); + savedMemory.setTagList(tagList); + savedMemory.setDeckList(deckList); + + return savedMemory; } @Override - public void save(CardList cardList) throws StorageSaveFailure { + public void save(CardList cardList, TagList tagList, DeckList deckList) throws StorageSaveFailure { JsonObject exportData = new JsonObject(); Gson gson = new Gson(); @@ -403,6 +428,32 @@ public void save(CardList cardList) throws StorageSaveFailure { } exportData.add("cards", cardData); + // Serialize Tags + + JsonArray tagData = new JsonArray(); + for (int i = 0; i < tagList.size(); i++) { + // Convert the card object to a JsonObject using Gson + Tag tag = tagList.get(i); + + JsonObject tagObject = gson.toJsonTree(tag).getAsJsonObject(); + + // Add the card object to the cardData array + tagData.add(tagObject); + } + exportData.add("tags", tagData); + + JsonArray deckData = new JsonArray(); + for (int i = 0; i < deckList.size(); i++) { + // Convert the card object to a JsonObject using Gson + Deck deck = deckList.get(i); + + JsonObject deckObject = gson.toJsonTree(deck).getAsJsonObject(); + + // Add the card object to the cardData array + deckData.add(deckObject); + } + exportData.add("decks", deckData); + try { saveDataToFile(saveFile, exportData); @@ -413,6 +464,7 @@ public void save(CardList cardList) throws StorageSaveFailure { logger.log(Level.WARNING, "Failed to save data to savedata.json" + absolutePath, e); throw new StorageSaveFailure(absolutePath); } + } private void saveDataToFile(File file, JsonObject data) throws IOException { diff --git a/src/test/data/storage/valid.json b/src/test/data/storage/valid.json index 717c4f21a0..3608ad9773 100644 --- a/src/test/data/storage/valid.json +++ b/src/test/data/storage/valid.json @@ -2,27 +2,58 @@ "cards": [ { "uuid": { - "uuid": "c2c61475-df53-4656-94c4-c2e36933d359" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" }, - "question": "fdff", - "answer": "rerrr", - "tags": [], - "decks": [] - }, + "question": "fdfds", + "answer": "ffffffghgg", + "tags": [ + { + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + } + ], + "decks": [ + { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + } + ] + } + ], + "tags": [ { "uuid": { - "uuid": "3b86b31c-6289-4716-a5c6-5afd43b9bbd3" + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" }, - "question": "fdf", - "answer": "ffffffffff", - "tags": [ + "tagName": "tag1", + "cards": [ { - "uuid": "d480b453-f900-471b-8f1d-9e74504d5cf7" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } ], - "decks": [ + "decks": [] + } + ], + "decks": [ + { + "deckName": "deck1", + "deckUUID": { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + }, + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "tags": [] + }, + { + "deckName": "decktag", + "deckUUID": { + "uuid": "46f82128-0ee7-4f8c-baa3-e4ca255eeb45" + }, + "cards": [], + "tags": [ { - "uuid": "ef2df71c-b645-4bcf-a8b7-c5d2a0349efa" + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" } ] } diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index e0c714c7d5..5334e1c88c 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -4,6 +4,7 @@ import java.nio.file.Path; import model.CardList; +import model.Memory; import org.junit.jupiter.api.Test; import utils.exceptions.InkaException; import utils.exceptions.StorageCorrupted; @@ -33,8 +34,8 @@ public void load_malformedFile() { @Test public void load_validFile() throws InkaException { Storage storage = new JsonStorage(VALID_FILE.toString()); - CardList cardList = storage.load(); + Memory memory = storage.load(); - assert cardList.size() == 2 : "Expected 2 Cards from save file"; + // assert cardList.size() == 2 : "Expected 2 Cards from save file"; } } From fb187051f53fe44a6641f93ffa2ce016a0b4d4c9 Mon Sep 17 00:00:00 2001 From: Ian Teng Date: Fri, 31 Mar 2023 01:09:59 +0800 Subject: [PATCH 102/311] fix checkstyle --- src/main/java/model/Memory.java | 2 +- src/main/java/utils/storage/json/JsonStorage.java | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/model/Memory.java b/src/main/java/model/Memory.java index 474a4c8f73..8372e9de0d 100644 --- a/src/main/java/model/Memory.java +++ b/src/main/java/model/Memory.java @@ -1,6 +1,6 @@ package model; -import java.util.ArrayList; + public class Memory { diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index f74ce542b6..9e93cba88f 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -188,7 +188,17 @@ import java.util.ArrayList; -import model.*; +import model.TagList; +import model.CardList; +import model.TagUUID; +import model.Tag; +import model.Memory; +import model.DeckList; +import model.Card; +import model.Deck; +import model.CardUUID; +import model.DeckUUID; + import utils.exceptions.InkaException; import utils.exceptions.StorageCorrupted; From 3feae9eebb34b3ba4a09c3352e95d9230199d4ac Mon Sep 17 00:00:00 2001 From: Ian Teng Date: Fri, 31 Mar 2023 01:16:00 +0800 Subject: [PATCH 103/311] fix checkstyle --- src/test/java/utils/storage/JsonStorageTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index 5334e1c88c..311f7e28f1 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -3,7 +3,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import java.nio.file.Path; -import model.CardList; import model.Memory; import org.junit.jupiter.api.Test; import utils.exceptions.InkaException; @@ -36,6 +35,5 @@ public void load_validFile() throws InkaException { Storage storage = new JsonStorage(VALID_FILE.toString()); Memory memory = storage.load(); - // assert cardList.size() == 2 : "Expected 2 Cards from save file"; } } From 9b896ff6652c7477c5d5cfcf72dfef7b6e495a90 Mon Sep 17 00:00:00 2001 From: Ian Teng <66109826+iantenkai@users.noreply.github.com> Date: Fri, 31 Mar 2023 02:05:55 +0800 Subject: [PATCH 104/311] Add Inka portability instructions --- docs/UserGuide.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index abd9fbe891..d3b65ac3d2 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -33,7 +33,14 @@ Example of usage: **Q**: How do I transfer my data to another computer? -**A**: {your answer here} +**A**: You do so by following these steps: + +1. Export the deck as a Json file using the command "export" +2. Navigate to the directory of your Inka installation. +3. The file will be named savedata.json. Copy this file. +4. Paste this file in the Inka's directory in the new computer + +Your file will be loaded the next time you run Inka! ## Command Summary From f6921185a708fda974ed105c19ab7f080671a0ea Mon Sep 17 00:00:00 2001 From: Akhil Date: Fri, 31 Mar 2023 11:37:19 +0800 Subject: [PATCH 105/311] feat: Added Deck under the Help Command --- src/main/java/utils/parser/Parser.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/parser/Parser.java index 69bce67e60..e7e2776080 100644 --- a/src/main/java/utils/parser/Parser.java +++ b/src/main/java/utils/parser/Parser.java @@ -90,7 +90,8 @@ private String getTopLevelHelpMessage() { "Welcome to Inka! Type " + HELP_KEYWORD + " at any time to show this message" + System.lineSeparator(); helpMessage += "== Deck Management (run ` help` for more info) ===" + System.lineSeparator(); helpMessage += formatHelpLine(CARD_KEYWORD, "Card-related functionality"); - helpMessage += formatHelpLine(TAG_KEYWORD, "Tag-related functionality)"); + helpMessage += formatHelpLine(TAG_KEYWORD, "Tag-related functionality"); + helpMessage += formatHelpLine(DECK_KEYWORD, "Deck-related functionality"); helpMessage += "================== Miscellaneous Commands =================" + System.lineSeparator(); helpMessage += formatHelpLine(EXPORT_KEYWORD, "Saves your deck"); helpMessage += formatHelpLine(EXIT_KEYWORD, "Exits Inka"); From d03e0525ddeacbc654acc31d716aa02def39c194 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Fri, 31 Mar 2023 11:42:26 +0800 Subject: [PATCH 106/311] doc: quick start --- docs/UserGuide.md | 9 ++++++--- docs/img/quick-start.png | Bin 0 -> 13163 bytes 2 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 docs/img/quick-start.png diff --git a/docs/UserGuide.md b/docs/UserGuide.md index d3b65ac3d2..f0a871c6a9 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -6,10 +6,13 @@ ## Quick Start -{Give steps to get started quickly} - 1. Ensure that you have Java 11 or above installed. -1. Down the latest version of `Duke` from [here](http://link.to/duke). +2. Download the latest version of `Inka.jar` from [here](https://github.com/AY2223S2-CS2113-F10-1/tp/releases). +3. Copy the JAR file to the folder you wish to use as the Inka home folder -- your data will be saved here! +4. Open the JAR file, either by clicking or running `java -jar Inka.jar`. A command line interface should appear: +![Inka interface](img/quick-start.png) + +Enjoy your revision! ## Features diff --git a/docs/img/quick-start.png b/docs/img/quick-start.png new file mode 100644 index 0000000000000000000000000000000000000000..e248eb90465bfcea50c0a6880daa0a486c7de358 GIT binary patch literal 13163 zcmd6OcUY6#vN!5hR0Qlu-&>F(AWD_4q97n3B?Jh)_s~NNv4MpqT}nWtmxSH|Ap+7n zp-AsU2t`T=BqV&nbM`%Zf8V{&bDw+9AKxE&R`N2l)~uQN&CGh&@cy}$D&u*!^K^7{ zjA~CG>(bGk+NPsBA%6BG?Fpw)F_1Q#@X}R%M2GC&iFsepq*dC$yI>rq`^c5r{}MJ`&{C z&;RB^TE6U*OrE@#l^fg#n@q-d5(_4P!o6@gs4o6}@^XfN;;rDhrX=_+xh^*0sQ#yO z8r8vG&CKu90bs8=+t#QM5Bn95D49`UP<`*tg#z0`i(c zNkWQEf|YwG9nwdVSHqldb(!hmpa&WBqf>w=CY_uJIl>{EekG*U>5&t$fS65f{PT=C)gdKsKWU+$>DIs^YOm}{u zjr2m(?&_!tACPz;yzOni;6Uh3WLesG5Qh45JAd$6no@N3$CQz2F*I~WsS3!5I{aKO z>$%dLP)Ty{!cX`D{rIL1+DT6yDm&kLGJV*i>K2w56|~=4n4%=i{SLI%4+Nj*bRwks zkVi)r9YE)+!NFb-&F?V>dh`g!>wDFs)C%PQQUE|f;UpD)?4BE)!_srz?LA2&Fbg~b zh#Kd^$!(I;V0f1H7~!zIQ~J`C*!b{tyy*;5fX`tiK7{SyFPDGBwn#!KK5d zbyg(BWgH#gnR+;=N^T6u3+($k+VFvdHRbJ;m3-rDXzCSczCg+LEZTU zCfyM(ss#dqz~r{mVZ8Qkf`0-!~KYO+uBx*Xk#g3d=al}X8~BD zbZ)edGLGtHw(%1Zv0Da|7};avss<*hd*kW8Pa)b-1*5yi(ZnLo1X@Jg{;AJs78DgG zDBo3?jy@!7q`|17b$tQ|mCON-H}Qkl+M(AbG_fw@dO~f&s9Tm5(<%N3p0}`e$@phB zW8k@Q^7Rm@HBws`tOU8Wmq|%TFB2<%bx_xMp0+3+3=3S>cD|(suY-}lYn)D~JoXQj z=HZqAql7Qkxq-|Ql8k8421KTEHtSkmL0&~(9)A0$Zilk@RaZw>z0<1CQnIcpEKgTk zE?lWr9kYSdmLtD>`Ld4yLekEel=#{<^+(CJ9pYQE>wYFmR96(dYPuQ9q-6tH}j%8$^$rXMHXXY*g zEy>7$crJ!#rA`2+?q+tC_-Gi#4tN4lXjk3s`IdaFe8gbfM^;pd0RohSl&!(Jhb^h4 z?5r!QFiWuUPV=XF#0c+=YW~t-Sdj^B)7{!BcZ$XL*!_H>7 z=@)N8lGFxXmJJB~?rE?Z10v`IQ(I%niip*UBCm7oh6d>b0ERlFxz^7IWPd zi@ehJTEXP7@1Md2Zg*AOf2Ru5tcx z;CB$Dc_8Q?px#@5K#DV(TOEJp3WMRE=6WibZ4}9Pe^HY7LqQyr&UR%;Z)b(Qcs-Ac zRF=06!riJZM~yo$?VaG?=}butYRfKN`DO(0UOha`;90(#l(eE_8VUvE6uFpfbTs~y zVI7kpE#?VwszMq_t^9-p;)sUsQGP)=SM)hYQc-tpsj>A^puef0;LF@lD|G3SpHJ>l zca}F4<(AyG1z{kG#RiF@tEV?;-aVpzUfW1Ybh`M+X3HMH`7PkssAp(dRFM1F@7}Gf zrXh}ZJsbLtKpS5C{QrL7g=^&o)n7K+`#I?6fBP2uDX79J72|6a<6nlaBdQ!KpA?E1 zyAC*o8Gw!-C1ell6cLSn{s#q>q4~I@4v76cRD??(NMIDD@_qN?>POv z)cM-L}sXxqNU~TYy3y|0%KtSd{)5DoNv@dEcz; zg3B+h%~ttwu+rEra+PxZ`-ZggQnQ3BqYC9)@8bv5{p;`7nr!aU!z#Br>a1>M%U`lF zf(OlrN-6qi*BcuYAZ^z67VobKO*q0Qr#+U_j`eVN1Q|keqoR&(^=&tSPB}OI0=`$g ztjtUCzWce0eEx!fjkb8G&sfDqE&9)$wsPZS@WE`=#CKmgCo4oC>⫬sm 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 literal 0 HcmV?d00001 From 4dcf4ced52fa9e78a318c515e667e47852f05e1c Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Fri, 31 Mar 2023 11:47:13 +0800 Subject: [PATCH 107/311] docs : add Card commands for UG --- docs/UserGuide.md | 80 +++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 70 insertions(+), 10 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index abd9fbe891..51a187ca80 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -11,27 +11,87 @@ 1. Ensure that you have Java 11 or above installed. 1. Down the latest version of `Duke` from [here](http://link.to/duke). -## Features +## Features {Give detailed description of each feature} -### Adding a todo: `todo` -Adds a new item to the list of todo items. +### Adding a card: `card add -q {question} -a {answer}` -Format: `todo n/TODO_NAME d/DEADLINE` +Adds a new Card with its question and answer. -* The `DEADLINE` can be in a natural language format. -* The `TODO_NAME` cannot contain punctuation. +Example of usage: -Example of usage: +`card add -q "how do i use this command? -a "by referring to this user guide"` -`todo n/Write the rest of the User Guide d/next week` +### Listing all cards : `card list` -`todo n/Refactor the User Guide to remove passive voice d/13/04/2020` +List all existing cards + +Sample output : + +``` + +Here is a list of your cards : +1.Qn: is akhil a dirty commie +Ans: yes +UUID: f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 +2.Qn: why do other groups keep attackin ian +Ans: he is not a dirty commie +UUID: 00000000-0000-0000-0000-000000000001 +``` + +### Deleting a card : `card delete -i {cardUUID}` + +Deletes a Card based on the cardUUID + +Example of usage: + +`card delete -i f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454` + +### Tagging a card : `card tag -c {cardUUID} -t {tagName}` + +Example of usage : +`card tag -c f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 -t physics` + +Sample output : + +```agsl +Tag does not exist.. creating a new tag: physics +Successfully added tag 83f26992-09d7-496b-b7a8-3ad05e43c8b7 to card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 +``` + +### Putting a card into a deck : `card deck -c {cardUUID} -d {deckName}` + +Example of usage : +`card deck -c f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 -d deckTest` + +Sample output : + +``` +Deck does not exist.. creating a new one +Successfully added card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 to deck fd2df33d-4bbe-4be7-83df-5ddaecd3f1ca +``` + +### Viewing a card : `card view -c {cardUUID} + +View the content of a Card based on its cardUUID + +Example of usage : +`card view -c f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454` + +Sample output : + +```agsl +Qn: is akhil a dirty commie +Ans: yes +UUID: f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 +Here are the tags : +1.Tag name : physics, tag uuid : 83f26992-09d7-496b-b7a8-3ad05e43c8b7 +``` ## FAQ -**Q**: How do I transfer my data to another computer? +**Q**: How do I transfer my data to another computer? **A**: {your answer here} From 0594c2080c17d53d7b236cedcfcebc1be03c1d8c Mon Sep 17 00:00:00 2001 From: iantenkai Date: Fri, 31 Mar 2023 11:48:59 +0800 Subject: [PATCH 108/311] add user guide FAQ --- docs/UserGuide.md | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index abd9fbe891..e50497430f 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -31,9 +31,18 @@ Example of usage: ## FAQ -**Q**: How do I transfer my data to another computer? +**Q**: Will deleting a card from a tag delete it from multiple decks? + +**A**: Deleting a card from a tag deletes the card from all decks that contain its tag. + +**Q**: Can I modify savedata.json to manually add cards? + +**A**: No, data as the card ID is generated by the app. Please add cards through the app instead. + +**Q**: Can I add multiple cards at the same time? + +**A**: No, please add them one at a time using `card add` -**A**: {your answer here} ## Command Summary From e3206ceb4f5530d463798a333f691c3791a899b1 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Fri, 31 Mar 2023 12:04:02 +0800 Subject: [PATCH 109/311] update savedata --- savedata.json | 57 ++++++++++++--------------------------------------- 1 file changed, 13 insertions(+), 44 deletions(-) diff --git a/savedata.json b/savedata.json index 3608ad9773..717c4f21a0 100644 --- a/savedata.json +++ b/savedata.json @@ -2,58 +2,27 @@ "cards": [ { "uuid": { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + "uuid": "c2c61475-df53-4656-94c4-c2e36933d359" }, - "question": "fdfds", - "answer": "ffffffghgg", - "tags": [ - { - "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" - } - ], - "decks": [ - { - "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" - } - ] - } - ], - "tags": [ - { - "uuid": { - "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" - }, - "tagName": "tag1", - "cards": [ - { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" - } - ], + "question": "fdff", + "answer": "rerrr", + "tags": [], "decks": [] - } - ], - "decks": [ + }, { - "deckName": "deck1", - "deckUUID": { - "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + "uuid": { + "uuid": "3b86b31c-6289-4716-a5c6-5afd43b9bbd3" }, - "cards": [ + "question": "fdf", + "answer": "ffffffffff", + "tags": [ { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + "uuid": "d480b453-f900-471b-8f1d-9e74504d5cf7" } ], - "tags": [] - }, - { - "deckName": "decktag", - "deckUUID": { - "uuid": "46f82128-0ee7-4f8c-baa3-e4ca255eeb45" - }, - "cards": [], - "tags": [ + "decks": [ { - "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + "uuid": "ef2df71c-b645-4bcf-a8b7-c5d2a0349efa" } ] } From 8d7738b3b12a8bd188d8de424a45215f7a941b5e Mon Sep 17 00:00:00 2001 From: JangusRoundstone <88696064+JangusRoundstone@users.noreply.github.com> Date: Fri, 31 Mar 2023 12:42:40 +0800 Subject: [PATCH 110/311] Update UserGuide Added in tag --- docs/UserGuide.md | 61 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 153ee9e10f..0bfac7d9b9 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -75,7 +75,7 @@ Deck does not exist.. creating a new one Successfully added card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 to deck fd2df33d-4bbe-4be7-83df-5ddaecd3f1ca ``` -### Viewing a card : `card view -c {cardUUID} +### Viewing a card : `card view -c {cardUUID}` View the content of a Card based on its cardUUID @@ -92,6 +92,64 @@ Here are the tags : 1.Tag name : physics, tag uuid : 83f26992-09d7-496b-b7a8-3ad05e43c8b7 ``` +### Editing a tag : `tag edit -o {tagNameOld} -n {tagNameNew}` + +Edit the name of an existing tag + +Example of usage : +`tag edit -o CS2113 -n CS2113T` + +Sample output : + +```agsl +Tag 7a130cd5-8154-4aa7-870f-45d7d92970f9tag name has been changed from CS2113 to CS2113T +``` + +### Deleting a tag : `tag delete -t {tagName}` + +Delete an existing tag by name, and remove the tag from all the cards which are previously under it. + +Example of usage : +`tag delete -t CS2113T` + +Sample output : + +```agsl +Successfully removed tag 7a130cd5-8154-4aa7-870f-45d7d92970f9 from card 3b86b31c-6289-4716-a5c6-5afd43b9bbd3 +Successfully removed tag 7a130cd5-8154-4aa7-870f-45d7d92970f9 from the tag list. +``` + +### List all tags : `tag list` + +List all current tags + +Example of usage : +`tag list` + +Sample output : + +```agsl +Here is your current list of tags: +1.Tag name : CS2113, tag uuid : 15df3d00-d0ad-48e0-bd28-1f640b74789f +2.Tag name : CS2040C, tag uuid : 5d14dd29-e7e4-4b17-945a-ebf8598d4152 +``` + +### List cards under tag : `tag list -t ` + +List all cards under a specific tag indentified by its name. + +Example of usage : +`tag list -t ` + +Sample output : + +```agsl +Here is a list of your cards : +1.Qn: fdf +Ans: ffffffffff +UUID: 3b86b31c-6289-4716-a5c6-5afd43b9bbd3 +``` + ## FAQ **Q**: How do I transfer my data to another computer? @@ -110,3 +168,4 @@ Your file will be loaded the next time you run Inka! {Give a 'cheat sheet' of commands here} * Add todo `todo n/TODO_NAME d/DEADLINE` + From ab4ff17c630768a867c98ff010d6f3cea6aab376 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Fri, 31 Mar 2023 13:37:38 +0800 Subject: [PATCH 111/311] doc: deck commands --- docs/UserGuide.md | 58 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 153ee9e10f..925681e88a 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -16,8 +16,6 @@ Enjoy your revision! ## Features -{Give detailed description of each feature} - ### Adding a card: `card add -q {question} -a {answer}` Adds a new Card with its question and answer. @@ -92,6 +90,62 @@ Here are the tags : 1.Tag name : physics, tag uuid : 83f26992-09d7-496b-b7a8-3ad05e43c8b7 ``` +--- + +### Edit a deck: `deck edit` + +Rename an existing deck + +Example of usage: `deck edit -o old-deck-name -n new-deck-name` + +Sample output: +``` +Deck 9dc5ab5f-75af-4b0d-b554-341f59ac829bdeck name has been changed from old-deck-name to new-deck-name +``` + +### [WIP] Delete a card/tag from deck: `deck delete -d {deckName} (-c {cardUUID} | -t {tagUUID})` + +Delete a card from an existing deck + +Example of usage: `deck delete -c c2c61475-df53-4656-94c4-c2e36933d359 -d my-deck` + +Sample output: +``` +Successfully removed card c2c61475-df53-4656-94c4-c2e36933d359 from deck my-deck +``` + +Alternatively, delete a tag from an existing deck + +Example of usage: `deck delete -t 833249f3-a090-474c-a3de-c1b5f25609d4 -d my-deck` + +Sample output: +``` +Successfully removed tag 833249f3-a090-474c-a3de-c1b5f25609d4 from deck my-deck +``` + +The entire deck can also be deleted (cards and tags that were in the deck are not deleted) + +Example of usage: `deck delete -d my-deck` + +Sample output: +``` +Successfully removed deck 9dc5ab5f-75af-4b0d-b554-341f59ac829b from card c2c61475-df53-4656-94c4-c2e36933d359 +Successfully removed deck 9dc5ab5f-75af-4b0d-b554-341f59ac829b from the deck list. +``` + +### List all decks: `deck list` + +List all decks that have been created + +Example usage: `deck list` + +Sample output: +``` +Here is your current list of decks: +1.Deck name : test-deck, deck uuid : 9dc5ab5f-75af-4b0d-b554-341f59ac829b +2.Deck name : another-deck, deck uuid : b7fa870a-e92c-4a74-90de-cfeafd6ec141``` +``` + ## FAQ **Q**: How do I transfer my data to another computer? From 2786d559d288ea804bc351b5430451d4b09ebacb Mon Sep 17 00:00:00 2001 From: ltzehan Date: Fri, 31 Mar 2023 13:45:15 +0800 Subject: [PATCH 112/311] added newline before image --- docs/UserGuide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index f2a86e4d06..c0507dbd14 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -10,7 +10,8 @@ 2. Download the latest version of `Inka.jar` from [here](https://github.com/AY2223S2-CS2113-F10-1/tp/releases). 3. Copy the JAR file to the folder you wish to use as the Inka home folder -- your data will be saved here! 4. Open the JAR file, either by clicking or running `java -jar Inka.jar`. A command line interface should appear: - ![Inka interface](img/quick-start.png) + +![Inka interface](img/quick-start.png) Enjoy your revision! From aa0473f9e6cde34f07c96dad18fccdac7ffd0514 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Fri, 31 Mar 2023 14:14:01 +0800 Subject: [PATCH 113/311] Add JsonStorage test cases --- .savedata_backup.json | 9 ++ savedata.json | 63 ++++++++++--- .../java/utils/storage/json/JsonStorage.java | 33 ------- src/test/data/storage/valid.json | 9 ++ .../java/utils/storage/JsonStorageTest.java | 93 +++++++++++++++++++ 5 files changed, 162 insertions(+), 45 deletions(-) diff --git a/.savedata_backup.json b/.savedata_backup.json index 3608ad9773..cb04dccb83 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -16,6 +16,15 @@ "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" } ] + }, + { + "uuid": { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + "question": "question2", + "answer": "ans2", + "tags": [], + "decks": [] } ], "tags": [ diff --git a/savedata.json b/savedata.json index c933d8328e..cb04dccb83 100644 --- a/savedata.json +++ b/savedata.json @@ -2,28 +2,67 @@ "cards": [ { "uuid": { - "uuid": "c2c61475-df53-4656-94c4-c2e36933d359" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" }, - "question": "fdff", - "answer": "rerrr", + "question": "fdfds", + "answer": "ffffffghgg", + "tags": [ + { + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + } + ], + "decks": [ + { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + } + ] + }, + { + "uuid": { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + "question": "question2", + "answer": "ans2", "tags": [], "decks": [] - }, + } + ], + "tags": [ { - "uuid": { - "uuid": "3b86b31c-6289-4716-a5c6-5afd43b9bbd3" + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" }, - "question": "fdf", - "answer": "ffffffffff", - "tags": [ + "tagName": "tag1", + "cards": [ { - "uuid": "d480b453-f900-471b-8f1d-9e74504d5cf7" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } ], - "decks": [ + "decks": [] + } + ], + "decks": [ + { + "deckName": "deck1", + "deckUUID": { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + }, + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "tags": [] + }, + { + "deckName": "decktag", + "deckUUID": { + "uuid": "46f82128-0ee7-4f8c-baa3-e4ca255eeb45" + }, + "cards": [], + "tags": [ { - "uuid": "ef2df71c-b645-4bcf-a8b7-c5d2a0349efa" + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" } ] } diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 44f4eee749..859899f078 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -25,8 +25,6 @@ import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; - - import java.util.ArrayList; import model.TagList; @@ -42,8 +40,6 @@ import utils.exceptions.InkaException; import utils.exceptions.StorageCorrupted; - - import utils.exceptions.StorageLoadFailure; import utils.exceptions.StorageSaveFailure; import utils.storage.Storage; @@ -67,19 +63,6 @@ public JsonStorage(String filePath) { backupFilePath = backupFileDir + File.separator + "." + backupFilePath.substring( backupFilePath.lastIndexOf(File.separator) + 1); backupFile = new File(backupFilePath); - - - - - - - - - - - - - gsonBuilder = new GsonBuilder(); //Add custom adapters @@ -98,19 +81,11 @@ public Memory load() throws InkaException { BufferedReader bufferedReader = new BufferedReader(fileReader); gsonBuilder.setLenient(); - - - JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject saveDataObject = jsonElement.getAsJsonObject(); - - JsonArray jsonArray = saveDataObject.getAsJsonArray("cards"); ArrayList cards = new ArrayList<>(); - - - for (JsonElement jsonCard : jsonArray) { JsonObject cardObject = jsonCard.getAsJsonObject(); @@ -120,8 +95,6 @@ public Memory load() throws InkaException { String question = cardObject.get("question").getAsString(); String answer = cardObject.get("answer").getAsString(); - - Card card = Card.createCardWithUUID(question, answer, uuidString); JsonArray tagsArray = cardObject.getAsJsonArray("tags"); @@ -132,8 +105,6 @@ public Memory load() throws InkaException { for (JsonElement tagListElement : tagsArray) { JsonObject tagUuidObject = tagListElement.getAsJsonObject(); - - String tagUuidString = tagUuidObject.get("uuid").getAsString(); card.addTag(new TagUUID(UUID.fromString(tagUuidString))); @@ -143,10 +114,6 @@ public Memory load() throws InkaException { JsonObject deckUuidObject = deckListElement.getAsJsonObject(); String deckUuidString = deckUuidObject.get("uuid").getAsString(); - - - - card.addDeck(new DeckUUID(UUID.fromString(deckUuidString))); } diff --git a/src/test/data/storage/valid.json b/src/test/data/storage/valid.json index 3608ad9773..cb04dccb83 100644 --- a/src/test/data/storage/valid.json +++ b/src/test/data/storage/valid.json @@ -16,6 +16,15 @@ "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" } ] + }, + { + "uuid": { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + "question": "question2", + "answer": "ans2", + "tags": [], + "decks": [] } ], "tags": [ diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index 311f7e28f1..a673274b76 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -1,13 +1,21 @@ package utils.storage; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import java.nio.file.Path; +import java.util.ArrayList; +import java.util.UUID; +import model.Card; +import model.CardUUID; import model.Memory; +import model.TagUUID; import org.junit.jupiter.api.Test; +import utils.exceptions.CardNotFoundException; import utils.exceptions.InkaException; import utils.exceptions.StorageCorrupted; import utils.storage.json.JsonStorage; +import model.CardList; public class JsonStorageTest { @@ -18,6 +26,23 @@ public class JsonStorageTest { private static final Path MALFORMED_FILE = TEST_DATA_FOLDER.resolve("malformed.json"); private static final Path VALID_FILE = TEST_DATA_FOLDER.resolve("valid.json"); + //valid file properties + + private static int validFileCardListSize = 2; + private static String card1Uuid = "1ddd9a67-f56c-4914-99c0-2f90c580f0e9"; + private static String card1Q = "fdfds"; + private static String card1A = "ffffffghgg"; + private static String card1DeckUuid = "c83e08ad-e5b7-4812-9dd1-4b44504386ad"; + + private static int card1TagSize = 1; + private static String card1TagUuid = "03658854-e5d4-468f-8c41-74917e5d4515"; + + + private static String card2Uuid = "619c689d-395a-4bb8-ab00-6ae9972bb929"; + private static String card2Q = "question2"; + + + @Test public void load_emptyFile() { Storage storage = new JsonStorage(EMPTY_FILE.toString()); @@ -35,5 +60,73 @@ public void load_validFile() throws InkaException { Storage storage = new JsonStorage(VALID_FILE.toString()); Memory memory = storage.load(); + + } + + + + @Test + public void load_validFile_cardList() throws InkaException { + //check if it is loading 2 cards + Storage storage = new JsonStorage(VALID_FILE.toString()); + Memory memory = storage.load(); + CardList cardList = memory.getCardList(); + int cardListSize = cardList.size(); + int expectedSize = validFileCardListSize; + assertEquals(cardListSize, expectedSize); + } + + @Test + public void load_validFile_cardUuid() throws InkaException { + //check if it is loading 2 cards + Storage storage = new JsonStorage(VALID_FILE.toString()); + Memory memory = storage.load(); + CardList cardList = memory.getCardList(); + + CardUUID card1UuidObj = new CardUUID(UUID.fromString(card1Uuid)); + String card1UuidStr = card1UuidObj.toString(); + + Card card1 = cardList.findCardFromUUID(card1UuidObj); + CardUUID card1TestUuidobj = card1.getUuid(); + String card1TestUuidStr = card1TestUuidobj.toString(); + + assertEquals(card1UuidStr, card1TestUuidStr); + //todo need to add case for checking for malformed UUID + + } + + @Test + public void load_validFile_cardTags() throws InkaException { + //check if it is loading 2 cards + Storage storage = new JsonStorage(VALID_FILE.toString()); + Memory memory = storage.load(); + CardList cardList = memory.getCardList(); + + CardUUID card1UuidObj = new CardUUID(UUID.fromString(card1Uuid)); + Card card1 = cardList.findCardFromUUID(card1UuidObj); + ArrayList card1Tags = card1.getTagsUUID(); + int expectedSize = card1TagSize; + + + assertEquals(expectedSize, card1Tags.size()); + //todo need to add case for checking for malformed UUID + + } + +// @Test +// public void load_validFile() throws InkaException { +// Storage storage = new JsonStorage(VALID_FILE.toString()); +// Memory memory = storage.load(); +// +// CardList cardList = memory.getCardList(); +// boolean has +// try { +// assertEquals(card1, cardList.findCardFromUUID(new CardUUID(UUID.fromString(UUID_1)))); +// assertEquals(card2, cardList.findCardFromUUID(new CardUUID(UUID.fromString(UUID_2)))); +// } catch (CardNotFoundException e) { +// assertEquals("Card cannot be found", e.getMessage()); +// } +// +// } } From 1dc6b55ecd3dcad5305632fb4beac74917b11d31 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Fri, 31 Mar 2023 14:21:29 +0800 Subject: [PATCH 114/311] fix checkstyle --- .../java/utils/storage/JsonStorageTest.java | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index a673274b76..fcd4225fca 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -11,7 +11,6 @@ import model.Memory; import model.TagUUID; import org.junit.jupiter.api.Test; -import utils.exceptions.CardNotFoundException; import utils.exceptions.InkaException; import utils.exceptions.StorageCorrupted; import utils.storage.json.JsonStorage; @@ -114,19 +113,5 @@ public void load_validFile_cardTags() throws InkaException { } -// @Test -// public void load_validFile() throws InkaException { -// Storage storage = new JsonStorage(VALID_FILE.toString()); -// Memory memory = storage.load(); -// -// CardList cardList = memory.getCardList(); -// boolean has -// try { -// assertEquals(card1, cardList.findCardFromUUID(new CardUUID(UUID.fromString(UUID_1)))); -// assertEquals(card2, cardList.findCardFromUUID(new CardUUID(UUID.fromString(UUID_2)))); -// } catch (CardNotFoundException e) { -// assertEquals("Card cannot be found", e.getMessage()); -// } -// -// } + } From 6456dfc9dd64d3ab6e379d7f6c22caba91b8c05f Mon Sep 17 00:00:00 2001 From: lihka1202 <88475310+lihka1202@users.noreply.github.com> Date: Fri, 31 Mar 2023 14:31:20 +0800 Subject: [PATCH 115/311] feat : added in Command Summary Command Summary added. --- docs/UserGuide.md | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index c0507dbd14..12ebaeddc0 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -237,4 +237,30 @@ Your file will be loaded the next time you run Inka! {Give a 'cheat sheet' of commands here} -* Add todo `todo n/TODO_NAME d/DEADLINE` +| **Command** | **Format** | +|-------------------------------|-------------------------------------------------------------------------------------| +| Create a `Card` | `card add -q {question_here} -a {answer_here}` | +| Create a `Tag` | `card tag -c {cardUUID} -t {tag_name}` | +| Create a `Deck` | `card deck -c {cardUUID} -d {deck_name}` OR `card deck -t {tagUUID} -d {deckName}` | +| Add a `Card` to a `Deck` | `card deck -c {cardUUID} -d {deckName}` OR `card deck -i {cardIndex} -d {deckName}` | +| Add a `Tag` to a `Deck` | `tag deck -t {tagUUID} -d {deckName}` | +| Add a `Card` to a `Tag` | `card tag -c {cardUUID} -t {tagName}` | +| Delete a `Card` | `card delete -i {cardUUID}` | +| Delete a `Tag` | `tag delete -t {tagName}` | +| Delete a `Deck` | `deck delete -d {deckName}` | +| Delete a `Card` from a `Deck` | `deck delete -d {deckName} -c {cardUUID}` | +| Delete a `Tag` from a `Deck` | `deck delete -d {deckName} -t {tagUUID}` | +| List `Cards` | `card list` | +| List `Tags` | `tag list` | +| List `Decks` | `deck list` | +| List `Cards` under a `Deck` | `deck list -c {deckName}` | +| List `Cards` under a `Tag` | `tag list -t {tagName}` | +| List `Tags` under a `Deck` | `deck list -d {deckName}` | +| Edit a `Tag` | `tag edit -n {newTagName} -o {oldTagName}` | +| Edit a `Card` | `card edit -n {newTagName} -o {oldTagName}` | +| Edit a `Deck` | `deck edit -n {newTagName} -o {oldTagName}` | +| View a `Card` | `card view -c {cardUUID}` | +| Help about `Deck` | `deck help` | +| Help about `Tag` | `tag help` | +| Help about `Card` | `card help` | +| Help in general | `help` | From d1c6b01bb8c3b7776ea1b9860093fe368f8ae28e Mon Sep 17 00:00:00 2001 From: iantenkai Date: Fri, 31 Mar 2023 14:48:24 +0800 Subject: [PATCH 116/311] add more test cases --- .../java/utils/storage/JsonStorageTest.java | 79 ++++++++++++++++--- 1 file changed, 68 insertions(+), 11 deletions(-) diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index fcd4225fca..709217e1f9 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -8,6 +8,7 @@ import java.util.UUID; import model.Card; import model.CardUUID; +import model.DeckUUID; import model.Memory; import model.TagUUID; import org.junit.jupiter.api.Test; @@ -27,18 +28,17 @@ public class JsonStorageTest { //valid file properties - private static int validFileCardListSize = 2; - private static String card1Uuid = "1ddd9a67-f56c-4914-99c0-2f90c580f0e9"; - private static String card1Q = "fdfds"; - private static String card1A = "ffffffghgg"; - private static String card1DeckUuid = "c83e08ad-e5b7-4812-9dd1-4b44504386ad"; + private static final String card1Uuid = "1ddd9a67-f56c-4914-99c0-2f90c580f0e9"; + private static final String card1Q = "fdfds"; + private static final String card1A = "ffffffghgg"; + private static final String fileCard1DeckUuid = "c83e08ad-e5b7-4812-9dd1-4b44504386ad"; + private static final int fileCard1DeckSize = 1; + private static final int fileCard1TagSize = 1; + private static final String fileCard1TagUuid = "03658854-e5d4-468f-8c41-74917e5d4515"; - private static int card1TagSize = 1; - private static String card1TagUuid = "03658854-e5d4-468f-8c41-74917e5d4515"; - - private static String card2Uuid = "619c689d-395a-4bb8-ab00-6ae9972bb929"; - private static String card2Q = "question2"; + private static final String card2Uuid = "619c689d-395a-4bb8-ab00-6ae9972bb929"; + private static final String card2Q = "question2"; @@ -71,6 +71,7 @@ public void load_validFile_cardList() throws InkaException { Memory memory = storage.load(); CardList cardList = memory.getCardList(); int cardListSize = cardList.size(); + int validFileCardListSize = 2; int expectedSize = validFileCardListSize; assertEquals(cardListSize, expectedSize); @@ -105,7 +106,7 @@ public void load_validFile_cardTags() throws InkaException { CardUUID card1UuidObj = new CardUUID(UUID.fromString(card1Uuid)); Card card1 = cardList.findCardFromUUID(card1UuidObj); ArrayList card1Tags = card1.getTagsUUID(); - int expectedSize = card1TagSize; + int expectedSize = fileCard1TagSize; assertEquals(expectedSize, card1Tags.size()); @@ -113,5 +114,61 @@ public void load_validFile_cardTags() throws InkaException { } + @Test + public void load_validFile_cardTagUuid() throws InkaException { + //check if it is loading tag's Uuids + Storage storage = new JsonStorage(VALID_FILE.toString()); + Memory memory = storage.load(); + CardList cardList = memory.getCardList(); + + CardUUID card1UuidObj = new CardUUID(UUID.fromString(card1Uuid)); + Card card1 = cardList.findCardFromUUID(card1UuidObj); + ArrayList card1Tags = card1.getTagsUUID(); + TagUUID card1Tag1UuidObj = card1Tags.get(0); + String card1Tag1UuidObjStr = card1Tag1UuidObj.toString(); + + + assertEquals(fileCard1TagUuid, card1Tag1UuidObjStr); + //todo need to add case for checking for malformed UUID + + } + + + @Test + public void load_validFile_cardDecks() throws InkaException { + //check if it is loading 2 cards + Storage storage = new JsonStorage(VALID_FILE.toString()); + Memory memory = storage.load(); + CardList cardList = memory.getCardList(); + + CardUUID card1UuidObj = new CardUUID(UUID.fromString(card1Uuid)); + Card card1 = cardList.findCardFromUUID(card1UuidObj); + ArrayList card1Decks = card1.getDecksUUID(); + int expectedSize = fileCard1DeckSize; + + + assertEquals(expectedSize, card1Decks.size()); + //todo need to add case for checking for malformed UUID + + } + @Test + public void load_validFile_cardDeckUuid() throws InkaException { + //check if it is loading deck's Uuids + Storage storage = new JsonStorage(VALID_FILE.toString()); + Memory memory = storage.load(); + CardList cardList = memory.getCardList(); + + CardUUID card1UuidObj = new CardUUID(UUID.fromString(card1Uuid)); + Card card1 = cardList.findCardFromUUID(card1UuidObj); + ArrayList card1Decks = card1.getDecksUUID(); + DeckUUID card1Deck1UuidObj = card1Decks.get(0); + String card1Deck1UuidObjStr = card1Deck1UuidObj.toString(); + + + assertEquals(fileCard1DeckUuid, card1Deck1UuidObjStr); + //todo need to add case for checking for malformed UUID + + } + } From ea423138886e35d0373cc766fdef5800565fe123 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Fri, 31 Mar 2023 14:50:40 +0800 Subject: [PATCH 117/311] update savedata --- savedata.json | 63 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 12 deletions(-) diff --git a/savedata.json b/savedata.json index c933d8328e..cb04dccb83 100644 --- a/savedata.json +++ b/savedata.json @@ -2,28 +2,67 @@ "cards": [ { "uuid": { - "uuid": "c2c61475-df53-4656-94c4-c2e36933d359" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" }, - "question": "fdff", - "answer": "rerrr", + "question": "fdfds", + "answer": "ffffffghgg", + "tags": [ + { + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + } + ], + "decks": [ + { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + } + ] + }, + { + "uuid": { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + "question": "question2", + "answer": "ans2", "tags": [], "decks": [] - }, + } + ], + "tags": [ { - "uuid": { - "uuid": "3b86b31c-6289-4716-a5c6-5afd43b9bbd3" + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" }, - "question": "fdf", - "answer": "ffffffffff", - "tags": [ + "tagName": "tag1", + "cards": [ { - "uuid": "d480b453-f900-471b-8f1d-9e74504d5cf7" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } ], - "decks": [ + "decks": [] + } + ], + "decks": [ + { + "deckName": "deck1", + "deckUUID": { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + }, + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "tags": [] + }, + { + "deckName": "decktag", + "deckUUID": { + "uuid": "46f82128-0ee7-4f8c-baa3-e4ca255eeb45" + }, + "cards": [], + "tags": [ { - "uuid": "ef2df71c-b645-4bcf-a8b7-c5d2a0349efa" + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" } ] } From 8c1ad089859847ce279733eebc701283e1437880 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Fri, 31 Mar 2023 15:53:14 +0800 Subject: [PATCH 118/311] no message --- savedata.json | 63 +++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 51 insertions(+), 12 deletions(-) diff --git a/savedata.json b/savedata.json index c933d8328e..cb04dccb83 100644 --- a/savedata.json +++ b/savedata.json @@ -2,28 +2,67 @@ "cards": [ { "uuid": { - "uuid": "c2c61475-df53-4656-94c4-c2e36933d359" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" }, - "question": "fdff", - "answer": "rerrr", + "question": "fdfds", + "answer": "ffffffghgg", + "tags": [ + { + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + } + ], + "decks": [ + { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + } + ] + }, + { + "uuid": { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + "question": "question2", + "answer": "ans2", "tags": [], "decks": [] - }, + } + ], + "tags": [ { - "uuid": { - "uuid": "3b86b31c-6289-4716-a5c6-5afd43b9bbd3" + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" }, - "question": "fdf", - "answer": "ffffffffff", - "tags": [ + "tagName": "tag1", + "cards": [ { - "uuid": "d480b453-f900-471b-8f1d-9e74504d5cf7" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } ], - "decks": [ + "decks": [] + } + ], + "decks": [ + { + "deckName": "deck1", + "deckUUID": { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + }, + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "tags": [] + }, + { + "deckName": "decktag", + "deckUUID": { + "uuid": "46f82128-0ee7-4f8c-baa3-e4ca255eeb45" + }, + "cards": [], + "tags": [ { - "uuid": "ef2df71c-b645-4bcf-a8b7-c5d2a0349efa" + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" } ] } From 855cf6ef49f2e77c3a9a13162cc6352fa67ef35e Mon Sep 17 00:00:00 2001 From: Gujimugger Date: Fri, 31 Mar 2023 16:00:33 +0800 Subject: [PATCH 119/311] Add in improvements for UI user prompt --- src/main/java/utils/UserInterface.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 33bfecbe08..f6fa48f97e 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -28,6 +28,7 @@ public String getUserInput() { public void printDivider() { System.out.println("_".repeat(LINE_LENGTH)); + System.out.print("> "); } public void printGreeting() { @@ -52,6 +53,7 @@ public void printHelp(String helpMessage) { public void printNumOfQuestions(CardList cardList) { System.out.println("You now have " + cardList.size() + " questions in the bank."); + printDivider(); } public void printAddQuestionSuccess() { @@ -99,6 +101,7 @@ public void printCardList(CardList cardList) { System.out.println((i + 1) + "." + cardList.get(i)); // 1. question answer } } + printDivider(); } public void printTagList(TagList tagList) { @@ -110,6 +113,7 @@ public void printTagList(TagList tagList) { System.out.println((i + 1) + "." + tagList.get(i)); } } + printDivider(); } public void printDeckList(DeckList deckList) { @@ -121,6 +125,7 @@ public void printDeckList(DeckList deckList) { System.out.println((i + 1) + "." + deckList.get(i)); } } + printDivider(); } public void printTags(ArrayList tags) { @@ -132,25 +137,32 @@ public void printTags(ArrayList tags) { System.out.println((i + 1) + "." + tags.get(i)); } } + printDivider(); } public void printAddTagToCardSuccess(CardUUID cardUUID, TagUUID tagUUID) { System.out.println("Successfully added tag " + tagUUID + " to card " + cardUUID); + printDivider(); } public void printAddCardToDeckSuccess(CardUUID cardUUID, DeckUUID deckUUID) { System.out.println("Successfully added card " + cardUUID + " to deck " + deckUUID); + printDivider(); } public void printRemoveCardFromDeckSuccess(CardUUID cardUUID, String deckName) { System.out.println("Successfully removed card " + cardUUID + " from deck " + deckName); + printDivider(); } public void printRemoveTagFromDeckSuccess(TagUUID tagUUID, String deckName) { System.out.println("Successfully removed tag " + tagUUID + " from deck " + deckName); + printDivider(); + } public void printAddTagToDeckSuccess(TagUUID tagUUID, DeckUUID deckUUID) { System.out.println("Successfully added tag " + tagUUID + " to deck " + deckUUID); + printDivider(); } public void printTagCreationSuccess(String tagName) { @@ -175,20 +187,24 @@ public void printRemoveDeckFromTag(TagUUID tagUUID, DeckUUID deckUUID) { public void printRemoveTagFromTagList(TagUUID tagUUID) { System.out.println("Successfully removed tag " + tagUUID + " from the tag list."); + printDivider(); } public void printRemoveDeckFromDeckList(DeckUUID deckUUID) { System.out.println("Successfully removed deck " + deckUUID + " from the deck list."); + printDivider(); } public void printEditTagNameSuccess(String oldTagName, Tag tag) { System.out.println( "Tag " + tag.getUUID() + "tag name has been changed from " + oldTagName + " to " + tag.getTagName()); + printDivider(); } public void printEditDeckNameSuccess(String oldDeckName, Deck deck) { System.out.println( "Deck " + deck.getDeckUUID() + "deck name has been changed from " + oldDeckName + " to " + deck.getDeckName()); + printDivider(); } } From 4619a3fe88ab6d9504d9fe1157dc8e31304bbb24 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Sun, 2 Apr 2023 12:23:27 +0800 Subject: [PATCH 120/311] chore: fix switch-case for checkstyle --- CS2113-codestyle.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CS2113-codestyle.xml b/CS2113-codestyle.xml index 0eef9d04b6..c4a5a95942 100644 --- a/CS2113-codestyle.xml +++ b/CS2113-codestyle.xml @@ -7,6 +7,7 @@ + _<=2Lp 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πTV7s=P6-zy^e6$2M7yX%y;6ZzkMy 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 V*R;?fu3t@Jb!8o;3WY~u{{c6AmV^KR literal 0 HcmV?d00001 diff --git a/docs/uml/CardListSequence.puml b/docs/uml/CardListSequence.puml index e69de29bb2..cfafa3ad28 100644 --- a/docs/uml/CardListSequence.puml +++ b/docs/uml/CardListSequence.puml @@ -0,0 +1,91 @@ +@startuml CardListSequence + +autoactivate on + +participant ":ViewCardCommand" as ViewCardCommand +participant ":CardList" as CardList +participant ":CardSelector" as CardSelector +participant ":TagList" as TagList +participant ":DeckList" as DeckList +participant ":Tag" as Tag +participant ":Card" as Card +participant ":Deck" as Deck +participant ":TagUUID" as TagUUID +participant ":DeckUUID" as DeckUUID +participant ":UserInterface" as UserInterface + + +Create ViewCardCommand +CardKeywordParser -> ViewCardCommand : ViewCardCommand() +activate ViewCardCommand + +Create CardSelector +ViewCardCommand -> CardSelector : CardSelector() +return + +ViewCardCommand -> ViewCardCommand : execute() +ViewCardCommand -> CardList : findCard() + +CardList -> CardSelector : getIndex() +return cardIndex + +CardList -> CardSelector : getUUID() +return cardUUID + +return cardToView + +ViewCardCommand -> UserInterface : printCard(cardToView) +return + + +ViewCardCommand -> Card : getTagsUUID() +return tagsUUID +ViewCardCommand -> Card : getDecksUUID() +return decksUUID + +ViewCardCommand -> ViewCardCommand : findTagsFromTagUUID(tagsUUID) + +loop current uuid of tagsUUID != null + + ViewCardCommand -> TagList : TagList() + return tagsFound + ViewCardCommand -> TagList : getTags() + return allTags + loop current uuid of allTags != null + ViewCardCommand -> TagUUID : equals() + return isUUIDEqual + alt isUUIDEqual + ViewCardCommand -> TagList : addTag() + return + end + end loop +end loop +return tagsFound + +ViewCardCommand -> UserInterface : printTags(tagsFound) +return + + +ViewCardCommand -> ViewCardCommand : findDecksFromDeckUUID(decksUUID) + +loop current uuid of tagsUUID != null + + ViewCardCommand -> DeckList : DeckList() + return decksFound + ViewCardCommand -> DeckList : getDecks() + return allDecks + loop current uuid of allDecks != null + ViewCardCommand -> DeckUUID : equals() + return isUUIDEqual + alt isUUIDEqual + ViewCardCommand -> DeckList : addDeck() + return + end + end loop +end loop +return decksFound + +ViewCardCommand -> UserInterface : printDecks(decksFound) +return + +@enduml diff --git a/docs/uml/TagListSequence.puml b/docs/uml/TagListSequence.puml index b243db47d8..fb051ba3e4 100644 --- a/docs/uml/TagListSequence.puml +++ b/docs/uml/TagListSequence.puml @@ -8,10 +8,18 @@ participant ":TagList" as TagList participant ":Tag" as Tag participant ":Card" as Card -'create AddCardToTagCommand -[-> AddCardToTagCommand : AddCardToTagCommand() +Create AddCardToTagCommand +CardKeywordParser -> AddCardToTagCommand : AddCardToTagCommand() activate AddCardToTagCommand +Create CardSelector +AddCardToTagCommand -> CardSelector : CardSelector() +return + +Create TagSelector +AddCardToTagCommand -> TagSelector : TagSelector() +return + AddCardToTagCommand -> CardList : findCard() CardList -> CardSelector : getIndex() @@ -24,7 +32,7 @@ return cardToAdd AddCardToTagCommand -> AddCardToTagCommand : addCardToTag(cardToAdd) -AddCardToTagCommand -> TagList : findTagFromName() +AddCardToTagCommand -> TagList : findTag() return tagToAdd opt tagToAdd == null From 489ae5996695eec3ea4c97b603708460ec4a2845 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Sat, 8 Apr 2023 01:09:19 +0800 Subject: [PATCH 183/311] fix: UUID comparison + lots of tests --- src/main/java/model/CardList.java | 2 +- src/main/java/model/Deck.java | 7 +- src/main/java/model/InkaUUID.java | 30 +++++++- src/main/java/model/TagList.java | 10 --- src/main/java/model/TagSelector.java | 19 +---- .../utils/command/AddCardToTagCommand.java | 15 +--- .../java/utils/parser/CardKeywordParser.java | 20 +++-- src/test/java/model/InkaUUIDTest.java | 66 +++++++++++++++++ .../java/utils/parser/CardParserTest.java | 73 +++++++++++++++++++ src/test/java/utils/parser/TagParserTest.java | 20 +++-- 10 files changed, 200 insertions(+), 62 deletions(-) create mode 100644 src/test/java/model/InkaUUIDTest.java diff --git a/src/main/java/model/CardList.java b/src/main/java/model/CardList.java index fa671b5327..eaef2895c3 100644 --- a/src/main/java/model/CardList.java +++ b/src/main/java/model/CardList.java @@ -64,7 +64,7 @@ public List getCards() { */ public Card findCardFromUUID(CardUUID cardUUID) throws CardNotFoundException { for (Card card : cards) { - if (card.getUuid().equals(cardUUID.uuid)) { + if (card.getUuid().equals(cardUUID)) { return card; } } diff --git a/src/main/java/model/Deck.java b/src/main/java/model/Deck.java index cc6f225880..71009b3f8b 100644 --- a/src/main/java/model/Deck.java +++ b/src/main/java/model/Deck.java @@ -40,12 +40,7 @@ public String getDeckName() { return deckName; } public boolean cardIsInDeck(CardUUID cardUUID) { - for(CardUUID cardUUIDHolder : cards) { - if(cardUUIDHolder.equals(cardUUID)) { - return true; - } - } - return false; + return cardsSet.contains(cardUUID); } public boolean tagIsInDeck(TagUUID tagUUID) { diff --git a/src/main/java/model/InkaUUID.java b/src/main/java/model/InkaUUID.java index c4807a71fc..30effae5a7 100644 --- a/src/main/java/model/InkaUUID.java +++ b/src/main/java/model/InkaUUID.java @@ -1,8 +1,9 @@ package model; + import java.util.UUID; -public class InkaUUID { +public abstract class InkaUUID { UUID uuid; @@ -10,10 +11,37 @@ public InkaUUID(UUID uuid) { this.uuid = uuid; } + @Override + public boolean equals(Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof InkaUUID)) { + return false; + } + if (this.getClass() != obj.getClass()) { + return false; + } + + InkaUUID otherUuid = (InkaUUID) obj; + return this.uuid.equals(otherUuid.uuid); + } + + /** + * Overload for easy comparison with {@link UUID} + */ public boolean equals(UUID uuid) { return this.uuid.equals(uuid); } + /** + * Hash should depend directly on underlying UUID's hash + */ + @Override + public int hashCode() { + return uuid.hashCode(); + } + @Override public String toString() { return this.uuid.toString(); diff --git a/src/main/java/model/TagList.java b/src/main/java/model/TagList.java index 6ffd5252ed..d2205b1563 100644 --- a/src/main/java/model/TagList.java +++ b/src/main/java/model/TagList.java @@ -35,8 +35,6 @@ public Tag findTag(TagSelector tagSelector) throws TagNotFoundException { } catch (IndexOutOfBoundsException e) { throw new TagNotFoundException(); } - } else if (tagSelector.getUuid().isPresent()) { - return findTagFromUUID(tagSelector.getUuid().get()); } else if (tagSelector.getTagName().isPresent()) { return findTagFromName(tagSelector.getTagName().get()); } @@ -75,7 +73,6 @@ public void delete(int id) throws IndexOutOfBoundsException { public void delete(TagSelector tagSelector) throws TagNotFoundException { Optional index = tagSelector.getIndex(); - Optional uuid = tagSelector.getUuid(); Optional tagName = tagSelector.getTagName(); if (index.isPresent()) { @@ -86,13 +83,6 @@ public void delete(TagSelector tagSelector) throws TagNotFoundException { } catch (IndexOutOfBoundsException e) { throw new TagNotFoundException(); } - } else if (uuid.isPresent()) { - for (int i = 0; i < tags.size(); i++) { - if (tags.get(i).getUUID().equals(uuid.get().uuid)) { - delete(i); - return; - } - } } else if (tagName.isPresent()) { for (int i = 0; i < tags.size(); i++) { if (tags.get(i).getTagName().equals(tagName.get())) { diff --git a/src/main/java/model/TagSelector.java b/src/main/java/model/TagSelector.java index bf4189408d..8d9e81cc59 100644 --- a/src/main/java/model/TagSelector.java +++ b/src/main/java/model/TagSelector.java @@ -1,37 +1,24 @@ package model; import java.util.Optional; -import java.util.UUID; public class TagSelector { - private Optional uuid = Optional.empty(); private Optional tagName = Optional.empty(); private Optional index = Optional.empty(); - public TagSelector(String uuidOrTagName) throws IllegalArgumentException { - if (uuidOrTagName.trim().isEmpty()) { - throw new IllegalArgumentException("Tag name cannot be empty or whitespace-only."); - } - try { - this.uuid = Optional.of(new TagUUID(UUID.fromString(uuidOrTagName))); - } catch (IllegalArgumentException e) { - this.tagName = Optional.of(uuidOrTagName); - } + public TagSelector(String tagName) throws IllegalArgumentException { + this.tagName = Optional.of(tagName); } public TagSelector(int index) { this.index = Optional.of(index); } - public Optional getUuid() { - return uuid; - } - public Optional getTagName() { return tagName; } + public Optional getIndex() { return index; } } - diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 46b74bdc79..b305feb452 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -15,7 +15,6 @@ import utils.exceptions.InkaException; import utils.exceptions.TagNotFoundException; import utils.exceptions.UUIDWrongFormatException; -import utils.exceptions.WrongTagCreation; import utils.storage.IDataStorage; public class AddCardToTagCommand extends Command { @@ -39,21 +38,15 @@ public AddCardToTagCommand(TagSelector tagSelector, CardSelector cardSelector) t * @param ui The userInterface to print the success of the tag creation */ private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) - throws CardInTagException, TagNotFoundException, WrongTagCreation { + throws CardInTagException, TagNotFoundException { //find the corresponding Tag and Card based on its tagName and card uuid Tag tagToAdd = tagList.findTag(tagSelector); - Optional uuid = tagSelector.getUuid(); Optional tagName = tagSelector.getTagName(); if (tagToAdd == null) { - if (uuid.isPresent()) { - // Can not create new tag with index or uuid - throw new WrongTagCreation(); - } else { - ui.printTagCreationSuccess(tagName.get()); - tagToAdd = new Tag(tagName.get(), cardToAdd.getUuid()); - tagList.addTag(tagToAdd); - } + ui.printTagCreationSuccess(tagName.get()); + tagToAdd = new Tag(tagName.get(), cardToAdd.getUuid()); + tagList.addTag(tagToAdd); } else if (tagToAdd.cardIsInTag(cardToAdd.getUuid())) { throw new CardInTagException(); } diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 807e1b2fdf..0d01053c58 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -40,9 +40,9 @@ protected Command handleAction(String action, List tokens) throws ParseE case DECK_ACTION: return handleDeck(tokens); case HELP_ACTION: - return handleHelp(); + return handleHelp(tokens); case LIST_ACTION: - return handleList(); + return handleList(tokens); case TAG_ACTION: return handleTag(tokens); case VIEW_ACTION: @@ -72,8 +72,11 @@ private Command handleDelete(List tokens) throws ParseException, InkaExc return new DeleteCardCommand(cardSelector); } - //TODO: Fix issue here - private Command handleHelp() { + private Command handleHelp(List tokens) throws InvalidSyntaxException { + if (tokens.size() != 0) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options addOptions = new OptionsBuilder(CARD_MODEL, ADD_ACTION).buildOptions(); Options deleteOptions = new OptionsBuilder(CARD_MODEL, DELETE_ACTION).buildOptions(); Options tagOptions = new OptionsBuilder(CARD_MODEL, TAG_ACTION).buildOptions(); @@ -83,12 +86,17 @@ private Command handleHelp() { String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, VIEW_ACTION, DECK_ACTION}; String[] headerList = new String[]{"Adding cards", "Deleting cards", "List all cards", "Tagging cards", "View cards", "Adding cards to Deck"}; - Options[] optionsList = {addOptions, deleteOptions, tagOptions, viewOptions, deckOptions}; + Options[] optionsList = {addOptions, deleteOptions, new Options(), tagOptions, viewOptions, deckOptions}; String helpMessage = formatHelpMessage("card", actionList, headerList, optionsList); + return new PrintHelpCommand(helpMessage); } - private Command handleList() { + private Command handleList(List tokens) throws InvalidSyntaxException { + if (tokens.size() != 0) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + return new ListCardCommand(); } diff --git a/src/test/java/model/InkaUUIDTest.java b/src/test/java/model/InkaUUIDTest.java new file mode 100644 index 0000000000..8e821ebf29 --- /dev/null +++ b/src/test/java/model/InkaUUIDTest.java @@ -0,0 +1,66 @@ +package model; + +import java.util.HashSet; +import java.util.UUID; +import org.junit.jupiter.api.Test; + +public class InkaUUIDTest { + + private UUID UUID1 = UUID.fromString("00000000-0000-0000-0000-000000000000"); + private UUID UUID2 = UUID.fromString("11111111-1111-1111-1111-111111111111"); + + private CardUUID cardUUID1 = new CardUUID(UUID1); + private CardUUID cardUUID2 = new CardUUID(UUID2); + private DeckUUID deckUUID1 = new DeckUUID(UUID1); + private DeckUUID deckUUID2 = new DeckUUID(UUID2); + private TagUUID tagUUID1 = new TagUUID(UUID1); + private TagUUID tagUUID2 = new TagUUID(UUID2); + + @Test + public void uuid_notEquals() { + assert !cardUUID1.equals(cardUUID2); + assert !deckUUID1.equals(deckUUID2); + assert !tagUUID1.equals(tagUUID2); + + assert !cardUUID1.equals(deckUUID1); + assert !cardUUID1.equals(tagUUID1); + assert !deckUUID1.equals(tagUUID1); + } + + @Test + public void uuid_equals() { + CardUUID testCardUUID = new CardUUID(UUID1); + DeckUUID testDeckUUID = new DeckUUID(UUID1); + TagUUID testTagUUID = new TagUUID(UUID1); + + // Same instance + assert cardUUID1.equals(cardUUID1); + assert deckUUID1.equals(deckUUID1); + assert tagUUID1.equals(tagUUID1); + + // Different instance + assert cardUUID1.equals(testCardUUID); + assert deckUUID1.equals(testDeckUUID); + assert tagUUID1.equals(testTagUUID); + } + + @Test + public void uuid_contains() { + HashSet set = new HashSet<>(); + set.add(cardUUID1); + + CardUUID testCardUUID = new CardUUID(cardUUID1.uuid); + assert testCardUUID.hashCode() == cardUUID1.hashCode(); + + assert set.contains(cardUUID1); + assert set.contains(testCardUUID); + assert !set.contains(cardUUID2); + assert !set.contains(deckUUID1); + } + + @Test + public void uuid_equals_overload() { + assert cardUUID1.equals(UUID1); + assert !cardUUID1.equals(UUID2); + } +} diff --git a/src/test/java/utils/parser/CardParserTest.java b/src/test/java/utils/parser/CardParserTest.java index 97847f4646..0520b1222b 100644 --- a/src/test/java/utils/parser/CardParserTest.java +++ b/src/test/java/utils/parser/CardParserTest.java @@ -3,17 +3,23 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; +import java.util.UUID; import model.Card; import model.CardList; +import model.CardUUID; +import model.Deck; import model.DeckList; import model.TagList; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import utils.UserInterface; import utils.command.AddCardCommand; +import utils.command.AddCardToDeckCommand; import utils.command.AddCardToTagCommand; import utils.command.Command; import utils.command.DeleteCardCommand; +import utils.command.ListCardCommand; +import utils.command.PrintHelpCommand; import utils.command.ViewCardCommand; import utils.exceptions.CardNotFoundException; import utils.exceptions.InkaException; @@ -42,6 +48,14 @@ void init() { deckList = new DeckList(); } + @Test + public void parse_cardSelector() { + String[] testCases = {"card delete -i test", "card delete -c", "card delete"}; + for (String testCase : testCases) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testCase), "Invalid syntax"); + } + } + //region `card add` tests @Test public void parse_card_add() throws InkaException { @@ -95,6 +109,41 @@ public void parse_card_addMissingArguments() { } //endregion + //region `card deck` tests + + @Test + public void parse_card_deck() throws InkaException { + + String[] testCases = {"card deck -c 00000000-0000-0000-0000-000000000000 -d testDeck", + "card deck -i 1 -d testDeck"}; + for (String testCase : testCases) { + init(); + Card testCard = Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000"); + Deck testDeck = new Deck("testDeck"); + cardList.addCard(testCard); + deckList.addDeck(testDeck); + + assert testDeck.getCardsSet().size() == 0; + + Command cmd = parser.parseCommand(testCase); + assert cmd instanceof AddCardToDeckCommand; + cmd.execute(cardList, tagList, deckList, ui, storage); + + assert testDeck.cardIsInDeck(new CardUUID(UUID.fromString("00000000-0000-0000-0000-000000000000"))); + } + } + + @Test + public void parse_card_deckInvalidSyntax() { + String[] testCases = {"card deck -i 1", "card deck -c 00000000-0000-0000-0000-000000000000", + "card deck -d testDeck"}; + for (String testCase : testCases) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testCase), "Invalid syntax"); + } + } + + //endregion + //region `card delete` tests @Test @@ -191,6 +240,30 @@ public void parse_card_tagWhitespaceName() { //endregion + @Test + public void parse_card_list() throws InkaException { + Command cmd = parser.parseCommand("card list"); + assert cmd instanceof ListCardCommand; + } + + @Test + public void parse_card_listExtraTokens() { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand("card list test"), + "Does not expect trailing tokens"); + } + + @Test + public void parse_card_help() throws InkaException { + Command cmd = parser.parseCommand("card help"); + assert cmd instanceof PrintHelpCommand; + } + + @Test + public void parse_card_helpExtraTokens() { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand("card help test"), + "Does not expect trailing tokens"); + } + //region `card view` tests @Test diff --git a/src/test/java/utils/parser/TagParserTest.java b/src/test/java/utils/parser/TagParserTest.java index b8fc85c250..27e8e00092 100644 --- a/src/test/java/utils/parser/TagParserTest.java +++ b/src/test/java/utils/parser/TagParserTest.java @@ -18,6 +18,7 @@ import utils.command.ListCardsUnderTagCommand; import utils.command.ListTagsCommand; import utils.exceptions.InkaException; +import utils.exceptions.InvalidSyntaxException; import utils.exceptions.TagNotFoundException; import utils.storage.FakeStorage; import utils.storage.Storage; @@ -43,6 +44,14 @@ void init() { deckList = new DeckList(); } + @Test + public void parse_tagSelector() { + String[] testCases = {"tag delete -x", "tag delete -x test", "tag delete -t"}; + for (String testCase : testCases) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testCase), "Invalid syntax"); + } + } + @Test public void parse_tag_list() throws InkaException { Command cmd = parser.parseCommand("tag list"); @@ -97,17 +106,6 @@ public void parse_tag_deleteWithLongIndex() throws InkaException { assert tagList.isEmpty(); } - @Test - public void parse_tag_deleteWithUUID() throws InkaException { - Tag tag = new Tag("tagName", "00000000-0000-0000-0000-000000000000"); - tagList.addTag(tag); - - Command cmd = parser.parseCommand("tag delete -t 00000000-0000-0000-0000-000000000000"); - assert cmd instanceof DeleteTagCommand; - cmd.execute(cardList, tagList, deckList, ui, storage); - assert tagList.isEmpty(); - } - @Test public void parse_tag_deleteUnknownTag() throws InkaException { Command cmd = parser.parseCommand("tag delete -t tagName"); From d8a04c6a84a677f18e775a9d790fda5d9de193e1 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 01:47:26 +0800 Subject: [PATCH 184/311] feat : add card untag --- src/main/java/model/Tag.java | 4 ++ src/main/java/utils/UserInterface.java | 4 ++ .../command/RemoveTagFromCardCommand.java | 71 +++++++++++++++++++ .../exceptions/TagNotInCardException.java | 7 ++ .../java/utils/parser/CardKeywordParser.java | 22 +++++- 5 files changed, 106 insertions(+), 2 deletions(-) create mode 100644 src/main/java/utils/command/RemoveTagFromCardCommand.java create mode 100644 src/main/java/utils/exceptions/TagNotInCardException.java diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 449288eb1d..9075f84157 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -57,6 +57,10 @@ public void addCard(CardUUID cardUUID) { cards.add(cardUUID); } + public void removeCard(CardUUID cardUUID) { + cards.remove(cardUUID); + } + public void removeDecks(DeckUUID deckUUID) { decks.remove(deckUUID); } diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 1ddceb3f5a..d99409a9df 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -163,6 +163,10 @@ public void printRemoveCardFromDeckSuccess(CardUUID cardUUID, String deckName) { System.out.println("Successfully removed card " + cardUUID + " from deck " + deckName); } + public void printRemoveTagFromCard(TagUUID tagUUID, CardUUID cardUUID) { + System.out.println("Successfully removed tag " + tagUUID + " from card " + cardUUID); + } + public void printRemoveTagFromDeckSuccess(TagUUID tagUUID, String deckName) { System.out.println("Successfully removed tag " + tagUUID + " from deck " + deckName); } diff --git a/src/main/java/utils/command/RemoveTagFromCardCommand.java b/src/main/java/utils/command/RemoveTagFromCardCommand.java new file mode 100644 index 0000000000..90945dac26 --- /dev/null +++ b/src/main/java/utils/command/RemoveTagFromCardCommand.java @@ -0,0 +1,71 @@ + +package utils.command; + +import java.util.Optional; +import model.Card; +import model.CardList; +import model.CardSelector; +import model.CardUUID; +import model.DeckList; +import model.Tag; +import model.TagList; +import model.TagSelector; +import model.TagUUID; +import utils.UserInterface; +import utils.exceptions.CardInTagException; +import utils.exceptions.InkaException; +import utils.exceptions.TagNotFoundException; +import utils.exceptions.TagNotInCardException; +import utils.exceptions.UUIDWrongFormatException; +import utils.exceptions.WrongTagCreation; +import utils.storage.IDataStorage; + +public class RemoveTagFromCardCommand extends Command { + private TagSelector tagSelector; + private CardSelector cardSelector; + + public RemoveTagFromCardCommand(TagSelector tagSelector, CardSelector cardSelector) throws InkaException { + try { + this.tagSelector = tagSelector; + this.cardSelector = cardSelector; + } catch (IllegalArgumentException e) { + throw new UUIDWrongFormatException(); + } + } + + /** + * If the tag is currently in the card, removes the tag from the card and removes the card from the tag. + * + * @param cardAffected The user-specified card that might contain the tag + * @param tagToDelete The target tag that is to be deleted from the Card + */ + private void removeTagFromCard(Card cardAffected, Tag tagToDelete) + throws TagNotInCardException { + + Optional uuid = tagSelector.getUuid(); + Optional tagName = tagSelector.getTagName(); + + if (!tagToDelete.cardIsInTag(cardAffected.getUuid())) { + throw new TagNotInCardException(); + } + + CardUUID cardUUID = cardAffected.getUuid(); + tagToDelete.removeCard(cardUUID); + + TagUUID tagUUID = tagToDelete.getUUID(); + cardAffected.removeTag(tagUUID); + } + + @Override + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) + throws InkaException { + Card cardAffected = cardList.findCard(cardSelector); + assert cardAffected != null; + + Tag tagToDelete = tagList.findTag(tagSelector); + removeTagFromCard(cardAffected, tagToDelete); + + ui.printRemoveTagFromCard(tagToDelete.getUUID(), cardAffected.getUuid()); + } +} + diff --git a/src/main/java/utils/exceptions/TagNotInCardException.java b/src/main/java/utils/exceptions/TagNotInCardException.java new file mode 100644 index 0000000000..c6bc268160 --- /dev/null +++ b/src/main/java/utils/exceptions/TagNotInCardException.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class TagNotInCardException extends InkaException { + public TagNotInCardException() { + super("Tag was not in the Card to begin with."); + } +} diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 807e1b2fdf..ac8bdcae52 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -12,8 +12,12 @@ import utils.command.AddCardToTagCommand; import utils.command.Command; import utils.command.DeleteCardCommand; +import utils.command.DeleteDeckCommand; import utils.command.ListCardCommand; import utils.command.PrintHelpCommand; +import utils.command.RemoveCardFromDeckCommand; +import utils.command.RemoveTagFromCardCommand; +import utils.command.RemoveTagFromDeckCommand; import utils.command.ViewCardCommand; import utils.exceptions.InkaException; import utils.exceptions.InvalidSyntaxException; @@ -27,6 +31,8 @@ public class CardKeywordParser extends KeywordParser { public static final String HELP_ACTION = "help"; public static final String LIST_ACTION = "list"; public static final String TAG_ACTION = "tag"; + + public static final String UNTAG_ACTION = "untag"; public static final String VIEW_ACTION = "view"; public static final String DECK_ACTION = "deck"; @@ -45,6 +51,8 @@ protected Command handleAction(String action, List tokens) throws ParseE return handleList(); case TAG_ACTION: return handleTag(tokens); + case UNTAG_ACTION: + return handleUntag(tokens); case VIEW_ACTION: return handleView(tokens); default: @@ -81,8 +89,9 @@ private Command handleHelp() { Options deckOptions = new OptionsBuilder(CARD_MODEL, DECK_ACTION).buildOptions(); // Combine all action String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, VIEW_ACTION, DECK_ACTION}; - String[] headerList = new String[]{"Adding cards", "Deleting cards", - "List all cards", "Tagging cards", "View cards", "Adding cards to Deck"}; + String[] headerList = new String[]{ + "Adding cards", "Deleting cards", + "List all cards", "Tagging cards", "View cards", "Adding cards to Deck"}; Options[] optionsList = {addOptions, deleteOptions, tagOptions, viewOptions, deckOptions}; String helpMessage = formatHelpMessage("card", actionList, headerList, optionsList); return new PrintHelpCommand(helpMessage); @@ -101,6 +110,15 @@ private Command handleTag(List tokens) throws ParseException, InkaExcept return new AddCardToTagCommand(tagSelector, cardSelector); } + private Command handleUntag(List tokens) throws ParseException, InkaException { + Options tagOptions = new OptionsBuilder(CARD_MODEL, TAG_ACTION).buildOptions(); + CommandLine cmd = parseUsingOptions(tagOptions, tokens); + + CardSelector cardSelector = getSelectedCard(cmd); + TagSelector tagSelector = getSelectedTag(cmd); + return new RemoveTagFromCardCommand(tagSelector, cardSelector); + } + private Command handleDeck(List tokens) throws ParseException, InkaException { Options deckOptions = new OptionsBuilder(CARD_MODEL, DECK_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deckOptions, tokens); From 598db4734009e5b23ddf81bf16e0884b0a827b98 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 02:03:44 +0800 Subject: [PATCH 185/311] chore : cleanup card untag --- .savedata_backup.json | 12 ++++++++++++ savedata.json | 12 ++++++++++++ .../java/utils/command/RemoveTagFromCardCommand.java | 3 --- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/.savedata_backup.json b/.savedata_backup.json index 1a6b428f35..20e4c9b460 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -5,6 +5,8 @@ "deckUUID": { "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, "cards": [ { "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" @@ -24,6 +26,8 @@ "deckUUID": { "uuid": "46f82128-0ee7-4f8c-baa3-e4ca255eeb45" }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, "cards": [], "tags": [ { @@ -36,6 +40,8 @@ "deckUUID": { "uuid": "e723ebf2-57e4-4f5f-98f2-564dd824f517" }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, "cards": [ { "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" @@ -56,6 +62,9 @@ }, { "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } ], "decks": [] @@ -89,6 +98,9 @@ }, { "uuid": "f0721ed3-f357-4a6d-9d35-cd436ec5d280" + }, + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" } ], "decks": [ diff --git a/savedata.json b/savedata.json index 1a6b428f35..20e4c9b460 100644 --- a/savedata.json +++ b/savedata.json @@ -5,6 +5,8 @@ "deckUUID": { "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, "cards": [ { "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" @@ -24,6 +26,8 @@ "deckUUID": { "uuid": "46f82128-0ee7-4f8c-baa3-e4ca255eeb45" }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, "cards": [], "tags": [ { @@ -36,6 +40,8 @@ "deckUUID": { "uuid": "e723ebf2-57e4-4f5f-98f2-564dd824f517" }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, "cards": [ { "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" @@ -56,6 +62,9 @@ }, { "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } ], "decks": [] @@ -89,6 +98,9 @@ }, { "uuid": "f0721ed3-f357-4a6d-9d35-cd436ec5d280" + }, + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" } ], "decks": [ diff --git a/src/main/java/utils/command/RemoveTagFromCardCommand.java b/src/main/java/utils/command/RemoveTagFromCardCommand.java index 90945dac26..4ac8b04b76 100644 --- a/src/main/java/utils/command/RemoveTagFromCardCommand.java +++ b/src/main/java/utils/command/RemoveTagFromCardCommand.java @@ -42,9 +42,6 @@ public RemoveTagFromCardCommand(TagSelector tagSelector, CardSelector cardSelect private void removeTagFromCard(Card cardAffected, Tag tagToDelete) throws TagNotInCardException { - Optional uuid = tagSelector.getUuid(); - Optional tagName = tagSelector.getTagName(); - if (!tagToDelete.cardIsInTag(cardAffected.getUuid())) { throw new TagNotInCardException(); } From e3583a632b6e1ada36c9aef31c0b13d4c398ed6d Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 02:11:19 +0800 Subject: [PATCH 186/311] chore : fix checkstyle --- src/main/java/utils/UserInterface.java | 4 ---- src/main/java/utils/command/RemoveTagFromCardCommand.java | 6 +----- src/main/java/utils/parser/CardKeywordParser.java | 8 ++------ 3 files changed, 3 insertions(+), 15 deletions(-) diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index d99409a9df..1ddceb3f5a 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -163,10 +163,6 @@ public void printRemoveCardFromDeckSuccess(CardUUID cardUUID, String deckName) { System.out.println("Successfully removed card " + cardUUID + " from deck " + deckName); } - public void printRemoveTagFromCard(TagUUID tagUUID, CardUUID cardUUID) { - System.out.println("Successfully removed tag " + tagUUID + " from card " + cardUUID); - } - public void printRemoveTagFromDeckSuccess(TagUUID tagUUID, String deckName) { System.out.println("Successfully removed tag " + tagUUID + " from deck " + deckName); } diff --git a/src/main/java/utils/command/RemoveTagFromCardCommand.java b/src/main/java/utils/command/RemoveTagFromCardCommand.java index 4ac8b04b76..b74c973568 100644 --- a/src/main/java/utils/command/RemoveTagFromCardCommand.java +++ b/src/main/java/utils/command/RemoveTagFromCardCommand.java @@ -1,7 +1,6 @@ package utils.command; -import java.util.Optional; import model.Card; import model.CardList; import model.CardSelector; @@ -12,12 +11,9 @@ import model.TagSelector; import model.TagUUID; import utils.UserInterface; -import utils.exceptions.CardInTagException; import utils.exceptions.InkaException; -import utils.exceptions.TagNotFoundException; import utils.exceptions.TagNotInCardException; import utils.exceptions.UUIDWrongFormatException; -import utils.exceptions.WrongTagCreation; import utils.storage.IDataStorage; public class RemoveTagFromCardCommand extends Command { @@ -62,7 +58,7 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI Tag tagToDelete = tagList.findTag(tagSelector); removeTagFromCard(cardAffected, tagToDelete); - ui.printRemoveTagFromCard(tagToDelete.getUUID(), cardAffected.getUuid()); + ui.printRemoveTagFromCard(cardAffected.getUuid(), tagToDelete.getUUID()); } } diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index ac8bdcae52..e1db4334c3 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -12,12 +12,9 @@ import utils.command.AddCardToTagCommand; import utils.command.Command; import utils.command.DeleteCardCommand; -import utils.command.DeleteDeckCommand; import utils.command.ListCardCommand; import utils.command.PrintHelpCommand; -import utils.command.RemoveCardFromDeckCommand; import utils.command.RemoveTagFromCardCommand; -import utils.command.RemoveTagFromDeckCommand; import utils.command.ViewCardCommand; import utils.exceptions.InkaException; import utils.exceptions.InvalidSyntaxException; @@ -89,9 +86,8 @@ private Command handleHelp() { Options deckOptions = new OptionsBuilder(CARD_MODEL, DECK_ACTION).buildOptions(); // Combine all action String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, VIEW_ACTION, DECK_ACTION}; - String[] headerList = new String[]{ - "Adding cards", "Deleting cards", - "List all cards", "Tagging cards", "View cards", "Adding cards to Deck"}; + String[] headerList = new String[]{"Adding cards", "Deleting cards", "List all cards", "Tagging cards", "View" + + " cards", "Adding cards to Deck"}; Options[] optionsList = {addOptions, deleteOptions, tagOptions, viewOptions, deckOptions}; String helpMessage = formatHelpMessage("card", actionList, headerList, optionsList); return new PrintHelpCommand(helpMessage); From 4231682d2b887ed01b1c1cac0e9951e251331e4c Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 10:28:15 +0800 Subject: [PATCH 187/311] docs : DG for listing card under tag --- .savedata_backup.json | 6 ++++ docs/DeveloperGuide.md | 63 ++++++++++++++++++++++++---------- docs/uml/CardListSequence.puml | 5 +-- savedata.json | 6 ++++ 4 files changed, 60 insertions(+), 20 deletions(-) diff --git a/.savedata_backup.json b/.savedata_backup.json index 20e4c9b460..fc27b4db28 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -63,6 +63,9 @@ { "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" }, + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + }, { "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } @@ -99,6 +102,9 @@ { "uuid": "f0721ed3-f357-4a6d-9d35-cd436ec5d280" }, + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, { "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" } diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 96d62ecb6a..8a67c0019c 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -147,10 +147,11 @@ The current functionalities: - view the card by its uuid - add tag to a card -The implementation of `card view` will be shown below, the implementation for other card-related features will be -similar. +#### Card View -- When the user enters `card view -c {cardUUID}`, the input is passed to `Parser` class which +The implementation of `card view {-c {cardUUID} | -i {cardIndex}}` will be shown below : + +- When the user enters `card view {-c {cardUUID} | -i {cardIndex}}`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the " card" keyword. The `Parser#CardKeywordParser()` uses the Apache Commons CLI library to parse the remaining user input @@ -161,7 +162,8 @@ similar. - This `ViewCardCommand` will first find the card that is to be viewed by calling the `CardList#findCard()` which will in turn call the `CardSelector#getIndex()` - and `CardSelector#getUUID()`. `CardSelector` will then return the `cardToView` to `CardList` and then + and `CardSelector#getUUID()` depending on the flags and parameter specified by the user. `CardSelector` will then + return the `cardToView` to `CardList` and then to `ViewCardCommand`. - If the `cardToView` is not null, it will be passed to `UserInterface#printCard()` to be printed. `ViewCardCommand` @@ -202,30 +204,21 @@ Tag Feature currently supports the following functionalities : - list all the cards under a tag - edit the tag name +#### Tag a Card + The implementation of the `card tag` feature is as follows : - When the user enters `card tag -c {cardUUID} -t {tagName}`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The parser detects the keyword `card` and process the remaining input and pass them - to `Parser#CardKeywordParser` class which - calls `HandleTag()` method and returns a `AddCardToTagCommand`. The sequence diagram for this section has been + to `Parser#CardKeywordParser` class which calls `HandleTag()` method and returns a `AddCardToTagCommand`. The + sequence diagram for this section has been shown [above](#parser-component). -- This `AddCardToTagCommand` will first find the card to which the tag should be added to by calling - the `CardList#findCard()` which will in turn call the `CardSelector#getIndex()` - and `CardSelector#getUUID()`. `CardSelector` will then return the `cardToAdd` to `CardList` and then - to `AddCardToTagCommand`. - -The implementation of the ***add a tag to a card*** feature is as follows : - -- When the user enters `card tag -c {cardUUID} -t {tagName}`, the input is passed to `CardKeywordParser` class which - calls `HandleTag()` method and returns a `addCardToTagCommand`. The sequence diagram for this section has been - shown [above](#parser-component). -- - This `AddCardToTagCommand` will first find the card to which the tag should be added to by calling the `CardList#findCard()` which will in turn call the `CardSelector#getIndex()` and `CardSelector#getUUID()`. `CardSelector` will then return the `cardToAdd` to `CardList` and to `AddCardToTagCommand`. -- + - After finding the card on which to add the tag, `AddCardToTagCommand` will check if the tag has already existed by calling `TagList#findTagFromName` which will return a `tagToAdd`. If the `tagToAdd` currently does not exist, `AddCardToTagCommand` will then create a new `Tag` and add it to `TagList` by @@ -240,6 +233,40 @@ The implementation of the ***add a tag to a card*** feature is as follows : ![Tag feature](img/TagListSequence.png) +#### Untag a Card + +The implementation of the `card untag` feature is as follows : + +- When the user enters `card untag {-c {cardUUID} | -i {cardIndex}} {-t {tagName} | -i {tagIndex}}`, the input is passed + to `Parser` class which + calls `Parser#parseCommand()`. The parser detects the keyword `card` and process the remaining input and pass them + to `Parser#CardKeywordParser` class which calls `HandleUntag()` method and returns a `RemoveTagFromCardCommand`. The + sequence diagram for this section has been + shown [above](#parser-component). + +- This `RemoveTagFromCardCommand` will first find the card to remove the tag from by calling + the `CardList#findCard()` which will in turn call the `CardSelector#getIndex()` + and `CardSelector#getUUID()` depending on the flags and parameter specified by the user. `CardSelector` will then + return the `cardAffected` to `CardList` and then back + to `RemoveTagFromCardCommand`. + +- `RemoveTagFromCardCommand` will then find the tag to delete from the card by calling `TagList#findCard()` which will + in turn call the + `TagSelector#getIndex()` and `TagSelector#getTagName()` depending on the flags and parameter specified by the + user. `TagSelector` will return the `tagToRemove` to `TagList` and then back to `RemoveTagFromCardCommand`. +- +- After `cardAffected` and `tagToRemove` is ready, `RemoveCardFromTagCommand` will + call `RemoveTagFromCardCommand#removeTagFromCard(cardAffected, tagToRemove)` which will in turn remove the reference + to the tag from the card and remove the reference to the card from the tag + by calling `Card#getUUID()`, `Tag#removeCard()`, `Tag#getUUID()`,`Card#RemoveTag()`. + +- Finally, `RemoveTagFromCardCommand` will then call `UserInterface#printRemoveTagFromCard()` to print successful + removal of `tagToRemove` from `cardAffected`. + +### List Cards under Tag + +The implementation of the `tag list {-t {tagName} | -i {tagIndex}}` + ### Deck Feature --- diff --git a/docs/uml/CardListSequence.puml b/docs/uml/CardListSequence.puml index cfafa3ad28..c9b6aa942c 100644 --- a/docs/uml/CardListSequence.puml +++ b/docs/uml/CardListSequence.puml @@ -26,12 +26,13 @@ return ViewCardCommand -> ViewCardCommand : execute() ViewCardCommand -> CardList : findCard() +alt index is specified CardList -> CardSelector : getIndex() return cardIndex - +else uuid is specified CardList -> CardSelector : getUUID() return cardUUID - +end return cardToView ViewCardCommand -> UserInterface : printCard(cardToView) diff --git a/savedata.json b/savedata.json index 20e4c9b460..fc27b4db28 100644 --- a/savedata.json +++ b/savedata.json @@ -63,6 +63,9 @@ { "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" }, + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + }, { "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } @@ -99,6 +102,9 @@ { "uuid": "f0721ed3-f357-4a6d-9d35-cd436ec5d280" }, + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, { "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" } From 82d845fd4fd35980702627b272be4248f72b8c31 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 10:49:10 +0800 Subject: [PATCH 188/311] docs: more DG --- docs/DeveloperGuide.md | 27 +++++++++++++++++-- .../command/ListCardsUnderTagCommand.java | 15 ++++++----- 2 files changed, 33 insertions(+), 9 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 8a67c0019c..2c967105fc 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -254,7 +254,7 @@ The implementation of the `card untag` feature is as follows : in turn call the `TagSelector#getIndex()` and `TagSelector#getTagName()` depending on the flags and parameter specified by the user. `TagSelector` will return the `tagToRemove` to `TagList` and then back to `RemoveTagFromCardCommand`. -- + - After `cardAffected` and `tagToRemove` is ready, `RemoveCardFromTagCommand` will call `RemoveTagFromCardCommand#removeTagFromCard(cardAffected, tagToRemove)` which will in turn remove the reference to the tag from the card and remove the reference to the card from the tag @@ -263,10 +263,33 @@ The implementation of the `card untag` feature is as follows : - Finally, `RemoveTagFromCardCommand` will then call `UserInterface#printRemoveTagFromCard()` to print successful removal of `tagToRemove` from `cardAffected`. -### List Cards under Tag +#### List Cards under Tag The implementation of the `tag list {-t {tagName} | -i {tagIndex}}` +- When the user enters `tag list {-t {tagName} | -i {tagIndex}}`, the input is passed + to `Parser` class which + calls `Parser#parseCommand()`. The parser detects the keyword `tag` and process the remaining input and pass them + to `Parser#TagKeywordParser` class which calls `HandleList()` method and returns a `ListCardsUnderTagCommand`. The + sequence diagram for this section has been + shown [above](#parser-component). + +- This `ListCardsUnderTagCommand` will find the tag under which to display the cards from by calling + the `TagList#findTag()` which will in turn call the `TagSelector#getIndex()` + and `TagSelector#getTagName()` depending on the flags and parameter specified by the user. `TagSelector` will then + return the `foundTag` to `TagList` and then back + to `ListCardsUnderTagCommand`. + +- After `foundTag` is ready, `ListCardsUnderTagCommand` will + call `ListCardsUnderTagCommand#rfindCardsUnderTag(foundTag)` which will call the `Tag#getCardsUUID` and return the + UUIDs of the cards + under the `Tag` in the form of `cardsUUID`. `ListCardsUnderTagCommand` will then loop through the entire cardList and + the `cardsUUID`, if their uuid matches, + that `Card` will be added to `foundCardList` and returned to `ListCardsUnderTagCommand`. + +- Once `foundCardList` is returned, `ListCardsUdnerTagCommand` will call `UserInterface#printCardList(foundCardList)` to + print the list of cards under the specified tag. + ### Deck Feature --- diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java index 298c73c73e..e6142e1306 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -24,15 +24,11 @@ public ListCardsUnderTagCommand(TagSelector tagSelector) { * Finds all the cards that have been tagged with tagName tag. * * @param cardList The cardList from which to search for the cards. - * @param tagList The tagList that contains the specified tagName. + * @param foundTag The tag under which to return all the cards from. * @return The ArrayList containing all the cards that has the tagName tag. * @throws InkaException */ - private CardList findCardsUnderTag(CardList cardList, TagList tagList) throws InkaException { - Tag foundTag = tagList.findTag(tagSelector); - if (foundTag == null) { - throw new TagNotFoundException(); - } + private CardList findCardsUnderTag(CardList cardList, Tag foundTag) throws InkaException { ArrayList cardsUUID = foundTag.getCardsUUID(); CardList foundCardList = new CardList(); @@ -50,7 +46,12 @@ private CardList findCardsUnderTag(CardList cardList, TagList tagList) throws In @Override public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { - CardList foundCardList = findCardsUnderTag(cardList, tagList); + + Tag foundTag = tagList.findTag(tagSelector); + if (foundTag == null) { + throw new TagNotFoundException(); + } + CardList foundCardList = findCardsUnderTag(cardList, foundTag); ui.printCardList(foundCardList); } } From 2355684a705f8d8a2cb8b2532c7126ca5f30dfba Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 10:58:45 +0800 Subject: [PATCH 189/311] fix : fix checkstyle --- src/main/java/utils/parser/CardKeywordParser.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 77b3967182..25924ea812 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -89,8 +89,7 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { Options deckOptions = new OptionsBuilder(CARD_MODEL, DECK_ACTION).buildOptions(); // Combine all action String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, VIEW_ACTION, DECK_ACTION}; - String[] headerList = new String[]{ - "Adding cards", "Deleting cards", + String[] headerList = new String[]{"Adding cards", "Deleting cards", "List all cards", "Tagging cards", "View cards", "Adding cards to Deck"}; Options[] optionsList = {addOptions, deleteOptions, new Options(), tagOptions, viewOptions, deckOptions}; String helpMessage = formatHelpMessage("card", actionList, headerList, optionsList); @@ -107,6 +106,11 @@ private Command handleList(List tokens) throws InvalidSyntaxException { } private Command handleTag(List tokens) throws ParseException, InkaException { + + if (tokens.size() != 0) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options tagOptions = new OptionsBuilder(CARD_MODEL, TAG_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(tagOptions, tokens); From 96b13235dcba7e8e6fe1ad000d91dfd2a3c644ac Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 11:18:29 +0800 Subject: [PATCH 190/311] bug: add extra flags exception checking --- .../java/utils/parser/CardKeywordParser.java | 42 ++++++++++++++++--- .../java/utils/parser/DeckKeywordParser.java | 42 +++++++++++++++---- .../java/utils/parser/OptionsBuilder.java | 12 +++++- .../java/utils/parser/TagKeywordParser.java | 29 ++++++++++++- 4 files changed, 109 insertions(+), 16 deletions(-) diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 25924ea812..98d925e5c8 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -58,6 +58,11 @@ protected Command handleAction(String action, List tokens) throws ParseE } private Command handleAdd(List tokens) throws ParseException, InvalidSyntaxException { + + if (tokens.size() != 2) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options addOptions = new OptionsBuilder(CARD_MODEL, ADD_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(addOptions, tokens); @@ -69,6 +74,11 @@ private Command handleAdd(List tokens) throws ParseException, InvalidSyn } private Command handleDelete(List tokens) throws ParseException, InkaException { + + if (tokens.size() != 1) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options deleteOptions = new OptionsBuilder(CARD_MODEL, DELETE_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deleteOptions, tokens); @@ -78,6 +88,7 @@ private Command handleDelete(List tokens) throws ParseException, InkaExc } private Command handleHelp(List tokens) throws InvalidSyntaxException { + if (tokens.size() != 0) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -85,19 +96,25 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { Options addOptions = new OptionsBuilder(CARD_MODEL, ADD_ACTION).buildOptions(); Options deleteOptions = new OptionsBuilder(CARD_MODEL, DELETE_ACTION).buildOptions(); Options tagOptions = new OptionsBuilder(CARD_MODEL, TAG_ACTION).buildOptions(); + Options untagOptions = new OptionsBuilder(CARD_MODEL, UNTAG_ACTION).buildOptions(); Options viewOptions = new OptionsBuilder(CARD_MODEL, VIEW_ACTION).buildOptions(); Options deckOptions = new OptionsBuilder(CARD_MODEL, DECK_ACTION).buildOptions(); // Combine all action - String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, VIEW_ACTION, DECK_ACTION}; - String[] headerList = new String[]{"Adding cards", "Deleting cards", - "List all cards", "Tagging cards", "View cards", "Adding cards to Deck"}; - Options[] optionsList = {addOptions, deleteOptions, new Options(), tagOptions, viewOptions, deckOptions}; + String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, UNTAG_ACTION, VIEW_ACTION, + DECK_ACTION}; + String[] headerList = new String[]{"Adding cards", "Deleting cards", "List all cards", "Tagging cards", + "Untagging cards", + "View" + + " cards", "Adding cards to Deck"}; + Options[] optionsList = {addOptions, deleteOptions, new Options(), tagOptions, untagOptions, viewOptions, + deckOptions}; String helpMessage = formatHelpMessage("card", actionList, headerList, optionsList); return new PrintHelpCommand(helpMessage); } private Command handleList(List tokens) throws InvalidSyntaxException { + if (tokens.size() != 0) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -107,7 +124,7 @@ private Command handleList(List tokens) throws InvalidSyntaxException { private Command handleTag(List tokens) throws ParseException, InkaException { - if (tokens.size() != 0) { + if (tokens.size() != 2) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -120,6 +137,11 @@ private Command handleTag(List tokens) throws ParseException, InkaExcept } private Command handleUntag(List tokens) throws ParseException, InkaException { + + if (tokens.size() != 2) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options tagOptions = new OptionsBuilder(CARD_MODEL, TAG_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(tagOptions, tokens); @@ -129,6 +151,11 @@ private Command handleUntag(List tokens) throws ParseException, InkaExce } private Command handleDeck(List tokens) throws ParseException, InkaException { + + if (tokens.size() != 2) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options deckOptions = new OptionsBuilder(CARD_MODEL, DECK_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deckOptions, tokens); @@ -138,6 +165,11 @@ private Command handleDeck(List tokens) throws ParseException, InkaExcep } private Command handleView(List tokens) throws ParseException, InkaException { + + if (tokens.size() != 1) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options viewOptions = new OptionsBuilder(CARD_MODEL, VIEW_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(viewOptions, tokens); diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java index f7d07898a4..a3de149548 100644 --- a/src/main/java/utils/parser/DeckKeywordParser.java +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -37,7 +37,7 @@ protected Command handleAction(String action, List tokens) case EDIT_ACTION: return handleEdit(tokens); case HELP_ACTION: - return handleHelp(); + return handleHelp(tokens); case LIST_ACTION: return handleList(tokens); case RUN_ACTION: @@ -48,7 +48,12 @@ protected Command handleAction(String action, List tokens) } private Command handleDelete(List tokens) throws ParseException, InkaException { - Options deleteOptions = new OptionsBuilder(DECK_MODEL, DELETE_ACTION).buildOptions(); + + if (tokens.size() != 1 && tokens.size() != 2 && tokens.size() != 3) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + + Options deleteOptions = new OptionsBuilder(DECK_MODEL, DELETE_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deleteOptions, tokens); TagSelector tagSelector = getSelectedTag(cmd); @@ -63,7 +68,12 @@ private Command handleDelete(List tokens) throws ParseException, InkaExc } private Command handleList(List tokens) throws ParseException, InvalidSyntaxException { - Options listOptions = new OptionsBuilder(DECK_MODEL, LIST_ACTION).buildOptions(); + + if (tokens.size() != 0 && tokens.size() != 1 && tokens.size() != 2) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + + Options listOptions = new OptionsBuilder(DECK_MODEL, LIST_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(listOptions, tokens); if (cmd.hasOption("c")) { @@ -76,8 +86,14 @@ private Command handleList(List tokens) throws ParseException, InvalidSy return new ListDecksCommand(); } } + private Command handleEdit(List tokens) throws ParseException, InvalidSyntaxException { - Options editOptions = new OptionsBuilder(DECK_MODEL, EDIT_ACTION).buildOptions(); + + if (tokens.size() != 2) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + + Options editOptions = new OptionsBuilder(DECK_MODEL, EDIT_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(editOptions, tokens); String oldDeckName = cmd.getOptionValue("o"); @@ -85,10 +101,15 @@ private Command handleEdit(List tokens) throws ParseException, InvalidSy return new EditDeckNameCommand(oldDeckName, newDeckName); } - private Command handleHelp() { - Options editOptions = new OptionsBuilder(DECK_MODEL, EDIT_ACTION).buildOptions(); - Options deleteOptions = new OptionsBuilder(DECK_MODEL, DELETE_ACTION).buildOptions(); - Options listOptions = new OptionsBuilder(DECK_MODEL, LIST_ACTION).buildOptions(); + private Command handleHelp(List tokens) throws InvalidSyntaxException { + + if (tokens.size() != 0) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + + Options editOptions = new OptionsBuilder(DECK_MODEL, EDIT_ACTION).buildOptions(); + Options deleteOptions = new OptionsBuilder(DECK_MODEL, DELETE_ACTION).buildOptions(); + Options listOptions = new OptionsBuilder(DECK_MODEL, LIST_ACTION).buildOptions(); // Combine all actions String[] actionList = {EDIT_ACTION, DELETE_ACTION, LIST_ACTION}; String[] headerList = {"Edit existing decks", "Delete decks", "List decks"}; @@ -99,6 +120,11 @@ private Command handleHelp() { } private Command handleRun(List tokens) throws ParseException, InvalidSyntaxException { + + if (tokens.size() != 1) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options runOptions = new OptionsBuilder(DECK_MODEL, RUN_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(runOptions, tokens); diff --git a/src/main/java/utils/parser/OptionsBuilder.java b/src/main/java/utils/parser/OptionsBuilder.java index e87f75d2d1..07b1caf968 100644 --- a/src/main/java/utils/parser/OptionsBuilder.java +++ b/src/main/java/utils/parser/OptionsBuilder.java @@ -14,6 +14,8 @@ public class OptionsBuilder { public static final String ADD_ACTION = "add"; public static final String DELETE_ACTION = "delete"; public static final String TAG_ACTION = "tag"; + + public static final String UNTAG_ACTION = "untag"; public static final String VIEW_ACTION = "view"; public static final String DECK_ACTION = "deck"; public static final String EDIT_ACTION = "edit"; @@ -51,6 +53,8 @@ public Options buildOptions() { return buildAddOptions(); case TAG_ACTION: return buildTagOptions(); + case UNTAG_ACTION: + return buildUntagOptions(); case VIEW_ACTION: return buildViewOptions(); case DELETE_ACTION: @@ -109,6 +113,13 @@ public static Options buildTagOptions() { return options; } + public static Options buildUntagOptions() { + Options options = new Options(); + options.addOptionGroup(buildCardSelectOption()); + options.addOptionGroup(buildTagSelectOption()); + return options; + } + public static Options buildViewOptions() { Options options = new Options(); options.addOptionGroup(buildCardSelectOption()); @@ -242,5 +253,4 @@ protected static Option buildMultipleTokenOption(String option, String longOptio return opt; } - } diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java index 4443dc3264..cae42489ed 100644 --- a/src/main/java/utils/parser/TagKeywordParser.java +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -36,7 +36,7 @@ protected Command handleAction(String action, List tokens) case EDIT_ACTION: return handleEdit(tokens); case HELP_ACTION: - return handleHelp(); + return handleHelp(tokens); case LIST_ACTION: return handleList(tokens); default: @@ -45,6 +45,11 @@ protected Command handleAction(String action, List tokens) } private Command handleDelete(List tokens) throws ParseException, InvalidSyntaxException { + + if (tokens.size() != 1) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options deleteOption = new OptionsBuilder(TAG_MODEL, DELETE_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deleteOption, tokens); @@ -53,6 +58,11 @@ private Command handleDelete(List tokens) throws ParseException, Invalid } private Command handleEdit(List tokens) throws ParseException, InvalidSyntaxException { + + if (tokens.size() != 2) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options editOption = new OptionsBuilder(TAG_MODEL, EDIT_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(editOption, tokens); @@ -61,7 +71,12 @@ private Command handleEdit(List tokens) throws ParseException, InvalidSy return new EditTagNameCommand(oldTagName, newTagName); } - private Command handleHelp() { + private Command handleHelp(List tokens) throws InvalidSyntaxException { + + if (tokens.size() != 0) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options deleteOption = new OptionsBuilder(TAG_MODEL, DELETE_ACTION).buildOptions(); Options editOption = new OptionsBuilder(TAG_MODEL, EDIT_ACTION).buildOptions(); Options listOption = new OptionsBuilder(TAG_MODEL, LIST_ACTION).buildOptions(); @@ -79,6 +94,11 @@ private Command handleHelp() { } private Command handleList(List tokens) throws ParseException, InvalidSyntaxException { + + if (tokens.size() != 0 && tokens.size() != 1) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options listOption = new OptionsBuilder(TAG_MODEL, LIST_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(listOption, tokens); @@ -91,6 +111,11 @@ private Command handleList(List tokens) throws ParseException, InvalidSy } private Command handleDeck(List tokens) throws ParseException, InkaException { + + if (tokens.size() != 2) { + throw InvalidSyntaxException.buildTooManyTokensMessage(); + } + Options deckOption = new OptionsBuilder(TAG_MODEL, DECK_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deckOption, tokens); From 9229186143f1df15d84c5f94930dd5b57957a091 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 11:21:02 +0800 Subject: [PATCH 191/311] chore: fix checkstyle --- src/main/java/utils/parser/CardKeywordParser.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 98d925e5c8..e4da9898d3 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -101,13 +101,12 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { Options deckOptions = new OptionsBuilder(CARD_MODEL, DECK_ACTION).buildOptions(); // Combine all action String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, UNTAG_ACTION, VIEW_ACTION, - DECK_ACTION}; + DECK_ACTION}; String[] headerList = new String[]{"Adding cards", "Deleting cards", "List all cards", "Tagging cards", - "Untagging cards", - "View" - + " cards", "Adding cards to Deck"}; + "Untagging cards", + "View" + " cards", "Adding cards to Deck"}; Options[] optionsList = {addOptions, deleteOptions, new Options(), tagOptions, untagOptions, viewOptions, - deckOptions}; + deckOptions}; String helpMessage = formatHelpMessage("card", actionList, headerList, optionsList); return new PrintHelpCommand(helpMessage); From 9336c72ae6fa25562b8fbae8a0a533ca7b9ddd3b Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 11:29:40 +0800 Subject: [PATCH 192/311] fix : fix error checking for extra flags --- .savedata_backup.json | 18 ++++++++++++++++++ savedata.json | 18 ++++++++++++++++++ .../java/utils/parser/CardKeywordParser.java | 9 +++++---- .../java/utils/parser/DeckKeywordParser.java | 8 ++++---- .../java/utils/parser/TagKeywordParser.java | 8 ++++---- 5 files changed, 49 insertions(+), 12 deletions(-) diff --git a/.savedata_backup.json b/.savedata_backup.json index fc27b4db28..42554cc7a5 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -83,6 +83,21 @@ } ], "decks": [] + }, + { + "uuid": { + "uuid": "1631221a-1b21-4481-8113-76b0b6ce6499" + }, + "tagName": "bla", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + }, + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] } ], "cards": [ @@ -107,6 +122,9 @@ }, { "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "1631221a-1b21-4481-8113-76b0b6ce6499" } ], "decks": [ diff --git a/savedata.json b/savedata.json index fc27b4db28..42554cc7a5 100644 --- a/savedata.json +++ b/savedata.json @@ -83,6 +83,21 @@ } ], "decks": [] + }, + { + "uuid": { + "uuid": "1631221a-1b21-4481-8113-76b0b6ce6499" + }, + "tagName": "bla", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + }, + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] } ], "cards": [ @@ -107,6 +122,9 @@ }, { "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "1631221a-1b21-4481-8113-76b0b6ce6499" } ], "decks": [ diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index e4da9898d3..69a5a2930f 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -123,9 +123,10 @@ private Command handleList(List tokens) throws InvalidSyntaxException { private Command handleTag(List tokens) throws ParseException, InkaException { - if (tokens.size() != 2) { + if (tokens.size() != 4) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } + System.out.println(tokens.size()); Options tagOptions = new OptionsBuilder(CARD_MODEL, TAG_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(tagOptions, tokens); @@ -137,7 +138,7 @@ private Command handleTag(List tokens) throws ParseException, InkaExcept private Command handleUntag(List tokens) throws ParseException, InkaException { - if (tokens.size() != 2) { + if (tokens.size() != 4) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -151,7 +152,7 @@ private Command handleUntag(List tokens) throws ParseException, InkaExce private Command handleDeck(List tokens) throws ParseException, InkaException { - if (tokens.size() != 2) { + if (tokens.size() != 4) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -165,7 +166,7 @@ private Command handleDeck(List tokens) throws ParseException, InkaExcep private Command handleView(List tokens) throws ParseException, InkaException { - if (tokens.size() != 1) { + if (tokens.size() != 2) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java index a3de149548..d6c81dd124 100644 --- a/src/main/java/utils/parser/DeckKeywordParser.java +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -49,7 +49,7 @@ protected Command handleAction(String action, List tokens) private Command handleDelete(List tokens) throws ParseException, InkaException { - if (tokens.size() != 1 && tokens.size() != 2 && tokens.size() != 3) { + if (tokens.size() != 2 && tokens.size() != 4 && tokens.size() != 6) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -69,7 +69,7 @@ private Command handleDelete(List tokens) throws ParseException, InkaExc private Command handleList(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 0 && tokens.size() != 1 && tokens.size() != 2) { + if (tokens.size() != 0 && tokens.size() != 2 && tokens.size() != 4) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -89,7 +89,7 @@ private Command handleList(List tokens) throws ParseException, InvalidSy private Command handleEdit(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 2) { + if (tokens.size() != 4) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -121,7 +121,7 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { private Command handleRun(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 1) { + if (tokens.size() != 2) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java index cae42489ed..cd07328d09 100644 --- a/src/main/java/utils/parser/TagKeywordParser.java +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -46,7 +46,7 @@ protected Command handleAction(String action, List tokens) private Command handleDelete(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 1) { + if (tokens.size() != 2) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -59,7 +59,7 @@ private Command handleDelete(List tokens) throws ParseException, Invalid private Command handleEdit(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 2) { + if (tokens.size() != 4) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -95,7 +95,7 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { private Command handleList(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 0 && tokens.size() != 1) { + if (tokens.size() != 0 && tokens.size() != 2) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -112,7 +112,7 @@ private Command handleList(List tokens) throws ParseException, InvalidSy private Command handleDeck(List tokens) throws ParseException, InkaException { - if (tokens.size() != 2) { + if (tokens.size() != 4) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } From 02d2e6f3abbdf31ab6a7e445cbb2c4fcf1e4d1c5 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 11:35:10 +0800 Subject: [PATCH 193/311] fix : more flags exception checking --- src/main/java/utils/parser/CardKeywordParser.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 69a5a2930f..4109a27367 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -59,7 +59,7 @@ protected Command handleAction(String action, List tokens) throws ParseE private Command handleAdd(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 2) { + if (tokens.size() != 4) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -75,7 +75,7 @@ private Command handleAdd(List tokens) throws ParseException, InvalidSyn private Command handleDelete(List tokens) throws ParseException, InkaException { - if (tokens.size() != 1) { + if (tokens.size() != 2) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } From 9f67e1147dc71458a0d9b2fc054bb13c01813e5b Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 12:22:26 +0800 Subject: [PATCH 194/311] fix: resolve unit test error in parser --- docs/DeveloperGuide.md | 19 +++++++------- .../java/utils/parser/CardKeywordParser.java | 25 ------------------- .../java/utils/parser/DeckKeywordParser.java | 14 +---------- .../java/utils/parser/TagKeywordParser.java | 14 +---------- 4 files changed, 12 insertions(+), 60 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 2c967105fc..347f0b67cd 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -166,31 +166,25 @@ The implementation of `card view {-c {cardUUID} | -i {cardIndex}}` will be shown return the `cardToView` to `CardList` and then to `ViewCardCommand`. + - If the `cardToView` is not null, it will be passed to `UserInterface#printCard()` to be printed. `ViewCardCommand` will proceed to call `Card#getTagsUUID()` which will return `tagsUUID` and `Card#getDecksUUID()` which will return `decksUUID`. + - Once the `tagsUUID` is ready, `ViewCardCommand` will then call `ViewCardCommand#findTagFromTagUUID` which will loop through each element `Tag` of `TagList`, call `Tag#getUUID()` and match it with every element of the `tagsUUID` previously. If the `Tag` element's uuid matches the uuid in `tagsUUID`, then the `Tag` will be added to a `tagsFound` and returned to `ViewCardCommand`. + - Similarly, once the `decksUUID` is ready, `ViewCardCommand` will then call `ViewCardCommand#findDeckFromDeckUUID` which will loop through each element `Deck` of `DeckList`, call `Deck#getUUID()` and match it with every element of the `decksUUID` previously. If the `Deck` element's uuid matches the uuid in `decksUUID`, then the `Deck` will be added to a `decksFound` and returned to `ViewCardCommand`. -- The `tagsFound` and `decksFound` will then be passed to the `UserInterface#printTags()` - and `UserInterface#printDecks()` to be printed. - -1. When the user enters `card add -q ... -a ...`, the input is passed to `Parser` class which - calls `Parser#parseCommand()`. -2. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the " - card" keyword. -3. The `Parser#CardKeywordParser()` uses the Apache Commons CLI library to parse the remaining user input. - The sequence diagram below shows how this feature works: ![Card View feature](img/CardViewSequence.png) @@ -244,22 +238,26 @@ The implementation of the `card untag` feature is as follows : sequence diagram for this section has been shown [above](#parser-component). + - This `RemoveTagFromCardCommand` will first find the card to remove the tag from by calling the `CardList#findCard()` which will in turn call the `CardSelector#getIndex()` and `CardSelector#getUUID()` depending on the flags and parameter specified by the user. `CardSelector` will then return the `cardAffected` to `CardList` and then back to `RemoveTagFromCardCommand`. + - `RemoveTagFromCardCommand` will then find the tag to delete from the card by calling `TagList#findCard()` which will in turn call the `TagSelector#getIndex()` and `TagSelector#getTagName()` depending on the flags and parameter specified by the user. `TagSelector` will return the `tagToRemove` to `TagList` and then back to `RemoveTagFromCardCommand`. + - After `cardAffected` and `tagToRemove` is ready, `RemoveCardFromTagCommand` will call `RemoveTagFromCardCommand#removeTagFromCard(cardAffected, tagToRemove)` which will in turn remove the reference to the tag from the card and remove the reference to the card from the tag by calling `Card#getUUID()`, `Tag#removeCard()`, `Tag#getUUID()`,`Card#RemoveTag()`. + - Finally, `RemoveTagFromCardCommand` will then call `UserInterface#printRemoveTagFromCard()` to print successful removal of `tagToRemove` from `cardAffected`. @@ -274,12 +272,14 @@ The implementation of the `tag list {-t {tagName} | -i {tagIndex}}` sequence diagram for this section has been shown [above](#parser-component). + - This `ListCardsUnderTagCommand` will find the tag under which to display the cards from by calling the `TagList#findTag()` which will in turn call the `TagSelector#getIndex()` and `TagSelector#getTagName()` depending on the flags and parameter specified by the user. `TagSelector` will then return the `foundTag` to `TagList` and then back to `ListCardsUnderTagCommand`. + - After `foundTag` is ready, `ListCardsUnderTagCommand` will call `ListCardsUnderTagCommand#rfindCardsUnderTag(foundTag)` which will call the `Tag#getCardsUUID` and return the UUIDs of the cards @@ -287,6 +287,7 @@ The implementation of the `tag list {-t {tagName} | -i {tagIndex}}` the `cardsUUID`, if their uuid matches, that `Card` will be added to `foundCardList` and returned to `ListCardsUnderTagCommand`. + - Once `foundCardList` is returned, `ListCardsUdnerTagCommand` will call `UserInterface#printCardList(foundCardList)` to print the list of cards under the specified tag. diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 4109a27367..504a3a8575 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -59,10 +59,6 @@ protected Command handleAction(String action, List tokens) throws ParseE private Command handleAdd(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 4) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options addOptions = new OptionsBuilder(CARD_MODEL, ADD_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(addOptions, tokens); @@ -75,10 +71,6 @@ private Command handleAdd(List tokens) throws ParseException, InvalidSyn private Command handleDelete(List tokens) throws ParseException, InkaException { - if (tokens.size() != 2) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options deleteOptions = new OptionsBuilder(CARD_MODEL, DELETE_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deleteOptions, tokens); @@ -123,11 +115,6 @@ private Command handleList(List tokens) throws InvalidSyntaxException { private Command handleTag(List tokens) throws ParseException, InkaException { - if (tokens.size() != 4) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - System.out.println(tokens.size()); - Options tagOptions = new OptionsBuilder(CARD_MODEL, TAG_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(tagOptions, tokens); @@ -138,10 +125,6 @@ private Command handleTag(List tokens) throws ParseException, InkaExcept private Command handleUntag(List tokens) throws ParseException, InkaException { - if (tokens.size() != 4) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options tagOptions = new OptionsBuilder(CARD_MODEL, TAG_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(tagOptions, tokens); @@ -152,10 +135,6 @@ private Command handleUntag(List tokens) throws ParseException, InkaExce private Command handleDeck(List tokens) throws ParseException, InkaException { - if (tokens.size() != 4) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options deckOptions = new OptionsBuilder(CARD_MODEL, DECK_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deckOptions, tokens); @@ -166,10 +145,6 @@ private Command handleDeck(List tokens) throws ParseException, InkaExcep private Command handleView(List tokens) throws ParseException, InkaException { - if (tokens.size() != 2) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options viewOptions = new OptionsBuilder(CARD_MODEL, VIEW_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(viewOptions, tokens); diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java index d6c81dd124..11ec04fdfc 100644 --- a/src/main/java/utils/parser/DeckKeywordParser.java +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -49,10 +49,6 @@ protected Command handleAction(String action, List tokens) private Command handleDelete(List tokens) throws ParseException, InkaException { - if (tokens.size() != 2 && tokens.size() != 4 && tokens.size() != 6) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options deleteOptions = new OptionsBuilder(DECK_MODEL, DELETE_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deleteOptions, tokens); @@ -69,7 +65,7 @@ private Command handleDelete(List tokens) throws ParseException, InkaExc private Command handleList(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 0 && tokens.size() != 2 && tokens.size() != 4) { + if (tokens.size() != 0) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -89,10 +85,6 @@ private Command handleList(List tokens) throws ParseException, InvalidSy private Command handleEdit(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 4) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options editOptions = new OptionsBuilder(DECK_MODEL, EDIT_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(editOptions, tokens); @@ -121,10 +113,6 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { private Command handleRun(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 2) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options runOptions = new OptionsBuilder(DECK_MODEL, RUN_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(runOptions, tokens); diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java index cd07328d09..161a790133 100644 --- a/src/main/java/utils/parser/TagKeywordParser.java +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -46,10 +46,6 @@ protected Command handleAction(String action, List tokens) private Command handleDelete(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 2) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options deleteOption = new OptionsBuilder(TAG_MODEL, DELETE_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deleteOption, tokens); @@ -59,10 +55,6 @@ private Command handleDelete(List tokens) throws ParseException, Invalid private Command handleEdit(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 4) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options editOption = new OptionsBuilder(TAG_MODEL, EDIT_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(editOption, tokens); @@ -95,7 +87,7 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { private Command handleList(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 0 && tokens.size() != 2) { + if (tokens.size() != 0) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } @@ -112,10 +104,6 @@ private Command handleList(List tokens) throws ParseException, InvalidSy private Command handleDeck(List tokens) throws ParseException, InkaException { - if (tokens.size() != 4) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options deckOption = new OptionsBuilder(TAG_MODEL, DECK_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deckOption, tokens); From c0d2969dee54edd41adca36ef2cd420b11877634 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 12:27:59 +0800 Subject: [PATCH 195/311] fix fix more errors with parser unit test --- src/main/java/utils/parser/DeckKeywordParser.java | 4 ---- src/main/java/utils/parser/TagKeywordParser.java | 4 ---- 2 files changed, 8 deletions(-) diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java index 11ec04fdfc..70eac6ea52 100644 --- a/src/main/java/utils/parser/DeckKeywordParser.java +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -65,10 +65,6 @@ private Command handleDelete(List tokens) throws ParseException, InkaExc private Command handleList(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 0) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options listOptions = new OptionsBuilder(DECK_MODEL, LIST_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(listOptions, tokens); diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java index 161a790133..709d24e812 100644 --- a/src/main/java/utils/parser/TagKeywordParser.java +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -87,10 +87,6 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { private Command handleList(List tokens) throws ParseException, InvalidSyntaxException { - if (tokens.size() != 0) { - throw InvalidSyntaxException.buildTooManyTokensMessage(); - } - Options listOption = new OptionsBuilder(TAG_MODEL, LIST_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(listOption, tokens); From 59607e0cb4b92caaa00c056899d9edbcdbff2d60 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 12:55:32 +0800 Subject: [PATCH 196/311] docs: add card untag sequence diagram --- docs/DeveloperGuide.md | 4 + docs/img/CardUntagSequence.png | Bin 0 -> 95849 bytes docs/img/CardViewSequence.png | Bin 127173 -> 132279 bytes docs/uml/CardUntagSequence.puml | 69 ++++++++++++++++++ ...istSequence.puml => CardViewSequence.puml} | 0 5 files changed, 73 insertions(+) create mode 100644 docs/img/CardUntagSequence.png create mode 100644 docs/uml/CardUntagSequence.puml rename docs/uml/{CardListSequence.puml => CardViewSequence.puml} (100%) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 347f0b67cd..591b901274 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -225,6 +225,7 @@ The implementation of the `card tag` feature is as follows : - Similarly, `AddCardToTagCommand` will also call `Tag#getUUID()` and add the returned `tagUUID` into `cardToAdd` by calling `Card#addTag(tagUUID)`. +The sequence diagram below shows how this feature works: ![Tag feature](img/TagListSequence.png) #### Untag a Card @@ -261,6 +262,9 @@ The implementation of the `card untag` feature is as follows : - Finally, `RemoveTagFromCardCommand` will then call `UserInterface#printRemoveTagFromCard()` to print successful removal of `tagToRemove` from `cardAffected`. +The sequence diagram below shows how this feature works: +![Card Untag](img/CardUntagSequence.png) + #### List Cards under Tag The implementation of the `tag list {-t {tagName} | -i {tagIndex}}` diff --git a/docs/img/CardUntagSequence.png b/docs/img/CardUntagSequence.png new file mode 100644 index 0000000000000000000000000000000000000000..c90343f036c8550d7afde0432b27082f6c82cc0a GIT binary patch literal 95849 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�V*`7eK&)LYwgzt=DZ3 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 z z%uwrcSnT*Z6d|ld9Cog2b!QmJqCrK^=?1qh7E8$MCvoDkS5(R~0)m2WsMsMGaWaTcO%aki@dx@=mE zj|YpY(sj!M5hC8QT+73B&2jIr@)r+V03E zxC0;s$Y7~XKo^K$qHO^!SfMLqckefyxzMQ2O!OgZw7nS0Hmakb+fai-6)SJaWr zW%SjX%l%}KzA7@?^eq-WvJCChD*}y^*b+98LC#%YIqZD7EAi$>@H6;tMLgsapch|x zj-v0H8N#Vel4^OktpgdB~; zv}C)Xu`yb6tv(GwWE980Jpe7nYx9m1%o1NNw^6isSiGG062Yc>EY+15Yp&q?ShMqCjz7%h z6n!T^QY_2d>OzzZP8lkCi#=ynIYlubgaEvYoRw^B%R49-bF7D|?Lwn>7?a=C^4Fh1 z^-j;9s)%7&yWeFlV?ky3^Cc{ccbd+WAHh(_gvWKMR|j53(?1m1c|~CBC;GpD=rhAd zAAeehCo!q_R@(X|H{kQKq+`qrSGX2*77t?3uq*eEn1g<|a*0%CT3dU=_cW1{5U5c90 z7U8qm≈k17P_-09jzi7n8GF*lJ3tz4g&$_`mOF&8u^Qm8>ckDPS!Stx|1$#C>d%FeU4b)v0sZq-{PhvwP{(3+WcdQ1^4ujt*L5+teT5qaeX4c^7 zUh~?>MX=cVttqh}u<=?Vitt)Rn!=SK6o0*zb_LQzKq#K;UrZ|NjlK1Mce%W6gYJU- j7b_KFn6>f66t;rNE#u3G@1;>fzN09saxz8wlH30PVX3ee literal 0 HcmV?d00001 diff --git a/docs/img/CardViewSequence.png b/docs/img/CardViewSequence.png index e517bbb8eaef0f2ad3b1e3327c1f9efd1dc034b7..d6f70920876952214c909484c90c17ecd809ddec 100644 GIT binary patch literal 132279 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

RH!P%= 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πTV7s=P6-zy^e6$2M7yX%y;6ZzkMy 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 V*R;?fu3t@Jb!8o;3WY~u{{c6AmV^KR diff --git a/docs/uml/CardUntagSequence.puml b/docs/uml/CardUntagSequence.puml new file mode 100644 index 0000000000..999a74fac6 --- /dev/null +++ b/docs/uml/CardUntagSequence.puml @@ -0,0 +1,69 @@ +@startuml +autoactivate on + +participant ":RemoveTagFromCardCommand" as RemoveTagFromCardCommand +participant ":TagList" as TagList +participant ":CardList" as CardList +participant ":CardSelector" as CardSelector +participant ":TagSelector" as TagSelector +participant ":TagList" as TagList +participant ":DeckList" as DeckList +participant ":Tag" as Tag +participant ":Card" as Card +participant ":UserInterface" as UserInterface + + +Create RemoveTagFromCardCommand +CardKeywordParser -> RemoveTagFromCardCommand : RemoveTagFromCardCommand() +activate RemoveTagFromCardCommand + +Create CardSelector +RemoveTagFromCardCommand -> CardSelector : CardSelector() +return + +Create TagSelector +RemoveTagFromCardCommand -> TagSelector : TagSelector() +return + +RemoveTagFromCardCommand -> RemoveTagFromCardCommand: execute() +RemoveTagFromCardCommand -> CardList : findCard(cardSelector) + +alt index is specified +CardList -> CardSelector : getIndex() +return cardIndex +else uuid is specified +CardList -> CardSelector : getUUID() +return cardUUID +end +return cardAffected + + +RemoveTagFromCardCommand -> TagList : findTag(tagSelector) + +alt index is specified +TagList -> TagSelector : getIndex() +return tagIndex +else tagName is specified +TagList -> TagSelector : getTagName() +return tagUUID +end +return tagToRemove + +RemoveTagFromCardCommand -> RemoveTagFromCardCommand : RemoveTagFromCard(cardAffected, tagToRemove) +opt cardAffected.getUUID() != null +RemoveTagFromCardCommand -> Card : getUUID() +return cardUUID +RemoveTagFromCardCommand -> Tag : removeCard(carUUID) +return +RemoveTagFromCardCommand -> Tag : getUUID() +return tagUUID +RemoveTagFromCardCommand -> Card : removeTag(tagUUID) +return + +end +return + +RemoveTagFromCardCommand -> UserInterface : printRemoveTagFromCard() +return + +@enduml diff --git a/docs/uml/CardListSequence.puml b/docs/uml/CardViewSequence.puml similarity index 100% rename from docs/uml/CardListSequence.puml rename to docs/uml/CardViewSequence.puml From 1093776b987f3e57ec47376be95de1a94739949f Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 13:30:40 +0800 Subject: [PATCH 197/311] docs : add list cards under tag sequence diagram --- docs/DeveloperGuide.md | 5 ++- docs/img/ListCardsUnderTagSequence.png | Bin 0 -> 55311 bytes docs/uml/ListCardsUnderTag.puml | 48 +++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 docs/img/ListCardsUnderTagSequence.png create mode 100644 docs/uml/ListCardsUnderTag.puml diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 591b901274..1a38fc0290 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -285,7 +285,7 @@ The implementation of the `tag list {-t {tagName} | -i {tagIndex}}` - After `foundTag` is ready, `ListCardsUnderTagCommand` will - call `ListCardsUnderTagCommand#rfindCardsUnderTag(foundTag)` which will call the `Tag#getCardsUUID` and return the + call `ListCardsUnderTagCommand#findCardsUnderTag(foundTag)` which will call the `Tag#getCardsUUID` and return the UUIDs of the cards under the `Tag` in the form of `cardsUUID`. `ListCardsUnderTagCommand` will then loop through the entire cardList and the `cardsUUID`, if their uuid matches, @@ -295,6 +295,9 @@ The implementation of the `tag list {-t {tagName} | -i {tagIndex}}` - Once `foundCardList` is returned, `ListCardsUdnerTagCommand` will call `UserInterface#printCardList(foundCardList)` to print the list of cards under the specified tag. +The sequence diagram below shows how this feature works: +![List Cards under Tag](img/ListCardsUnderTagSequence.png) + ### Deck Feature --- diff --git a/docs/img/ListCardsUnderTagSequence.png b/docs/img/ListCardsUnderTagSequence.png new file mode 100644 index 0000000000000000000000000000000000000000..cf95bc56da08a10536905d7e595a415cb68b3a92 GIT binary patch literal 55311 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 literal 0 HcmV?d00001 diff --git a/docs/uml/ListCardsUnderTag.puml b/docs/uml/ListCardsUnderTag.puml new file mode 100644 index 0000000000..951b75be16 --- /dev/null +++ b/docs/uml/ListCardsUnderTag.puml @@ -0,0 +1,48 @@ +@startuml +autoactivate on + +participant ":ListCardsUnderTagCommand" as ListCardsUnderTagCommand +participant ":TagList" as TagList +participant ":CardList" as CardList +participant ":CardSelector" as CardSelector +participant ":TagSelector" as TagSelector +participant ":TagList" as TagList +participant ":DeckList" as DeckList +participant ":Tag" as Tag + +participant ":UserInterface" as UserInterface + + +Create ListCardsUnderTagCommand +TagKeywordParser -> ListCardsUnderTagCommand : ListCardsUnderTagCommand() +activate ListCardsUnderTagCommand + +Create TagSelector +ListCardsUnderTagCommand -> TagSelector : TagSelector() +return + + +ListCardsUnderTagCommand -> ListCardsUnderTagCommand: execute() +ListCardsUnderTagCommand -> TagList : findTag(TagSelector) +return foundTag + +ListCardsUnderTagCommand -> ListCardsUnderTagCommand : findCardsUnderTag(foundTag) +ListCardsUnderTagCommand -> Tag : getCardsUUID() +return cardsUUID + +loop curr UUID of all Cards != null + loop curr UUID of cardsUUID != null + alt curr UUID of all Cards == curr UUID of cardsUUID + ListCardsUnderTagCommand -> CardList : addCard() + return + end + end loop + +end loop + +return foundCardList + +ListCardsUnderTagCommand -> UserInterface : printCardList(foundCardList) +return + +@enduml From 76b2da249cfa983d6758d7f8b4b3902024e9e188 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Sat, 8 Apr 2023 15:39:43 +0800 Subject: [PATCH 198/311] fix: null pointer from null Options in parser --- src/main/java/model/Deck.java | 9 ++ .../java/utils/parser/CardKeywordParser.java | 26 +++-- .../java/utils/parser/DeckKeywordParser.java | 16 ++- .../java/utils/parser/OptionsBuilder.java | 99 ++++++++++--------- .../java/utils/parser/TagKeywordParser.java | 18 ++-- src/test/java/model/LogicTest.java | 33 +++++++ src/test/java/seedu/duke/DukeTest.java | 12 --- .../java/utils/parser/DeckParserTest.java | 62 ++++++++++++ 8 files changed, 181 insertions(+), 94 deletions(-) create mode 100644 src/test/java/model/LogicTest.java delete mode 100644 src/test/java/seedu/duke/DukeTest.java create mode 100644 src/test/java/utils/parser/DeckParserTest.java diff --git a/src/main/java/model/Deck.java b/src/main/java/model/Deck.java index 71009b3f8b..0cd1c7defe 100644 --- a/src/main/java/model/Deck.java +++ b/src/main/java/model/Deck.java @@ -8,7 +8,11 @@ public class Deck { private String deckName; private DeckUUID deckUUID; + + // Contains CardUUIDs for cards that are added via CardUUID and/or Tag private HashSet cardsSet = new HashSet<>(); + + // Contains only CardUUIDs that are added through Tag private HashMap cardUUIDIntegerHashMap= new HashMap<>(); private ArrayList cards = new ArrayList<>(); private ArrayList tags = new ArrayList<>(); @@ -81,6 +85,11 @@ public ArrayList getTagsUUID() { public void editDeckName(String newDeckName) { this.deckName = newDeckName; } + + /** + * Adds a single card through its CardUUID + * @param cardUUID + */ public void addCard(CardUUID cardUUID) { cards.add(cardUUID); } diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 504a3a8575..ecbca9fb42 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -21,8 +21,6 @@ import utils.exceptions.UnrecognizedCommandException; public class CardKeywordParser extends KeywordParser { - - public static final String CARD_MODEL = "card"; public static final String ADD_ACTION = "add"; public static final String DELETE_ACTION = "delete"; public static final String HELP_ACTION = "help"; @@ -59,7 +57,7 @@ protected Command handleAction(String action, List tokens) throws ParseE private Command handleAdd(List tokens) throws ParseException, InvalidSyntaxException { - Options addOptions = new OptionsBuilder(CARD_MODEL, ADD_ACTION).buildOptions(); + Options addOptions = new OptionsBuilder(Parser.CARD_KEYWORD, ADD_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(addOptions, tokens); String question = String.join(" ", cmd.getOptionValues("q")); @@ -71,7 +69,7 @@ private Command handleAdd(List tokens) throws ParseException, InvalidSyn private Command handleDelete(List tokens) throws ParseException, InkaException { - Options deleteOptions = new OptionsBuilder(CARD_MODEL, DELETE_ACTION).buildOptions(); + Options deleteOptions = new OptionsBuilder(Parser.CARD_KEYWORD, DELETE_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deleteOptions, tokens); CardSelector cardSelector = getSelectedCard(cmd); @@ -85,12 +83,12 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { throw InvalidSyntaxException.buildTooManyTokensMessage(); } - Options addOptions = new OptionsBuilder(CARD_MODEL, ADD_ACTION).buildOptions(); - Options deleteOptions = new OptionsBuilder(CARD_MODEL, DELETE_ACTION).buildOptions(); - Options tagOptions = new OptionsBuilder(CARD_MODEL, TAG_ACTION).buildOptions(); - Options untagOptions = new OptionsBuilder(CARD_MODEL, UNTAG_ACTION).buildOptions(); - Options viewOptions = new OptionsBuilder(CARD_MODEL, VIEW_ACTION).buildOptions(); - Options deckOptions = new OptionsBuilder(CARD_MODEL, DECK_ACTION).buildOptions(); + Options addOptions = new OptionsBuilder(Parser.CARD_KEYWORD, ADD_ACTION).buildOptions(); + Options deleteOptions = new OptionsBuilder(Parser.CARD_KEYWORD, DELETE_ACTION).buildOptions(); + Options tagOptions = new OptionsBuilder(Parser.CARD_KEYWORD, TAG_ACTION).buildOptions(); + Options untagOptions = new OptionsBuilder(Parser.CARD_KEYWORD, UNTAG_ACTION).buildOptions(); + Options viewOptions = new OptionsBuilder(Parser.CARD_KEYWORD, VIEW_ACTION).buildOptions(); + Options deckOptions = new OptionsBuilder(Parser.CARD_KEYWORD, DECK_ACTION).buildOptions(); // Combine all action String[] actionList = {ADD_ACTION, DELETE_ACTION, LIST_ACTION, TAG_ACTION, UNTAG_ACTION, VIEW_ACTION, DECK_ACTION}; @@ -115,7 +113,7 @@ private Command handleList(List tokens) throws InvalidSyntaxException { private Command handleTag(List tokens) throws ParseException, InkaException { - Options tagOptions = new OptionsBuilder(CARD_MODEL, TAG_ACTION).buildOptions(); + Options tagOptions = new OptionsBuilder(Parser.CARD_KEYWORD, TAG_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(tagOptions, tokens); CardSelector cardSelector = getSelectedCard(cmd); @@ -125,7 +123,7 @@ private Command handleTag(List tokens) throws ParseException, InkaExcept private Command handleUntag(List tokens) throws ParseException, InkaException { - Options tagOptions = new OptionsBuilder(CARD_MODEL, TAG_ACTION).buildOptions(); + Options tagOptions = new OptionsBuilder(Parser.CARD_KEYWORD, TAG_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(tagOptions, tokens); CardSelector cardSelector = getSelectedCard(cmd); @@ -135,7 +133,7 @@ private Command handleUntag(List tokens) throws ParseException, InkaExce private Command handleDeck(List tokens) throws ParseException, InkaException { - Options deckOptions = new OptionsBuilder(CARD_MODEL, DECK_ACTION).buildOptions(); + Options deckOptions = new OptionsBuilder(Parser.CARD_KEYWORD, DECK_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deckOptions, tokens); CardSelector cardSelector = getSelectedCard(cmd); @@ -145,7 +143,7 @@ private Command handleDeck(List tokens) throws ParseException, InkaExcep private Command handleView(List tokens) throws ParseException, InkaException { - Options viewOptions = new OptionsBuilder(CARD_MODEL, VIEW_ACTION).buildOptions(); + Options viewOptions = new OptionsBuilder(Parser.CARD_KEYWORD, VIEW_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(viewOptions, tokens); CardSelector cardSelector = getSelectedCard(cmd); diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java index 70eac6ea52..5d3afae37d 100644 --- a/src/main/java/utils/parser/DeckKeywordParser.java +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -20,8 +20,6 @@ import utils.exceptions.UnrecognizedCommandException; public class DeckKeywordParser extends KeywordParser { - - public static final String DECK_MODEL = "deck"; public static final String DELETE_ACTION = "delete"; public static final String EDIT_ACTION = "edit"; public static final String HELP_ACTION = "help"; @@ -49,7 +47,7 @@ protected Command handleAction(String action, List tokens) private Command handleDelete(List tokens) throws ParseException, InkaException { - Options deleteOptions = new OptionsBuilder(DECK_MODEL, DELETE_ACTION).buildOptions(); + Options deleteOptions = new OptionsBuilder(Parser.DECK_KEYWORD, DELETE_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deleteOptions, tokens); TagSelector tagSelector = getSelectedTag(cmd); @@ -65,7 +63,7 @@ private Command handleDelete(List tokens) throws ParseException, InkaExc private Command handleList(List tokens) throws ParseException, InvalidSyntaxException { - Options listOptions = new OptionsBuilder(DECK_MODEL, LIST_ACTION).buildOptions(); + Options listOptions = new OptionsBuilder(Parser.DECK_KEYWORD, LIST_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(listOptions, tokens); if (cmd.hasOption("c")) { @@ -81,7 +79,7 @@ private Command handleList(List tokens) throws ParseException, InvalidSy private Command handleEdit(List tokens) throws ParseException, InvalidSyntaxException { - Options editOptions = new OptionsBuilder(DECK_MODEL, EDIT_ACTION).buildOptions(); + Options editOptions = new OptionsBuilder(Parser.DECK_KEYWORD, EDIT_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(editOptions, tokens); String oldDeckName = cmd.getOptionValue("o"); @@ -95,9 +93,9 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { throw InvalidSyntaxException.buildTooManyTokensMessage(); } - Options editOptions = new OptionsBuilder(DECK_MODEL, EDIT_ACTION).buildOptions(); - Options deleteOptions = new OptionsBuilder(DECK_MODEL, DELETE_ACTION).buildOptions(); - Options listOptions = new OptionsBuilder(DECK_MODEL, LIST_ACTION).buildOptions(); + Options editOptions = new OptionsBuilder(Parser.DECK_KEYWORD, EDIT_ACTION).buildOptions(); + Options deleteOptions = new OptionsBuilder(Parser.DECK_KEYWORD, DELETE_ACTION).buildOptions(); + Options listOptions = new OptionsBuilder(Parser.DECK_KEYWORD, LIST_ACTION).buildOptions(); // Combine all actions String[] actionList = {EDIT_ACTION, DELETE_ACTION, LIST_ACTION}; String[] headerList = {"Edit existing decks", "Delete decks", "List decks"}; @@ -109,7 +107,7 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { private Command handleRun(List tokens) throws ParseException, InvalidSyntaxException { - Options runOptions = new OptionsBuilder(DECK_MODEL, RUN_ACTION).buildOptions(); + Options runOptions = new OptionsBuilder(Parser.DECK_KEYWORD, RUN_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(runOptions, tokens); String deckName = cmd.getOptionValue("d"); diff --git a/src/main/java/utils/parser/OptionsBuilder.java b/src/main/java/utils/parser/OptionsBuilder.java index 07b1caf968..48c53e9fcd 100644 --- a/src/main/java/utils/parser/OptionsBuilder.java +++ b/src/main/java/utils/parser/OptionsBuilder.java @@ -5,21 +5,6 @@ import org.apache.commons.cli.Options; public class OptionsBuilder { - // Keywords - public static final String CARD_KEYWORD = "card"; - public static final String TAG_KEYWORD = "tag"; - public static final String DECK_KEYWORD = "deck"; - - // Actions - public static final String ADD_ACTION = "add"; - public static final String DELETE_ACTION = "delete"; - public static final String TAG_ACTION = "tag"; - - public static final String UNTAG_ACTION = "untag"; - public static final String VIEW_ACTION = "view"; - public static final String DECK_ACTION = "deck"; - public static final String EDIT_ACTION = "edit"; - public static final String LIST_ACTION = "list"; // Flags protected static final String FLAG_CARD = "c"; @@ -47,48 +32,58 @@ public OptionsBuilder(String model, String action) { public Options buildOptions() { switch (model) { - case CARD_KEYWORD: + case Parser.CARD_KEYWORD: switch (keyword) { - case ADD_ACTION: + case CardKeywordParser.ADD_ACTION: return buildAddOptions(); - case TAG_ACTION: + case CardKeywordParser.TAG_ACTION: return buildTagOptions(); - case UNTAG_ACTION: + case CardKeywordParser.UNTAG_ACTION: return buildUntagOptions(); - case VIEW_ACTION: + case CardKeywordParser.VIEW_ACTION: return buildViewOptions(); - case DELETE_ACTION: - return buildDeleteOptions(CARD_KEYWORD); - case DECK_ACTION: - return buildDeckOptions(CARD_KEYWORD); + case CardKeywordParser.DELETE_ACTION: + return buildDeleteOptions(Parser.CARD_KEYWORD); + case CardKeywordParser.DECK_ACTION: + return buildDeckOptions(Parser.CARD_KEYWORD); default: + // Should be exhaustive + assert false; return null; } - case TAG_KEYWORD: + case Parser.TAG_KEYWORD: switch (keyword) { - case DELETE_ACTION: - return buildDeleteOptions(TAG_KEYWORD); - case DECK_ACTION: - return buildDeckOptions(TAG_KEYWORD); - case EDIT_ACTION: - return buildEditOptions(TAG_KEYWORD); - case LIST_ACTION: - return buildListOptions(TAG_KEYWORD); + case TagKeywordParser.DELETE_ACTION: + return buildDeleteOptions(Parser.TAG_KEYWORD); + case TagKeywordParser.DECK_ACTION: + return buildDeckOptions(Parser.TAG_KEYWORD); + case TagKeywordParser.EDIT_ACTION: + return buildEditOptions(Parser.TAG_KEYWORD); + case TagKeywordParser.LIST_ACTION: + return buildListOptions(Parser.TAG_KEYWORD); default: + // Should be exhaustive + assert false; return null; } - case DECK_KEYWORD: + case Parser.DECK_KEYWORD: switch (keyword) { - case DELETE_ACTION: - return buildDeleteOptions(DECK_KEYWORD); - case EDIT_ACTION: - return buildEditOptions(DECK_KEYWORD); - case LIST_ACTION: - return buildListOptions(DECK_KEYWORD); + case DeckKeywordParser.DELETE_ACTION: + return buildDeleteOptions(Parser.DECK_KEYWORD); + case DeckKeywordParser.EDIT_ACTION: + return buildEditOptions(Parser.DECK_KEYWORD); + case DeckKeywordParser.LIST_ACTION: + return buildListOptions(Parser.DECK_KEYWORD); + case DeckKeywordParser.RUN_ACTION: + return buildRunOptions(); default: + // Should be exhaustive + assert false; return null; } default: + // Should be exhaustive + assert false; return null; } } @@ -130,13 +125,13 @@ public static Options buildViewOptions() { public static Options buildDeleteOptions(String model) { Options options = new Options(); switch (model) { - case CARD_KEYWORD: + case Parser.CARD_KEYWORD: options.addOptionGroup(buildCardSelectOption()); break; - case TAG_KEYWORD: + case Parser.TAG_KEYWORD: options.addOptionGroup(buildTagSelectOption()); break; - case DECK_KEYWORD: + case Parser.DECK_KEYWORD: options.addRequiredOption(FLAG_DECK, FLAG_LONG_DECK, true, "deck name"); options.addOption(FLAG_CARD, FLAG_LONG_CARD, true, "card name (optional)"); options.addOption(FLAG_TAG, FLAG_LONG_TAG, true, "tag name (optional)"); @@ -149,10 +144,10 @@ public static Options buildDeleteOptions(String model) { public static Options buildDeckOptions(String model) { Options options = new Options(); switch (model) { - case CARD_KEYWORD: + case Parser.CARD_KEYWORD: options.addOptionGroup(buildCardSelectOption()); break; - case TAG_KEYWORD: + case Parser.TAG_KEYWORD: options.addOptionGroup(buildTagSelectOption()); break; default: @@ -165,12 +160,12 @@ private static Options buildEditOptions(String model) { Options options = new Options(); switch (model) { - case TAG_KEYWORD: + case Parser.TAG_KEYWORD: options.addRequiredOption("o", "old", true, "Old tag name"); Option newTag = buildMultipleTokenOption("n", "new", true, "New tag name", true); options.addOption(newTag); break; - case DECK_KEYWORD: + case Parser.DECK_KEYWORD: options.addRequiredOption("o", "old", true, "Old deck name"); options.addRequiredOption("n", "new", true, "New deck name"); break; @@ -183,11 +178,11 @@ private static Options buildEditOptions(String model) { private static Options buildListOptions(String model) { Options options = new Options(); switch (model) { - case TAG_KEYWORD: + case Parser.TAG_KEYWORD: options.addOption(FLAG_TAG, FLAG_LONG_TAG, true, "tag UUID or name (optional)"); options.addOption(FLAG_TAG_INDEX, FLAG_LONG_TAG_INDEX, true, "tag index (optional)"); break; - case DECK_KEYWORD: + case Parser.DECK_KEYWORD: options.addOption(FLAG_CARD, FLAG_LONG_CARD, true, "deck name to list cards from (optional)"); options.addOption(FLAG_TAG, FLAG_LONG_TAG, true, "deck name to list tags from (optional)"); break; @@ -197,6 +192,12 @@ private static Options buildListOptions(String model) { return options; } + private static Options buildRunOptions() { + Options options = new Options(); + options.addRequiredOption(FLAG_DECK, FLAG_LONG_DECK,true, "deck to review"); + return options; + } + /** * Build an {@link Option} for selecting Card based on either {@link model.CardUUID} or card index from list * diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java index 709d24e812..1d9e1bff2e 100644 --- a/src/main/java/utils/parser/TagKeywordParser.java +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -17,8 +17,6 @@ import utils.exceptions.UnrecognizedCommandException; public class TagKeywordParser extends KeywordParser { - - public static final String TAG_MODEL = "tag"; public static final String DELETE_ACTION = "delete"; public static final String EDIT_ACTION = "edit"; public static final String HELP_ACTION = "help"; @@ -46,7 +44,7 @@ protected Command handleAction(String action, List tokens) private Command handleDelete(List tokens) throws ParseException, InvalidSyntaxException { - Options deleteOption = new OptionsBuilder(TAG_MODEL, DELETE_ACTION).buildOptions(); + Options deleteOption = new OptionsBuilder(Parser.TAG_KEYWORD, DELETE_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deleteOption, tokens); TagSelector tagSelector = getSelectedTag(cmd); @@ -55,7 +53,7 @@ private Command handleDelete(List tokens) throws ParseException, Invalid private Command handleEdit(List tokens) throws ParseException, InvalidSyntaxException { - Options editOption = new OptionsBuilder(TAG_MODEL, EDIT_ACTION).buildOptions(); + Options editOption = new OptionsBuilder(Parser.TAG_KEYWORD, EDIT_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(editOption, tokens); String oldTagName = cmd.getOptionValue("o"); @@ -69,12 +67,12 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { throw InvalidSyntaxException.buildTooManyTokensMessage(); } - Options deleteOption = new OptionsBuilder(TAG_MODEL, DELETE_ACTION).buildOptions(); - Options editOption = new OptionsBuilder(TAG_MODEL, EDIT_ACTION).buildOptions(); - Options listOption = new OptionsBuilder(TAG_MODEL, LIST_ACTION).buildOptions(); + Options deleteOption = new OptionsBuilder(Parser.TAG_KEYWORD, DELETE_ACTION).buildOptions(); + Options editOption = new OptionsBuilder(Parser.TAG_KEYWORD, EDIT_ACTION).buildOptions(); + Options listOption = new OptionsBuilder(Parser.TAG_KEYWORD, LIST_ACTION).buildOptions(); // For adding the deck help message for tag later - Options deckOption = new OptionsBuilder(TAG_MODEL, DECK_ACTION).buildOptions(); + Options deckOption = new OptionsBuilder(Parser.TAG_KEYWORD, DECK_ACTION).buildOptions(); // Combine all actions String[] actionList = {EDIT_ACTION, DELETE_ACTION, LIST_ACTION}; @@ -87,7 +85,7 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { private Command handleList(List tokens) throws ParseException, InvalidSyntaxException { - Options listOption = new OptionsBuilder(TAG_MODEL, LIST_ACTION).buildOptions(); + Options listOption = new OptionsBuilder(Parser.TAG_KEYWORD, LIST_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(listOption, tokens); TagSelector tagSelector = getSelectedTag(cmd); @@ -100,7 +98,7 @@ private Command handleList(List tokens) throws ParseException, InvalidSy private Command handleDeck(List tokens) throws ParseException, InkaException { - Options deckOption = new OptionsBuilder(TAG_MODEL, DECK_ACTION).buildOptions(); + Options deckOption = new OptionsBuilder(Parser.TAG_KEYWORD, DECK_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(deckOption, tokens); String deckName = cmd.getOptionValue("d"); diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java new file mode 100644 index 0000000000..680f832add --- /dev/null +++ b/src/test/java/model/LogicTest.java @@ -0,0 +1,33 @@ +package model; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; +import utils.exceptions.InvalidUUIDException; + +public class LogicTest { + + /** + * Card that is added through CardUUID and Tag should only appear once + */ + @Disabled + @Test + public void logic_noDuplicateCard() throws InvalidUUIDException { + Card card = Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000"); + Tag tag = new Tag("testTag", card.getUuid()); + Deck deck = new Deck("testDeck"); + + deck.addCard(card.getUuid()); + deck.addTag(tag.getUUID()); + + assert deck.cardIsInDeck(card.getUuid()); + assert deck.getCardsSet().size() == 1; + } + + /** + * Card that is added through CardUUID and Tag should remain in Deck if only either is removed + */ + @Disabled + @Test + public void logic_noDoubleDelete() { + } +} diff --git a/src/test/java/seedu/duke/DukeTest.java b/src/test/java/seedu/duke/DukeTest.java deleted file mode 100644 index 2dda5fd651..0000000000 --- a/src/test/java/seedu/duke/DukeTest.java +++ /dev/null @@ -1,12 +0,0 @@ -package seedu.duke; - -import static org.junit.jupiter.api.Assertions.assertTrue; - -import org.junit.jupiter.api.Test; - -class DukeTest { - @Test - public void sampleTest() { - assertTrue(true); - } -} diff --git a/src/test/java/utils/parser/DeckParserTest.java b/src/test/java/utils/parser/DeckParserTest.java new file mode 100644 index 0000000000..2f6d4be731 --- /dev/null +++ b/src/test/java/utils/parser/DeckParserTest.java @@ -0,0 +1,62 @@ +package utils.parser; + +import static org.junit.jupiter.api.Assertions.assertThrows; + +import model.CardList; +import model.Deck; +import model.DeckList; +import model.TagList; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import utils.UserInterface; +import utils.command.Command; +import utils.command.RunCommand; +import utils.exceptions.InkaException; +import utils.exceptions.InvalidSyntaxException; +import utils.storage.FakeStorage; +import utils.storage.Storage; + +public class DeckParserTest { + + private CardList cardList; + private TagList tagList; + private UserInterface ui; + private Storage storage; + private Parser parser; + private DeckList deckList; + + /** + * Each test should have a new instance of all these + */ + @BeforeEach + void init() { + cardList = new CardList(); + tagList = new TagList(); + ui = new UserInterface(); + storage = new FakeStorage(); + parser = new Parser(); + deckList = new DeckList(); + } + + @Test + public void parser_deck_run() throws InkaException { + deckList.addDeck(new Deck("testDeck")); + Command cmd = parser.parseCommand("deck run -d testDeck"); + assert cmd instanceof RunCommand; + } + + @Test + public void parser_deck_noSuchDeck() throws InkaException { + Command cmd = parser.parseCommand("deck run -d testDeck"); + assert cmd instanceof RunCommand; + } + + @Test + public void parser_deck_invalidSyntax() { + String[] testCases = {"deck run", "deck run -d", "deck run -d test test"}; + for (String testCase : testCases) { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand(testCase), "Invalid syntax"); + } + } + +} From 4fcee3396ab467508d9113f883de2bf986821cc4 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Sat, 8 Apr 2023 15:42:27 +0800 Subject: [PATCH 199/311] fix: Add missing `tag deck` help --- src/main/java/utils/parser/TagKeywordParser.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java index 1d9e1bff2e..c140976517 100644 --- a/src/main/java/utils/parser/TagKeywordParser.java +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -70,14 +70,12 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { Options deleteOption = new OptionsBuilder(Parser.TAG_KEYWORD, DELETE_ACTION).buildOptions(); Options editOption = new OptionsBuilder(Parser.TAG_KEYWORD, EDIT_ACTION).buildOptions(); Options listOption = new OptionsBuilder(Parser.TAG_KEYWORD, LIST_ACTION).buildOptions(); - - // For adding the deck help message for tag later Options deckOption = new OptionsBuilder(Parser.TAG_KEYWORD, DECK_ACTION).buildOptions(); // Combine all actions - String[] actionList = {EDIT_ACTION, DELETE_ACTION, LIST_ACTION}; - String[] headerList = {"Edit existing tags", "Delete tags", "List tags"}; - Options[] optionsList = {editOption, deleteOption, listOption}; + String[] actionList = {EDIT_ACTION, DELETE_ACTION, LIST_ACTION, DECK_ACTION}; + String[] headerList = {"Edit existing tags", "Delete tags", "List tags", "Adding tag to deck"}; + Options[] optionsList = {editOption, deleteOption, listOption, deckOption}; String helpMessage = formatHelpMessage("tag", actionList, headerList, optionsList); return new PrintHelpCommand(helpMessage); From 150700e3eaf766f7275db3912bd2028a4cfa3a02 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Sat, 8 Apr 2023 17:00:54 +0800 Subject: [PATCH 200/311] test: added logic tests --- src/test/java/model/LogicTest.java | 186 +++++++++++++++++++++++++++-- 1 file changed, 175 insertions(+), 11 deletions(-) diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index 680f832add..349cacfb67 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -1,26 +1,77 @@ package model; +import static org.junit.jupiter.api.Assertions.assertThrows; + +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; -import utils.exceptions.InvalidUUIDException; +import utils.UserInterface; +import utils.command.AddCardCommand; +import utils.command.AddCardToDeckCommand; +import utils.command.AddCardToTagCommand; +import utils.command.AddTagToDeckCommand; +import utils.command.Command; +import utils.command.RemoveCardFromDeckCommand; +import utils.command.RemoveTagFromDeckCommand; +import utils.exceptions.CardNotInDeck; +import utils.exceptions.InkaException; +import utils.exceptions.TagNeverWasInDeck; +import utils.parser.Parser; +import utils.storage.FakeStorage; +import utils.storage.Storage; +/** + * Integration tests + */ public class LogicTest { + private CardList cardList; + private TagList tagList; + private UserInterface ui; + private Storage storage; + private Parser parser; + private DeckList deckList; + + /** + * Each test should have a new instance of all these + */ + @BeforeEach + void init() { + cardList = new CardList(); + tagList = new TagList(); + ui = new UserInterface(); + storage = new FakeStorage(); + parser = new Parser(); + deckList = new DeckList(); + } + + void parseAndExecute(String userInput, Class expectedClass) throws InkaException { + Command cmd = parser.parseCommand(userInput); + assert expectedClass.isInstance(cmd); + cmd.execute(cardList, tagList, deckList, ui, storage); + } + /** * Card that is added through CardUUID and Tag should only appear once */ - @Disabled @Test - public void logic_noDuplicateCard() throws InvalidUUIDException { - Card card = Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000"); - Tag tag = new Tag("testTag", card.getUuid()); - Deck deck = new Deck("testDeck"); + public void logic_noDuplicateCard() throws InkaException { + // Create new card + parseAndExecute("card add -q test -a test", AddCardCommand.class); + assert cardList.size() == 1; + + // Create new tag + parseAndExecute("card tag -i 1 -t testTag", AddCardToTagCommand.class); + assert tagList.size() == 1; - deck.addCard(card.getUuid()); - deck.addTag(tag.getUUID()); + // Add via CardUUID to deck + parseAndExecute("card deck -d testDeck -i 1", AddCardToDeckCommand.class); + assert deckList.size() == 1; + assert deckList.get(0).getCardsSet().size() == 1; - assert deck.cardIsInDeck(card.getUuid()); - assert deck.getCardsSet().size() == 1; + // Add via Tag to deck + parseAndExecute("tag deck -d testDeck -x 1", AddTagToDeckCommand.class); + assert deckList.get(0).getCardsSet().size() == 1; } /** @@ -28,6 +79,119 @@ public void logic_noDuplicateCard() throws InvalidUUIDException { */ @Disabled @Test - public void logic_noDoubleDelete() { + public void logic_noDoubleDelete_deleteByUuidFirst() throws InkaException { + // Copy state + logic_noDuplicateCard(); + + // Delete by CardUUID + CardUUID cardUUID = deckList.get(0).getCardsUUID().get(0); + parseAndExecute("deck delete -d testDeck -c " + cardUUID.toString(), RemoveCardFromDeckCommand.class); + + // Should not remove card; card still included via Tag + assert deckList.get(0).getCardsSet().size() == 1; + + // Delete by Tag + parseAndExecute("deck delete -d testDeck -t testTag", RemoveTagFromDeckCommand.class); + + // Card no longer added by CardUUID or Tag + // TODO: Failing! + assert deckList.get(0).getCardsSet().size() == 0; + } + + @Disabled + @Test + public void logic_noDoubleDelete_deleteByTagFirst() throws InkaException { + // Copy state + logic_noDuplicateCard(); + + // Delete by Tag + parseAndExecute("deck delete -d testDeck -t testTag", RemoveTagFromDeckCommand.class); + + // Should not remove card; card still included via CardUUID + assert deckList.get(0).getCardsSet().size() == 1; + + // Delete by CardUUID + CardUUID cardUUID = deckList.get(0).getCardsUUID().get(0); + parseAndExecute("deck delete -d testDeck -c " + cardUUID.toString(), RemoveCardFromDeckCommand.class); + + // Card no longer added by CardUUID or Tag + // TODO: Failing! + assert deckList.get(0).getCardsSet().size() == 0; + } + + /** + * Add Card 1 via CardUUID, then Card 2 via Tag + */ + @Test + public void logic_addCards() throws InkaException { + // Create new cards + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + parseAndExecute("card add -q test2 -a test2", AddCardCommand.class); + + assert cardList.size() == 2; + + // Tag card 1 + parseAndExecute("card tag -i 1 -t testTag", AddCardToTagCommand.class); + assert tagList.size() == 1; + + // Add card 1 via Tag + parseAndExecute("tag deck -d testDeck -t testTag", AddTagToDeckCommand.class); + + // Add card 2 via CardUUID + parseAndExecute("card deck -d testDeck -i 2", AddCardToDeckCommand.class); + assert deckList.get(0).getCardsSet().size() == 2; + } + + /** + * If card is added to Deck via Tag, should not be able to delete via CardUUID + */ + @Test + public void logic_addByTagDeleteByCardUUID() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + CardUUID cardUUID = cardList.get(0).getUuid(); + + // Create tag + parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); + + // Add card via Tag + parseAndExecute("tag deck -t testTag -d testDeck", AddTagToDeckCommand.class); + assert deckList.get(0).getCardsSet().size() == 1; + + // Remove card via CardUUID + try { + parseAndExecute("deck delete -d testDeck -c " + cardUUID, RemoveCardFromDeckCommand.class); + } catch (CardNotInDeck ex) { + // TODO: This shows "The card is not in the deck" which might be misleading + } + + // Card should remain in Deck + assert deckList.get(0).getCardsSet().size() == 1; + } + + /** + * If card is added to Deck via CardUUID, should not be able to delete via Tag + */ + @Test + public void logic_addByCardUUIDDeleteByTag() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + CardUUID cardUUID = cardList.get(0).getUuid(); + + // Create tag + parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); + + // Add card via CardUUID + parseAndExecute("card deck -d testDeck -c " + cardUUID, AddCardToDeckCommand.class); + assert deckList.get(0).getCardsSet().size() == 1; + + // Remove card via CardUUID + assertThrows(TagNeverWasInDeck.class, + () -> parseAndExecute("deck delete -d testDeck -t testTag", RemoveTagFromDeckCommand.class), + "Tag not added to deck"); + + + // Card should remain in Deck + assert deckList.get(0).getCardsSet().size() == 1; } } From e87e2e3c396fabcc3e8853707e9ebb6134676ea9 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Sat, 8 Apr 2023 17:32:48 +0800 Subject: [PATCH 201/311] test: logic test for tag/untag --- src/main/java/model/Tag.java | 5 +++++ .../java/utils/command/AddCardToTagCommand.java | 2 +- .../java/utils/parser/CardKeywordParser.java | 2 +- src/test/java/model/LogicTest.java | 17 +++++++++++++++++ src/test/java/utils/parser/CardParserTest.java | 7 +++++++ src/test/java/utils/parser/TagParserTest.java | 12 ++++++++++++ 6 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 9075f84157..8c98cb8322 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -9,6 +9,11 @@ public class Tag { private ArrayList cards = new ArrayList<>(); private ArrayList decks = new ArrayList<>(); + public Tag(String tagName) { + this.tagName = tagName; + this.uuid = new TagUUID(UUID.randomUUID()); + } + public Tag(String tagName, CardUUID cardUUID) { this.tagName = tagName; this.uuid = new TagUUID(UUID.randomUUID()); diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index b305feb452..37190fdcb1 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -45,7 +45,7 @@ private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) if (tagToAdd == null) { ui.printTagCreationSuccess(tagName.get()); - tagToAdd = new Tag(tagName.get(), cardToAdd.getUuid()); + tagToAdd = new Tag(tagName.get()); tagList.addTag(tagToAdd); } else if (tagToAdd.cardIsInTag(cardToAdd.getUuid())) { throw new CardInTagException(); diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index ecbca9fb42..fc75df271d 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -123,7 +123,7 @@ private Command handleTag(List tokens) throws ParseException, InkaExcept private Command handleUntag(List tokens) throws ParseException, InkaException { - Options tagOptions = new OptionsBuilder(Parser.CARD_KEYWORD, TAG_ACTION).buildOptions(); + Options tagOptions = new OptionsBuilder(Parser.CARD_KEYWORD, UNTAG_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(tagOptions, tokens); CardSelector cardSelector = getSelectedCard(cmd); diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index 349cacfb67..0b890cc877 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -12,6 +12,7 @@ import utils.command.AddTagToDeckCommand; import utils.command.Command; import utils.command.RemoveCardFromDeckCommand; +import utils.command.RemoveTagFromCardCommand; import utils.command.RemoveTagFromDeckCommand; import utils.exceptions.CardNotInDeck; import utils.exceptions.InkaException; @@ -194,4 +195,20 @@ public void logic_addByCardUUIDDeleteByTag() throws InkaException { // Card should remain in Deck assert deckList.get(0).getCardsSet().size() == 1; } + + @Test + public void logic_tagAndUntag() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + // Create tag + parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); + assert cardList.get(0).getTagsUUID().size() == 1; + assert tagList.get(0).getCardsUUID().size() == 1; + + // Untag + parseAndExecute("card untag -t testTag -i 1", RemoveTagFromCardCommand.class); + assert cardList.get(0).getTagsUUID().size() == 0; + assert tagList.get(0).getCardsUUID().size() == 0; + } } diff --git a/src/test/java/utils/parser/CardParserTest.java b/src/test/java/utils/parser/CardParserTest.java index 0520b1222b..01f87eac95 100644 --- a/src/test/java/utils/parser/CardParserTest.java +++ b/src/test/java/utils/parser/CardParserTest.java @@ -10,6 +10,7 @@ import model.Deck; import model.DeckList; import model.TagList; +import model.TagUUID; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import utils.UserInterface; @@ -219,7 +220,10 @@ public void parse_card_tag() throws InkaException { Command cmd = parser.parseCommand("card tag -c 00000000-0000-0000-0000-000000000000 -t tagName"); assert cmd instanceof AddCardToTagCommand; cmd.execute(cardList, tagList, deckList, ui, storage); + assert tagList.findTagFromName("tagName") != null; + TagUUID tagUUID = cardList.getCards().get(0).getTagsUUID().get(0); + assert tagList.get(0).getUUID().equals(tagUUID); } @Test @@ -228,7 +232,10 @@ public void parse_card_tagLongFlag() throws InkaException { Command cmd = parser.parseCommand("card tag -c 00000000-0000-0000-0000-000000000000 --tag tagName"); assert cmd instanceof AddCardToTagCommand; cmd.execute(cardList, tagList, deckList, ui, storage); + assert tagList.findTagFromName("tagName") != null; + TagUUID tagUUID = cardList.getCards().get(0).getTagsUUID().get(0); + assert tagList.get(0).getUUID().equals(tagUUID); } @Test diff --git a/src/test/java/utils/parser/TagParserTest.java b/src/test/java/utils/parser/TagParserTest.java index 27e8e00092..58505485df 100644 --- a/src/test/java/utils/parser/TagParserTest.java +++ b/src/test/java/utils/parser/TagParserTest.java @@ -17,6 +17,7 @@ import utils.command.EditTagNameCommand; import utils.command.ListCardsUnderTagCommand; import utils.command.ListTagsCommand; +import utils.command.PrintHelpCommand; import utils.exceptions.InkaException; import utils.exceptions.InvalidSyntaxException; import utils.exceptions.TagNotFoundException; @@ -70,6 +71,17 @@ public void parse_tag_listWithTagLongFlag() throws InkaException { assert cmd instanceof ListCardsUnderTagCommand; } + @Test + public void parse_tag_help() throws InkaException { + Command cmd = parser.parseCommand("tag help"); + assert cmd instanceof PrintHelpCommand; + } + + @Test + public void parse_tag_helpInvalidSyntax() { + assertThrows(InvalidSyntaxException.class, () -> parser.parseCommand("tag help test"), "Extra tokens"); + } + @Test public void parse_tag_delete() throws InkaException { Card card = Card.createCardWithUUID("QUESTION", "ANSWER", "00000000-0000-0000-0000-000000000000"); From e530f7885b015444c43807a4ef0f0653b79a27be Mon Sep 17 00:00:00 2001 From: ltzehan Date: Sat, 8 Apr 2023 17:38:17 +0800 Subject: [PATCH 202/311] chore: enabled now-passing test --- src/test/java/model/LogicTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index 0b890cc877..3b1d164d85 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -99,7 +99,6 @@ public void logic_noDoubleDelete_deleteByUuidFirst() throws InkaException { assert deckList.get(0).getCardsSet().size() == 0; } - @Disabled @Test public void logic_noDoubleDelete_deleteByTagFirst() throws InkaException { // Copy state @@ -116,7 +115,6 @@ public void logic_noDoubleDelete_deleteByTagFirst() throws InkaException { parseAndExecute("deck delete -d testDeck -c " + cardUUID.toString(), RemoveCardFromDeckCommand.class); // Card no longer added by CardUUID or Tag - // TODO: Failing! assert deckList.get(0).getCardsSet().size() == 0; } From 4428dee840c8d7ceb715abaad0de37d5ece9f7d9 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Sat, 8 Apr 2023 17:43:11 +0800 Subject: [PATCH 203/311] test: delete after rename --- src/test/java/model/LogicTest.java | 40 ++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index 3b1d164d85..ad5557511c 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -11,6 +11,10 @@ import utils.command.AddCardToTagCommand; import utils.command.AddTagToDeckCommand; import utils.command.Command; +import utils.command.DeleteDeckCommand; +import utils.command.DeleteTagCommand; +import utils.command.EditDeckNameCommand; +import utils.command.EditTagNameCommand; import utils.command.RemoveCardFromDeckCommand; import utils.command.RemoveTagFromCardCommand; import utils.command.RemoveTagFromDeckCommand; @@ -209,4 +213,40 @@ public void logic_tagAndUntag() throws InkaException { assert cardList.get(0).getTagsUUID().size() == 0; assert tagList.get(0).getCardsUUID().size() == 0; } + + @Test + public void logic_renameAndDeleteTag() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + // Create tag + parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); + assert tagList.get(0).getTagName().equals("testTag"); + + // Rename tag + parseAndExecute("tag edit -o testTag -n newName", EditTagNameCommand.class); + assert tagList.get(0).getTagName().equals("newName"); + + // Delete tag + parseAndExecute("tag delete -t newName", DeleteTagCommand.class); + assert tagList.isEmpty(); + } + + @Test + public void logic_renameAndDeleteDeck() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + // Create deck + parseAndExecute("card deck -d testDeck -i 1", AddCardToDeckCommand.class); + assert deckList.get(0).getDeckName().equals("testDeck"); + + // Rename deck + parseAndExecute("deck edit -o testDeck -n newName", EditDeckNameCommand.class); + assert deckList.get(0).getDeckName().equals("newName"); + + // Delete deck + parseAndExecute("deck delete -d newName", DeleteDeckCommand.class); + assert deckList.isEmpty(); + } } From 05390a6e83ba6a26f72c61eab50229f42ba160e1 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sat, 8 Apr 2023 18:28:41 +0800 Subject: [PATCH 204/311] docs : add mitch PPP --- docs/team/mitchmalvin1.md | 136 ++++++++++++++++++ .../utils/command/AddCardToTagCommand.java | 1 - 2 files changed, 136 insertions(+), 1 deletion(-) create mode 100644 docs/team/mitchmalvin1.md diff --git a/docs/team/mitchmalvin1.md b/docs/team/mitchmalvin1.md new file mode 100644 index 0000000000..ecf68c2b5b --- /dev/null +++ b/docs/team/mitchmalvin1.md @@ -0,0 +1,136 @@ +# Mitch Malvin - Project Portfolio Page + +## Overview + +Inka is a CLI-based software that allows users to add Cards containing questions and answers, attach tags into each Card +and put groups of cards into a deck. Inka aims to help students revise for their exam by providing a flashcard-like +experience. + +## Summary of Contributions + +### Features Implemented + +#### 1. Tag Feature + +- ***What it does :*** + This feature allows users to add Tag(s) into their existing Card(s) ,specify the tag name and list all the cards that + fall under a specific tag. Users are also allowed + to change the tag name later on if they wish. This feature makes use of the `ArrayList` data structure to store + the `Tag` in a `TagList`. + +This feature consists of a few subfeatures : + +- `card tag {-c CARDUUID | -t TAGNAME} ` to attach a tag onto a Card +- `card untag {-c CaRDUUID | -t TAGNAME}` to remove the tag from a Card +- `tag edit -o OLDNAME -n NEWNAME` to edit the name of the Tag +- `tag list` to list all the existing tags +- `tag list {-c CARDUUID | -i CARDINDEX}` to list all the Cards that fall under the Tag +- `tag delete {-t TAGNAME}` to remove the Tag from the TagList + + +- ***Justification :*** This feature is introduced so that users can identify cards that fall under the same topic such + as `physics`. This feature will make it easier for the user to add cards into the deck + to be run later as the user simply needs to specify `deck tag -t physics` as opposed to adding the card into the deck + one by one. This feature also + allows users to better organize their cards as they can see what are the cards that fall under the tag. + + +- ***Highlights :*** The most notable thing to keep in mind in this feature is on the importance on ensuring that all + the data structures in `TagList`, `Tag`,`CardList` and `Card` are properly + synchronized whenever user enters a tag-related command. This is because most of the classes hold a reference to one + another, so it is important that we ensure we do not produce any unnecessary bugs by introducing unit tests. + +#### 2. Card Feature + +More specifically, I contributed to the following features : + +`card list` + +- ***What it does :*** This feature allows users to have a high level view of all the cards that exist in + the `CardList`. + A notable feature that comes with `card list` is its ***truncation*** feature which automatically truncates + the `question` and `answer` strings in each card if they exceed 50 characters. + + +- ***Justification :*** This feature is introduced as we foresee that there will be a lot of cards in the `cardList` and + that it + might not be user-friendly to overwhelm the users with detailed information at this stage. + +With that in mind, another feature that I implemented is : + +`card view {-c CARDUUID | -i CARDINDEX}` + +- ***What it does :*** + This feature allows users to view what are the `tags` and `decks` that the card is currently associated with. It makes + use of the + reference to the `ArrayList` representing `tags` and `decks` inside the `Card` class to ensure that the + appropriate `tags` and `decks` get displayed. + + +- ***Justification :*** : This feature is introduced so that users can make sure that their cards already have the + correct `tags` and `decks`. This is because + information provided by `card list` does not include the `tags` and `decks` for brevity purposes, + Additionally, `questions` and `answers` displayed here are no longer truncated + even when they exceed 50 characters. + +### Code Contribution + +The code contribution detected and analyzed using RepoSense can be +found [here.](https://nus-cs2113-ay2223s2.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2023-02-17&tabOpen=true&tabType=authorship&tabAuthor=mitchmalvin1&tabRepo=AY2223S2-CS2113-F10-1%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code&authorshipIsBinaryFileTypeChecked=false&authorshipIsIgnoredFilesChecked=false) + +### Team-based tasks : + +- Attended and contributed to weekly team meetings. +- Fixed bugs raised during PE-dry-run such as the crucial `InvalidUUIDException`, the detailed list of bugs solved can + be found + in [#150.](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/150) +- Contributed to the overall architecture of `Inka` such as all the `UUID` classes. +- Contributed to the skeleton code in `Inka` so the `tp` can get started. +- Set up the [AY2223-S2-CS21113-F10-1](https://github.com/AY2223S2-CS2113-F10-1) organization and + the [tp](https://github.com/AY2223S2-CS2113-F10-1/tp) repository inside. +- Helped create issues in `v1.0` and `v2.0` milestones and close the milestones in a timely manner. +- Helped teammates with `git` and `checkstyle` issues. +- Reviewed and merged teammates' PRs regularly. + +### Documentation + +#### User Guide + +Add documentations for the following features : + +1. `card tag {-c CARDUUID | -t TAGNAME} ` +2. `card untag {-c CaRDUUID | -t TAGNAME}` +3. `tag edit -o OLDNAME -n NEWNAME` +4. `tag list` +5. `tag list {-c CARDUUID | -i CARDINDEX}` +6. `tag delete {-t TAGNAME}` +7. `card view {-c CARDUUID | -i CARDINDEX}` + +#### Developer Guide + +- Add Class Diagrams for `CardList` and `TagList` + +The Class Diagram for `CardList` can be found below : +![CardList Class Diagram](../img/CardListClass.svg) + +The Class Diagram for `TagList` can be found below : +![TagList Class Diagram](../img/TagListClass.svg) + +- Add Sequence Diagram for `card view {-c CARDUUID | -i CARDINDEX}`, `card untag {-c CaRDUUID | -t TAGNAME}` + and `tag list {-c CARDUUID | -i CARDINDEX}` + +The Sequence Diagram for `card view {-c CARDUUID | -i CARDINDEX}` can be found below : +![Card View Sequence Diagram](../img/CardViewSequence.png) + +The Sequence Diagram for `card untag {-c CaRDUUID | -t TAGNAME}` can be found below : +![Card Untag Sequence Diagram](../img/CardUntagSequence.png) + +The Sequence Diagram for `tag list {-c CARDUUID | -i CARDINDEX}` can be found below : +![List Card Under Tag Sequence Diagram](../img/ListCardsUnderTagSequence.png) + + + + + + + diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index b305feb452..f137f617b3 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -55,7 +55,6 @@ private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) tagToAdd.addCard(cardUUID); //add the tag uuid to the card - TagUUID tagUUID = tagToAdd.getUUID(); cardToAdd.addTag(tagUUID); From c45fb0a4b8499e03b402305dde21ea1b6cbb9394 Mon Sep 17 00:00:00 2001 From: Akhil Date: Sun, 9 Apr 2023 02:01:59 +0800 Subject: [PATCH 205/311] feat: resolved #189, #187 --- .savedata_backup.json | 201 ++++++++++++++++++ savedata.json | 201 ++++++++++++++++++ src/main/java/model/Deck.java | 12 +- src/main/java/utils/UserInterface.java | 9 +- .../utils/command/AddCardToDeckCommand.java | 2 +- .../command/RemoveCardFromDeckCommand.java | 5 +- src/main/java/utils/command/RunCommand.java | 3 + .../utils/exceptions/CardInSetNotInList.java | 7 + src/test/java/model/LogicTest.java | 5 +- .../java/utils/parser/CardParserTest.java | 2 +- 10 files changed, 437 insertions(+), 10 deletions(-) create mode 100644 src/main/java/utils/exceptions/CardInSetNotInList.java diff --git a/.savedata_backup.json b/.savedata_backup.json index 42554cc7a5..7a36227a21 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -48,6 +48,84 @@ } ], "tags": [] + }, + { + "deckName": "new_deck", + "deckUUID": { + "uuid": "78e3dbe3-ab98-44a6-9e99-32a1b851e4a6" + }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, + "cards": [ + { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + } + ], + "tags": [] + }, + { + "deckName": "newnewdeck", + "deckUUID": { + "uuid": "3ea01172-566d-41cc-9537-c13d50b16a12" + }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, + "cards": [], + "tags": [] + }, + { + "deckName": "testing_final", + "deckUUID": { + "uuid": "56dc8e36-2151-477a-85a0-301a4fbba26d" + }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, + "cards": [], + "tags": [] + }, + { + "deckName": "testing_deck", + "deckUUID": { + "uuid": "20a2ef27-2047-4c3a-964c-2d7d93a244d7" + }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, + "cards": [], + "tags": [] + }, + { + "deckName": "del_deck", + "deckUUID": { + "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" + }, + "cardsSet": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "cardUUIDIntegerHashMap": { + "924119c1-a807-4df2-b311-080be9ee8522": 1 + }, + "cards": [], + "tags": [ + { + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + } + ] + }, + { + "deckName": "del_tag", + "deckUUID": { + "uuid": "114b76fc-6ed9-46b6-99bd-623bed4046cb" + }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, + "cards": [], + "tags": [ + { + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + } + ] } ], "tags": [ @@ -98,6 +176,74 @@ } ], "decks": [] + }, + { + "uuid": { + "uuid": "b0154090-c344-49b6-a8c7-1a4f5e98ddcc" + }, + "tagName": "new_tag", + "cards": [ + { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "834649e9-e0da-40aa-9a04-78877abf94bd" + }, + "tagName": "test_tag", + "cards": [ + { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "22c0769d-f046-4ae1-b0aa-e9910e92a3d2" + }, + "tagName": "test_final_tag", + "cards": [ + { + "uuid": "a8a9665b-88bd-4fe8-8970-5f5190bb968e" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + }, + "tagName": "del_tag", + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "decks": [ + { + "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" + } + ] + }, + { + "uuid": { + "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" + }, + "tagName": "dup_tag", + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "decks": [ + { + "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" + } + ] } ], "cards": [ @@ -161,6 +307,61 @@ "answer": "ans", "tags": [], "decks": [] + }, + { + "uuid": { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + }, + "question": "testing", + "answer": "testing", + "tags": [ + { + "uuid": "b0154090-c344-49b6-a8c7-1a4f5e98ddcc" + }, + { + "uuid": "834649e9-e0da-40aa-9a04-78877abf94bd" + } + ], + "decks": [ + { + "uuid": "845b2ac0-ccc9-4069-b885-6e651226510e" + }, + { + "uuid": "78e3dbe3-ab98-44a6-9e99-32a1b851e4a6" + }, + { + "uuid": "56dc8e36-2151-477a-85a0-301a4fbba26d" + } + ] + }, + { + "uuid": { + "uuid": "a8a9665b-88bd-4fe8-8970-5f5190bb968e" + }, + "question": "test", + "answer": "test", + "tags": [ + { + "uuid": "22c0769d-f046-4ae1-b0aa-e9910e92a3d2" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + }, + "question": "this might work", + "answer": "finally", + "tags": [ + { + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + }, + { + "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" + } + ], + "decks": [] } ] } \ No newline at end of file diff --git a/savedata.json b/savedata.json index 42554cc7a5..7a36227a21 100644 --- a/savedata.json +++ b/savedata.json @@ -48,6 +48,84 @@ } ], "tags": [] + }, + { + "deckName": "new_deck", + "deckUUID": { + "uuid": "78e3dbe3-ab98-44a6-9e99-32a1b851e4a6" + }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, + "cards": [ + { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + } + ], + "tags": [] + }, + { + "deckName": "newnewdeck", + "deckUUID": { + "uuid": "3ea01172-566d-41cc-9537-c13d50b16a12" + }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, + "cards": [], + "tags": [] + }, + { + "deckName": "testing_final", + "deckUUID": { + "uuid": "56dc8e36-2151-477a-85a0-301a4fbba26d" + }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, + "cards": [], + "tags": [] + }, + { + "deckName": "testing_deck", + "deckUUID": { + "uuid": "20a2ef27-2047-4c3a-964c-2d7d93a244d7" + }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, + "cards": [], + "tags": [] + }, + { + "deckName": "del_deck", + "deckUUID": { + "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" + }, + "cardsSet": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "cardUUIDIntegerHashMap": { + "924119c1-a807-4df2-b311-080be9ee8522": 1 + }, + "cards": [], + "tags": [ + { + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + } + ] + }, + { + "deckName": "del_tag", + "deckUUID": { + "uuid": "114b76fc-6ed9-46b6-99bd-623bed4046cb" + }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, + "cards": [], + "tags": [ + { + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + } + ] } ], "tags": [ @@ -98,6 +176,74 @@ } ], "decks": [] + }, + { + "uuid": { + "uuid": "b0154090-c344-49b6-a8c7-1a4f5e98ddcc" + }, + "tagName": "new_tag", + "cards": [ + { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "834649e9-e0da-40aa-9a04-78877abf94bd" + }, + "tagName": "test_tag", + "cards": [ + { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "22c0769d-f046-4ae1-b0aa-e9910e92a3d2" + }, + "tagName": "test_final_tag", + "cards": [ + { + "uuid": "a8a9665b-88bd-4fe8-8970-5f5190bb968e" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + }, + "tagName": "del_tag", + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "decks": [ + { + "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" + } + ] + }, + { + "uuid": { + "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" + }, + "tagName": "dup_tag", + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "decks": [ + { + "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" + } + ] } ], "cards": [ @@ -161,6 +307,61 @@ "answer": "ans", "tags": [], "decks": [] + }, + { + "uuid": { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + }, + "question": "testing", + "answer": "testing", + "tags": [ + { + "uuid": "b0154090-c344-49b6-a8c7-1a4f5e98ddcc" + }, + { + "uuid": "834649e9-e0da-40aa-9a04-78877abf94bd" + } + ], + "decks": [ + { + "uuid": "845b2ac0-ccc9-4069-b885-6e651226510e" + }, + { + "uuid": "78e3dbe3-ab98-44a6-9e99-32a1b851e4a6" + }, + { + "uuid": "56dc8e36-2151-477a-85a0-301a4fbba26d" + } + ] + }, + { + "uuid": { + "uuid": "a8a9665b-88bd-4fe8-8970-5f5190bb968e" + }, + "question": "test", + "answer": "test", + "tags": [ + { + "uuid": "22c0769d-f046-4ae1-b0aa-e9910e92a3d2" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + }, + "question": "this might work", + "answer": "finally", + "tags": [ + { + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + }, + { + "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" + } + ], + "decks": [] } ] } \ No newline at end of file diff --git a/src/main/java/model/Deck.java b/src/main/java/model/Deck.java index 0cd1c7defe..3f495e6d16 100644 --- a/src/main/java/model/Deck.java +++ b/src/main/java/model/Deck.java @@ -43,10 +43,14 @@ public Deck(String deckName, TagUUID tagUUID, CardUUID cardUUID) { public String getDeckName() { return deckName; } - public boolean cardIsInDeck(CardUUID cardUUID) { + public boolean cardIsInSet(CardUUID cardUUID) { return cardsSet.contains(cardUUID); } + public boolean cardIsInList(CardUUID cardUUID) { + return cards.contains(cardUUID); + } + public boolean tagIsInDeck(TagUUID tagUUID) { for(TagUUID tagUUIDHolder : tags) { if(tagUUIDHolder.equals(tagUUID)) { @@ -108,6 +112,10 @@ public void addCardToSet(CardUUID cardUUID) { cardsSet.add(cardUUID); } + + public void removeCardFromSet(CardUUID cardUUID) { + cardsSet.remove(cardUUID); + } public void addTag(TagUUID tagUUID) { this.tags.add(tagUUID); } @@ -138,7 +146,7 @@ public void removeTaggedCardsMap(TagUUID tagUUID, TagList tagList) { for(CardUUID cardUUID: cardUUIDArrayList) { if(cardUUIDIntegerHashMap.get(cardUUID)==1) { cardUUIDIntegerHashMap.remove(cardUUID); - if(!this.cardIsInDeck(cardUUID)) { + if(!this.cardIsInList(cardUUID)) { cardsSet.remove(cardUUID); } } else { diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 1ddceb3f5a..9b125654fc 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -211,14 +211,19 @@ public void printEditDeckNameSuccess(String oldDeckName, Deck deck) { } public void printQuestion(String question) { - System.out.println("Q: " + question); + System.out.println("\tQ: " + question); } public void printAnswer(String answer) { - System.out.println("A: " + answer + "\n"); + System.out.println("\tA: " + answer + "\n"); } public void printExitingRunMode() { System.out.println("Exiting run mode!\n"); } + + public void printWarning() { + System.out.println("There is no need to input any characters!\n" + + "Just hitting enter is sufficient to show the answer! Anyway, here is the answer!\n"); + } } diff --git a/src/main/java/utils/command/AddCardToDeckCommand.java b/src/main/java/utils/command/AddCardToDeckCommand.java index 92fa4a5709..249c02e8e6 100644 --- a/src/main/java/utils/command/AddCardToDeckCommand.java +++ b/src/main/java/utils/command/AddCardToDeckCommand.java @@ -32,7 +32,7 @@ private void addCardToDeck(DeckList deckList, Card cardToAdd, UserInterface ui) deckToAdd = new Deck(deckName, cardToAdd.getUuid()); deckToAdd.addCardToSet(cardToAdd.getUuid()); deckList.addDeck(deckToAdd); - } else if (deckToAdd.cardIsInDeck(cardToAdd.getUuid())) { + } else if (deckToAdd.cardIsInSet(cardToAdd.getUuid())) { throw new CardInDeckException(); } else if(deckToAdd.cardIsInMap(cardToAdd.getUuid())) { throw new CardInDeckUnderTagException(); diff --git a/src/main/java/utils/command/RemoveCardFromDeckCommand.java b/src/main/java/utils/command/RemoveCardFromDeckCommand.java index 1225f094a6..c990b9465b 100644 --- a/src/main/java/utils/command/RemoveCardFromDeckCommand.java +++ b/src/main/java/utils/command/RemoveCardFromDeckCommand.java @@ -9,6 +9,7 @@ import model.DeckList; import model.TagList; import utils.UserInterface; +import utils.exceptions.CardInSetNotInList; import utils.exceptions.CardNotInDeck; import utils.exceptions.DeckNotFoundException; import utils.exceptions.InkaException; @@ -40,7 +41,9 @@ public void removeCardFromDeck(DeckList deckList, String deckName, CardUUID card ArrayList deckCardList = deck.getCardsUUID(); HashSet deckCardSet = deck.getCardsSet(); boolean wasCardInDeck = deckCardList.removeIf(card -> card.equals(cardUUID)); - if (wasCardInDeck == false) { + if (!wasCardInDeck && deck.cardIsInMap(cardUUID)) { + throw new CardInSetNotInList(); + } else if(!wasCardInDeck) { throw new CardNotInDeck(); } else if(!deck.cardIsInMap(cardUUID)) { // if the card does not exist under any tag deckCardSet.remove(cardUUID); diff --git a/src/main/java/utils/command/RunCommand.java b/src/main/java/utils/command/RunCommand.java index ce376ad0e8..ac8496aac9 100644 --- a/src/main/java/utils/command/RunCommand.java +++ b/src/main/java/utils/command/RunCommand.java @@ -42,6 +42,9 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI } else if (input.equals("exit")) { ui.printExitingRunMode(); break; + } else { + ui.printWarning(); + ui.printAnswer(card.getAnswer()); } } isExit = true; diff --git a/src/main/java/utils/exceptions/CardInSetNotInList.java b/src/main/java/utils/exceptions/CardInSetNotInList.java new file mode 100644 index 0000000000..ef0907e6c1 --- /dev/null +++ b/src/main/java/utils/exceptions/CardInSetNotInList.java @@ -0,0 +1,7 @@ +package utils.exceptions; + +public class CardInSetNotInList extends InkaException{ + public CardInSetNotInList() { + super("Card is present in the deck under a tag, hence cannot be deleted this way"); + } +} diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index ad5557511c..fc14d0c880 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -18,6 +18,7 @@ import utils.command.RemoveCardFromDeckCommand; import utils.command.RemoveTagFromCardCommand; import utils.command.RemoveTagFromDeckCommand; +import utils.exceptions.CardInSetNotInList; import utils.exceptions.CardNotInDeck; import utils.exceptions.InkaException; import utils.exceptions.TagNeverWasInDeck; @@ -82,7 +83,6 @@ public void logic_noDuplicateCard() throws InkaException { /** * Card that is added through CardUUID and Tag should remain in Deck if only either is removed */ - @Disabled @Test public void logic_noDoubleDelete_deleteByUuidFirst() throws InkaException { // Copy state @@ -99,7 +99,6 @@ public void logic_noDoubleDelete_deleteByUuidFirst() throws InkaException { parseAndExecute("deck delete -d testDeck -t testTag", RemoveTagFromDeckCommand.class); // Card no longer added by CardUUID or Tag - // TODO: Failing! assert deckList.get(0).getCardsSet().size() == 0; } @@ -164,7 +163,7 @@ public void logic_addByTagDeleteByCardUUID() throws InkaException { // Remove card via CardUUID try { parseAndExecute("deck delete -d testDeck -c " + cardUUID, RemoveCardFromDeckCommand.class); - } catch (CardNotInDeck ex) { + } catch (CardInSetNotInList ex) { // TODO: This shows "The card is not in the deck" which might be misleading } diff --git a/src/test/java/utils/parser/CardParserTest.java b/src/test/java/utils/parser/CardParserTest.java index 01f87eac95..8ded32b851 100644 --- a/src/test/java/utils/parser/CardParserTest.java +++ b/src/test/java/utils/parser/CardParserTest.java @@ -130,7 +130,7 @@ public void parse_card_deck() throws InkaException { assert cmd instanceof AddCardToDeckCommand; cmd.execute(cardList, tagList, deckList, ui, storage); - assert testDeck.cardIsInDeck(new CardUUID(UUID.fromString("00000000-0000-0000-0000-000000000000"))); + assert testDeck.cardIsInSet(new CardUUID(UUID.fromString("00000000-0000-0000-0000-000000000000"))); } } From 21572fabf885e44908b1c9864da58a9ff2b4dbcc Mon Sep 17 00:00:00 2001 From: Akhil Date: Sun, 9 Apr 2023 02:37:55 +0800 Subject: [PATCH 206/311] fix: unused imports in tests removed --- src/test/java/model/LogicTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index fc14d0c880..3afcc31466 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -3,7 +3,6 @@ import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import utils.UserInterface; import utils.command.AddCardCommand; @@ -19,7 +18,6 @@ import utils.command.RemoveTagFromCardCommand; import utils.command.RemoveTagFromDeckCommand; import utils.exceptions.CardInSetNotInList; -import utils.exceptions.CardNotInDeck; import utils.exceptions.InkaException; import utils.exceptions.TagNeverWasInDeck; import utils.parser.Parser; From bf775a09d43e9f856bd03ec87fa7133c7cd91257 Mon Sep 17 00:00:00 2001 From: JangusRoundstone <88696064+JangusRoundstone@users.noreply.github.com> Date: Sun, 9 Apr 2023 02:47:50 +0800 Subject: [PATCH 207/311] Update DG Card --- docs/DeveloperGuide.md | 82 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 80 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 1a38fc0290..83c47dff71 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -145,7 +145,85 @@ The current functionalities: - delete card from the cardlist - show all cards the cardlist contains - view the card by its uuid -- add tag to a card + +#### Card Add + +User input format for adding a card + +``` +card delete -q QN -a ANS +``` + +For adding a card, a sample user input like `card add -q QN -a ANS` would be broken down as: + +- Keyword: `card` +- Action: `add` +- Flags + - `-q`: Question text + - `-a`: Answer text + +The implementation of `card add -q QN -a ANS` will be shown below : + +1. When the user enters `card add -q QN -a ANS`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the "card" keyword. +2. The `Parser#CardKeywordParser()` further extracts the action keyword "add" from the user input, and calls the `CardKeywordParser#handleAdd()` method. +3. The method uses the Apache Commons CLI library to parse the remaining user input to create a `Card` object with the arguements of the flags "-q" and "-a" in the input as its question and answer, and returns an `AddCardCommand` with the created `Card` object. +4. This `AddCardCommand` will call the `CardList#addCard()` function and add the created `Card` object to the `CardList`. +5. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with the corresponding functions. + +The sequence diagram below shows how this feature works: +![Card Add feature] + + +#### Card Delete + +User input format for deleting a card + +``` +card delete [-i CARDINDEX | -c CARDUUID] +``` + +A sample user input, like `card delete -i 3` would be broken down as: + +- Keyword: `card` +- Action: `delete` +- Flag + - `-i`: Index of card to be deleted + +The implementation of `card delete -i 3` will be shown below : + +1. When the user enters `card delete -i 3`, the `Parser` class will parse the user input in the same way as shown in step 1 here [above](#card-add). +2. The `Parser#CardKeywordParser()` further extracts the action keyword "delete" from the user input and call `CardKeywordParser#handleDelete()` method. +3. The method uses the Apache Commons CLI library to parse the remaining user input, and returns a `DeleteCardCommand` with a `CardSelector` argument. The `CardSelector` object has two optional fields, an int field or an uuid field, used in identifying the `Card` object, in this case to be deleted. +5. This `DeleteCardCommand` will first find the `Card` object to delete, then find all the `Tag` and `Deck` objects it is associated to by their uuids stored in the `Card` object, and delete the `Card` object's uuid from them. +6. Then the `Card` object is deleted from the `CardList`. +7. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with the corresponding functions. + +The sequence diagram below shows how this feature works: +![Card Add feature] + + +#### Card List + +User input format for listing all card + +``` +card list +``` + +A sample user input, like `card list` would be broken down as : + +- Keyword: `card` +- Action: `list` + +The implementation of `card list` will be shown below : + +1. When the user enters `card list`, the `Parser` class will parse the user input in the same way as shown in step 1 here [above](#card-add). +2. The `Parser#CardKeywordParser()` further extracts the action keyword "list" from the user input and call `CardKeywordParser#handleList()` method. +3. If there are no more user input after `card list`, a `ListCardCommand()` is returned. +4. The command will call `UserInterface#printCardList()` method to print all `Card` objects in the `CardList`. + +The sequence diagram below shows how this feature works: +![Card Add feature] #### Card View @@ -172,7 +250,7 @@ The implementation of `card view {-c {cardUUID} | -i {cardIndex}}` will be shown return `tagsUUID` and `Card#getDecksUUID()` which will return `decksUUID`. -- Once the `tagsUUID` is ready, `ViewCardCommand` will then call `ViewCardCommand#findTagFromTagUUID` which will loop +- Once the `tagsUUID` is ready, `ViewCardCommand` will then call `ViewCardCommand#findTagFromTagUUID` which will loop through each element `Tag` of `TagList`, call `Tag#getUUID()` and match it with every element of the `tagsUUID` previously. If the `Tag` element's uuid matches the uuid in `tagsUUID`, then the `Tag` will be added to a `tagsFound` and returned From 7ce44fc99acaab7cfa3b582cfd833719b7ebd95f Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 11:41:30 +0800 Subject: [PATCH 208/311] ref: fix UI display in card list --- .savedata_backup.json | 24 ++++++--- docs/UserGuide.md | 96 ++++++++++++++++++++++++++--------- savedata.json | 24 ++++++--- src/main/java/model/Card.java | 6 +-- 4 files changed, 110 insertions(+), 40 deletions(-) diff --git a/.savedata_backup.json b/.savedata_backup.json index 42554cc7a5..343cff29ed 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -90,9 +90,6 @@ }, "tagName": "bla", "cards": [ - { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" - }, { "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } @@ -122,9 +119,6 @@ }, { "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" - }, - { - "uuid": "1631221a-1b21-4481-8113-76b0b6ce6499" } ], "decks": [ @@ -161,6 +155,24 @@ "answer": "ans", "tags": [], "decks": [] + }, + { + "uuid": { + "uuid": "29bea83e-d864-48c4-bb9a-7fa817114fe1" + }, + "question": "how do i use this command?", + "answer": "by referring to this user guide", + "tags": [], + "decks": [] + }, + { + "uuid": { + "uuid": "19d859b1-cede-467e-b384-7d6e690cdae6" + }, + "question": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum", + "answer": "ans", + "tags": [], + "decks": [] } ] } \ No newline at end of file diff --git a/docs/UserGuide.md b/docs/UserGuide.md index a9c4967eb5..d21436e219 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -2,7 +2,9 @@ ## Introduction -{Give a product intro} +Inka is a CLI-based software that allows users to add Cards containing questions and answers, attach tags into each Card +and put groups of cards into a deck. Inka aims to help students revise for their exam by providing a flashcard-like +experience. ## Quick Start @@ -16,7 +18,9 @@ Enjoy your revision! ### Use Case -Cards that you add to Inka can be organized using tags, and decks can be flexibly constructed either by adding **individual cards** and/or multiple cards with the **same tag**. + +Cards that you add to Inka can be organized using tags, and decks can be flexibly constructed either by adding * +*individual cards** and/or multiple cards with the **same tag**. For example, suppose you had the following cards: @@ -28,6 +32,7 @@ For example, suppose you had the following cards: | **Card 4** | What does OOP stand for? | Object-Oriented Programming | _cs2113-wk8_ | You might organize your cards in the following fashion: + - Adding the `cs2113-wk1` and `cs2113-wk8` tags to group together cards of similar topics - Adding the `freq-wrong` tag to cards that you wish to review more frequently @@ -39,6 +44,31 @@ This allows you to create the following decks easily: | Frequently-Wrong | - | _freq-wrong_ | Cards 2, 3 | | Acronyms | Card 3 | _cs2113-wk8_ | Cards 1, 3, 4 | +## Usage of the flags + +Inka's command makes substantial use of flags to indicate certain parameters that users enter. Listed below are the +format specified : + +- Required arguments are indicated by `-f ARG` format +- Optional arguments are indicated by `[-f ARG]` +- Mutually exclusive required arguments are `{-a ARG | -b ARG}` +- Mutually exclusive optional arguments are `[-a ARG | -b ARG]` + +There will be many instances where users are allowed to choose how they want to identify a `Card`, `Tag` or a `Deck`. + +Here are the list of flags that users can enter : + +- `-c CARD_UUID` to identify a `Card` with its UUID +- `-i CARD_INDEX` to identify a `Card` with card index. +- `-t TAG_NAME` to identify a `Tag` with its tag name. +- `-x TAG_INDEX` to identify a `Tag` with its tag index. +- `-d DECK_NAME` to identify a `Deck` with its deck name. + +For instance, in `card untag` command, since users are allowed to specify the `Card` with either its uuid or index, +specify the +`Tag` with either its tag name or index, the format of syntax in the documentation below will be written as : + +`card untag {-c CARD_UUID | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}` ## Features @@ -84,51 +114,67 @@ List tags ### Adding a card: -`card add -q {question} -a {answer}` +`card add -q QUESTION -a ANSWER` Adds a new Card with its question and answer. -The flags can be listed in ***any*** order and must be followed by strings. + +***Lists of flags (in any order)*** : + +- [REQUIRED] `-q` followed by a String representing the question +- [REQUIRED] `-a` followed by a String representing the answer + +While there is no restriction on how long the String that the user can enter, +String with length greater than 50 characters will be truncated in the display of `card list` command. The full version +can be viewed using the `card view` command below. Example of usage: `card add -q how do i use this command? -a by referring to this user guide` +Sample Output : + +``` +That's a good question for revision later! +You now have 4 questions in the bank. +``` + ### Listing all cards : `card list` -List all existing cards. The UUID enclosed in the `[]` is the cardUUID. The `Tags` and `Decks` show the tagUUIDs and -deckUUIDs -that the cards are currently under. +List all existing cards in Inka. + +***Lists of flags (in any order)*** : + +- ***NONE*** Sample output : ``` Here is a list of your cards : -1.[1ddd9a67-f56c-4914-99c0-2f90c580f0e9] - Tags: - - 03658854-e5d4-468f-8c41-74917e5d4515 - - c8259fee-125d-4700-829c-0da79eba1e91 + 1. [1ddd9a67-f56c-4914-99c0-2f90c580f0e9] + Qn: What is the formula of force? + Ans: F = ma - Decks: - - c83e08ad-e5b7-4812-9dd1-4b44504386ad - - Qn: What is the formula of force? - Ans: F = ma - -2.[619c689d-395a-4bb8-ab00-6ae9972bb929] - - Tags: None - - Decks: None - - Qn: How efficient is binary search? - Ans: O(log n) + 2. [619c689d-395a-4bb8-ab00-6ae9972bb929] + Qn: How efficient is binary search? + Ans: O(log n) + 3. [29bea83e-d864-48c4-bb9a-7fa817114fe1] + Qn: how do i use this command? + Ans: by referring to this user guide + 4. [19d859b1-cede-467e-b384-7d6e690cdae6] + Qn: Lorem ipsum dolor sit amet, consectetur adipiscing + Ans: ans + Note: Actual question or answer is too long, string truncated ``` +In `1. [1ddd9a67-f56c-4914-99c0-2f90c580f0e9]` above, the `1` refers the card index and the +`1ddd9a67-f56c-4914-99c0-2f90c580f0e9` refers the UUID of the card. User can choose whether to refer to the card by UUID +or card index. + ### Deleting a card : `card delete -c {cardUUID}` diff --git a/savedata.json b/savedata.json index 42554cc7a5..343cff29ed 100644 --- a/savedata.json +++ b/savedata.json @@ -90,9 +90,6 @@ }, "tagName": "bla", "cards": [ - { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" - }, { "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } @@ -122,9 +119,6 @@ }, { "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" - }, - { - "uuid": "1631221a-1b21-4481-8113-76b0b6ce6499" } ], "decks": [ @@ -161,6 +155,24 @@ "answer": "ans", "tags": [], "decks": [] + }, + { + "uuid": { + "uuid": "29bea83e-d864-48c4-bb9a-7fa817114fe1" + }, + "question": "how do i use this command?", + "answer": "by referring to this user guide", + "tags": [], + "decks": [] + }, + { + "uuid": { + "uuid": "19d859b1-cede-467e-b384-7d6e690cdae6" + }, + "question": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum", + "answer": "ans", + "tags": [], + "decks": [] } ] } \ No newline at end of file diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 8908ddce54..3d050ac3db 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -108,12 +108,12 @@ public String toTruncatedString() { boolean isAnsTooLong = this.answer.length() > 50; String warningStr = - (isQnTooLong || isAnsTooLong) ? "\n\tNote : Actual question or answer is too long, string truncated" + (isQnTooLong || isAnsTooLong) ? "\n\tNote:\tActual question or answer is too long, string truncated" : ""; String questionStr = isQnTooLong ? this.question.substring(0, 50) : this.question; String answerStr = isAnsTooLong ? this.answer.substring(0, 50) : this.answer; - return "\t[" + this.uuid + "]" + - "\n\tQn: " + questionStr + "\n\tAns: " + answerStr + warningStr + "\n"; + return "\t\t[" + this.uuid + "]" + + "\n\tQn:\t\t" + questionStr + "\n\tAns:\t" + answerStr + warningStr + "\n"; } } From 46727a72155e4086150a2e704bd5cdc8356a39e0 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 12:12:52 +0800 Subject: [PATCH 209/311] docs : complete Card UG --- docs/UserGuide.md | 144 +++++++++++++++++++++++++++++++++------------- 1 file changed, 103 insertions(+), 41 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index d21436e219..8b0ab008ef 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -44,7 +44,7 @@ This allows you to create the following decks easily: | Frequently-Wrong | - | _freq-wrong_ | Cards 2, 3 | | Acronyms | Card 3 | _cs2113-wk8_ | Cards 1, 3, 4 | -## Usage of the flags +## Usage of flags Inka's command makes substantial use of flags to indicate certain parameters that users enter. Listed below are the format specified : @@ -76,7 +76,7 @@ specify the Users can run `help` command to see the list of commands available for each feature. -Sample output : +***Sample output :*** ``` Welcome to Inka! Type help at any time to show this message @@ -95,7 +95,7 @@ Users can then run : - `tag help` for features related to tags - `deck help` for features related to decks -Sample output for `tag help` : +***Sample output for `tag help` :*** ``` usage: `tag edit` @@ -120,18 +120,20 @@ Adds a new Card with its question and answer. ***Lists of flags (in any order)*** : -- [REQUIRED] `-q` followed by a String representing the question -- [REQUIRED] `-a` followed by a String representing the answer +- `-q` followed by a String representing the question +- `-a` followed by a String representing the answer + +Users can refer to this [section](#usage-of-flags) to recap on how the flag works. While there is no restriction on how long the String that the user can enter, String with length greater than 50 characters will be truncated in the display of `card list` command. The full version can be viewed using the `card view` command below. -Example of usage: +***Example of usage:*** `card add -q how do i use this command? -a by referring to this user guide` -Sample Output : +***Sample Output :*** ``` That's a good question for revision later! @@ -148,7 +150,7 @@ List all existing cards in Inka. - ***NONE*** -Sample output : +***Sample output :*** ``` Here is a list of your cards : @@ -177,19 +179,26 @@ or card index. ### Deleting a card : -`card delete -c {cardUUID}` -`card delete -i {cardIndex}` +`card delete {-c CARD_UUID | -i CARD_INDEX}` + +Delete an existing card based on its UUID or its card index. The card will be removed from Inka as well as from +any `Tag` and `Deck` +that it was previously attached to. + +***Lists of flags (in any order)*** : -User has the option to delete the card based on card index or card UUID. -The card index can be found by running `card list`. +- `-c` the UUID of the card to be deleted +- `-i` the index of the card to be deleted -Example of usage: +Users can refer to this [section](#usage-of-flags) to recap on how the flag works. + +***Example of usage :*** `card delete -c f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454` `card delete -i 3` -Sample output : +***Sample output :*** ``` Too easy ha? You won't see that question again! @@ -198,37 +207,83 @@ You now have 2 questions in the bank. ### Tagging a card : -`card tag -c {cardUUID} -t {tagName}` +`card tag {-c CARD_UUID | -i CARD_INDEX} -t TAG_NAME` -Tags a card by specifying the cardUUID and tag name. +Tags a card by its UUID or card index with a specific tag name. If the tag does not exist, Inka will create a new one. +Otherwise, Inka will just tag the card. -The flags `-c` and `-d` can be listed in any order, but they must ***not*** contain any whitespaces. -and they cannot be empty. +***Lists of flags (in any order)*** : + +- `-c` the UUID of the card to be tagged +- `-i` the index of the card to be tagged +- `-t` the name of the tag ***(no whitespaces allowed)*** + +Users can refer to this [section](#usage-of-flags) to recap on how the flag works. + +***Example of usage :*** -Example of usage : `card tag -c f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 -t physics` -Sample output : +`card tag -i 1 -t physics` + +***Sample output :*** ``` Tag does not exist.. creating a new tag: physics Successfully added tag 83f26992-09d7-496b-b7a8-3ad05e43c8b7 to card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 ``` +### Removing a Tag from a card : + +`card untag {-c CARD_UUID | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}` + +Removes the specified Tag based on tag name or tag index from a specified Card based on its uuid or card index. The +tag index can be found in the later section from `tag list`. + +***Lists of flags (in any order)*** : + +- `-c` the UUID of the card to be untagged +- `-i` the index of the card to be untagged +- `-t` the name of the tag to be removed ***(no whitespaces allowed)*** +- `-x` the index of the tag to be removed + +Users can refer to this [section](#usage-of-flags) to recap on how the flag works. + +***Example of usage :*** + +`card untag -c f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 -t physics` + +`card untag -i 1 -x 1` + +***Sample output :*** + +``` +Successfully removed tag 83f26992-09d7-496b-b7a8-3ad05e43c8b7 from card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 +``` + ### Putting a card into a deck : -`card deck -c {cardUUID} -d {deckName}` +`card deck {-c CARD_UUID | -i CARD_INDEX} -d DECK_NAME` -Specify the card based on its cardUUID and put it in the deck. +Specify the card based on its UUID or card index and put it in the deck specified by deck name. If the deck does not +exist, Inka will create a new one. +Otherwise, Inka will just put the card in the deck -The flags `-c` and `-d` can be listed in any order, but they must ***not*** contain any whitespaces. -and they cannot be empty. +***Lists of flags (in any order)*** : -Example of usage : +- `-c` the UUID of the card to be tagged +- `-i` the index of the card to be tagged +- `-d` the name of the deck ***(no whitespaces allowed)*** + +Users can refer to this [section](#usage-of-flags) to recap on how the flag works. + +***Example of usage :*** `card deck -c f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 -d deckTest` -Sample output : +`card deck -i 1 -d midterms` + +***Sample output :*** ``` Deck does not exist.. creating a new one @@ -237,35 +292,42 @@ Successfully added card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 to deck fd2df33d-4b ### Viewing a card : -`card view (-c {cardUUID} | -i {cardIndex}) ` +`card view {-c CARD_UUID | -i CARD_INDEX} ` -View the content of a Card based on its cardUUID or the cardIndex. +View the content of a Card based on its UUID or card index. This feature will allow users to have a more comprehensive +view of the card that was +not shown previously in `card list` such as the full version of the questions and answers if they are too long, and the +list of `tags` and `decks` that +the card belongs to. -The cardIndex can be found by running `card list`. The flags `-c` and `-i` must ***not*** be empty. +***Lists of flags (in any order)*** : -Example of usage : +- `-c` the UUID of the card to be viewed. +- `-i` the index of the card to be viewed. + +Users can refer to this [section](#usage-of-flags) to recap on how the flag works. + +***Example of usage :*** `card view -c f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454` `card view -i 3` -Sample output : +***Sample output :*** ``` -[1ddd9a67-f56c-4914-99c0-2f90c580f0e9] - - Tags: - - 03658854-e5d4-468f-8c41-74917e5d4515 - - c8259fee-125d-4700-829c-0da79eba1e91 +[19d859b1-cede-467e-b384-7d6e690cdae6] +Qn: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum +Ans: ans - Decks: - - c83e08ad-e5b7-4812-9dd1-4b44504386ad +Here are your tags: +1.Tag name : longText, tag uuid : 8a6f3263-5d54-4267-9e8c-751074688e5a - Qn: What is the formula of force? - Ans: F = ma +There is no deck. ``` -The UUID enclosed within `[]` refers to the cardUUID that the user is currently viewing. +Similar to before `[19d859b1-cede-467e-b384-7d6e690cdae6]` refers to the UUID of the card that the user is currently +viewing. --- From 8cc7c3d2eaf2cc87fd41702f2650c94848813fc6 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 13:17:40 +0800 Subject: [PATCH 210/311] feat : add long tag name exception checking --- .savedata_backup.json | 36 +++++++++++++++---- docs/UserGuide.md | 15 ++++++-- savedata.json | 36 +++++++++++++++---- .../utils/command/AddCardToTagCommand.java | 7 ++-- .../command/RemoveTagFromCardCommand.java | 8 ++++- .../exceptions/LongTagNameException.java | 9 +++++ 6 files changed, 93 insertions(+), 18 deletions(-) create mode 100644 src/main/java/utils/exceptions/LongTagNameException.java diff --git a/.savedata_backup.json b/.savedata_backup.json index 343cff29ed..177909a44e 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -62,12 +62,6 @@ }, { "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" - }, - { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" - }, - { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } ], "decks": [] @@ -95,6 +89,30 @@ } ], "decks": [] + }, + { + "uuid": { + "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" + }, + "tagName": "chemm", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "96dfa96a-a751-47ff-b6e3-bafdc25b202a" + }, + "tagName": "ghsdgjuzshgujzshgzihgsujighszjhgzusjhghuksghhgfzfujghfuzidhgfzghfdihgbfuihgfzughfzujighfzuighfighufhgfuighfzuighfzughfzuighuglhfzghfzughzguifhguz", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] } ], "cards": [ @@ -119,6 +137,12 @@ }, { "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" + }, + { + "uuid": "96dfa96a-a751-47ff-b6e3-bafdc25b202a" } ], "decks": [ diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 8b0ab008ef..8203906cd5 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -331,11 +331,20 @@ viewing. --- -### Editing a tag : `tag edit -o {tagNameOld} -n {tagNameNew}` +### Editing a tag : -Edit the name of an existing tag by specifying the old name and new name" +`tag edit -o {OLD_TAG_NAME} -n {NEW_TAG_NAME}` + +Edit the name of an existing tag by specifying the old name and new name. This change of tag name will also take effect +in `tag list` and `card view` + +***Lists of flags (in any order)*** : + +- `-o` the old name of the tag. +- `-n` the new name of the tag + +Users can refer to this [section](#usage-of-flags) to recap on how the flag works. -The flags `-o` and `-n` can be listed in any order, but they must ***not*** contain any whitespaces. and they cannot be empty. Example of usage : diff --git a/savedata.json b/savedata.json index 343cff29ed..177909a44e 100644 --- a/savedata.json +++ b/savedata.json @@ -62,12 +62,6 @@ }, { "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" - }, - { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" - }, - { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } ], "decks": [] @@ -95,6 +89,30 @@ } ], "decks": [] + }, + { + "uuid": { + "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" + }, + "tagName": "chemm", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "96dfa96a-a751-47ff-b6e3-bafdc25b202a" + }, + "tagName": "ghsdgjuzshgujzshgzihgsujighszjhgzusjhghuksghhgfzfujghfuzidhgfzghfdihgbfuihgfzughfzujighfzuighfighufhgfuighfzuighfzughfzuighuglhfzghfzughzguifhguz", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] } ], "cards": [ @@ -119,6 +137,12 @@ }, { "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" + }, + { + "uuid": "96dfa96a-a751-47ff-b6e3-bafdc25b202a" } ], "decks": [ diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index a8a86b1f32..b7148f840a 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -13,6 +13,7 @@ import utils.UserInterface; import utils.exceptions.CardInTagException; import utils.exceptions.InkaException; +import utils.exceptions.LongTagNameException; import utils.exceptions.TagNotFoundException; import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; @@ -38,12 +39,14 @@ public AddCardToTagCommand(TagSelector tagSelector, CardSelector cardSelector) t * @param ui The userInterface to print the success of the tag creation */ private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) - throws CardInTagException, TagNotFoundException { + throws CardInTagException, TagNotFoundException, LongTagNameException { //find the corresponding Tag and Card based on its tagName and card uuid Tag tagToAdd = tagList.findTag(tagSelector); Optional tagName = tagSelector.getTagName(); - if (tagToAdd == null) { + if (tagName.get().length() > 50) { + throw new LongTagNameException(); + } else if (tagToAdd == null) { ui.printTagCreationSuccess(tagName.get()); tagToAdd = new Tag(tagName.get()); tagList.addTag(tagToAdd); diff --git a/src/main/java/utils/command/RemoveTagFromCardCommand.java b/src/main/java/utils/command/RemoveTagFromCardCommand.java index b74c973568..46984d89a4 100644 --- a/src/main/java/utils/command/RemoveTagFromCardCommand.java +++ b/src/main/java/utils/command/RemoveTagFromCardCommand.java @@ -1,6 +1,7 @@ package utils.command; +import java.util.Optional; import model.Card; import model.CardList; import model.CardSelector; @@ -12,6 +13,7 @@ import model.TagUUID; import utils.UserInterface; import utils.exceptions.InkaException; +import utils.exceptions.LongTagNameException; import utils.exceptions.TagNotInCardException; import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; @@ -36,7 +38,11 @@ public RemoveTagFromCardCommand(TagSelector tagSelector, CardSelector cardSelect * @param tagToDelete The target tag that is to be deleted from the Card */ private void removeTagFromCard(Card cardAffected, Tag tagToDelete) - throws TagNotInCardException { + throws TagNotInCardException, LongTagNameException { + + if (tagToDelete.getTagName().length() > 50) { + throw new LongTagNameException(); + } if (!tagToDelete.cardIsInTag(cardAffected.getUuid())) { throw new TagNotInCardException(); diff --git a/src/main/java/utils/exceptions/LongTagNameException.java b/src/main/java/utils/exceptions/LongTagNameException.java new file mode 100644 index 0000000000..da38a34e21 --- /dev/null +++ b/src/main/java/utils/exceptions/LongTagNameException.java @@ -0,0 +1,9 @@ +package utils.exceptions; + +public class LongTagNameException extends InkaException { + + public LongTagNameException() { + super("Tag name specified is too long."); + } +} + From 91c1cadf41bc1888597e3054d3eac32626d7b1f0 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 13:42:15 +0800 Subject: [PATCH 211/311] test: unit test for long tag name, missing card --- .../command/RemoveTagFromCardCommand.java | 13 ++- src/test/java/model/LogicTest.java | 94 ++++++++++++++++++- 2 files changed, 101 insertions(+), 6 deletions(-) diff --git a/src/main/java/utils/command/RemoveTagFromCardCommand.java b/src/main/java/utils/command/RemoveTagFromCardCommand.java index 46984d89a4..b0714331e6 100644 --- a/src/main/java/utils/command/RemoveTagFromCardCommand.java +++ b/src/main/java/utils/command/RemoveTagFromCardCommand.java @@ -14,6 +14,7 @@ import utils.UserInterface; import utils.exceptions.InkaException; import utils.exceptions.LongTagNameException; +import utils.exceptions.TagNotFoundException; import utils.exceptions.TagNotInCardException; import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; @@ -38,13 +39,15 @@ public RemoveTagFromCardCommand(TagSelector tagSelector, CardSelector cardSelect * @param tagToDelete The target tag that is to be deleted from the Card */ private void removeTagFromCard(Card cardAffected, Tag tagToDelete) - throws TagNotInCardException, LongTagNameException { + throws TagNotInCardException, LongTagNameException, TagNotFoundException { - if (tagToDelete.getTagName().length() > 50) { - throw new LongTagNameException(); - } + Optional tagName = tagSelector.getTagName(); - if (!tagToDelete.cardIsInTag(cardAffected.getUuid())) { + if (tagName.get().length() > 50) { + throw new LongTagNameException(); + } else if (tagToDelete == null) { + throw new TagNotFoundException(); + } else if (!tagToDelete.cardIsInTag(cardAffected.getUuid())) { throw new TagNotInCardException(); } diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index ad5557511c..6b18445d03 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -1,5 +1,6 @@ package model; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; import org.junit.jupiter.api.BeforeEach; @@ -18,8 +19,11 @@ import utils.command.RemoveCardFromDeckCommand; import utils.command.RemoveTagFromCardCommand; import utils.command.RemoveTagFromDeckCommand; +import utils.exceptions.CardInTagException; +import utils.exceptions.CardNotFoundException; import utils.exceptions.CardNotInDeck; import utils.exceptions.InkaException; +import utils.exceptions.LongTagNameException; import utils.exceptions.TagNeverWasInDeck; import utils.parser.Parser; import utils.storage.FakeStorage; @@ -193,11 +197,99 @@ public void logic_addByCardUUIDDeleteByTag() throws InkaException { () -> parseAndExecute("deck delete -d testDeck -t testTag", RemoveTagFromDeckCommand.class), "Tag not added to deck"); - // Card should remain in Deck assert deckList.get(0).getCardsSet().size() == 1; } + @Test + public void logic_tagExistingTag() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + // Create tag + parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); + + final String TAG_IN_CARD_STR = "Card is already a part of the Tag"; + + // Create tag with long name + try { + parseAndExecute( + "card tag -t testTag -i 1", + AddCardToTagCommand.class); + } catch (CardInTagException e) { + assertEquals(e.getUiMessage(), TAG_IN_CARD_STR); + } + } + + @Test + public void logic_tagMissingCard() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + final String MISSING_CARD_STR = "Card cannot be found"; + + //tag non-existent card + try { + parseAndExecute( + "card tag -t testTag -i 100", + AddCardToTagCommand.class); + } catch (CardNotFoundException e) { + assertEquals(e.getUiMessage(), MISSING_CARD_STR); + } + } + + @Test + public void logic_untagMissingCard() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + final String MISSING_CARD_STR = "Card cannot be found"; + + //Untag a non-existent card + try { + parseAndExecute( + "card untag -t testTag -i 100", + RemoveTagFromCardCommand.class); + } catch (CardNotFoundException e) { + assertEquals(e.getUiMessage(), MISSING_CARD_STR); + } + } + + @Test + public void logic_untagLongName() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + final String LONG_TAGNAME_EXCEPTION_STR = "Tag name specified is too long."; + + // Create tag with long name + try { + parseAndExecute( + "card untag -t " + + + "jghsjhgshdkhsdjkghsdjksghsjghsjzkghjsdghjdszjsdzhgjskdghghjsdhgsdjhgjsddsjkghsdjskdhgjdsghjkghdhgsdjkghjkhgdsjghjhgjkzshgjshzgjszhguisghsdghsizghzsjghgsezgsgsg -i 1", + RemoveTagFromCardCommand.class); + } catch (LongTagNameException e) { + assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); + } + } + + @Test + public void logic_tagLongName() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + final String LONG_TAGNAME_EXCEPTION_STR = "Tag name specified is too long."; + + // Create tag with long name + try { + parseAndExecute( + "card tag -t jghsjhgshdkhsdjkghsdjksghsjghsjzkghjsdghjdszjsdzhgjskdghghjsdhgsdjhgjsddsjkghsdjskdhgjdsghjkghdhgsdjkghjkhgdsjghjhgjkzshgjshzgjszhguisghsdghsizghzsjghgsezgsgsg -i 1", + AddCardToTagCommand.class); + } catch (LongTagNameException e) { + assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); + } + } + @Test public void logic_tagAndUntag() throws InkaException { // Create card From 6e928da7c5e0ed063ce729d050355f3d65fc205a Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 13:59:33 +0800 Subject: [PATCH 212/311] test: more unit test for long tag name --- .../java/utils/command/DeleteTagCommand.java | 23 ++++--- .../utils/command/EditTagNameCommand.java | 8 ++- .../command/ListCardsUnderTagCommand.java | 9 ++- .../command/RemoveTagFromDeckCommand.java | 16 ++++- .../exceptions/LongDeckNameException.java | 8 +++ src/test/java/model/LogicTest.java | 66 +++++++++++++++++++ 6 files changed, 114 insertions(+), 16 deletions(-) create mode 100644 src/main/java/utils/exceptions/LongDeckNameException.java diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index eba49a5261..1b29cb0ebc 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -1,5 +1,6 @@ package utils.command; +import java.util.Optional; import model.Card; import model.CardList; import model.CardUUID; @@ -11,6 +12,7 @@ import model.TagSelector; import utils.UserInterface; import utils.exceptions.InkaException; +import utils.exceptions.LongTagNameException; import utils.exceptions.TagNotFoundException; import utils.storage.IDataStorage; @@ -25,14 +27,9 @@ public DeleteTagCommand(TagSelector tagSelector) { * Remove the tagName tag from the tagList and all the cards that currently have the tagName tag. * * @param cardList The cardList from which to look for the cards with tagName tag. - * @param tagList The tagList from which to delete the tagName tag. * @param ui The userInterface to print the success of removal of the tag from the cards. */ - private void removeTagFromCards(CardList cardList, TagList tagList, UserInterface ui) throws InkaException { - Tag tagToDelete = tagList.findTag(tagSelector); - if (tagToDelete == null) { - throw new TagNotFoundException(); - } + private void removeTagFromCards(CardList cardList, UserInterface ui, Tag tagToDelete) throws InkaException { //for each card whose uuid is listed under the tag, remove the tag uuid from that card if (!tagToDelete.cardEmpty()) { @@ -44,8 +41,7 @@ private void removeTagFromCards(CardList cardList, TagList tagList, UserInterfac } } - private void removeTagsFromDecks(DeckList deckList, TagList tagList) throws TagNotFoundException { - Tag tagToDelete = tagList.findTag(tagSelector); + private void removeTagsFromDecks(DeckList deckList, Tag tagToDelete) throws TagNotFoundException { for (DeckUUID deckUUID : tagToDelete.getDecks()) { Deck deckToDeleteTagFrom = deckList.findDeckFromUUID(deckUUID); @@ -56,13 +52,20 @@ private void removeTagsFromDecks(DeckList deckList, TagList tagList) throws TagN @Override public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { + + Optional tagName = tagSelector.getTagName(); + + if (tagName.get().length() > 50) { + throw new LongTagNameException(); + } + Tag tagToDelete = tagList.findTag(tagSelector); if (tagToDelete == null) { throw new TagNotFoundException(); } - removeTagFromCards(cardList, tagList, ui); - removeTagsFromDecks(deckList, tagList); + removeTagFromCards(cardList, ui, tagToDelete); + removeTagsFromDecks(deckList, tagToDelete); tagList.delete(tagSelector); ui.printRemoveTagFromTagList(tagToDelete.getUUID()); diff --git a/src/main/java/utils/command/EditTagNameCommand.java b/src/main/java/utils/command/EditTagNameCommand.java index 03fbc2e4bf..328e1cdc40 100644 --- a/src/main/java/utils/command/EditTagNameCommand.java +++ b/src/main/java/utils/command/EditTagNameCommand.java @@ -6,6 +6,7 @@ import model.TagList; import utils.UserInterface; import utils.exceptions.InkaException; +import utils.exceptions.LongTagNameException; import utils.exceptions.TagNotFoundException; import utils.storage.IDataStorage; @@ -19,8 +20,13 @@ public EditTagNameCommand(String oldTagName, String newTagName) { } @Override - public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { + + if (oldTagName.length() > 50 || newTagName.length() > 50) { + throw new LongTagNameException(); + } + Tag tag = tagList.findTagFromName(oldTagName); if (tag == null) { throw new TagNotFoundException(); diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java index e6142e1306..9797c768e8 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -1,6 +1,7 @@ package utils.command; import java.util.ArrayList; +import java.util.Optional; import model.Card; import model.CardList; import model.CardUUID; @@ -10,6 +11,7 @@ import model.TagSelector; import utils.UserInterface; import utils.exceptions.InkaException; +import utils.exceptions.LongTagNameException; import utils.exceptions.TagNotFoundException; import utils.storage.IDataStorage; @@ -46,9 +48,12 @@ private CardList findCardsUnderTag(CardList cardList, Tag foundTag) throws InkaE @Override public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { - Tag foundTag = tagList.findTag(tagSelector); - if (foundTag == null) { + Optional tagName = tagSelector.getTagName(); + + if (tagName.get().length() > 50) { + throw new LongTagNameException(); + } else if (foundTag == null) { throw new TagNotFoundException(); } CardList foundCardList = findCardsUnderTag(cardList, foundTag); diff --git a/src/main/java/utils/command/RemoveTagFromDeckCommand.java b/src/main/java/utils/command/RemoveTagFromDeckCommand.java index df5f59b1cd..aa5347ee48 100644 --- a/src/main/java/utils/command/RemoveTagFromDeckCommand.java +++ b/src/main/java/utils/command/RemoveTagFromDeckCommand.java @@ -1,6 +1,7 @@ package utils.command; import java.util.ArrayList; +import java.util.Optional; import model.CardList; import model.Deck; import model.DeckList; @@ -11,6 +12,8 @@ import utils.UserInterface; import utils.exceptions.DeckNotFoundException; import utils.exceptions.InkaException; +import utils.exceptions.LongDeckNameException; +import utils.exceptions.LongTagNameException; import utils.exceptions.TagNeverWasInDeck; import utils.exceptions.TagNotFoundException; import utils.exceptions.UUIDWrongFormatException; @@ -31,16 +34,24 @@ public RemoveTagFromDeckCommand(TagSelector tagSelector, String deckName) throws public void removeTagFromDeck(DeckList deckList, TagList tagList, String deckName, TagSelector tagSelector) throws InkaException { + Tag tagToBeDeleted = tagList.findTag(tagSelector); - if (tagToBeDeleted == null) { + Optional tagName = tagSelector.getTagName(); + + if (tagName.get().length() > 50) { + throw new LongTagNameException(); + } else if (tagToBeDeleted == null) { throw new TagNotFoundException(); } Deck deck = deckList.findDeckFromName(deckName); - if (deck == null) { + if (deckName.length() > 50) { + throw new LongDeckNameException(); + } else if (deck == null) { throw new DeckNotFoundException(); } + ArrayList deckTagList = deck.getTagsUUID(); boolean wasTagInDeck = deckTagList.removeIf(tag -> tag.equals(tagToBeDeleted.getUUID())); if (!wasTagInDeck) { @@ -48,7 +59,6 @@ public void removeTagFromDeck(DeckList deckList, TagList tagList, String deckNam } deck.removeTaggedCardsMap(tagToBeDeleted.getUUID(), tagList); deck.setTags(deckTagList); - } @Override diff --git a/src/main/java/utils/exceptions/LongDeckNameException.java b/src/main/java/utils/exceptions/LongDeckNameException.java new file mode 100644 index 0000000000..d993157eb9 --- /dev/null +++ b/src/main/java/utils/exceptions/LongDeckNameException.java @@ -0,0 +1,8 @@ +package utils.exceptions; + +public class LongDeckNameException extends InkaException { + + public LongDeckNameException() { + super("Deck name specified is too long."); + } +} diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index 6b18445d03..6e7141f401 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -16,6 +16,7 @@ import utils.command.DeleteTagCommand; import utils.command.EditDeckNameCommand; import utils.command.EditTagNameCommand; +import utils.command.ListCardsUnderTagCommand; import utils.command.RemoveCardFromDeckCommand; import utils.command.RemoveTagFromCardCommand; import utils.command.RemoveTagFromDeckCommand; @@ -290,6 +291,71 @@ public void logic_tagLongName() throws InkaException { } } + @Test + public void logic_editTagLongName() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + // Create tag + parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); + + final String LONG_TAGNAME_EXCEPTION_STR = "Tag name specified is too long."; + + // Create tag with long name + try { + parseAndExecute( + "tag edit -o ahfahfgafgasehyfgeduhsgfuyhghfusdghfhgfsdhsjhgfhsgfhjsgfsjhfghsfsgfsfs -n " + + "fgeshjfgsydfgsduyysfgydfgsyufgsyufgsyufgsdyufgsyufgsyuhfgsyufsgfsgyfsgfys", + EditTagNameCommand.class); + } catch (LongTagNameException e) { + assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); + } + } + + @Test + public void logic_deleteTagLongName() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + // Create tag + parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); + + final String LONG_TAGNAME_EXCEPTION_STR = "Tag name specified is too long."; + + // Create tag with long name + try { + parseAndExecute( + "tag delete -t " + + + "gsjhgskghsjkiughkghsighszghzsghzghsgiuhohzsdiughzoughidogjhzogizsjghzioghjzsdioggjsiokgjgiogz", + DeleteTagCommand.class); + } catch (LongTagNameException e) { + assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); + } + } + + @Test + public void logic_listCardsUnderTagLongName() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + // Create tag + parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); + + final String LONG_TAGNAME_EXCEPTION_STR = "Tag name specified is too long."; + + // Create tag with long name + try { + parseAndExecute( + "tag list -t " + + + "gsjhgskghsjkiughkghsighszghzsghzghsgiuhohzsdiughzoughidogjhzogizsjghzioghjzsdioggjsiokgjgiogz", + ListCardsUnderTagCommand.class); + } catch (LongTagNameException e) { + assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); + } + } + @Test public void logic_tagAndUntag() throws InkaException { // Create card From 666b5c412b35745f4bc85424a3569bd8c82b540a Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 14:03:34 +0800 Subject: [PATCH 213/311] feat : add long deck name exception checking --- .../java/utils/command/AddTagToDeckCommand.java | 13 +++++++++++-- .../java/utils/command/DeleteDeckCommand.java | 15 ++++++++++----- .../java/utils/command/EditDeckNameCommand.java | 11 ++++++++--- .../utils/command/ListCardsUnderDeckCommand.java | 9 +++++++-- .../utils/command/ListTagsUnderDeckCommand.java | 7 ++++++- .../utils/command/RemoveCardFromDeckCommand.java | 8 ++++++-- src/main/java/utils/command/RunCommand.java | 6 +++++- 7 files changed, 53 insertions(+), 16 deletions(-) diff --git a/src/main/java/utils/command/AddTagToDeckCommand.java b/src/main/java/utils/command/AddTagToDeckCommand.java index 06e2f2f2d8..6b8e70277f 100644 --- a/src/main/java/utils/command/AddTagToDeckCommand.java +++ b/src/main/java/utils/command/AddTagToDeckCommand.java @@ -1,5 +1,6 @@ package utils.command; +import java.util.Optional; import model.CardList; import model.Deck; import model.DeckList; @@ -10,6 +11,8 @@ import utils.UserInterface; import utils.exceptions.CreateTagBeforeAddingToDeck; import utils.exceptions.InkaException; +import utils.exceptions.LongDeckNameException; +import utils.exceptions.LongTagNameException; import utils.exceptions.TagInDeckException; import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; @@ -29,15 +32,21 @@ public AddTagToDeckCommand(String deckName, TagSelector tagSelector) throws Inka } private void addTagToDeck(DeckList deckList, TagList tagList, UserInterface ui) throws InkaException { + Tag tagToAdd = tagList.findTag(tagSelector); + Optional tagName = tagSelector.getTagName(); - if (tagToAdd == null) { + if (tagName.get().length() > 50) { + throw new LongTagNameException(); + } else if (tagToAdd == null) { // exception here throw new CreateTagBeforeAddingToDeck(); } Deck deckToAdd = deckList.findDeckFromName(deckName); - if (deckToAdd == null) { + if (deckName.length() > 50) { + throw new LongDeckNameException(); + } else if (deckToAdd == null) { ui.printDeckCreationSuccess(); deckToAdd = new Deck(deckName, tagToAdd.getUUID()); deckList.addDeck(deckToAdd); diff --git a/src/main/java/utils/command/DeleteDeckCommand.java b/src/main/java/utils/command/DeleteDeckCommand.java index ddbd03e90e..15c16c6caa 100644 --- a/src/main/java/utils/command/DeleteDeckCommand.java +++ b/src/main/java/utils/command/DeleteDeckCommand.java @@ -12,9 +12,10 @@ import utils.UserInterface; import utils.exceptions.DeckNotFoundException; import utils.exceptions.InkaException; +import utils.exceptions.LongDeckNameException; import utils.storage.IDataStorage; -public class DeleteDeckCommand extends Command{ +public class DeleteDeckCommand extends Command { private String deckName; private DeckUUID deckUUID; private TagUUID tagUUID; @@ -23,10 +24,13 @@ public DeleteDeckCommand(String deckName) { this.deckName = deckName; } - private void removeDeckFromCards(CardList cardList ,DeckList deckList, UserInterface userInterface) + private void removeDeckFromCards(CardList cardList, DeckList deckList, UserInterface userInterface) throws InkaException { Deck deck = deckList.findDeckFromName(deckName); - if(deck==null) { + + if (deckName.length() > 50) { + throw new LongDeckNameException(); + } else if (deck == null) { throw new DeckNotFoundException(); } deckUUID = deck.getDeckUUID(); @@ -37,10 +41,10 @@ private void removeDeckFromCards(CardList cardList ,DeckList deckList, UserInter } } - private void removeDeckFromTags(TagList tagList ,DeckList deckList, UserInterface userInterface) + private void removeDeckFromTags(TagList tagList, DeckList deckList, UserInterface userInterface) throws InkaException { Deck deck = deckList.findDeckFromName(deckName); - if(deck==null) { + if (deck == null) { throw new DeckNotFoundException(); } deckUUID = deck.getDeckUUID(); @@ -50,6 +54,7 @@ private void removeDeckFromTags(TagList tagList ,DeckList deckList, UserInterfac userInterface.printRemoveDeckFromTag(affectedTag.getUUID(), deckUUID); } } + @Override public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { diff --git a/src/main/java/utils/command/EditDeckNameCommand.java b/src/main/java/utils/command/EditDeckNameCommand.java index 733016f5a9..903f7d47f5 100644 --- a/src/main/java/utils/command/EditDeckNameCommand.java +++ b/src/main/java/utils/command/EditDeckNameCommand.java @@ -6,10 +6,11 @@ import utils.UserInterface; import utils.exceptions.DeckNotFoundException; import utils.exceptions.InkaException; +import utils.exceptions.LongDeckNameException; import utils.storage.IDataStorage; import model.Deck; -public class EditDeckNameCommand extends Command{ +public class EditDeckNameCommand extends Command { private String oldDeckName; private String newDeckName; @@ -19,10 +20,14 @@ public EditDeckNameCommand(String oldDeckName, String newDeckName) { } @Override - public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { + Deck deck = deckList.findDeckFromName(oldDeckName); - if (deck == null) { + + if (oldDeckName.length() > 50 || newDeckName.length() > 50) { + throw new LongDeckNameException(); + } else if (deck == null) { throw new DeckNotFoundException(); } diff --git a/src/main/java/utils/command/ListCardsUnderDeckCommand.java b/src/main/java/utils/command/ListCardsUnderDeckCommand.java index b5328595f0..80e446731b 100644 --- a/src/main/java/utils/command/ListCardsUnderDeckCommand.java +++ b/src/main/java/utils/command/ListCardsUnderDeckCommand.java @@ -10,9 +10,10 @@ import utils.UserInterface; import utils.exceptions.DeckNotFoundException; import utils.exceptions.InkaException; +import utils.exceptions.LongDeckNameException; import utils.storage.IDataStorage; -public class ListCardsUnderDeckCommand extends Command{ +public class ListCardsUnderDeckCommand extends Command { private String deckName; @@ -22,9 +23,13 @@ public ListCardsUnderDeckCommand(String deckName) { private CardList findCardsUnderDeck(CardList cardList, DeckList deckList) throws InkaException { Deck foundDeck = deckList.findDeckFromName(deckName); - if(foundDeck==null) { + + if (deckName.length() > 50) { + throw new LongDeckNameException(); + } else if (foundDeck == null) { throw new DeckNotFoundException(); } + ArrayList cardsUUID = foundDeck.getCardsUUID(); CardList foundCardList = new CardList(); diff --git a/src/main/java/utils/command/ListTagsUnderDeckCommand.java b/src/main/java/utils/command/ListTagsUnderDeckCommand.java index aa7220c3b2..799d0608ff 100644 --- a/src/main/java/utils/command/ListTagsUnderDeckCommand.java +++ b/src/main/java/utils/command/ListTagsUnderDeckCommand.java @@ -10,6 +10,7 @@ import utils.UserInterface; import utils.exceptions.DeckNotFoundException; import utils.exceptions.InkaException; +import utils.exceptions.LongDeckNameException; import utils.storage.IDataStorage; public class ListTagsUnderDeckCommand extends Command { @@ -21,7 +22,10 @@ public ListTagsUnderDeckCommand(String deckName) { private TagList findTagsUnderDeck(TagList tagList, DeckList deckList) throws InkaException { Deck foundDeck = deckList.findDeckFromName(deckName); - if(foundDeck==null) { + + if (deckName.length() > 50) { + throw new LongDeckNameException(); + } else if (foundDeck == null) { throw new DeckNotFoundException(); } ArrayList tagUUIDS = foundDeck.getTagsUUID(); @@ -36,6 +40,7 @@ private TagList findTagsUnderDeck(TagList tagList, DeckList deckList) throws Ink } return foundTagList; } + @Override public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { diff --git a/src/main/java/utils/command/RemoveCardFromDeckCommand.java b/src/main/java/utils/command/RemoveCardFromDeckCommand.java index 1225f094a6..6fbf7fb1b3 100644 --- a/src/main/java/utils/command/RemoveCardFromDeckCommand.java +++ b/src/main/java/utils/command/RemoveCardFromDeckCommand.java @@ -12,6 +12,7 @@ import utils.exceptions.CardNotInDeck; import utils.exceptions.DeckNotFoundException; import utils.exceptions.InkaException; +import utils.exceptions.LongDeckNameException; import utils.exceptions.UUIDWrongFormatException; import utils.storage.IDataStorage; @@ -33,7 +34,10 @@ public RemoveCardFromDeckCommand(String cardUUID, String deckName) throws InkaEx public void removeCardFromDeck(DeckList deckList, String deckName, CardUUID cardUUID) throws InkaException { Deck deck = deckList.findDeckFromName(deckName); - if (deck == null) { + + if (deckName.length() > 50) { + throw new LongDeckNameException(); + } else if (deck == null) { throw new DeckNotFoundException(); } //This is only for isolated cards, not for the cards that are tagged @@ -42,7 +46,7 @@ public void removeCardFromDeck(DeckList deckList, String deckName, CardUUID card boolean wasCardInDeck = deckCardList.removeIf(card -> card.equals(cardUUID)); if (wasCardInDeck == false) { throw new CardNotInDeck(); - } else if(!deck.cardIsInMap(cardUUID)) { // if the card does not exist under any tag + } else if (!deck.cardIsInMap(cardUUID)) { // if the card does not exist under any tag deckCardSet.remove(cardUUID); deck.setCardsSet(deckCardSet); } diff --git a/src/main/java/utils/command/RunCommand.java b/src/main/java/utils/command/RunCommand.java index ce376ad0e8..b1aefa056e 100644 --- a/src/main/java/utils/command/RunCommand.java +++ b/src/main/java/utils/command/RunCommand.java @@ -11,6 +11,7 @@ import utils.exceptions.DeckNotFoundException; import utils.exceptions.EmptyDeckException; import utils.exceptions.InkaException; +import utils.exceptions.LongDeckNameException; import utils.storage.IDataStorage; public class RunCommand extends Command { @@ -25,7 +26,10 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI throws InkaException { Scanner in = new Scanner(System.in); Deck deck = deckList.findDeckFromName(deckName); - if (deck == null) { + + if (deckName.length() > 50) { + throw new LongDeckNameException(); + } else if (deck == null) { throw new DeckNotFoundException(); } boolean isExit = false; From 2b633f769becda20600fc21b8125dcd83bafce6a Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 14:07:44 +0800 Subject: [PATCH 214/311] test : unit test for deck long name --- src/test/java/model/LogicTest.java | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index 6e7141f401..bf79787cbc 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -24,6 +24,7 @@ import utils.exceptions.CardNotFoundException; import utils.exceptions.CardNotInDeck; import utils.exceptions.InkaException; +import utils.exceptions.LongDeckNameException; import utils.exceptions.LongTagNameException; import utils.exceptions.TagNeverWasInDeck; import utils.parser.Parser; @@ -356,6 +357,40 @@ public void logic_listCardsUnderTagLongName() throws InkaException { } } + @Test + public void logic_AddDeckLongDeckName() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + final String LONG_DECK_NAME_EXCEPTION_STR = "Deck name specified is too long."; + + // Create tag with long name + try { + // Create tag + parseAndExecute("card deck -d testDecksetsetsettsetststsststtstststststststststtstststshrhhsdrhdhsdhs -i 1", + AddCardToDeckCommand.class); + } catch (LongDeckNameException e) { + assertEquals(e.getUiMessage(), LONG_DECK_NAME_EXCEPTION_STR); + } + } + + @Test + public void logic_DeleteDeckLongDeckName() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + final String LONG_DECK_NAME_EXCEPTION_STR = "Deck name specified is too long."; + + // Create tag with long name + try { + // Create tag + parseAndExecute("deck delete -d gjshguhsuigshuighzsduighzuighyzuighzughzughzughzughzughzugzhgugzug", + DeleteDeckCommand.class); + } catch (LongDeckNameException e) { + assertEquals(e.getUiMessage(), LONG_DECK_NAME_EXCEPTION_STR); + } + } + @Test public void logic_tagAndUntag() throws InkaException { // Create card From 1d5f31c5b1a4a01fd23661b2f5c53c7ecb112802 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 14:18:58 +0800 Subject: [PATCH 215/311] test: more unit test for deck long name --- .../command/ListTagsUnderDeckCommand.java | 4 +-- src/test/java/model/LogicTest.java | 25 +++++++++++++++++-- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/src/main/java/utils/command/ListTagsUnderDeckCommand.java b/src/main/java/utils/command/ListTagsUnderDeckCommand.java index 799d0608ff..51fcd9746a 100644 --- a/src/main/java/utils/command/ListTagsUnderDeckCommand.java +++ b/src/main/java/utils/command/ListTagsUnderDeckCommand.java @@ -23,9 +23,7 @@ public ListTagsUnderDeckCommand(String deckName) { private TagList findTagsUnderDeck(TagList tagList, DeckList deckList) throws InkaException { Deck foundDeck = deckList.findDeckFromName(deckName); - if (deckName.length() > 50) { - throw new LongDeckNameException(); - } else if (foundDeck == null) { + if (foundDeck == null) { throw new DeckNotFoundException(); } ArrayList tagUUIDS = foundDeck.getTagsUUID(); diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index bf79787cbc..97219ac551 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -17,6 +17,7 @@ import utils.command.EditDeckNameCommand; import utils.command.EditTagNameCommand; import utils.command.ListCardsUnderTagCommand; +import utils.command.ListTagsUnderDeckCommand; import utils.command.RemoveCardFromDeckCommand; import utils.command.RemoveTagFromCardCommand; import utils.command.RemoveTagFromDeckCommand; @@ -381,9 +382,8 @@ public void logic_DeleteDeckLongDeckName() throws InkaException { final String LONG_DECK_NAME_EXCEPTION_STR = "Deck name specified is too long."; - // Create tag with long name try { - // Create tag + //delete deck with long name parseAndExecute("deck delete -d gjshguhsuigshuighzsduighzuighyzuighzughzughzughzughzughzugzhgugzug", DeleteDeckCommand.class); } catch (LongDeckNameException e) { @@ -391,6 +391,27 @@ public void logic_DeleteDeckLongDeckName() throws InkaException { } } + @Test + public void logic_editDeckLongName() throws InkaException { + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + + // Create tag + parseAndExecute("card deck -d deckTest -i 1", AddCardToDeckCommand.class); + + final String LONG_DECK_NAME_EXCEPTION_STR = "Deck name specified is too long."; + + // Edit deck with long name + try { + parseAndExecute( + "deck edit -o ahfahfgafgasehyfgeduhsgfuyhghfusdghfhgfsdhsjhgfhsgfhjsgfsjhfghsfsgfsfs -n " + + "fgeshjfgsydfgsduyysfgydfgsyufgsyufgsyufgsdyufgsyufgsyuhfgsyufsgfsgyfsgfys", + EditDeckNameCommand.class); + } catch (LongDeckNameException e) { + assertEquals(e.getUiMessage(), LONG_DECK_NAME_EXCEPTION_STR); + } + } + @Test public void logic_tagAndUntag() throws InkaException { // Create card From cb55767aa1c3fd5defe41f7474be640d50268775 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 14:47:08 +0800 Subject: [PATCH 216/311] docs : finish up tag feature in UG --- .savedata_backup.json | 15 --- docs/UserGuide.md | 105 +++++++++++++----- savedata.json | 15 --- .../utils/command/AddCardToDeckCommand.java | 11 +- .../utils/command/AddCardToTagCommand.java | 2 +- .../utils/command/AddTagToDeckCommand.java | 2 +- .../java/utils/command/DeleteTagCommand.java | 2 +- .../command/ListCardsUnderTagCommand.java | 2 +- .../command/RemoveTagFromCardCommand.java | 2 +- .../command/RemoveTagFromDeckCommand.java | 2 +- 10 files changed, 91 insertions(+), 67 deletions(-) diff --git a/.savedata_backup.json b/.savedata_backup.json index 177909a44e..313d98d0aa 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -101,18 +101,6 @@ } ], "decks": [] - }, - { - "uuid": { - "uuid": "96dfa96a-a751-47ff-b6e3-bafdc25b202a" - }, - "tagName": "ghsdgjuzshgujzshgzihgsujighszjhgzusjhghuksghhgfzfujghfuzidhgfzghfdihgbfuihgfzughfzujighfzuighfighufhgfuighfzuighfzughfzuighuglhfzghfzughzguifhguz", - "cards": [ - { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" - } - ], - "decks": [] } ], "cards": [ @@ -140,9 +128,6 @@ }, { "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" - }, - { - "uuid": "96dfa96a-a751-47ff-b6e3-bafdc25b202a" } ], "decks": [ diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 8203906cd5..c5c6044aa3 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -216,7 +216,7 @@ Otherwise, Inka will just tag the card. - `-c` the UUID of the card to be tagged - `-i` the index of the card to be tagged -- `-t` the name of the tag ***(no whitespaces allowed)*** +- `-t` the name of the tag ***(no whitespaces allowed), must not*** exceed 50 characters Users can refer to this [section](#usage-of-flags) to recap on how the flag works. @@ -244,7 +244,7 @@ tag index can be found in the later section from `tag list`. - `-c` the UUID of the card to be untagged - `-i` the index of the card to be untagged -- `-t` the name of the tag to be removed ***(no whitespaces allowed)*** +- `-t` the name of the tag to be removed ***(no whitespaces allowed)***, ***must not*** exceed 50 characters - `-x` the index of the tag to be removed Users can refer to this [section](#usage-of-flags) to recap on how the flag works. @@ -273,7 +273,7 @@ Otherwise, Inka will just put the card in the deck - `-c` the UUID of the card to be tagged - `-i` the index of the card to be tagged -- `-d` the name of the deck ***(no whitespaces allowed)*** +- `-d` the name of the deck ***(no whitespaces allowed)***, ***must not*** exceed 50 characters Users can refer to this [section](#usage-of-flags) to recap on how the flag works. @@ -340,8 +340,8 @@ in `tag list` and `card view` ***Lists of flags (in any order)*** : -- `-o` the old name of the tag. -- `-n` the new name of the tag +- `-o` the old name of the tag, ***(no whitespaces allowed)***, ***must not*** exceed 50 characters +- `-n` the new name of the tag, ***(no whitespaces allowed)***, ***must not*** exceed 50 characters Users can refer to this [section](#usage-of-flags) to recap on how the flag works. @@ -356,52 +356,103 @@ Sample output : Tag 7a130cd5-8154-4aa7-870f-45d7d92970f9tag name has been changed from CS2113 to CS2113T ``` -### Deleting a tag : `tag delete -t {tagName}` +### Deleting a tag : -Delete an existing tag by name, and remove the tag from all the cards which are previously under it. +`tag delete {-t TAG_NAME | -x TAG_INDEX}` -The flag `t` must ***not*** contain any whitespaces. -and it cannot be empty. +Delete an existing tag by name or by index and delete this tag under all cards that it was previously attached to. -Example of usage : -`tag delete -t CS2113T` +***Lists of flags (in any order)*** : -Sample output : +- `-t` the name of the tag to be deleted, ***(no whitespaces allowed)***, ***must not*** exceed 50 characters +- `-x` the index of the tag to be deleted + +Users can refer to this [section](#usage-of-flags) to recap on how the flag works. + +***Example of usage :*** + +`tag delete -t physics` + +`tag delete -x 1` + +***Sample output :*** ``` Successfully removed tag 7a130cd5-8154-4aa7-870f-45d7d92970f9 from card 3b86b31c-6289-4716-a5c6-5afd43b9bbd3 Successfully removed tag 7a130cd5-8154-4aa7-870f-45d7d92970f9 from the tag list. ``` -### List all tags : `tag list` +### List all tags : `tag list [-t TAG_NAME | -x TAG_INDEX]` -List all current tags in the `tagList` +List all current tags in Inka ***(with no flags)***. Users can also list all the cards that fall under this tag by +specifying the +tag either through its tag name or tag index + +***Lists of flags (in any order)*** : + +- [OPTIONAL] `-t` the name of the tag to be deleted, ***(no whitespaces allowed)***, ***must not*** exceed 50 + characters +- [OPTIONAL] `-x` the index of the tag to be deleted + +Users can refer to this [section](#usage-of-flags) to recap on how the flag works. + +***Example of usage :*** -Example of usage : `tag list` -Sample output : +`tag list -t physics` + +`tag list -x 1` + +***Sample output :*** ``` Here is your current list of tags: -1.Tag name : CS2113, tag uuid : 15df3d00-d0ad-48e0-bd28-1f640b74789f -2.Tag name : CS2040C, tag uuid : 5d14dd29-e7e4-4b17-945a-ebf8598d4152 +1.Tag name : physics, tag uuid : c8259fee-125d-4700-829c-0da79eba1e91 +2.Tag name : chem, tag uuid : f0721ed3-f357-4a6d-9d35-cd436ec5d280 +3.Tag name : math, tag uuid : 1631221a-1b21-4481-8113-76b0b6ce6499 +4.Tag name : bio, tag uuid : 6e5dc558-43e4-4039-bb0f-8eca965052f0 ``` -### List cards under tag : `tag list -t ` +``` +Here is a list of your cards : -List all cards under a specific tag indentified by its name. +1. [1ddd9a67-f56c-4914-99c0-2f90c580f0e9] +Qn: What is the formula of force? +Ans: F = ma -Example of usage : -`tag list -t ` +2. [619c689d-395a-4bb8-ab00-6ae9972bb929] +Qn: How efficient is binary search? +Ans: O(log n) +``` -Sample output : +### Put all cards under a tag into a deck + +```tag deck -d DECK_NAME {-t TAG_NAME | -x TAG_INDEX}``` + +This feature conveniently allows users to insert all the cards that fall under the specified tag (either by tag name or +tag index) into a specified deck. + +***Lists of flags (in any order)*** : + +- `-t` the name of the tag to be inserted into the deck, ***(no whitespaces allowed)***, ***must not*** exceed 50 + characters +- `-x` the index of the tag to be inserted into the deck +- `-d` the name of the deck to insert into, ***(no whitespaces allowed)***, ***must not*** exceed 50 + +Users can refer to this [section](#usage-of-flags) to recap on how the flag works. + +***Example of usage :*** + +`tag deck -d midterm -t physics` + +`tag deck -d midterm -x 1` + +***Sample output:*** ``` -Here is a list of your cards : -1.Qn: fdf -Ans: ffffffffff -UUID: 3b86b31c-6289-4716-a5c6-5afd43b9bbd3 +Deck does not exist.. creating a new one +Successfully added tag c8259fee-125d-4700-829c-0da79eba1e91 to deck aef23e46-5327-4ca9-80f2-84e9e8e7dacd ``` --- diff --git a/savedata.json b/savedata.json index 177909a44e..313d98d0aa 100644 --- a/savedata.json +++ b/savedata.json @@ -101,18 +101,6 @@ } ], "decks": [] - }, - { - "uuid": { - "uuid": "96dfa96a-a751-47ff-b6e3-bafdc25b202a" - }, - "tagName": "ghsdgjuzshgujzshgzihgsujighszjhgzusjhghuksghhgfzfujghfuzidhgfzghfdihgbfuihgfzughfzujighfzuighfighufhgfuighfzuighfzughfzuighuglhfzghfzughzguifhguz", - "cards": [ - { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" - } - ], - "decks": [] } ], "cards": [ @@ -140,9 +128,6 @@ }, { "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" - }, - { - "uuid": "96dfa96a-a751-47ff-b6e3-bafdc25b202a" } ], "decks": [ diff --git a/src/main/java/utils/command/AddCardToDeckCommand.java b/src/main/java/utils/command/AddCardToDeckCommand.java index 92fa4a5709..c5ff80383e 100644 --- a/src/main/java/utils/command/AddCardToDeckCommand.java +++ b/src/main/java/utils/command/AddCardToDeckCommand.java @@ -11,6 +11,7 @@ import utils.exceptions.CardInDeckException; import utils.exceptions.CardInDeckUnderTagException; import utils.exceptions.InkaException; +import utils.exceptions.LongDeckNameException; import utils.storage.IDataStorage; public class AddCardToDeckCommand extends Command { @@ -25,18 +26,20 @@ public AddCardToDeckCommand(String deckName, CardSelector cardSelector) { } private void addCardToDeck(DeckList deckList, Card cardToAdd, UserInterface ui) throws InkaException { - assert cardToAdd!=null; + assert cardToAdd != null; Deck deckToAdd = deckList.findDeckFromName(deckName); - if (deckToAdd == null) { + if (deckName.length() > 50) { + throw new LongDeckNameException(); + } else if (deckToAdd == null) { ui.printDeckCreationSuccess(); deckToAdd = new Deck(deckName, cardToAdd.getUuid()); deckToAdd.addCardToSet(cardToAdd.getUuid()); deckList.addDeck(deckToAdd); } else if (deckToAdd.cardIsInDeck(cardToAdd.getUuid())) { throw new CardInDeckException(); - } else if(deckToAdd.cardIsInMap(cardToAdd.getUuid())) { + } else if (deckToAdd.cardIsInMap(cardToAdd.getUuid())) { throw new CardInDeckUnderTagException(); - } else{ + } else { deckToAdd.addCard(cardToAdd.getUuid()); // add card to the array list deckToAdd.addCardToSet(cardToAdd.getUuid()); // add card to the set } diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index b7148f840a..52e9da187b 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -44,7 +44,7 @@ private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) Tag tagToAdd = tagList.findTag(tagSelector); Optional tagName = tagSelector.getTagName(); - if (tagName.get().length() > 50) { + if (tagName.isPresent() && tagName.get().length() > 50) { throw new LongTagNameException(); } else if (tagToAdd == null) { ui.printTagCreationSuccess(tagName.get()); diff --git a/src/main/java/utils/command/AddTagToDeckCommand.java b/src/main/java/utils/command/AddTagToDeckCommand.java index 6b8e70277f..951bdfc0ab 100644 --- a/src/main/java/utils/command/AddTagToDeckCommand.java +++ b/src/main/java/utils/command/AddTagToDeckCommand.java @@ -36,7 +36,7 @@ private void addTagToDeck(DeckList deckList, TagList tagList, UserInterface ui) Tag tagToAdd = tagList.findTag(tagSelector); Optional tagName = tagSelector.getTagName(); - if (tagName.get().length() > 50) { + if (tagName.isPresent() && tagName.get().length() > 50) { throw new LongTagNameException(); } else if (tagToAdd == null) { // exception here diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 1b29cb0ebc..19f0394b50 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -55,7 +55,7 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI Optional tagName = tagSelector.getTagName(); - if (tagName.get().length() > 50) { + if (tagName.isPresent() && tagName.get().length() > 50) { throw new LongTagNameException(); } diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsUnderTagCommand.java index 9797c768e8..2f05e58b4f 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsUnderTagCommand.java @@ -51,7 +51,7 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI Tag foundTag = tagList.findTag(tagSelector); Optional tagName = tagSelector.getTagName(); - if (tagName.get().length() > 50) { + if (tagName.isPresent() && tagName.get().length() > 50) { throw new LongTagNameException(); } else if (foundTag == null) { throw new TagNotFoundException(); diff --git a/src/main/java/utils/command/RemoveTagFromCardCommand.java b/src/main/java/utils/command/RemoveTagFromCardCommand.java index b0714331e6..3aab833e1c 100644 --- a/src/main/java/utils/command/RemoveTagFromCardCommand.java +++ b/src/main/java/utils/command/RemoveTagFromCardCommand.java @@ -43,7 +43,7 @@ private void removeTagFromCard(Card cardAffected, Tag tagToDelete) Optional tagName = tagSelector.getTagName(); - if (tagName.get().length() > 50) { + if (tagName.isPresent() && tagName.get().length() > 50) { throw new LongTagNameException(); } else if (tagToDelete == null) { throw new TagNotFoundException(); diff --git a/src/main/java/utils/command/RemoveTagFromDeckCommand.java b/src/main/java/utils/command/RemoveTagFromDeckCommand.java index aa5347ee48..f6a07a35f8 100644 --- a/src/main/java/utils/command/RemoveTagFromDeckCommand.java +++ b/src/main/java/utils/command/RemoveTagFromDeckCommand.java @@ -38,7 +38,7 @@ public void removeTagFromDeck(DeckList deckList, TagList tagList, String deckNam Tag tagToBeDeleted = tagList.findTag(tagSelector); Optional tagName = tagSelector.getTagName(); - if (tagName.get().length() > 50) { + if (tagName.isPresent() && tagName.get().length() > 50) { throw new LongTagNameException(); } else if (tagToBeDeleted == null) { throw new TagNotFoundException(); From 26a9dec3cdfbe679b26ed29b43f0b9dda504f0c1 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 14:54:54 +0800 Subject: [PATCH 217/311] docs : fix command syntax documentation --- docs/team/mitchmalvin1.md | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/docs/team/mitchmalvin1.md b/docs/team/mitchmalvin1.md index ecf68c2b5b..3a637bdb01 100644 --- a/docs/team/mitchmalvin1.md +++ b/docs/team/mitchmalvin1.md @@ -20,12 +20,12 @@ experience. This feature consists of a few subfeatures : -- `card tag {-c CARDUUID | -t TAGNAME} ` to attach a tag onto a Card -- `card untag {-c CaRDUUID | -t TAGNAME}` to remove the tag from a Card -- `tag edit -o OLDNAME -n NEWNAME` to edit the name of the Tag +- `card tag {-c CARD_UUID | -i CARD_INDEX} -t TAG_NAME ` to attach a tag onto a Card +- `card untag {-c CARDUUID | -i CARD_INDEX} {-t TAGNAME | -x TAG_INDEX}` to remove the tag from a Card +- `tag edit -o OLD_NAME -n NEW_NAME` to edit the name of the Tag - `tag list` to list all the existing tags -- `tag list {-c CARDUUID | -i CARDINDEX}` to list all the Cards that fall under the Tag -- `tag delete {-t TAGNAME}` to remove the Tag from the TagList +- `tag list [-c CARD_UUID | -i CARD_INDEX]` to list all the Cards that fall under the Tag +- `tag delete {-t TAG_NAME | -x TAG_INDEX}` to remove the Tag from the TagList - ***Justification :*** This feature is introduced so that users can identify cards that fall under the same topic such @@ -58,7 +58,7 @@ More specifically, I contributed to the following features : With that in mind, another feature that I implemented is : -`card view {-c CARDUUID | -i CARDINDEX}` +`card view {-c CAR_DUUID | -i CARD_INDEX}` - ***What it does :*** This feature allows users to view what are the `tags` and `decks` that the card is currently associated with. It makes @@ -84,6 +84,7 @@ found [here.](https://nus-cs2113-ay2223s2.github.io/tp-dashboard/?search=&sort=g - Fixed bugs raised during PE-dry-run such as the crucial `InvalidUUIDException`, the detailed list of bugs solved can be found in [#150.](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/150) +- Contributed to various exception checking and the unit test to ensure that the exception message is appropriate. - Contributed to the overall architecture of `Inka` such as all the `UUID` classes. - Contributed to the skeleton code in `Inka` so the `tp` can get started. - Set up the [AY2223-S2-CS21113-F10-1](https://github.com/AY2223S2-CS2113-F10-1) organization and @@ -98,13 +99,13 @@ found [here.](https://nus-cs2113-ay2223s2.github.io/tp-dashboard/?search=&sort=g Add documentations for the following features : -1. `card tag {-c CARDUUID | -t TAGNAME} ` -2. `card untag {-c CaRDUUID | -t TAGNAME}` -3. `tag edit -o OLDNAME -n NEWNAME` -4. `tag list` -5. `tag list {-c CARDUUID | -i CARDINDEX}` -6. `tag delete {-t TAGNAME}` -7. `card view {-c CARDUUID | -i CARDINDEX}` +- `card tag {-c CARD_UUID | -i CARD_INDEX} -t TAG_NAME ` to attach a tag onto a Card +- `card untag {-c CARDUUID | -i CARD_INDEX} {-t TAGNAME | -x TAG_INDEX}` to remove the tag from a Card +- `card view {-c CAR_DUUID | -i CARD_INDEX}` to view the card +- `tag edit -o OLD_NAME -n NEW_NAME` to edit the name of the Tag +- `tag list [-c CARD_UUID | -i CARD_INDEX]` to list all the Cards that fall under the Tag +- `tag delete {-t TAG_NAME | -x TAG_INDEX}` to remove the Tag from the TagList +- `tag deck {-t TAG_NAME | -x TAG_INDEX} -d DECK_NAME` to add all the cards that fall under a tag into the dck #### Developer Guide From e5c9171be7823613c0e681427c02352324732637 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 15:02:54 +0800 Subject: [PATCH 218/311] fix : fix checkstyle --- .../utils/command/ListTagsUnderDeckCommand.java | 1 - src/test/java/model/LogicTest.java | 15 +++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/utils/command/ListTagsUnderDeckCommand.java b/src/main/java/utils/command/ListTagsUnderDeckCommand.java index 51fcd9746a..a39792a210 100644 --- a/src/main/java/utils/command/ListTagsUnderDeckCommand.java +++ b/src/main/java/utils/command/ListTagsUnderDeckCommand.java @@ -10,7 +10,6 @@ import utils.UserInterface; import utils.exceptions.DeckNotFoundException; import utils.exceptions.InkaException; -import utils.exceptions.LongDeckNameException; import utils.storage.IDataStorage; public class ListTagsUnderDeckCommand extends Command { diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index 97219ac551..edd3326820 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -17,7 +17,6 @@ import utils.command.EditDeckNameCommand; import utils.command.EditTagNameCommand; import utils.command.ListCardsUnderTagCommand; -import utils.command.ListTagsUnderDeckCommand; import utils.command.RemoveCardFromDeckCommand; import utils.command.RemoveTagFromCardCommand; import utils.command.RemoveTagFromDeckCommand; @@ -269,7 +268,7 @@ public void logic_untagLongName() throws InkaException { parseAndExecute( "card untag -t " + - "jghsjhgshdkhsdjkghsdjksghsjghsjzkghjsdghjdszjsdzhgjskdghghjsdhgsdjhgjsddsjkghsdjskdhgjdsghjkghdhgsdjkghjkhgdsjghjhgjkzshgjshzgjszhguisghsdghsizghzsjghgsezgsgsg -i 1", + "jghsjhgshdkhsdjkghsdjksghsjghsjzkghjsdghjdszjsdzhgjskdghghjsdhgsdjhgjsddsjkghsdjs -i 1", RemoveTagFromCardCommand.class); } catch (LongTagNameException e) { assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); @@ -286,7 +285,7 @@ public void logic_tagLongName() throws InkaException { // Create tag with long name try { parseAndExecute( - "card tag -t jghsjhgshdkhsdjkghsdjksghsjghsjzkghjsdghjdszjsdzhgjskdghghjsdhgsdjhgjsddsjkghsdjskdhgjdsghjkghdhgsdjkghjkhgdsjghjhgjkzshgjshzgjszhguisghsdghsizghzsjghgsezgsgsg -i 1", + "card tag -t jghsjhgshdkhsdjkghsdjksghsjghsjzkghjsdghjdszjsdzhgjskdghghjsdhgsdjhgjsd -i 1", AddCardToTagCommand.class); } catch (LongTagNameException e) { assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); @@ -329,7 +328,7 @@ public void logic_deleteTagLongName() throws InkaException { parseAndExecute( "tag delete -t " + - "gsjhgskghsjkiughkghsighszghzsghzghsgiuhohzsdiughzoughidogjhzogizsjghzioghjzsdioggjsiokgjgiogz", + "gsjhgskghsjkiughkghsighszghzsghzghsgiuhohzsdiughzoughidogjhzogizsjghzioghjzsdioggjsiokgj", DeleteTagCommand.class); } catch (LongTagNameException e) { assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); @@ -351,7 +350,7 @@ public void logic_listCardsUnderTagLongName() throws InkaException { parseAndExecute( "tag list -t " + - "gsjhgskghsjkiughkghsighszghzsghzghsgiuhohzsdiughzoughidogjhzogizsjghzioghjzsdioggjsiokgjgiogz", + "gsjhgskghsjkiughkghsighszghzsghzghsgiuhohzsdiughzoughidogjhzogizsjghzioghjzsdioggjsiokgj", ListCardsUnderTagCommand.class); } catch (LongTagNameException e) { assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); @@ -359,7 +358,7 @@ public void logic_listCardsUnderTagLongName() throws InkaException { } @Test - public void logic_AddDeckLongDeckName() throws InkaException { + public void logic_addDeckLongDeckName() throws InkaException { // Create card parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); @@ -368,7 +367,7 @@ public void logic_AddDeckLongDeckName() throws InkaException { // Create tag with long name try { // Create tag - parseAndExecute("card deck -d testDecksetsetsettsetststsststtstststststststststtstststshrhhsdrhdhsdhs -i 1", + parseAndExecute("card deck -d testDecksetsetsettsetststsststtstststststststststtstststshrhhs -i 1", AddCardToDeckCommand.class); } catch (LongDeckNameException e) { assertEquals(e.getUiMessage(), LONG_DECK_NAME_EXCEPTION_STR); @@ -376,7 +375,7 @@ public void logic_AddDeckLongDeckName() throws InkaException { } @Test - public void logic_DeleteDeckLongDeckName() throws InkaException { + public void logic_deleteDeckLongDeckName() throws InkaException { // Create card parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); From 9c81fafd3b5b504269f99ced0ac4781d8b4c2095 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 15:12:01 +0800 Subject: [PATCH 219/311] ref : change tag and deck display from uuid to name --- src/main/java/utils/UserInterface.java | 36 +++++++++---------- .../utils/command/AddCardToDeckCommand.java | 2 +- .../utils/command/AddCardToTagCommand.java | 2 +- .../utils/command/AddTagToDeckCommand.java | 2 +- .../java/utils/command/DeleteDeckCommand.java | 6 ++-- .../java/utils/command/DeleteTagCommand.java | 4 +-- .../command/RemoveTagFromCardCommand.java | 2 +- .../command/RemoveTagFromDeckCommand.java | 2 +- 8 files changed, 28 insertions(+), 28 deletions(-) diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 1ddceb3f5a..f14a490318 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -151,24 +151,24 @@ public void printDecks(DeckList deckList) { } } - public void printAddTagToCardSuccess(CardUUID cardUUID, TagUUID tagUUID) { - System.out.println("Successfully added tag " + tagUUID + " to card " + cardUUID); + public void printAddTagToCardSuccess(CardUUID cardUUID, String tagName) { + System.out.println("Successfully added tag " + tagName + " to card " + cardUUID); } - public void printAddCardToDeckSuccess(CardUUID cardUUID, DeckUUID deckUUID) { - System.out.println("Successfully added card " + cardUUID + " to deck " + deckUUID); + public void printAddCardToDeckSuccess(CardUUID cardUUID, String deckName) { + System.out.println("Successfully added card " + cardUUID + " to deck " + deckName); } public void printRemoveCardFromDeckSuccess(CardUUID cardUUID, String deckName) { System.out.println("Successfully removed card " + cardUUID + " from deck " + deckName); } - public void printRemoveTagFromDeckSuccess(TagUUID tagUUID, String deckName) { - System.out.println("Successfully removed tag " + tagUUID + " from deck " + deckName); + public void printRemoveTagFromDeckSuccess(String tagName, String deckName) { + System.out.println("Successfully removed tag " + tagName + " from deck " + deckName); } - public void printAddTagToDeckSuccess(TagUUID tagUUID, DeckUUID deckUUID) { - System.out.println("Successfully added tag " + tagUUID + " to deck " + deckUUID); + public void printAddTagToDeckSuccess(String tagName, DeckUUID deckUUID) { + System.out.println("Successfully added tag " + tagName + " to deck " + deckUUID); } public void printTagCreationSuccess(String tagName) { @@ -179,24 +179,24 @@ public void printDeckCreationSuccess() { System.out.println("Deck does not exist.. creating a new one"); } - public void printRemoveTagFromCard(CardUUID cardUUID, TagUUID tagUUID) { - System.out.println("Successfully removed tag " + tagUUID + " from card " + cardUUID); + public void printRemoveTagFromCard(CardUUID cardUUID, String tagName) { + System.out.println("Successfully removed tag " + tagName + " from card " + cardUUID); } - public void printRemoveDeckFromCard(CardUUID cardUUID, DeckUUID deckUUID) { - System.out.println("Successfully removed deck " + deckUUID + " from card " + cardUUID); + public void printRemoveDeckFromCard(CardUUID cardUUID, String deckName) { + System.out.println("Successfully removed deck " + deckName + " from card " + cardUUID); } - public void printRemoveDeckFromTag(TagUUID tagUUID, DeckUUID deckUUID) { - System.out.println("Successfully removed deck " + deckUUID + " from tag " + tagUUID); + public void printRemoveDeckFromTag(String tagName, String deckName) { + System.out.println("Successfully removed deck " + deckName + " from tag " + tagName); } - public void printRemoveTagFromTagList(TagUUID tagUUID) { - System.out.println("Successfully removed tag " + tagUUID + " from the tag list."); + public void printRemoveTagFromTagList(String tagName) { + System.out.println("Successfully removed tag " + tagName + " from the tag list."); } - public void printRemoveDeckFromDeckList(DeckUUID deckUUID) { - System.out.println("Successfully removed deck " + deckUUID + " from the deck list."); + public void printRemoveDeckFromDeckList(String deckName) { + System.out.println("Successfully removed deck " + deckName + " from the deck list."); } public void printEditTagNameSuccess(String oldTagName, Tag tag) { diff --git a/src/main/java/utils/command/AddCardToDeckCommand.java b/src/main/java/utils/command/AddCardToDeckCommand.java index c5ff80383e..f50f1fc116 100644 --- a/src/main/java/utils/command/AddCardToDeckCommand.java +++ b/src/main/java/utils/command/AddCardToDeckCommand.java @@ -56,6 +56,6 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI assert cardToAdd != null; addCardToDeck(deckList, cardToAdd, ui); - ui.printAddCardToDeckSuccess(cardToAdd.getUuid(), deckUUID); + ui.printAddCardToDeckSuccess(cardToAdd.getUuid(), deckName); } } diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 52e9da187b..ce961dace6 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -72,6 +72,6 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI addCardToTag(tagList, cardToAdd, ui); Tag tagToBeAdded = tagList.findTag(tagSelector); - ui.printAddTagToCardSuccess(cardToAdd.getUuid(), tagToBeAdded.getUUID()); + ui.printAddTagToCardSuccess(cardToAdd.getUuid(), tagToBeAdded.getTagName()); } } diff --git a/src/main/java/utils/command/AddTagToDeckCommand.java b/src/main/java/utils/command/AddTagToDeckCommand.java index 951bdfc0ab..dc8ec8ca88 100644 --- a/src/main/java/utils/command/AddTagToDeckCommand.java +++ b/src/main/java/utils/command/AddTagToDeckCommand.java @@ -67,6 +67,6 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI addTagToDeck(deckList, tagList, ui); Tag tagToBeAdded = tagList.findTag(tagSelector); - ui.printAddTagToDeckSuccess(tagToBeAdded.getUUID(), deckUUID); + ui.printAddTagToDeckSuccess(tagToBeAdded.getTagName(), deckUUID); } } diff --git a/src/main/java/utils/command/DeleteDeckCommand.java b/src/main/java/utils/command/DeleteDeckCommand.java index 15c16c6caa..3d06591c03 100644 --- a/src/main/java/utils/command/DeleteDeckCommand.java +++ b/src/main/java/utils/command/DeleteDeckCommand.java @@ -37,7 +37,7 @@ private void removeDeckFromCards(CardList cardList, DeckList deckList, UserInter for (CardUUID cardUUID : deck.getCardsUUID()) { Card affectedCard = cardList.findCardFromUUID(cardUUID); affectedCard.removeDecks(deckUUID); - userInterface.printRemoveDeckFromCard(affectedCard.getUuid(), deckUUID); + userInterface.printRemoveDeckFromCard(affectedCard.getUuid(), deckName); } } @@ -51,7 +51,7 @@ private void removeDeckFromTags(TagList tagList, DeckList deckList, UserInterfac for (TagUUID tgUUID : deck.getTagsUUID()) { Tag affectedTag = tagList.findTagFromUUID(tgUUID); affectedTag.removeDecks(deckUUID); - userInterface.printRemoveDeckFromTag(affectedTag.getUUID(), deckUUID); + userInterface.printRemoveDeckFromTag(affectedTag.getTagName(), deckName); } } @@ -61,6 +61,6 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI removeDeckFromCards(cardList, deckList, ui); removeDeckFromTags(tagList, deckList, ui); deckList.delete(deckName); - ui.printRemoveDeckFromDeckList(deckUUID); + ui.printRemoveDeckFromDeckList(deckName); } } diff --git a/src/main/java/utils/command/DeleteTagCommand.java b/src/main/java/utils/command/DeleteTagCommand.java index 19f0394b50..6aa92362f1 100644 --- a/src/main/java/utils/command/DeleteTagCommand.java +++ b/src/main/java/utils/command/DeleteTagCommand.java @@ -36,7 +36,7 @@ private void removeTagFromCards(CardList cardList, UserInterface ui, Tag tagToDe for (CardUUID cardUUID : tagToDelete.getCardsUUID()) { Card affectedCard = cardList.findCardFromUUID(cardUUID); affectedCard.removeTag(tagToDelete.getUUID()); - ui.printRemoveTagFromCard(affectedCard.getUuid(), tagToDelete.getUUID()); + ui.printRemoveTagFromCard(affectedCard.getUuid(), tagToDelete.getTagName()); } } } @@ -68,6 +68,6 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI removeTagsFromDecks(deckList, tagToDelete); tagList.delete(tagSelector); - ui.printRemoveTagFromTagList(tagToDelete.getUUID()); + ui.printRemoveTagFromTagList(tagToDelete.getTagName()); } } diff --git a/src/main/java/utils/command/RemoveTagFromCardCommand.java b/src/main/java/utils/command/RemoveTagFromCardCommand.java index 3aab833e1c..d2930ff290 100644 --- a/src/main/java/utils/command/RemoveTagFromCardCommand.java +++ b/src/main/java/utils/command/RemoveTagFromCardCommand.java @@ -67,7 +67,7 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI Tag tagToDelete = tagList.findTag(tagSelector); removeTagFromCard(cardAffected, tagToDelete); - ui.printRemoveTagFromCard(cardAffected.getUuid(), tagToDelete.getUUID()); + ui.printRemoveTagFromCard(cardAffected.getUuid(), tagToDelete.getTagName()); } } diff --git a/src/main/java/utils/command/RemoveTagFromDeckCommand.java b/src/main/java/utils/command/RemoveTagFromDeckCommand.java index f6a07a35f8..2d90e76671 100644 --- a/src/main/java/utils/command/RemoveTagFromDeckCommand.java +++ b/src/main/java/utils/command/RemoveTagFromDeckCommand.java @@ -68,6 +68,6 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI assert tagToBeAdded != null; removeTagFromDeck(deckList, tagList, deckName, tagSelector); - ui.printRemoveTagFromDeckSuccess(tagToBeAdded.getUUID(), deckName); + ui.printRemoveTagFromDeckSuccess(tagToBeAdded.getTagName(), deckName); } } From 1cee6d6319cdff353a53bdc7d3063bb33c47d514 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 15:18:57 +0800 Subject: [PATCH 220/311] fix : checkstyle issue --- src/main/java/utils/UserInterface.java | 6 +-- .../utils/command/AddTagToDeckCommand.java | 2 +- src/test/java/model/LogicTest.java | 44 +++++++++---------- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index f14a490318..f0d8d30756 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -7,10 +7,8 @@ import model.CardUUID; import model.Deck; import model.DeckList; -import model.DeckUUID; import model.Tag; import model.TagList; -import model.TagUUID; import utils.enums.StringArt; import utils.exceptions.InkaException; @@ -167,8 +165,8 @@ public void printRemoveTagFromDeckSuccess(String tagName, String deckName) { System.out.println("Successfully removed tag " + tagName + " from deck " + deckName); } - public void printAddTagToDeckSuccess(String tagName, DeckUUID deckUUID) { - System.out.println("Successfully added tag " + tagName + " to deck " + deckUUID); + public void printAddTagToDeckSuccess(String tagName, String deckName) { + System.out.println("Successfully added tag " + tagName + " to deck " + deckName); } public void printTagCreationSuccess(String tagName) { diff --git a/src/main/java/utils/command/AddTagToDeckCommand.java b/src/main/java/utils/command/AddTagToDeckCommand.java index dc8ec8ca88..0bf970df3d 100644 --- a/src/main/java/utils/command/AddTagToDeckCommand.java +++ b/src/main/java/utils/command/AddTagToDeckCommand.java @@ -67,6 +67,6 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI addTagToDeck(deckList, tagList, ui); Tag tagToBeAdded = tagList.findTag(tagSelector); - ui.printAddTagToDeckSuccess(tagToBeAdded.getTagName(), deckUUID); + ui.printAddTagToDeckSuccess(tagToBeAdded.getTagName(), deckName); } } diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index edd3326820..6aa96b4651 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -210,7 +210,7 @@ public void logic_tagExistingTag() throws InkaException { // Create tag parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); - final String TAG_IN_CARD_STR = "Card is already a part of the Tag"; + String tagInCardStr = "Card is already a part of the Tag"; // Create tag with long name try { @@ -218,7 +218,7 @@ public void logic_tagExistingTag() throws InkaException { "card tag -t testTag -i 1", AddCardToTagCommand.class); } catch (CardInTagException e) { - assertEquals(e.getUiMessage(), TAG_IN_CARD_STR); + assertEquals(e.getUiMessage(), tagInCardStr); } } @@ -227,7 +227,7 @@ public void logic_tagMissingCard() throws InkaException { // Create card parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); - final String MISSING_CARD_STR = "Card cannot be found"; + String missingCardStr = "Card cannot be found"; //tag non-existent card try { @@ -235,7 +235,7 @@ public void logic_tagMissingCard() throws InkaException { "card tag -t testTag -i 100", AddCardToTagCommand.class); } catch (CardNotFoundException e) { - assertEquals(e.getUiMessage(), MISSING_CARD_STR); + assertEquals(e.getUiMessage(), missingCardStr); } } @@ -244,7 +244,7 @@ public void logic_untagMissingCard() throws InkaException { // Create card parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); - final String MISSING_CARD_STR = "Card cannot be found"; + String missingCardStr = "Card cannot be found"; //Untag a non-existent card try { @@ -252,7 +252,7 @@ public void logic_untagMissingCard() throws InkaException { "card untag -t testTag -i 100", RemoveTagFromCardCommand.class); } catch (CardNotFoundException e) { - assertEquals(e.getUiMessage(), MISSING_CARD_STR); + assertEquals(e.getUiMessage(), missingCardStr); } } @@ -261,7 +261,7 @@ public void logic_untagLongName() throws InkaException { // Create card parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); - final String LONG_TAGNAME_EXCEPTION_STR = "Tag name specified is too long."; + String longTagNameStr = "Tag name specified is too long."; // Create tag with long name try { @@ -271,7 +271,7 @@ public void logic_untagLongName() throws InkaException { "jghsjhgshdkhsdjkghsdjksghsjghsjzkghjsdghjdszjsdzhgjskdghghjsdhgsdjhgjsddsjkghsdjs -i 1", RemoveTagFromCardCommand.class); } catch (LongTagNameException e) { - assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); + assertEquals(e.getUiMessage(), longTagNameStr); } } @@ -280,7 +280,7 @@ public void logic_tagLongName() throws InkaException { // Create card parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); - final String LONG_TAGNAME_EXCEPTION_STR = "Tag name specified is too long."; + String longTagNameStr = "Tag name specified is too long."; // Create tag with long name try { @@ -288,7 +288,7 @@ public void logic_tagLongName() throws InkaException { "card tag -t jghsjhgshdkhsdjkghsdjksghsjghsjzkghjsdghjdszjsdzhgjskdghghjsdhgsdjhgjsd -i 1", AddCardToTagCommand.class); } catch (LongTagNameException e) { - assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); + assertEquals(e.getUiMessage(), longTagNameStr); } } @@ -300,7 +300,7 @@ public void logic_editTagLongName() throws InkaException { // Create tag parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); - final String LONG_TAGNAME_EXCEPTION_STR = "Tag name specified is too long."; + String longTagNameStr = "Tag name specified is too long."; // Create tag with long name try { @@ -309,7 +309,7 @@ public void logic_editTagLongName() throws InkaException { + "fgeshjfgsydfgsduyysfgydfgsyufgsyufgsyufgsdyufgsyufgsyuhfgsyufsgfsgyfsgfys", EditTagNameCommand.class); } catch (LongTagNameException e) { - assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); + assertEquals(e.getUiMessage(), longTagNameStr); } } @@ -321,7 +321,7 @@ public void logic_deleteTagLongName() throws InkaException { // Create tag parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); - final String LONG_TAGNAME_EXCEPTION_STR = "Tag name specified is too long."; + String longTagNameStr = "Tag name specified is too long."; // Create tag with long name try { @@ -331,7 +331,7 @@ public void logic_deleteTagLongName() throws InkaException { "gsjhgskghsjkiughkghsighszghzsghzghsgiuhohzsdiughzoughidogjhzogizsjghzioghjzsdioggjsiokgj", DeleteTagCommand.class); } catch (LongTagNameException e) { - assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); + assertEquals(e.getUiMessage(), longTagNameStr); } } @@ -343,7 +343,7 @@ public void logic_listCardsUnderTagLongName() throws InkaException { // Create tag parseAndExecute("card tag -t testTag -i 1", AddCardToTagCommand.class); - final String LONG_TAGNAME_EXCEPTION_STR = "Tag name specified is too long."; + String longTagNameStr = "Tag name specified is too long."; // Create tag with long name try { @@ -353,7 +353,7 @@ public void logic_listCardsUnderTagLongName() throws InkaException { "gsjhgskghsjkiughkghsighszghzsghzghsgiuhohzsdiughzoughidogjhzogizsjghzioghjzsdioggjsiokgj", ListCardsUnderTagCommand.class); } catch (LongTagNameException e) { - assertEquals(e.getUiMessage(), LONG_TAGNAME_EXCEPTION_STR); + assertEquals(e.getUiMessage(), longTagNameStr); } } @@ -362,7 +362,7 @@ public void logic_addDeckLongDeckName() throws InkaException { // Create card parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); - final String LONG_DECK_NAME_EXCEPTION_STR = "Deck name specified is too long."; + String longDeckNameStr = "Deck name specified is too long."; // Create tag with long name try { @@ -370,7 +370,7 @@ public void logic_addDeckLongDeckName() throws InkaException { parseAndExecute("card deck -d testDecksetsetsettsetststsststtstststststststststtstststshrhhs -i 1", AddCardToDeckCommand.class); } catch (LongDeckNameException e) { - assertEquals(e.getUiMessage(), LONG_DECK_NAME_EXCEPTION_STR); + assertEquals(e.getUiMessage(), longDeckNameStr); } } @@ -379,14 +379,14 @@ public void logic_deleteDeckLongDeckName() throws InkaException { // Create card parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); - final String LONG_DECK_NAME_EXCEPTION_STR = "Deck name specified is too long."; + String longDeckNameStr = "Deck name specified is too long."; try { //delete deck with long name parseAndExecute("deck delete -d gjshguhsuigshuighzsduighzuighyzuighzughzughzughzughzughzugzhgugzug", DeleteDeckCommand.class); } catch (LongDeckNameException e) { - assertEquals(e.getUiMessage(), LONG_DECK_NAME_EXCEPTION_STR); + assertEquals(e.getUiMessage(), longDeckNameStr); } } @@ -398,7 +398,7 @@ public void logic_editDeckLongName() throws InkaException { // Create tag parseAndExecute("card deck -d deckTest -i 1", AddCardToDeckCommand.class); - final String LONG_DECK_NAME_EXCEPTION_STR = "Deck name specified is too long."; + String longDeckNameStr = "Deck name specified is too long."; // Edit deck with long name try { @@ -407,7 +407,7 @@ public void logic_editDeckLongName() throws InkaException { + "fgeshjfgsydfgsduyysfgydfgsyufgsyufgsyufgsdyufgsyufgsyuhfgsyufsgfsgyfsgfys", EditDeckNameCommand.class); } catch (LongDeckNameException e) { - assertEquals(e.getUiMessage(), LONG_DECK_NAME_EXCEPTION_STR); + assertEquals(e.getUiMessage(), longDeckNameStr); } } From 84964ea3675d0f1a328b5c7b61d04663ef0c9406 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 15:27:19 +0800 Subject: [PATCH 221/311] fix : resolve TA's comments --- src/main/java/model/Card.java | 7 ++++--- src/main/java/utils/UserInterface.java | 2 +- src/main/java/utils/command/EditTagNameCommand.java | 2 +- ...ardsUnderTagCommand.java => ListCardsInTagCommand.java} | 4 ++-- src/main/java/utils/parser/TagKeywordParser.java | 4 ++-- src/test/java/model/LogicTest.java | 4 ++-- src/test/java/utils/parser/TagParserTest.java | 6 +++--- 7 files changed, 15 insertions(+), 14 deletions(-) rename src/main/java/utils/command/{ListCardsUnderTagCommand.java => ListCardsInTagCommand.java} (94%) diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 3d050ac3db..0d59fc4420 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -6,7 +6,7 @@ //to be made into an abstract class containing a few types of Cards later, for now just a single Card will do public class Card { - private CardUUID uuid; //to be made into a hash later + private CardUUID uuid; private String question; private String answer; private ArrayList tags = new ArrayList<>(); @@ -107,13 +107,14 @@ public String toTruncatedString() { boolean isQnTooLong = this.question.length() > 50; boolean isAnsTooLong = this.answer.length() > 50; + String uuidStr = "\t\t[" + this.uuid + "]"; String warningStr = (isQnTooLong || isAnsTooLong) ? "\n\tNote:\tActual question or answer is too long, string truncated" : ""; + String questionStr = isQnTooLong ? this.question.substring(0, 50) : this.question; String answerStr = isAnsTooLong ? this.answer.substring(0, 50) : this.answer; - return "\t\t[" + this.uuid + "]" + - "\n\tQn:\t\t" + questionStr + "\n\tAns:\t" + answerStr + warningStr + "\n"; + return uuidStr + "\n\tQn:\t\t" + questionStr + "\n\tAns:\t" + answerStr + warningStr + "\n"; } } diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index f0d8d30756..45fb693bc5 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -197,7 +197,7 @@ public void printRemoveDeckFromDeckList(String deckName) { System.out.println("Successfully removed deck " + deckName + " from the deck list."); } - public void printEditTagNameSuccess(String oldTagName, Tag tag) { + public void printEditTagName(String oldTagName, Tag tag) { System.out.println( "Tag " + tag.getUUID() + "tag name has been changed from " + oldTagName + " to " + tag.getTagName()); } diff --git a/src/main/java/utils/command/EditTagNameCommand.java b/src/main/java/utils/command/EditTagNameCommand.java index 328e1cdc40..9dd13fd28e 100644 --- a/src/main/java/utils/command/EditTagNameCommand.java +++ b/src/main/java/utils/command/EditTagNameCommand.java @@ -33,6 +33,6 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI } tag.editTagName(newTagName); - ui.printEditTagNameSuccess(oldTagName, tag); + ui.printEditTagName(oldTagName, tag); } } diff --git a/src/main/java/utils/command/ListCardsUnderTagCommand.java b/src/main/java/utils/command/ListCardsInTagCommand.java similarity index 94% rename from src/main/java/utils/command/ListCardsUnderTagCommand.java rename to src/main/java/utils/command/ListCardsInTagCommand.java index 2f05e58b4f..fc8cd90c8d 100644 --- a/src/main/java/utils/command/ListCardsUnderTagCommand.java +++ b/src/main/java/utils/command/ListCardsInTagCommand.java @@ -15,10 +15,10 @@ import utils.exceptions.TagNotFoundException; import utils.storage.IDataStorage; -public class ListCardsUnderTagCommand extends Command { +public class ListCardsInTagCommand extends Command { private TagSelector tagSelector; - public ListCardsUnderTagCommand(TagSelector tagSelector) { + public ListCardsInTagCommand(TagSelector tagSelector) { this.tagSelector = tagSelector; } diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java index c140976517..0b327654c4 100644 --- a/src/main/java/utils/parser/TagKeywordParser.java +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -9,7 +9,7 @@ import utils.command.Command; import utils.command.DeleteTagCommand; import utils.command.EditTagNameCommand; -import utils.command.ListCardsUnderTagCommand; +import utils.command.ListCardsInTagCommand; import utils.command.ListTagsCommand; import utils.command.PrintHelpCommand; import utils.exceptions.InkaException; @@ -90,7 +90,7 @@ private Command handleList(List tokens) throws ParseException, InvalidSy if (tagSelector == null) { return new ListTagsCommand(); } else { - return new ListCardsUnderTagCommand(tagSelector); + return new ListCardsInTagCommand(tagSelector); } } diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index 6aa96b4651..3548f24ee0 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -16,7 +16,7 @@ import utils.command.DeleteTagCommand; import utils.command.EditDeckNameCommand; import utils.command.EditTagNameCommand; -import utils.command.ListCardsUnderTagCommand; +import utils.command.ListCardsInTagCommand; import utils.command.RemoveCardFromDeckCommand; import utils.command.RemoveTagFromCardCommand; import utils.command.RemoveTagFromDeckCommand; @@ -351,7 +351,7 @@ public void logic_listCardsUnderTagLongName() throws InkaException { "tag list -t " + "gsjhgskghsjkiughkghsighszghzsghzghsgiuhohzsdiughzoughidogjhzogizsjghzioghjzsdioggjsiokgj", - ListCardsUnderTagCommand.class); + ListCardsInTagCommand.class); } catch (LongTagNameException e) { assertEquals(e.getUiMessage(), longTagNameStr); } diff --git a/src/test/java/utils/parser/TagParserTest.java b/src/test/java/utils/parser/TagParserTest.java index 58505485df..7e17c6481f 100644 --- a/src/test/java/utils/parser/TagParserTest.java +++ b/src/test/java/utils/parser/TagParserTest.java @@ -15,7 +15,7 @@ import utils.command.Command; import utils.command.DeleteTagCommand; import utils.command.EditTagNameCommand; -import utils.command.ListCardsUnderTagCommand; +import utils.command.ListCardsInTagCommand; import utils.command.ListTagsCommand; import utils.command.PrintHelpCommand; import utils.exceptions.InkaException; @@ -62,13 +62,13 @@ public void parse_tag_list() throws InkaException { @Test public void parse_tag_listWithTag() throws InkaException { Command cmd = parser.parseCommand("tag list -t tagName"); - assert cmd instanceof ListCardsUnderTagCommand; + assert cmd instanceof ListCardsInTagCommand; } @Test public void parse_tag_listWithTagLongFlag() throws InkaException { Command cmd = parser.parseCommand("tag list --tag tagName"); - assert cmd instanceof ListCardsUnderTagCommand; + assert cmd instanceof ListCardsInTagCommand; } @Test From 4fcb1da3d472477756000b27c779d7c00bb05f2e Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 17:13:07 +0800 Subject: [PATCH 222/311] fix : fix savedata.json --- savedata.json | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/savedata.json b/savedata.json index 1047ed1493..173dc43f7d 100644 --- a/savedata.json +++ b/savedata.json @@ -313,13 +313,6 @@ }, { "uuid": { -<<<<<<< HEAD - "uuid": "29bea83e-d864-48c4-bb9a-7fa817114fe1" - }, - "question": "how do i use this command?", - "answer": "by referring to this user guide", - "tags": [], -======= "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" }, "question": "testing", @@ -355,18 +348,10 @@ "uuid": "22c0769d-f046-4ae1-b0aa-e9910e92a3d2" } ], ->>>>>>> master "decks": [] }, { "uuid": { -<<<<<<< HEAD - "uuid": "19d859b1-cede-467e-b384-7d6e690cdae6" - }, - "question": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum", - "answer": "ans", - "tags": [], -======= "uuid": "924119c1-a807-4df2-b311-080be9ee8522" }, "question": "this might work", @@ -379,8 +364,7 @@ "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" } ], ->>>>>>> master "decks": [] } ] -} \ No newline at end of file +} From 93c8c94777e2fff2fb94971e8a1c3cb49b3eacc0 Mon Sep 17 00:00:00 2001 From: JangusRoundstone <88696064+JangusRoundstone@users.noreply.github.com> Date: Sun, 9 Apr 2023 18:21:48 +0800 Subject: [PATCH 223/311] DG Card List --- docs/DeveloperGuide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 83c47dff71..0904531232 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -166,7 +166,7 @@ The implementation of `card add -q QN -a ANS` will be shown below : 1. When the user enters `card add -q QN -a ANS`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the "card" keyword. 2. The `Parser#CardKeywordParser()` further extracts the action keyword "add" from the user input, and calls the `CardKeywordParser#handleAdd()` method. -3. The method uses the Apache Commons CLI library to parse the remaining user input to create a `Card` object with the arguements of the flags "-q" and "-a" in the input as its question and answer, and returns an `AddCardCommand` with the created `Card` object. +3. The method uses the Apache Commons CLI library to parse the remaining user input to create a `Card` object with the arguements of the flags "-q" and "-a" in the input as its question and answer, and returns an `AddCardCommand` with the created `Card` object. The sequence diagram for the first 3 steps has been shown in the [parser sequence diagram](#parser-component). 4. This `AddCardCommand` will call the `CardList#addCard()` function and add the created `Card` object to the `CardList`. 5. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with the corresponding functions. @@ -191,7 +191,7 @@ A sample user input, like `card delete -i 3` would be broken down as: The implementation of `card delete -i 3` will be shown below : -1. When the user enters `card delete -i 3`, the `Parser` class will parse the user input in the same way as shown in step 1 here [above](#card-add). +1. When the user enters `card delete -i 3`, the `Parser` class will parse the user input in the same way as shown in [step 1](#card-add) here . 2. The `Parser#CardKeywordParser()` further extracts the action keyword "delete" from the user input and call `CardKeywordParser#handleDelete()` method. 3. The method uses the Apache Commons CLI library to parse the remaining user input, and returns a `DeleteCardCommand` with a `CardSelector` argument. The `CardSelector` object has two optional fields, an int field or an uuid field, used in identifying the `Card` object, in this case to be deleted. 5. This `DeleteCardCommand` will first find the `Card` object to delete, then find all the `Tag` and `Deck` objects it is associated to by their uuids stored in the `Card` object, and delete the `Card` object's uuid from them. From ef4de043f825a0890ce0de005b26c45f54b9f3e7 Mon Sep 17 00:00:00 2001 From: JangusRoundstone <88696064+JangusRoundstone@users.noreply.github.com> Date: Sun, 9 Apr 2023 18:40:29 +0800 Subject: [PATCH 224/311] More images for Card sequence diagrams --- docs/img/CardAddSequence.svg | 1 + docs/img/CardDeleteSequence.svg | 1 + docs/img/CardListSequence.svg | 1 + 3 files changed, 3 insertions(+) create mode 100644 docs/img/CardAddSequence.svg create mode 100644 docs/img/CardDeleteSequence.svg create mode 100644 docs/img/CardListSequence.svg diff --git a/docs/img/CardAddSequence.svg b/docs/img/CardAddSequence.svg new file mode 100644 index 0000000000..b8df0aada3 --- /dev/null +++ b/docs/img/CardAddSequence.svg @@ -0,0 +1 @@ +:AddCardCommand:CardList:CardList:Card:UserInterface:UserInterfaceCardKeywordParserCardKeywordParser:CardAddCardCommand(card):AddCardCommandexecute()addCard(card)printAddQuestionSuccess()printNumOfQuestions(cardList) \ No newline at end of file diff --git a/docs/img/CardDeleteSequence.svg b/docs/img/CardDeleteSequence.svg new file mode 100644 index 0000000000..76ce80961c --- /dev/null +++ b/docs/img/CardDeleteSequence.svg @@ -0,0 +1 @@ +:DeleteCardCommand:CardList:CardList:CardSelector:TagList:TagList:DeckList:DeckList:Tag:Tag:Card:Card:Deck:Deck:UserInterface:UserInterfaceCardKeywordParserCardKeywordParserDeleteCardCommand():DeleteCardCommandCardSelector():CardSelectorexecute()findCard()alt[index is specified in CardSelector]getIndex()cardIndex[uuid is specified in CardSelector]getUUID()cardUUIDcardToDeletegetTagsUUID(cardToDelete)tagsUUIDgetDecksUUID(cardToDelete))decksUUIDcardRemovalFromDeck()loop[until all uuid in decksUUID have been checked]findDeckFromUUID()deckFounddelete card uuid from deckloop[until all uuid in tagsUUID have been checked]findTagFromUUID()tagFounddelete card uuid from tagdelete(cardSelector)printDeleteSuccess();printNumOfQuestions(cardList); \ No newline at end of file diff --git a/docs/img/CardListSequence.svg b/docs/img/CardListSequence.svg new file mode 100644 index 0000000000..f02be1e702 --- /dev/null +++ b/docs/img/CardListSequence.svg @@ -0,0 +1 @@ +:ListCardCommand:CardList:CardList:UserInterface:UserInterfaceCardKeywordParserCardKeywordParserListCardCommand(card):ListCardCommandexecute()printCardList()loop[until all cards have been printed]print card \ No newline at end of file From d26f228f96024aef0076b4fbaca8b2cc9de71bf3 Mon Sep 17 00:00:00 2001 From: JangusRoundstone <88696064+JangusRoundstone@users.noreply.github.com> Date: Sun, 9 Apr 2023 18:53:49 +0800 Subject: [PATCH 225/311] Add card images in DG --- docs/DeveloperGuide.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 0904531232..ad0517c34e 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -170,8 +170,8 @@ The implementation of `card add -q QN -a ANS` will be shown below : 4. This `AddCardCommand` will call the `CardList#addCard()` function and add the created `Card` object to the `CardList`. 5. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with the corresponding functions. -The sequence diagram below shows how this feature works: -![Card Add feature] +The sequence diagram below shows how this feature of card works: +![Card Add feature](img/CardAddSequence.svg) #### Card Delete @@ -191,15 +191,15 @@ A sample user input, like `card delete -i 3` would be broken down as: The implementation of `card delete -i 3` will be shown below : -1. When the user enters `card delete -i 3`, the `Parser` class will parse the user input in the same way as shown in [step 1](#card-add) here . +1. When the user enters `card delete -i 3`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the "card" keyword. 2. The `Parser#CardKeywordParser()` further extracts the action keyword "delete" from the user input and call `CardKeywordParser#handleDelete()` method. -3. The method uses the Apache Commons CLI library to parse the remaining user input, and returns a `DeleteCardCommand` with a `CardSelector` argument. The `CardSelector` object has two optional fields, an int field or an uuid field, used in identifying the `Card` object, in this case to be deleted. -5. This `DeleteCardCommand` will first find the `Card` object to delete, then find all the `Tag` and `Deck` objects it is associated to by their uuids stored in the `Card` object, and delete the `Card` object's uuid from them. -6. Then the `Card` object is deleted from the `CardList`. -7. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with the corresponding functions. +3. The method uses the Apache Commons CLI library to parse the remaining user input, and returns a `DeleteCardCommand` with a `CardSelector` argument. The `CardSelector` object has two optional fields, an int field or an uuid field, used in identifying the `Card` object, in this case to be deleted. The sequence diagram for the first 3 steps has been shown in the [parser sequence diagram](#parser-component). +4. The `DeleteCardCommand` will first find the `Card` object to delete, then find all the `Tag` and `Deck` objects it is associated to by their uuids stored in the `Card` object, and delete the `Card` object's uuid from them. +5. Then the `Card` object is deleted from the `CardList`. +6. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with the corresponding functions. -The sequence diagram below shows how this feature works: -![Card Add feature] +The sequence diagram below shows how this feature of card works: +![Card Delete feature](img/CardDeleteSequence.svg) #### Card List @@ -217,13 +217,13 @@ A sample user input, like `card list` would be broken down as : The implementation of `card list` will be shown below : -1. When the user enters `card list`, the `Parser` class will parse the user input in the same way as shown in step 1 here [above](#card-add). +1. When the user enters `card list`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the "card" keyword. 2. The `Parser#CardKeywordParser()` further extracts the action keyword "list" from the user input and call `CardKeywordParser#handleList()` method. -3. If there are no more user input after `card list`, a `ListCardCommand()` is returned. +3. If there are no more user input after `card list`, a `ListCardCommand()` is returned. The sequence diagram for the first 3 steps has been shown in the [parser sequence diagram](#parser-component). 4. The command will call `UserInterface#printCardList()` method to print all `Card` objects in the `CardList`. -The sequence diagram below shows how this feature works: -![Card Add feature] +The sequence diagram below shows how this feature of card works: +![Card List feature](img/CardListSequence.svg) #### Card View @@ -303,7 +303,7 @@ The implementation of the `card tag` feature is as follows : - Similarly, `AddCardToTagCommand` will also call `Tag#getUUID()` and add the returned `tagUUID` into `cardToAdd` by calling `Card#addTag(tagUUID)`. -The sequence diagram below shows how this feature works: +The sequence diagram below shows how this feature of card works: ![Tag feature](img/TagListSequence.png) #### Untag a Card From fb43f625968ab261b053397600808c71a81c7e9e Mon Sep 17 00:00:00 2001 From: iantenkai Date: Sun, 9 Apr 2023 19:08:41 +0800 Subject: [PATCH 226/311] update load feature to load hashset and hashmap of deck objects --- .savedata_backup.json | 81 ++++++++++-------- savedata.json | 67 ++++++++++----- src/main/java/model/Deck.java | 4 +- .../java/utils/storage/json/JsonStorage.java | 2 +- .../java/utils/storage/json/JsonToMemory.java | 83 ++++++++++++++----- 5 files changed, 155 insertions(+), 82 deletions(-) diff --git a/.savedata_backup.json b/.savedata_backup.json index 1047ed1493..8edc95e54e 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -98,14 +98,8 @@ "deckUUID": { "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" }, - "cardsSet": [ - { - "uuid": "924119c1-a807-4df2-b311-080be9ee8522" - } - ], - "cardUUIDIntegerHashMap": { - "924119c1-a807-4df2-b311-080be9ee8522": 1 - }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, "cards": [], "tags": [ { @@ -126,6 +120,37 @@ "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" } ] + }, + { + "deckName": "physicsdeck", + "deckUUID": { + "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" + }, + "cardsSet": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + }, + { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "cardUUIDIntegerHashMap": { + "619c689d-395a-4bb8-ab00-6ae9972bb929": 1, + "1ddd9a67-f56c-4914-99c0-2f90c580f0e9": 1 + }, + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "tags": [ + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + } + ] } ], "tags": [ @@ -142,7 +167,11 @@ "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" } ], - "decks": [] + "decks": [ + { + "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" + } + ] }, { "uuid": { @@ -226,11 +255,7 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ - { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" - } - ] + "decks": [] }, { "uuid": { @@ -242,11 +267,7 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ - { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" - } - ] + "decks": [] } ], "cards": [ @@ -313,13 +334,6 @@ }, { "uuid": { -<<<<<<< HEAD - "uuid": "29bea83e-d864-48c4-bb9a-7fa817114fe1" - }, - "question": "how do i use this command?", - "answer": "by referring to this user guide", - "tags": [], -======= "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" }, "question": "testing", @@ -355,18 +369,10 @@ "uuid": "22c0769d-f046-4ae1-b0aa-e9910e92a3d2" } ], ->>>>>>> master "decks": [] }, { "uuid": { -<<<<<<< HEAD - "uuid": "19d859b1-cede-467e-b384-7d6e690cdae6" - }, - "question": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum", - "answer": "ans", - "tags": [], -======= "uuid": "924119c1-a807-4df2-b311-080be9ee8522" }, "question": "this might work", @@ -379,8 +385,11 @@ "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" } ], ->>>>>>> master - "decks": [] + "decks": [ + { + "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" + } + ] } ] } \ No newline at end of file diff --git a/savedata.json b/savedata.json index 173dc43f7d..8edc95e54e 100644 --- a/savedata.json +++ b/savedata.json @@ -98,14 +98,8 @@ "deckUUID": { "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" }, - "cardsSet": [ - { - "uuid": "924119c1-a807-4df2-b311-080be9ee8522" - } - ], - "cardUUIDIntegerHashMap": { - "924119c1-a807-4df2-b311-080be9ee8522": 1 - }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, "cards": [], "tags": [ { @@ -126,6 +120,37 @@ "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" } ] + }, + { + "deckName": "physicsdeck", + "deckUUID": { + "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" + }, + "cardsSet": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + }, + { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "cardUUIDIntegerHashMap": { + "619c689d-395a-4bb8-ab00-6ae9972bb929": 1, + "1ddd9a67-f56c-4914-99c0-2f90c580f0e9": 1 + }, + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "tags": [ + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + } + ] } ], "tags": [ @@ -142,7 +167,11 @@ "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" } ], - "decks": [] + "decks": [ + { + "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" + } + ] }, { "uuid": { @@ -226,11 +255,7 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ - { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" - } - ] + "decks": [] }, { "uuid": { @@ -242,11 +267,7 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ - { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" - } - ] + "decks": [] } ], "cards": [ @@ -364,7 +385,11 @@ "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" } ], - "decks": [] + "decks": [ + { + "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" + } + ] } ] -} +} \ No newline at end of file diff --git a/src/main/java/model/Deck.java b/src/main/java/model/Deck.java index 3f495e6d16..4b62887041 100644 --- a/src/main/java/model/Deck.java +++ b/src/main/java/model/Deck.java @@ -102,7 +102,9 @@ public void setCardsSet(HashSet cardsSet) { this.cardsSet = cardsSet; } - + public void setcardUUIDIntegerHashMap(HashMap cardUuidIntegerHashMap) { + this.cardUUIDIntegerHashMap = cardUuidIntegerHashMap; + } public HashSet getCardsSet() { return this.cardsSet; diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 2838edf4b0..1e4c470a42 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -33,7 +33,7 @@ public class JsonStorage extends Storage { - private static Logger logger = Logger.getLogger("storage.JsonStorage"); + public static Logger logger = Logger.getLogger("storage.JsonStorage"); private GsonBuilder gsonBuilder; private File backupFile; diff --git a/src/main/java/utils/storage/json/JsonToMemory.java b/src/main/java/utils/storage/json/JsonToMemory.java index 9bc9a35439..9610b4a576 100644 --- a/src/main/java/utils/storage/json/JsonToMemory.java +++ b/src/main/java/utils/storage/json/JsonToMemory.java @@ -1,11 +1,18 @@ package utils.storage.json; + +import static utils.storage.json.JsonStorage.logger; + import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; import java.util.UUID; +import java.util.logging.Level; import model.CardUUID; import model.DeckUUID; import model.TagList; @@ -24,7 +31,7 @@ public static Memory convert(JsonObject saveDataObject) throws InkaException { CardList cardList = getJsonCardList(saveDataObject); TagList tagList = getJsonTagList(saveDataObject); - DeckList deckList = getJsonDeckList(saveDataObject, tagList); + DeckList deckList = getJsonDeckList(saveDataObject); Memory memory = new Memory(cardList, tagList, deckList); @@ -92,40 +99,70 @@ public static TagList getJsonTagList(JsonObject saveDataObject){ } - public static DeckList getJsonDeckList(JsonObject saveDataObject, TagList tagList){ + public static DeckList getJsonDeckList(JsonObject saveDataObject){ DeckList deckList = new DeckList(); JsonArray deckJsonArray = saveDataObject.getAsJsonArray("decks"); for (JsonElement jsonDeck : deckJsonArray) { JsonObject deckObject = jsonDeck.getAsJsonObject(); - JsonObject uuidObject = deckObject.getAsJsonObject("deckUUID"); - String uuidString = uuidObject.get("uuid").getAsString(); + Deck deck = getJsonDeck(deckObject); + deckList.addDeck(deck); + } + return deckList; - String deckName = deckObject.get("deckName").getAsString(); - Deck deck = new Deck(deckName); - deck.setDeckUUID(uuidString); + } - //obtain cards from a jsonDeck - JsonArray deckCardArray = deckObject.getAsJsonArray("cards"); + public static Deck getJsonDeck(JsonObject deckObject){ - for (JsonElement deckListElement : deckCardArray) { - JsonObject cardUuidObject = deckListElement.getAsJsonObject(); - String cardUuidString = cardUuidObject.get("uuid").getAsString(); - deck.addCard(new CardUUID(UUID.fromString(cardUuidString))); - } + String deckName = deckObject.get("deckName").getAsString(); + Deck deck = new Deck(deckName); - //obtain tags from a jsonDeck - JsonArray deckTagArray = deckObject.getAsJsonArray("tags"); - for (JsonElement deckListElement : deckTagArray) { - JsonObject tagUuidObject = deckListElement.getAsJsonObject(); - String tagUuidString = tagUuidObject.get("uuid").getAsString(); - deck.addTag(new TagUUID(UUID.fromString(tagUuidString))); + JsonObject uuidObject = deckObject.getAsJsonObject("deckUUID"); + String uuidString = uuidObject.get("uuid").getAsString(); + deck.setDeckUUID(uuidString); + + // obtain cardsSet + JsonArray deckCardSetArray = deckObject.getAsJsonArray("cardsSet"); + HashSet cardsSet = new HashSet<>(); + for (JsonElement deckListElement : deckCardSetArray) { + JsonObject cardUuidObject = deckListElement.getAsJsonObject(); + String cardUuidString = cardUuidObject.get("uuid").getAsString(); + cardsSet.add(new CardUUID(UUID.fromString(cardUuidString))); + } + deck.setCardsSet(cardsSet); + + //obtain cardUUIDIntegerHashMap + JsonObject cardUuidIntegerHashMapObject = deckObject.getAsJsonObject("cardUuidIntegerHashMap"); + HashMap cardUuidIntegerHashMap = new HashMap<>(); + + try{ + for (HashMap.Entry entry : cardUuidIntegerHashMapObject.entrySet()) { + String cardUuidString = entry.getKey(); + int value = entry.getValue().getAsInt(); + cardUuidIntegerHashMap.put(new CardUUID(UUID.fromString(cardUuidString)), value); } + } catch (NullPointerException e){ + logger.log(Level.WARNING, "Invalid: hashmap", e); + } + deck.setcardUUIDIntegerHashMap(cardUuidIntegerHashMap); - deckList.addDeck(deck); + //obtain cards from a jsonDeck + JsonArray deckCardArray = deckObject.getAsJsonArray("cards"); + + for (JsonElement deckListElement : deckCardArray) { + JsonObject cardUuidObject = deckListElement.getAsJsonObject(); + String cardUuidString = cardUuidObject.get("uuid").getAsString(); + deck.addCard(new CardUUID(UUID.fromString(cardUuidString))); } - return deckList; - } + //obtain tags from a jsonDeck + JsonArray deckTagArray = deckObject.getAsJsonArray("tags"); + for (JsonElement deckListElement : deckTagArray) { + JsonObject tagUuidObject = deckListElement.getAsJsonObject(); + String tagUuidString = tagUuidObject.get("uuid").getAsString(); + deck.addTag(new TagUUID(UUID.fromString(tagUuidString))); + } + return deck; + } } From f084b6a35da2428edbc75396ab840dc9f0a25d96 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Sun, 9 Apr 2023 19:10:06 +0800 Subject: [PATCH 227/311] fix checkstyle --- .../java/utils/storage/json/JsonStorage.java | 5 +---- .../java/utils/storage/json/JsonToMemory.java | 19 +++++-------------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 1e4c470a42..0a31231155 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -94,8 +94,6 @@ private Memory loadBackup() throws InkaException { } } - - public static Memory makeMemory(CardList cardList, TagList tagList, DeckList deckList) { Memory memory = new Memory(); memory.setCardList(cardList); @@ -105,7 +103,6 @@ public static Memory makeMemory(CardList cardList, TagList tagList, DeckList dec return memory; } - @Override public void save(CardList cardList, TagList tagList, DeckList deckList) throws StorageSaveFailure { @@ -124,7 +121,7 @@ public void save(CardList cardList, TagList tagList, DeckList deckList) throws S private void saveDataToFile(File file, JsonObject data) throws IOException { try (FileWriter fileWriter = new FileWriter(file); - BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { + BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { Gson gson = gsonBuilder.setPrettyPrinting().create(); String serialized = gson.toJson(data); diff --git a/src/main/java/utils/storage/json/JsonToMemory.java b/src/main/java/utils/storage/json/JsonToMemory.java index 9610b4a576..29f5e6576e 100644 --- a/src/main/java/utils/storage/json/JsonToMemory.java +++ b/src/main/java/utils/storage/json/JsonToMemory.java @@ -1,13 +1,10 @@ package utils.storage.json; - - import static utils.storage.json.JsonStorage.logger; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -25,7 +22,6 @@ import model.TagUUID; import utils.exceptions.InkaException; - public class JsonToMemory { public static Memory convert(JsonObject saveDataObject) throws InkaException { @@ -35,11 +31,9 @@ public static Memory convert(JsonObject saveDataObject) throws InkaException { Memory memory = new Memory(cardList, tagList, deckList); - return memory; } - public static CardList getJsonCardList(JsonObject saveDataObject) throws InkaException { JsonArray jsonCardArray = saveDataObject.getAsJsonArray("cards"); ArrayList cards = new ArrayList<>(); @@ -73,7 +67,7 @@ public static CardList getJsonCardList(JsonObject saveDataObject) throws InkaExc return cardList; } - public static TagList getJsonTagList(JsonObject saveDataObject){ + public static TagList getJsonTagList(JsonObject saveDataObject) { TagList tagList = new TagList(); // construct empty taglist to append stuff to JsonArray tagJsonArray = saveDataObject.getAsJsonArray("tags"); for (JsonElement jsonTag : tagJsonArray) { @@ -96,10 +90,9 @@ public static TagList getJsonTagList(JsonObject saveDataObject){ } return tagList; - } - public static DeckList getJsonDeckList(JsonObject saveDataObject){ + public static DeckList getJsonDeckList(JsonObject saveDataObject) { DeckList deckList = new DeckList(); JsonArray deckJsonArray = saveDataObject.getAsJsonArray("decks"); for (JsonElement jsonDeck : deckJsonArray) { @@ -108,10 +101,9 @@ public static DeckList getJsonDeckList(JsonObject saveDataObject){ deckList.addDeck(deck); } return deckList; - } - public static Deck getJsonDeck(JsonObject deckObject){ + public static Deck getJsonDeck(JsonObject deckObject) { String deckName = deckObject.get("deckName").getAsString(); Deck deck = new Deck(deckName); @@ -134,13 +126,13 @@ public static Deck getJsonDeck(JsonObject deckObject){ JsonObject cardUuidIntegerHashMapObject = deckObject.getAsJsonObject("cardUuidIntegerHashMap"); HashMap cardUuidIntegerHashMap = new HashMap<>(); - try{ + try { for (HashMap.Entry entry : cardUuidIntegerHashMapObject.entrySet()) { String cardUuidString = entry.getKey(); int value = entry.getValue().getAsInt(); cardUuidIntegerHashMap.put(new CardUUID(UUID.fromString(cardUuidString)), value); } - } catch (NullPointerException e){ + } catch (NullPointerException e) { logger.log(Level.WARNING, "Invalid: hashmap", e); } deck.setcardUUIDIntegerHashMap(cardUuidIntegerHashMap); @@ -154,7 +146,6 @@ public static Deck getJsonDeck(JsonObject deckObject){ deck.addCard(new CardUUID(UUID.fromString(cardUuidString))); } - //obtain tags from a jsonDeck JsonArray deckTagArray = deckObject.getAsJsonArray("tags"); for (JsonElement deckListElement : deckTagArray) { From 2e9ac7bf82f1df887627992efc9d2c9906f9be19 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 20:34:35 +0800 Subject: [PATCH 228/311] chore : cleanup for UG and DG --- docs/DeveloperGuide.md | 41 +++------------ docs/UserGuide.md | 14 +++--- docs/uml/CardTagSequence.puml | 69 ++++++++++++++++++++++++++ src/main/java/utils/UserInterface.java | 2 +- 4 files changed, 84 insertions(+), 42 deletions(-) create mode 100644 docs/uml/CardTagSequence.puml diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 1a38fc0290..ad78d1d2c2 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -198,41 +198,14 @@ Tag Feature currently supports the following functionalities : - list all the cards under a tag - edit the tag name -#### Tag a Card - -The implementation of the `card tag` feature is as follows : - -- When the user enters `card tag -c {cardUUID} -t {tagName}`, the input is passed to `Parser` class which - calls `Parser#parseCommand()`. The parser detects the keyword `card` and process the remaining input and pass them - to `Parser#CardKeywordParser` class which calls `HandleTag()` method and returns a `AddCardToTagCommand`. The - sequence diagram for this section has been - shown [above](#parser-component). - -- This `AddCardToTagCommand` will first find the card to which the tag should be added to by calling - the `CardList#findCard()` which will in turn call the `CardSelector#getIndex()` - and `CardSelector#getUUID()`. `CardSelector` will then return the `cardToAdd` to `CardList` and - to `AddCardToTagCommand`. - -- After finding the card on which to add the tag, `AddCardToTagCommand` will check if the tag has already existed by - calling `TagList#findTagFromName` which will return a `tagToAdd`. If the `tagToAdd` currently does not - exist, `AddCardToTagCommand` will then create a new `Tag` and add it to `TagList` by - calling `TagList#addCard(tagToAdd)`. If it already exists, it will just use the - existing `tagToAdd`. - -- Once the `tagToAdd` and `cardToAdd` are ready, `AddCardToTagCommand` will then call `Card#getUUID()` and add the - returned `cardUUID` into `tagToAdd` by calling `Tag#addCard(cardUUID)`. - -- Similarly, `AddCardToTagCommand` will also call `Tag#getUUID()` and add the returned `tagUUID` into `cardToAdd` by - calling `Card#addTag(tagUUID)`. - -The sequence diagram below shows how this feature works: -![Tag feature](img/TagListSequence.png) +This guide will show two of the more complex implementation of the tag features, other tag-related features will be +similar : #### Untag a Card -The implementation of the `card untag` feature is as follows : +The implementation of the `card untag` feature is as follows: -- When the user enters `card untag {-c {cardUUID} | -i {cardIndex}} {-t {tagName} | -i {tagIndex}}`, the input is passed +- When the user enters `card untag {-c CARD_UUID} | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The parser detects the keyword `card` and process the remaining input and pass them to `Parser#CardKeywordParser` class which calls `HandleUntag()` method and returns a `RemoveTagFromCardCommand`. The @@ -265,11 +238,11 @@ The implementation of the `card untag` feature is as follows : The sequence diagram below shows how this feature works: ![Card Untag](img/CardUntagSequence.png) -#### List Cards under Tag +#### List Cards under a Tag -The implementation of the `tag list {-t {tagName} | -i {tagIndex}}` +The implementation of the `tag list {-t TAG_NAME | -x TAG_INDEX}` -- When the user enters `tag list {-t {tagName} | -i {tagIndex}}`, the input is passed +- When the user enters `tag list {-t TAG_NAME | -x TAG_INDEX}`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The parser detects the keyword `tag` and process the remaining input and pass them to `Parser#TagKeywordParser` class which calls `HandleList()` method and returns a `ListCardsUnderTagCommand`. The diff --git a/docs/UserGuide.md b/docs/UserGuide.md index c5c6044aa3..47f87c0d7c 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -230,7 +230,7 @@ Users can refer to this [section](#usage-of-flags) to recap on how the flag work ``` Tag does not exist.. creating a new tag: physics -Successfully added tag 83f26992-09d7-496b-b7a8-3ad05e43c8b7 to card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 +Successfully added tag physics to card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 ``` ### Removing a Tag from a card : @@ -258,7 +258,7 @@ Users can refer to this [section](#usage-of-flags) to recap on how the flag work ***Sample output :*** ``` -Successfully removed tag 83f26992-09d7-496b-b7a8-3ad05e43c8b7 from card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 +Successfully removed tag physics from card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 ``` ### Putting a card into a deck : @@ -287,7 +287,7 @@ Users can refer to this [section](#usage-of-flags) to recap on how the flag work ``` Deck does not exist.. creating a new one -Successfully added card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 to deck fd2df33d-4bbe-4be7-83df-5ddaecd3f1ca +Successfully added card f8c3de3d-1fea-4d7c-a8b0-29f63c4c3454 to deck midterms ``` ### Viewing a card : @@ -353,7 +353,7 @@ Example of usage : Sample output : ``` -Tag 7a130cd5-8154-4aa7-870f-45d7d92970f9tag name has been changed from CS2113 to CS2113T +Tag 7a130cd5-8154-4aa7-870f-45d7d92970f9 name has been changed from CS2113 to CS2113T ``` ### Deleting a tag : @@ -378,8 +378,8 @@ Users can refer to this [section](#usage-of-flags) to recap on how the flag work ***Sample output :*** ``` -Successfully removed tag 7a130cd5-8154-4aa7-870f-45d7d92970f9 from card 3b86b31c-6289-4716-a5c6-5afd43b9bbd3 -Successfully removed tag 7a130cd5-8154-4aa7-870f-45d7d92970f9 from the tag list. +Successfully removed tag physics from card 3b86b31c-6289-4716-a5c6-5afd43b9bbd3 +Successfully removed tag physics from the tag list. ``` ### List all tags : `tag list [-t TAG_NAME | -x TAG_INDEX]` @@ -452,7 +452,7 @@ Users can refer to this [section](#usage-of-flags) to recap on how the flag work ``` Deck does not exist.. creating a new one -Successfully added tag c8259fee-125d-4700-829c-0da79eba1e91 to deck aef23e46-5327-4ca9-80f2-84e9e8e7dacd +Successfully added tag physics to deck midterm ``` --- diff --git a/docs/uml/CardTagSequence.puml b/docs/uml/CardTagSequence.puml new file mode 100644 index 0000000000..66c0acfda9 --- /dev/null +++ b/docs/uml/CardTagSequence.puml @@ -0,0 +1,69 @@ +@startuml +autoactivate on + +participant ":AddCardToTagCommand" as AddCardToTagCommand +participant ":TagList" as TagList +participant ":CardList" as CardList +participant ":CardSelector" as CardSelector +participant ":TagSelector" as TagSelector +participant ":TagList" as TagList +participant ":DeckList" as DeckList +participant ":Tag" as Tag +participant ":Card" as Card +participant ":UserInterface" as UserInterface + + +Create AddCardToTagCommand +CardKeywordParser -> AddCardToTagCommand : AddCardToTagCommand() +activate AddCardToTagCommand + +Create CardSelector +AddCardToTagCommand -> CardSelector : CardSelector() +return + +Create TagSelector +AddCardToTagCommand -> TagSelector : TagSelector() +return + +AddCardToTagCommand -> AddCardToTagCommand: execute() +AddCardToTagCommand -> CardList : findCard(cardSelector) + +alt index is specified +CardList -> CardSelector : getIndex() +return cardIndex +else uuid is specified +CardList -> CardSelector : getUUID() +return cardUUID +end +return cardAffected + +AddCardToTagCommand -> TagList : findTag(tagSelector) + +alt index is specified +TagList -> TagSelector : getIndex() +return tagIndex +else tagName is specified +TagList -> TagSelector : getTagName() +return tagUUID +end +return tagToAdd + +AddCardToTagCommand -> AddCardToTagCommand : AddCardToTag(cardToAdd) +opt cardAffected.getUUID() != null +AddCardToTagCommand -> Card : getUUID() +return cardUUID +AddCardToTagCommand -> Tag : removeCard(carUUID) +return +AddCardToTagCommand -> Tag : getUUID() +return tagUUID +AddCardToTagCommand -> Card : removeTag(tagUUID) +return + +end +return + +AddCardToTagCommand -> UserInterface : printRemoveTagFromCard() +return + + +@enduml diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index af49a46f01..d4cce046ab 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -199,7 +199,7 @@ public void printRemoveDeckFromDeckList(String deckName) { public void printEditTagName(String oldTagName, Tag tag) { System.out.println( - "Tag " + tag.getUUID() + "tag name has been changed from " + oldTagName + " to " + tag.getTagName()); + "Tag " + tag.getUUID() + " name has been changed from " + oldTagName + " to " + tag.getTagName()); } public void printEditDeckNameSuccess(String oldDeckName, Deck deck) { From 5baff79f5e169bc381a7011952365624e8888f92 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 21:17:14 +0800 Subject: [PATCH 229/311] docs : link PPP --- .savedata_backup.json | 49 +++++++++++++++---------------------------- docs/AboutUs.md | 14 ++++++------- docs/README.md | 16 ++++++++++++-- savedata.json | 35 ++++++++++++++++--------------- 4 files changed, 56 insertions(+), 58 deletions(-) diff --git a/.savedata_backup.json b/.savedata_backup.json index 1047ed1493..316c25eea7 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -98,14 +98,8 @@ "deckUUID": { "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" }, - "cardsSet": [ - { - "uuid": "924119c1-a807-4df2-b311-080be9ee8522" - } - ], - "cardUUIDIntegerHashMap": { - "924119c1-a807-4df2-b311-080be9ee8522": 1 - }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, "cards": [], "tags": [ { @@ -226,11 +220,7 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ - { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" - } - ] + "decks": [] }, { "uuid": { @@ -242,11 +232,19 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ + "decks": [] + }, + { + "uuid": { + "uuid": "e58cb988-30bf-48a8-b95e-abcd3b3bc5b6" + }, + "tagName": "chemmmm", + "cards": [ { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } - ] + ], + "decks": [] } ], "cards": [ @@ -274,6 +272,9 @@ }, { "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" + }, + { + "uuid": "e58cb988-30bf-48a8-b95e-abcd3b3bc5b6" } ], "decks": [ @@ -313,13 +314,6 @@ }, { "uuid": { -<<<<<<< HEAD - "uuid": "29bea83e-d864-48c4-bb9a-7fa817114fe1" - }, - "question": "how do i use this command?", - "answer": "by referring to this user guide", - "tags": [], -======= "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" }, "question": "testing", @@ -355,18 +349,10 @@ "uuid": "22c0769d-f046-4ae1-b0aa-e9910e92a3d2" } ], ->>>>>>> master "decks": [] }, { "uuid": { -<<<<<<< HEAD - "uuid": "19d859b1-cede-467e-b384-7d6e690cdae6" - }, - "question": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum", - "answer": "ans", - "tags": [], -======= "uuid": "924119c1-a807-4df2-b311-080be9ee8522" }, "question": "this might work", @@ -379,7 +365,6 @@ "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" } ], ->>>>>>> master "decks": [] } ] diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 0f072953ea..fcb80fd7d1 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -1,9 +1,9 @@ # About us -Display | Name | Github Profile | Portfolio ---------|:----:|:--------------:|:---------: -![](https://via.placeholder.com/100.png?text=Photo) | John Doe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) + Display | Name | Github Profile | Portfolio +-----------------------------------------------------|:------------:|:-----------------------------------------:|:---------------------------------: + ![](https://via.placeholder.com/100.png?text=Photo) | Mitch Malvin | [Github](https://github.com/mitchmalvin1) | [Portfolio](team/mitchmalvin1.md) + ![](https://via.placeholder.com/100.png?text=Photo) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) + ![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) + ![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) + ![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) diff --git a/docs/README.md b/docs/README.md index bbcc99c1e7..a77c6936c1 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,8 +1,20 @@ -# Duke +# Inka -{Give product intro here} +Inka is a CLI-based software that allows users to add Cards containing questions and answers, attach tags into each Card +and put groups of cards into a deck. Inka aims to help students revise for their exam by providing a flashcard-like +experience. + +``` +.___ __ +| | ____ | | _______ +| |/ \| |/ /\__ \ +| | | \ < / __ \_ +|___|___| /__|_ \(____ / + \/ \/ \/ +``` Useful links: + * [User Guide](UserGuide.md) * [Developer Guide](DeveloperGuide.md) * [About Us](AboutUs.md) diff --git a/savedata.json b/savedata.json index 173dc43f7d..316c25eea7 100644 --- a/savedata.json +++ b/savedata.json @@ -98,14 +98,8 @@ "deckUUID": { "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" }, - "cardsSet": [ - { - "uuid": "924119c1-a807-4df2-b311-080be9ee8522" - } - ], - "cardUUIDIntegerHashMap": { - "924119c1-a807-4df2-b311-080be9ee8522": 1 - }, + "cardsSet": [], + "cardUUIDIntegerHashMap": {}, "cards": [], "tags": [ { @@ -226,11 +220,7 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ - { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" - } - ] + "decks": [] }, { "uuid": { @@ -242,11 +232,19 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ + "decks": [] + }, + { + "uuid": { + "uuid": "e58cb988-30bf-48a8-b95e-abcd3b3bc5b6" + }, + "tagName": "chemmmm", + "cards": [ { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } - ] + ], + "decks": [] } ], "cards": [ @@ -274,6 +272,9 @@ }, { "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" + }, + { + "uuid": "e58cb988-30bf-48a8-b95e-abcd3b3bc5b6" } ], "decks": [ @@ -367,4 +368,4 @@ "decks": [] } ] -} +} \ No newline at end of file From 691c22bd4bd82cf40618f66eca9eb15b67748a1a Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 21:19:34 +0800 Subject: [PATCH 230/311] chore :cleanup PPP --- docs/team/mitchmalvin1.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/team/mitchmalvin1.md b/docs/team/mitchmalvin1.md index 3a637bdb01..8d29388e52 100644 --- a/docs/team/mitchmalvin1.md +++ b/docs/team/mitchmalvin1.md @@ -112,21 +112,26 @@ Add documentations for the following features : - Add Class Diagrams for `CardList` and `TagList` The Class Diagram for `CardList` can be found below : + ![CardList Class Diagram](../img/CardListClass.svg) The Class Diagram for `TagList` can be found below : + ![TagList Class Diagram](../img/TagListClass.svg) - Add Sequence Diagram for `card view {-c CARDUUID | -i CARDINDEX}`, `card untag {-c CaRDUUID | -t TAGNAME}` and `tag list {-c CARDUUID | -i CARDINDEX}` The Sequence Diagram for `card view {-c CARDUUID | -i CARDINDEX}` can be found below : + ![Card View Sequence Diagram](../img/CardViewSequence.png) The Sequence Diagram for `card untag {-c CaRDUUID | -t TAGNAME}` can be found below : + ![Card Untag Sequence Diagram](../img/CardUntagSequence.png) The Sequence Diagram for `tag list {-c CARDUUID | -i CARDINDEX}` can be found below : + ![List Card Under Tag Sequence Diagram](../img/ListCardsUnderTagSequence.png) From 142fa086c99f6bcd071b6cb0c0f697b1435ad4cd Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 21:27:44 +0800 Subject: [PATCH 231/311] docs : fix PPP --- docs/README.md | 11 ++++++++--- docs/team/mitchmalvin1.md | 7 ++----- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/docs/README.md b/docs/README.md index a77c6936c1..28e88d5235 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,8 +1,13 @@ # Inka -Inka is a CLI-based software that allows users to add Cards containing questions and answers, attach tags into each Card -and put groups of cards into a deck. Inka aims to help students revise for their exam by providing a flashcard-like -experience. +Introducing ***Inka***, the ultimate CLI (Command Line Interface) software designed to revolutionize the way students +study and learn. +With ***Inka***, you can now enjoy a seamless and efficient flash card-like experience, right from your command line. +Say goodbye to traditional study methods and hello to a cutting-edge tool that lets you tag and organize your digital +flash cards into personalized decks, all within the comfort of your terminal. Whether you're a student preparing for +exams, a lifelong learner seeking to expand your knowledge, or an educator looking for an innovative teaching aid, +***Inka*** is the perfect solution for supercharging your learning journey. Join us as we transform the way students +study and make learning more interactive, engaging, and fun! ``` .___ __ diff --git a/docs/team/mitchmalvin1.md b/docs/team/mitchmalvin1.md index 8d29388e52..e625323c48 100644 --- a/docs/team/mitchmalvin1.md +++ b/docs/team/mitchmalvin1.md @@ -34,7 +34,6 @@ This feature consists of a few subfeatures : one by one. This feature also allows users to better organize their cards as they can see what are the cards that fall under the tag. - - ***Highlights :*** The most notable thing to keep in mind in this feature is on the importance on ensuring that all the data structures in `TagList`, `Tag`,`CardList` and `Card` are properly synchronized whenever user enters a tag-related command. This is because most of the classes hold a reference to one @@ -51,7 +50,6 @@ More specifically, I contributed to the following features : A notable feature that comes with `card list` is its ***truncation*** feature which automatically truncates the `question` and `answer` strings in each card if they exceed 50 characters. - - ***Justification :*** This feature is introduced as we foresee that there will be a lot of cards in the `cardList` and that it might not be user-friendly to overwhelm the users with detailed information at this stage. @@ -66,8 +64,7 @@ With that in mind, another feature that I implemented is : reference to the `ArrayList` representing `tags` and `decks` inside the `Card` class to ensure that the appropriate `tags` and `decks` get displayed. - -- ***Justification :*** : This feature is introduced so that users can make sure that their cards already have the +- ***Justification :*** This feature is introduced so that users can make sure that their cards already have the correct `tags` and `decks`. This is because information provided by `card list` does not include the `tags` and `decks` for brevity purposes, Additionally, `questions` and `answers` displayed here are no longer truncated @@ -86,7 +83,7 @@ found [here.](https://nus-cs2113-ay2223s2.github.io/tp-dashboard/?search=&sort=g in [#150.](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/150) - Contributed to various exception checking and the unit test to ensure that the exception message is appropriate. - Contributed to the overall architecture of `Inka` such as all the `UUID` classes. -- Contributed to the skeleton code in `Inka` so the `tp` can get started. +- Set up and filled in the AboutUs.md and README.md of `Inka` - Set up the [AY2223-S2-CS21113-F10-1](https://github.com/AY2223S2-CS2113-F10-1) organization and the [tp](https://github.com/AY2223S2-CS2113-F10-1/tp) repository inside. - Helped create issues in `v1.0` and `v2.0` milestones and close the milestones in a timely manner. From 1f9a1080ac96e82876831c30b4f475029024c528 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 21:36:49 +0800 Subject: [PATCH 232/311] chore: cleanup AboutUs.md --- docs/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 28e88d5235..6d21ae7dc2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -4,7 +4,9 @@ Introducing ***Inka***, the ultimate CLI (Command Line Interface) software desig study and learn. With ***Inka***, you can now enjoy a seamless and efficient flash card-like experience, right from your command line. Say goodbye to traditional study methods and hello to a cutting-edge tool that lets you tag and organize your digital -flash cards into personalized decks, all within the comfort of your terminal. Whether you're a student preparing for +flash cards into personalized decks, all within the comfort of your terminal. + +Whether you're a student preparing for exams, a lifelong learner seeking to expand your knowledge, or an educator looking for an innovative teaching aid, ***Inka*** is the perfect solution for supercharging your learning journey. Join us as we transform the way students study and make learning more interactive, engaging, and fun! From ccd88e6787dc1b94cf17ced0bdac587494b2a2dc Mon Sep 17 00:00:00 2001 From: iantenkai Date: Sun, 9 Apr 2023 21:38:49 +0800 Subject: [PATCH 233/311] add test cases for storage function --- .../java/utils/storage/json/JsonToMemory.java | 8 +- src/test/data/storage/valid_hash.json | 267 ++++++++++++++++++ .../java/utils/storage/JsonStorageTest.java | 67 ++++- 3 files changed, 333 insertions(+), 9 deletions(-) create mode 100644 src/test/data/storage/valid_hash.json diff --git a/src/main/java/utils/storage/json/JsonToMemory.java b/src/main/java/utils/storage/json/JsonToMemory.java index 29f5e6576e..0b73e803e6 100644 --- a/src/main/java/utils/storage/json/JsonToMemory.java +++ b/src/main/java/utils/storage/json/JsonToMemory.java @@ -5,6 +5,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; @@ -115,13 +116,14 @@ public static Deck getJsonDeck(JsonObject deckObject) { // obtain cardsSet JsonArray deckCardSetArray = deckObject.getAsJsonArray("cardsSet"); HashSet cardsSet = new HashSet<>(); + for (JsonElement deckListElement : deckCardSetArray) { JsonObject cardUuidObject = deckListElement.getAsJsonObject(); String cardUuidString = cardUuidObject.get("uuid").getAsString(); cardsSet.add(new CardUUID(UUID.fromString(cardUuidString))); } - deck.setCardsSet(cardsSet); + deck.setCardsSet(cardsSet); //obtain cardUUIDIntegerHashMap JsonObject cardUuidIntegerHashMapObject = deckObject.getAsJsonObject("cardUuidIntegerHashMap"); HashMap cardUuidIntegerHashMap = new HashMap<>(); @@ -132,9 +134,9 @@ public static Deck getJsonDeck(JsonObject deckObject) { int value = entry.getValue().getAsInt(); cardUuidIntegerHashMap.put(new CardUUID(UUID.fromString(cardUuidString)), value); } - } catch (NullPointerException e) { - logger.log(Level.WARNING, "Invalid: hashmap", e); + } catch (NullPointerException e){ } + deck.setcardUUIDIntegerHashMap(cardUuidIntegerHashMap); //obtain cards from a jsonDeck diff --git a/src/test/data/storage/valid_hash.json b/src/test/data/storage/valid_hash.json new file mode 100644 index 0000000000..57ad3a0c88 --- /dev/null +++ b/src/test/data/storage/valid_hash.json @@ -0,0 +1,267 @@ +{ + "decks": [ + { + "deckName": "physicsdeck", + "deckUUID": { + "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" + }, + "cardsSet": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + }, + { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "cardUUIDIntegerHashMap": {}, + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "tags": [ + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + } + ] + } + ], + "tags": [ + { + "uuid": { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + "tagName": "physics", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + }, + { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "f0721ed3-f357-4a6d-9d35-cd436ec5d280" + }, + "tagName": "Test", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "1631221a-1b21-4481-8113-76b0b6ce6499" + }, + "tagName": "bla", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" + }, + "tagName": "chemm", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "b0154090-c344-49b6-a8c7-1a4f5e98ddcc" + }, + "tagName": "new_tag", + "cards": [ + { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "834649e9-e0da-40aa-9a04-78877abf94bd" + }, + "tagName": "test_tag", + "cards": [ + { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "22c0769d-f046-4ae1-b0aa-e9910e92a3d2" + }, + "tagName": "test_final_tag", + "cards": [ + { + "uuid": "a8a9665b-88bd-4fe8-8970-5f5190bb968e" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + }, + "tagName": "del_tag", + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" + }, + "tagName": "dup_tag", + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "decks": [] + } + ], + "cards": [ + { + "uuid": { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + }, + "question": "What is the formula of force?", + "answer": "F \u003d ma", + "tags": [ + { + "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + }, + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "f0721ed3-f357-4a6d-9d35-cd436ec5d280" + }, + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" + } + ], + "decks": [ + { + "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + } + ] + }, + { + "uuid": { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + "question": "How efficient is binary search?", + "answer": "O(log n)", + "tags": [ + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "f5234305-3263-4969-bc52-dd93013b7228" + } + ], + "decks": [ + { + "uuid": "e723ebf2-57e4-4f5f-98f2-564dd824f517" + } + ] + }, + { + "uuid": { + "uuid": "a7094276-8429-4620-96b0-48f9e73c86dd" + }, + "question": "fsjgfssurglhsughfdughfdlufghfdughfdghdfugihguidhgufgsgsgsgsg", + "answer": "ans", + "tags": [], + "decks": [] + }, + { + "uuid": { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + }, + "question": "testing", + "answer": "testing", + "tags": [ + { + "uuid": "b0154090-c344-49b6-a8c7-1a4f5e98ddcc" + }, + { + "uuid": "834649e9-e0da-40aa-9a04-78877abf94bd" + } + ], + "decks": [ + { + "uuid": "845b2ac0-ccc9-4069-b885-6e651226510e" + }, + { + "uuid": "78e3dbe3-ab98-44a6-9e99-32a1b851e4a6" + }, + { + "uuid": "56dc8e36-2151-477a-85a0-301a4fbba26d" + } + ] + }, + { + "uuid": { + "uuid": "a8a9665b-88bd-4fe8-8970-5f5190bb968e" + }, + "question": "test", + "answer": "test", + "tags": [ + { + "uuid": "22c0769d-f046-4ae1-b0aa-e9910e92a3d2" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + }, + "question": "this might work", + "answer": "finally", + "tags": [ + { + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + }, + { + "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" + } + ], + "decks": [ + { + "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" + } + ] + } + ] +} \ No newline at end of file diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index cfc639e190..569f3d2adb 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -8,6 +8,7 @@ import java.util.UUID; import model.Card; import model.CardUUID; +import model.Deck; import model.DeckList; import model.DeckUUID; import model.Memory; @@ -27,6 +28,8 @@ public class JsonStorageTest { private static final Path MALFORMED_FILE = TEST_DATA_FOLDER.resolve("malformed.json"); private static final Path VALID_FILE = TEST_DATA_FOLDER.resolve("valid.json"); + private static final Path VALID_HASH = TEST_DATA_FOLDER.resolve("valid_hash.json"); + //valid file properties private static final String card1Uuid = "1ddd9a67-f56c-4914-99c0-2f90c580f0e9"; @@ -42,6 +45,12 @@ public class JsonStorageTest { private static final String card2Uuid = "619c689d-395a-4bb8-ab00-6ae9972bb929"; private static final String card2Q = "question2"; + private static final String hashDeckUuid = "7f688a43-b13c-40ab-926d-72ae9acf8605"; + + private static final String hashSetCard1= "924119c1-a807-4df2-b311-080be9ee8522"; + private static final String hashSetCard2= "619c689d-395a-4bb8-ab00-6ae9972bb929"; + private static final String hashSetCard3= "1ddd9a67-f56c-4914-99c0-2f90c580f0e9"; + @Test @@ -93,7 +102,6 @@ public void load_validFile_cardUuid() throws InkaException { String card1TestUuidStr = card1TestUuidobj.toString(); assertEquals(card1UuidStr, card1TestUuidStr); - //todo need to add case for checking for malformed UUID } @@ -111,7 +119,6 @@ public void load_validFile_cardTags() throws InkaException { assertEquals(expectedSize, card1Tags.size()); - //todo need to add case for checking for malformed UUID } @@ -130,7 +137,6 @@ public void load_validFile_cardTagUuid() throws InkaException { assertEquals(fileCard1TagUuid, card1Tag1UuidObjStr); - //todo need to add case for checking for malformed UUID } @@ -149,7 +155,6 @@ public void load_validFile_cardDecks() throws InkaException { assertEquals(expectedSize, card1Decks.size()); - //todo need to add case for checking for malformed UUID } @Test @@ -167,7 +172,6 @@ public void load_validFile_cardDeckUuid() throws InkaException { assertEquals(fileCard1DeckUuid, card1Deck1UuidObjStr); - //todo need to add case for checking for malformed UUID } @@ -182,9 +186,60 @@ public void load_validFile_deckList() throws InkaException { assertEquals(fileDeckSize, testDeckSize); - //todo need to add case for checking for malformed UUID } + @Test + public void load_hashFile_deckcardsSet() throws InkaException { + //check if it is loading cardsSet + Storage storage = new JsonStorage(VALID_HASH.toString()); + Memory memory = storage.load(); + DeckList deckList = memory.getDeckList(); + DeckUUID deck1Uuidobj = new DeckUUID(UUID.fromString(hashDeckUuid)); + Deck testDeck = deckList.findDeckFromUUID(deck1Uuidobj); + + boolean testCases[] = {false, false}; + + CardUUID card1Uuid = new CardUUID(UUID.fromString(hashSetCard1)); + testCases[0] = testDeck.cardIsInSet(card1Uuid); + CardUUID card2Uuid = new CardUUID(UUID.fromString(hashSetCard2)); + testCases[1] = testDeck.cardIsInSet(card2Uuid); + + int numTrueTestCases = 0; + for (boolean testCase : testCases) { + if (testCase) { + numTrueTestCases++; + } + } + assertEquals(2, numTrueTestCases); + + } + +// @Test +// public void load_hashFile_deckcardsMap() throws InkaException { +// //check if it is loading cardsSet +// Storage storage = new JsonStorage(VALID_HASH.toString()); +// Memory memory = storage.load(); +// DeckList deckList = memory.getDeckList(); +// DeckUUID deck1Uuidobj = new DeckUUID(UUID.fromString(hashDeckUuid)); +// Deck testDeck = deckList.findDeckFromUUID(deck1Uuidobj); +// +// boolean testCases[] = {false, false}; +// +// CardUUID card1Uuid = new CardUUID(UUID.fromString(hashSetCard1)); +// testCases[0] = testDeck.cardIsInSet(card1Uuid); +// CardUUID card2Uuid = new CardUUID(UUID.fromString(hashSetCard2)); +// testCases[1] = testDeck.cardIsInSet(card2Uuid); +// +// int numTrueTestCases = 0; +// for (boolean testCase : testCases) { +// if (testCase) { +// numTrueTestCases++; +// } +// } +// assertEquals(2, numTrueTestCases); +// } + + } From 33a496321e223818cff2ad8dfcf714985a88e7af Mon Sep 17 00:00:00 2001 From: iantenkai Date: Sun, 9 Apr 2023 21:44:57 +0800 Subject: [PATCH 234/311] pacify checkstyle --- .../java/utils/storage/json/JsonToMemory.java | 5 ++-- .../java/utils/storage/JsonStorageTest.java | 27 ++----------------- 2 files changed, 4 insertions(+), 28 deletions(-) diff --git a/src/main/java/utils/storage/json/JsonToMemory.java b/src/main/java/utils/storage/json/JsonToMemory.java index 0b73e803e6..f05e96c4de 100644 --- a/src/main/java/utils/storage/json/JsonToMemory.java +++ b/src/main/java/utils/storage/json/JsonToMemory.java @@ -1,16 +1,13 @@ package utils.storage.json; -import static utils.storage.json.JsonStorage.logger; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.UUID; -import java.util.logging.Level; import model.CardUUID; import model.DeckUUID; import model.TagList; @@ -127,6 +124,7 @@ public static Deck getJsonDeck(JsonObject deckObject) { //obtain cardUUIDIntegerHashMap JsonObject cardUuidIntegerHashMapObject = deckObject.getAsJsonObject("cardUuidIntegerHashMap"); HashMap cardUuidIntegerHashMap = new HashMap<>(); + boolean mapEmpty = false; try { for (HashMap.Entry entry : cardUuidIntegerHashMapObject.entrySet()) { @@ -135,6 +133,7 @@ public static Deck getJsonDeck(JsonObject deckObject) { cardUuidIntegerHashMap.put(new CardUUID(UUID.fromString(cardUuidString)), value); } } catch (NullPointerException e){ + mapEmpty = true; } deck.setcardUUIDIntegerHashMap(cardUuidIntegerHashMap); diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index 569f3d2adb..7aa368b367 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -199,7 +199,7 @@ public void load_hashFile_deckcardsSet() throws InkaException { DeckUUID deck1Uuidobj = new DeckUUID(UUID.fromString(hashDeckUuid)); Deck testDeck = deckList.findDeckFromUUID(deck1Uuidobj); - boolean testCases[] = {false, false}; + boolean[] testCases = {false, false}; CardUUID card1Uuid = new CardUUID(UUID.fromString(hashSetCard1)); testCases[0] = testDeck.cardIsInSet(card1Uuid); @@ -216,30 +216,7 @@ public void load_hashFile_deckcardsSet() throws InkaException { } -// @Test -// public void load_hashFile_deckcardsMap() throws InkaException { -// //check if it is loading cardsSet -// Storage storage = new JsonStorage(VALID_HASH.toString()); -// Memory memory = storage.load(); -// DeckList deckList = memory.getDeckList(); -// DeckUUID deck1Uuidobj = new DeckUUID(UUID.fromString(hashDeckUuid)); -// Deck testDeck = deckList.findDeckFromUUID(deck1Uuidobj); -// -// boolean testCases[] = {false, false}; -// -// CardUUID card1Uuid = new CardUUID(UUID.fromString(hashSetCard1)); -// testCases[0] = testDeck.cardIsInSet(card1Uuid); -// CardUUID card2Uuid = new CardUUID(UUID.fromString(hashSetCard2)); -// testCases[1] = testDeck.cardIsInSet(card2Uuid); -// -// int numTrueTestCases = 0; -// for (boolean testCase : testCases) { -// if (testCase) { -// numTrueTestCases++; -// } -// } -// assertEquals(2, numTrueTestCases); -// } + } From b9d45aff39936bd57a20b69688562d1e77450f2e Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Sun, 9 Apr 2023 21:58:54 +0800 Subject: [PATCH 235/311] docs : fix DG to reflect new card untag --- docs/DeveloperGuide.md | 8 +++++++- docs/img/CardUntagSequence.png | Bin 95849 -> 122489 bytes docs/team/mitchmalvin1.md | 12 ++++++------ docs/uml/CardUntagSequence.puml | 16 +++++++++++++++- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ad78d1d2c2..23a9deca46 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -227,7 +227,13 @@ The implementation of the `card untag` feature is as follows: - After `cardAffected` and `tagToRemove` is ready, `RemoveCardFromTagCommand` will - call `RemoveTagFromCardCommand#removeTagFromCard(cardAffected, tagToRemove)` which will in turn remove the reference + call `RemoveTagFromCardCommand#removeTagFromCard(cardAffected, tagToRemove)` which will check if the `Tag` is + currently inside a deck, + if it is, we will loop through all the decks that the `Tag` is currently inside and remove the `cardAffected` from + each of the deck. + + +- Afterwards, `RemoveTagFromCardCommand#removeTagFromCard(cardAffected, tagToRemove)` will remove the reference to the tag from the card and remove the reference to the card from the tag by calling `Card#getUUID()`, `Tag#removeCard()`, `Tag#getUUID()`,`Card#RemoveTag()`. diff --git a/docs/img/CardUntagSequence.png b/docs/img/CardUntagSequence.png index c90343f036c8550d7afde0432b27082f6c82cc0a..dd7b4c3744a1af55c6020766bf1174b0cea8fcf2 100644 GIT binary patch literal 122489 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

wjkLafGd8@B%hIWfB9kvBB*?|TCjTH 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

V$|1!rMC#})992m8YVr|<^633uxQ2o` z8jl2@5uJCL<|wU{m6{V0XeCjT6JJ-@i|wWHEAtiKuCtM?-VZ)B4nvW;QD9k=d6`I9 z={#-ds=&OPsWG%g@pZu5T5m+q|nVZ?oxM+e@6d*o^oe z;yz3VoU5VKI2?cQ?%u;c!b$iF{Yr^pMjop4`hH^f;QFi<0t*)#$0BZOdU|3Y`YN1r zXt;b0M(*BMITpG&Wqg;CMiHt9rF7$D*`FD!RvO$_EmzSFn8xl{heORF5I4x{moKF3 zRMukd*kLpb9-_Z`MMPD2=dsZ(xI6CoH^J-1Ga@CGCv^zVJd7yd5{ZxsgFfAp3CXu4 zz7=pEg-EHi?TL_uJgS}?iTh^~leyM3StX(=^_7&VRL4}EFD=Pw6&E#&9QGAinOR*K zE0HTF;^IwNU{U`0ns%uwzVq`RkWU0l2!H*f8xH!{&k%)p?7#lOgS-c#M7PDPz{Pm^ z9R{86Vo^*(j7-ia;}Hy++^1{tObU=WzP)D~b7okaB2f#+1&-C;OsFRHYdE;_4~m9* zx{)Ce9$}-kvo#~Xh8@D)5ie9c?vo{A<66ioFV@Dd^)p5v>5L;6n>LOKMj5}N7U}9~ zy%w3e{#@JMvgJNu{6fBI&3RXq{ciCMcp{vIhqHIRi&*Q5^CMBpS}tv8#FLgl3F8?lr=|Sop^+*w8#u+h7gko`NTWPsN!% zn=y*~k8?(W9gU@S+>*ex8j{RpG_C}UUP#4cyCz8RiQS9kN5hp_Q9b1Pru zxNt&qLkZXM-}Nri|Idqo-JEHNWtaWgF#!aJuH)e%nr`2F{XPzEo36v|)NjV&oP5N> z8nEH5z2Oyat$Y`di|jrg=xS{=?X zn83H#-0Z!-9E;;vU|TS$wD&2Zk`xzOzF~7mNy@=;V*M5>FPqI;;%l5|KS-Qgp2%rw zjcHUB@0A)3J+63lvX4jScyLA{EVF`);a5J{jCH8mYjxbyvqHT2|T7^vEDH_XsWoZ|J7*UZ93YSZ!xWbMy^HZdiCJ1 zQ|5{2RBl2K3##)Obehd<9;P;|$f>F2qzKD)gg-MK&hN3(6y3%$4$v~yUyLZgcEn!o z;76k-q3>Dhur3pxPV9|ZH5tkyJZmNnG?0jOy+D9ncUx#q6r+Bo_)vI#+hlAR-GlK}Vm$XEA#<-zuF>$ZYg# zh*09o^(>!mj~+@Aq&*Q47aq&)l33fBccOQ$_>whcla9S4YU!JvJ{f@Px#CCOc(r77 z8(E4P{A9adiHlFAbp1dx3&5d|j=3W_D+lHw8fU*7Z|bQX$!GKowu#B!PEAc+871Xx z<{?fhcOL=M+)8CQ?2t(%+c6wyZE9DvTrl6-GD4@)L1#a=ey?JG-D1}wt9?9IjHKMN zA-wXNH2VCs!==VGd8QF>lT-$WYBOqXH|BNVc!!YYhi~kT8cOzio2`_|m#4aQSam+e zQvNd>94u6oO-6!QXgS*4TCudgE_(RvguWe%Mr5To#nBT9GfO6iOT7+H=p_Edvo-T? z3MC#Y4*GB@PP-kp!EzbB@B^8guSlGooQ@rCWVst}j#{V7=GBBy%5JzLQuIOLQmS@Z z=iJ;NkwkpFyh%xj1|PMrN5@-J=~)@t6JlW6b_@j`Qbdz`Y};5QYB&t70Magrh&mMhOd$K{eSe~~hg zl~?_GrpT0iKP}%*V6ELZ%Wr=n(VK(;OcVYx>QaZQVOk2XP?%I{yH!)LP79VQd2+Dx z$DbQ=#hWb+W2-!D>fH~62JMT-5eQ=cQDXM)R=_ZV=H_VrNb^BwA~QB#xfYFnDt0v2 zIko3Vm3>xpG-0rVk-%uVWf^JQ8DUC$swjKLd5e03yX~YrA332@e#Ck&$upzji7XG? zpp%bEi8M(&E8cKOtNDr8$tlKZE{|9({8Q+1W_~neFkeSCM@xc^Y~{*>_yB6f3x2|- zAX4$6Fm)!ot?mRq!5pPympHB-DSC!o!%(rlhwyAeyX7f}8su@Nz5kIC{YL+OsWMjF|egqaat#qc8()be@uMHM* zHs3I%l+(`OU~#HUGr6RKln)(}>BvQJUf(;jzgEbZ(m2S`qX$eXS&eCAHTj)it<~Lq zxN~WP0z$uPFZA>rm^}$wb!dC4{-h+HbuT(9BDpD^;=V|GBN1c1jwJ z6k6|%K($(soI@KAHo1jJmeHfvdz-9A3bk$5j-uCNIU@LW1*fXdM@+;z1FZz-&*0v1 zZH$#V&yAO_uD~(H=}6&SZF-MBnl~8HJjIkm+tO_6?B$ftQ*qUl2OAO&7YGY|shTfd zSTAkt9&KA<+&@kAqoSg!Qm(vP{H=FCk4$sMXtX#8PWDo6Vu76Fv5ii{K!by2PyLq& zy}gCRF)VgYm8z?75tWC%lqca>AZMkl*0YRI+^JOKLTpUP=@5Fdu|JenK(()}ntn2} zd7nn<>*nF@(9=BBsDO4>zey#dxi96(%O2Z>b+Ni{+f|ZJ5Aaj#){xKgsw?Ie7cUp0 z7-na~?Bv6irkr+_%Prb+?_?95yFq8b3*rtU*nEV+>qTo56TW9TS zK7K*2b2V+FJ|f(_X|>$T`Fvl}V)+}QVK4M44#{AKWS0eVZ{_ky1D+?}g=~gI2$u4S zV5D(u9lFMK0LJE|iU0waroy zX-|0v@_LYsRPdPaA}q0><-^S+maipWD{z#VP8EP}7YSBx^eN`|Yp$?fRjrN|Pa11# z^2QpAh){hy^ZtF=l&fn{O%1oPoui|!w(=wTIs1h>r!%$f5trD=*3pR#7=!ABgi}Bi z_CXTpv1whpdSi@G{o1h8CSfYn4gOK5y{gk^e!}nKocp%Up$(aj$_$6xH%tXSK0?PX z`>;#iwIEiZC@q0hQkyTQx{XgT=}+<2%JA=zJJ;x)giKXf=Q-pna;UMeqo+<5a5~br zc&pc|9BtK8w?`ZurL>3ADDxx8oqRP9Vw8T%QeuEGkp8yFVILO7eY$fKtkVM!`}=t;8SD_&57m`*4m! zUL67p(fp<~OcpIly`KjUv7ZpZCX=NzN6pR-}l?mkF(2i$u_mX*hS+wo#CgadkIHR@x|+D$9BAUz!gd52`J+ z{uN%mEeS-o0`R<#kB-)+TwlhusjL+PCD#TOL>=J9lXMk{W3?O@Dr?VIPa4_yOst#U z$xBT~C8G;;)0+ybWyv%P{W9Gyu4r0BstSDwK@BW54%({)rcTp#HynbkhhNK8%f zNnG~pt=?oqyjUXvEfMN?>AW^9Z)&=ks~p$;i1)2z#fA1JRWw-P(&=vsUc3{ax_M6C z?>RtDLdah9V?_fDqk4-7BUt3dez{E(=2!EO(6vez?1I60OGQQ0a|}6u3~2YuWc{Dw6TpS!8Vv*5j_k|xZ zt$7NC5X9Gm72Zu_--+~y!_LEofnKcVpidl4$FnOID!^s6viA_SupOYa$AfROoBx`G zYaRALKDBZS=+vlZDU~Bl7!t5qSxi;eZ*L2a$fC!&R0ML3#M$dS4A~qn$1_I5XY<8R zxeRxi`z&Vlj$XTU?fZ9I!=c=)>eJ*e!CxXPq@P9Z2IJDGb_V+3YzMj~yKM7g#iSSv ztS~CSJ(+9i%lL9Qc^bYzy6=N=y@4@kMn||jYr&be+I&^H$I4?H03xZLqWx*{Z zI?Sd?SJ%F1Rv)0dlNhQ`R-&lNTrXc(9ln0MHWCyOTdjEP;=du3@h~Tv`{F2Wv%1oz zBNB}&v#YGXUwnBXJX0eJJ22qSDSnuL6E?;F(%L{rJIK3oR_ph5c0?U^-=ba_M&4ah z1{1x<);-9<1Wm$6RT1yCYbQtbkg^{G!9*VbMid> zOKq(}YnMthDlKKPQrg5!y=wA02%o`x6*lWHxY}bmT~80-*FxTB$(pLkds@roVY5u( z=Bh?Jyi)c#nshSJIq9N_%isZ-UafVJNO`|gks`zb~hn8f8f5b6Q`iF z-GCEHW2K@m%&F)U=NggE8GR=e?{ti`yI3>3xR@8oJ6hO^iAAlD+t0)Bvfe8|ID~?K zSzUd`Xs}G~vhR6NE&K3s82?r3WoF^8xIy!HSi_=>t!EOFR>@eAW;BqAI+5P<<(=0e zh}a{Ky-;*@>!cnfp%ui(k1AJK$zB+TH=L9V*ShnONl;AB&Sp6|+MMi_Svht*qERfR zIz>}i>0(y!edD>Ntww-%y&5q6yfxxT^yUH0d?3fF(Vcg zyJ%j$AT*3-w}pz})aZ05q$B$iURFp?=5bq z!j${)N);eIZ#0gqzj1LemIckOu^k{Z?DBPHsU&z>bUiWe*>+ks9_?~M=%-VkRa-4*ayci0ylk{kd-XA2EVoU2V;N_I;n~bu zDjnx{6d&jtWup(?xp*+ZP{g$J?Hy@_wV%V~x#$TME9w0nVOyF`J-?XqnhY=6DhpcIYkoJK0v!hy%kug5<dcJ`KOrCq63GtSUMY>@F}&>_J#q8uR0KMg5h0euGhdnH zo8df(KV=!*v>p?UfBv4Q)5HT7-)<2vu3AFqm>+yJ4DzIU!va^HDe$Ij;-&)M?YXt5 z|2wS%hl0KIdR7p)FV8GBe$;*a`hIxW?xD!bC}!G=-7fASrD2F2y+t+GZ%?Rq1>w#e ziKbt8TU~NS9fE-$TD|VMSJzF5K+tqTMYIk2Xxm z?&IH$6hm4IYpi?xv;{(~)9-F;ZM(k3M_nSaf4W96=nQEuXzvB%F`GD@?+=YinRlOF zs#30CTo2%Th{KKcXcY7uJ32@_J@YiRJF2V zowmtj6%IBwv)ObljdBGFKATl%G%I+G@`~kK%nQ-d=CRvu z`D|}r-zM$ttM7A5gNH(N#3&a^JkA&IZ4CMAQbMo@$bo~$Ae3;2`e=k6H{W{;!@V_WC$q!cI?*oQ90I)0Ri z9hFK;_zDz#swg#AtlbYEUrfr(xaP0Urw0Jzrc(T%TG_XGCZnj4elGs%Rk~^om$Gm% zK0f|LnW?HV(3`LqM|k2A0uVEl+5peh2#0L|lBS^A$U~`G&0#6dXJ_{wV6@clS!Neb zvDI?sBmYDrrEMn6eZMe^zQMJ8OG`vhT31S|T+yE-hz4|o!UZ{6=;3moZlgbrW}|~-_uF&U|8SDzn@xtyO!m+tgSiYr4MLLMX~CQdr6Qp>nK zWYoJiR$`Ckr9vCdper_3YJ7fn_Tb*P zlF{+bT-lV0=s`O}{Ziw3i0sp%2_Q%1REKer?BL-I3xvXf#NkuTmNRPl_^!HIJ6#%^ zMx?d==HL8?&%RU(_TOUtKAqLU9H3ni5x6mrR`Y5UN{wC{HiHZ9 zJBed@LQI^&q>$Z95$3!ulBEGMj(3P?qwL6hdD!hy%%-!A0V5+L`0O@LYXwb6*=fjV zXr|*|w-46GYL0#&vy~K@ksQM2rL#=1INMH~7(P0Bk?~mR<>BQ;oT#k)Gneo}+{uutYl@^K(m+1An+kCZWvm0EhQn~ARn~?6oMiwGrjsxmkM3>N zqjB#v6C(^RzA!q83ku@Hllp@12yVux=&8~#!e|$RmeHgvj7`QUXS>&8Otybu&M7*a&^U)e`HXNI@Nh?8#^o}J8lSbY zQg;J#yTeLtTzNsZ|2X=@SSD9Rf!z{mzksP@0qDZ~@ZEwX^oe9_y9v#W@p7Yrn23ni zmBnt!AvOvMxW>BL+L&^(fl$Xo9c?c(LX}FJbugB_2csp18SSo@r&F;1iVHv}lR4g* zZ___q>PaduFE3Wmp}il@V*Z4BhgDa7X&DDt`CaPAMLGzD2O zz9@W~Hej_}9L=JQe)RLBR4g@ecfLe>#KMC|Djr)UEB}IrhsVe$yD%$NFN_jW8}#c< zhBXVjYJYG%RWz!|xI`sit7Rf;7L#&Pvl5$T4i#tT3?5A?SFWIUYlfDB+nHkDF%e~R!S5+;RAj)HUDd*gJb6^Cs<9Jax6cg^hodM z47n1@w_}YnxxwsXw+c6h(CD{?YY5tXzD%+D%A9JoZs??9Qn^aUEu?W;J{cJqR*w-7 zL0MZ9tP_O6fmu+tXm9lgA&=h=%jgt(IH}ntW;4A#+a%9Mt*3uD8_1oyZZc6}4H7u8 zc>n<5e7atCb+0{=laoP^>`#CD?yfqrLZ-YkTYyUZC8x)z>&L9S_2ZScw8rUB>7+w& zU)ds9c#S)4Fu}s9_yGdhqY9|qwni%U@b2aGw|6U6LJ2$D+uKI6d_6R>5I53a%OndK z+7E%MU`C>q<}4wQiZ8qrC{3}B-*LQfhxhKrHC<@8Qy>YYkfxw9xi6fCK!K@ASuaSq zE>zYd8p)V4FpFo}PNrH7mxCr>@aRvjEKit6qvsUM2SXiyAsz_Uy4oT&HVW$;qz81_J_jntUX` zVtDK}uoMK-s#a?>2>nTkgZa6#oQm!Ti&Bo-$xN!|tJmMkj2nE9a9Dk;3Uw$+&9B!c zReYAKS`(X+r&#t8&RZ+sY~Eg5<=4AJr>C?!7*0tu{8uujc7`vCA+zS*%Yw!OXq=J&2W+ zTOr%;GCrQI*!;(Ld$uZ2eJS7*i>WwmXPWOl*qFdkIds|Inh%@mPBh;bM~J>!Ze*pd zmlKk*By8tNDKV9l63f@0i?V}ox zH&W}`j`ZG81LeIzbsXJsnLQ7<(+kOtBApHm?Phy!?iwJ7^OaHm zNjp;{s=O(;2m#q`8vE=*ha!0m+$&M&sY@XuVfJfbTl&@<$uxqtM1CUthEm)0ic`wf z`L>{u4N38HPP%+7V_0EmFM?q<1pT=IMrKu69EH)?!Tr&2F3!%bu1mn~%*C48Q&r4n zcnPSFG&KaQ)<^4CH@X_I6*nBJLrQf!gx>gOxZ;V&f)PBdM=PUC;(snIi>PfrSHnOJ z7RrQlYqtEQ?7K!Iw!DmJf8Nw_9EJsQav_#8$*%-psYUzD_om9k^?>LdF3^-$SFi!H z?u&6&SZZ-3DjM2hVQ-ba<$m6Xs?#>V5QoLwhc6ntR44%|TZ?h7HehK9$z+34I#VfF zn+XXC2!oe_bRal`m|C;bO4*kxn)KpZ>sUW>{{{B2?LY*b=~T7os;-3>z8K!yw{JzV96=<-F|c?ah?U6T^P6ZnM&_ zU-$k_HpjK3=6&-L>UK_`-WmO}f+3d0oI*IQgmE2+B5p1h@*+@%E}+sK{6tP3XE$-V z^8Ley(Be0`V_-I?@=JkYZbE|Sa9BH7T79bsU_pXHdxB6%CRn;Yeu{I}rV#-CPpAq} z3d{J3(dHjI-rT2%*#x&@s{va+SgcYA)u3pxD%GNm^Q~K*tVFQcQJNX&O;SHr96trx z>6_YpEDqmh>b>=I2(YjkW7TY9<6JL}L6{$vB0ah|-E=+M7BtSpkLGT(opKhWR2=cC%(&-Ayi$=FKO(U)8G>p;$p)GvalkwW4;lqIRW=d!6FQa$(7I+^ZXJK!h+omEk2fzwP>F1|`>EhqpV|OE4TRNl5 zS5_5ufEU0hEb`-u)^*qs!?L8u0(=!rRB-IGvoo*-bDnM0ySuyZuMALT%MslK^4Ddj zg%rpkpl|SS@z*fjYULiFqk{<1>C$t3|J`_4vatUkO@p587#b<|AUEHA#ImrsNciA^ z!%W?TECDF|rGwp!7RspJ72CeIH_=-5tuy;^3qZ4P3p7$jiWW_$T->0yO!rq%ebJ=u zq})UpNY(yBxWJZ8#{oLsCw}<0m7xnI$&Agm`m|~rY?g9Z)L-1H|= zgvUzTheIB6B~>IMnMYqOT9R%)=JOWY7_(&olh9s!hAr=K?z14bLIrNa<(7-> zz?-C@q2hXO&FZTDr^$(o2JAs9cIwff7&Z3M-w2O@AVCXyyg;Q;UU2DXyU;!WB*f9t z(Hr1q$=eyQYWk?WL{{3NqLO}wETFJEl!^JhR6LqxDn-~6Kf5tJsv{JXU~WUT&qYi!`W@!8%~r@fV3<%81On9Dc0A` zkVpxhlK->__PrIM@QimFjoVW#SfGLhzYXfTRoQQ(A3sju^Wx|#Tw?`e5+rUTlXXCZ z3Dip+&?`sB$5~;6(Xdz+1Y()zGD2SU${8A@hVzyg?$g#*=CEAIY&da5 zV!MAnfMIvKK2S_1DsQ=2~w`wi~ z((~(l;{~l-L?6rSF~|tlrfOW}hYQ`XiXqrl^zks7eFXznzkK@@<#xZZg?Yn;22$%} z*T2W$e4=zN^l-r+B!jMCr}>}1cx9ipFZBg2Sw)LI=?$YFZ)YpC=zhh+e-0|d1i`_b z^2)3Nf#|?F{5%WDSIi}Z+$%RF1QLGd=Y4Oe3&3Np1|q;XlNk6v%+^Pr8)vc~=V2OC zKx$)nXw4d~&8@W}JhXI>>L;}=Q2SjSC8hCNclb)HWqPZnZdS_$Ad>ZvS--W0P(rJ! z04w1en{qid=H=xDQeHzt!764OuOCorp zNH-6pbz}^?tH95)gluRunEk$NlH&cM34P#-kQ&tkm47w=}c4Deh-8zX$<|ppH98Ur`>?#XIb;%)L$$2+%75&ci=ObKfMu ztyf=OoFWXyaqq1Tn4Lv`H2y|4`;APh|I|{C=EwoaIl+8tqBz{$6&Ibzq|Gb6i_az~z?Cgd ztG=6_d$aM$Ov7(hEii*4FkQnyO8eb~iAq~;o3&w(%3!); zzy<>pi;4gP0=_r-uVypLeQ9MzBRhb5_O#Z>7wG^P%Vsgx3{&9ba{_X5!wVfzeSLlU z#PsxE4EpSZy@Q0Kn2a?Rps<$U$J1OqTEZ z0mE&v-u(<(c{0g8kMZ$1gF%#JB(S_ryIftEoR0kBoC+mXRgC!ukwKaMVy7){xzA6B zU?8Mc?vJX6BEPESJ#-W0=lQ0y0rCd@4v|$$V=rG-m*e>k=BaFOKgUuq?WCkI#!}&z zw}33lSKdFpt6$CqmSmyKa3lu|2jj!6#&#mfhvrz`g%)O zi!dskSmQ+Ea_3gcFrhH*n|V25JG6o(b+<<JX zL%;Xf?|xa3gwM~oO*Y&PZXoRhCqUb8qtr>r$uq=a*nlPN_T9TOs|c-Kh{Kr|-+j=H zWOK0TU<4jS4@XBwP&{IN{yfAYBXi3!f0qJtl&bbYnekX^f6JRyglrhP7}@Aa61>8G zG+(F2KxUB%CE;!hrN$#9?6SE*M@X=L^2pKQo1$rl@n|utv6i-SauVDyr#Kq3VZX08)DIXa?;sx^JA zB!mOnEHCe@&XYsPb=tiZlTrqk>x_RMdIzjil?VV@3E6ElCMxy;2vIK5QFA)$l~sv& zbno8us^Zf>{$ONtAfnu@L!NEs6H2xNmS$P8oI_Ppi^alVKK@X=5%sM$mn{(J~Pu%1%-kYY1rj@ZD@qJMZm-k z6Xp#B$8rYU&Sdt9@bK{Q@p0JZ*cHnOF!R}3Q5Ps_k~_n&749a8Ez7+rrju3j@u#-8 ztiiXA^LgI|$v5K7n|AX19-t(cqg4Kd;tcGgPesC~7Z+`}fAAkX^#H}K_0bYg0#cNh zmj_v_jI3S}gakygPrD!-ceS;R0pI|#cOg%26r2YS9(;+56CaaeVPOd$Z|>|&O#(4s zC|{lLK>Qx#q{KN4Y>i=%v)aryqLN@krn!L6+?QI>Ms``TP|K4`So8F7%Gv8f=ntc? z!7=T&(20Us%TmW3t&f3$0K#0mUO}A;14_g`wll05*f+ChU!u|ANVN^zdBqo?(uy*M zii~VJl>1JCwGVkMM1A=rj6Tyf&~2Plc0^knrHC=s&$6~9Jz&65|VFc%L5qV^O>bT>|Zw{Kl3`wTe)SMK%Sw$FEH0TnW;%t9N6&QU=*KcVZ{Tj}q&fIIi$a|0<03kxvC2b$m@z5?I{becCRp3Tvgx^XO$x5GDV zRjr=HlZ>>B+^#}7LUe$A`9dh91+Pu2N!WA~>f1jq9mQUNAIEAgKjfL>98|nV;~wYr z-us)t=~I-+dZh&7F~63qQJ_`Zloxqrr`QtkK~EldJv+!*{&m{Gw0N%6A5Wjs0MqSx z6&wUzQX{Wxq{h|t&6_u%?hmSN05_`dn!|&$OA%(qWxfmQ9SI>-T(;|@X!7dj6^WVIy<+a;4ww66R=u%t@N)VXrbc1zjE}>VKt3%MG+CreIRDtw-@h`?!Tx0Vn-M^2hI0~WVu1z9O9=6Af``8zJo;>Wt_aT1?>Qiw!eqI{$Wyfc~?3FYYt%~_lcZ>7s-KHj5 zFeI<#VXn*2@h%Pq|5n=#r^7S};F#4ATpk(=< z$JW%umN)^`AT@8`l>a~2Yxd4c>w3uYkSRoZAWeL)iSTk4?A5vQyEjP0VmV?SOgV1O zGU(>^nhfP~Hvh%N^2`AjJCPhN`m!c8J@d-$S@?hYTwYwK99;;I@W2PLE*LFt=^*QR zcMG-u>XNVNR83)2AXb5op+|`x z<6@$;niI_kU?w0Yo|OWf1(8;4bKMC+l{WZ=_G|ybqw?EFiiVm=*z(x6w`TelJC$W^ z#N(_r9|Ul1D`0N|L7>SWXLjxs93VW}_Cf7a64qSKo4*|y7?yaW z1wi?{CrAs@~~4p5BwgS>{b6E1k!%KC~zT znmHG0=-#sy|8()agOlG*H&>?r=h=%E=V_Wo~{~rElhfoTWT&ZDobCu zXa9rZ`ZbY2ni1m`tGj$Pw+N?3^lJ(VLkKnB=C4UqUYGfU3&AIVH^Ki7 z@6kanP-(y$Ajuw=pPRv=hP`sHFcR}uz`Y=!kgksa`~6oq*w9Z+?|?hULvcjt1A7B_ zO(VhXsO!5n*yl5*UH^c+0leHOVSM8H3jpzQa{d^!#r@#89P;qPZ%l{)jF_5%H^9JG z&Eo%j_E$J9`u)`v)bjk=D)jd$hNA%^BKg7Am{ zYWKf=O$#TGzzkg+=vY{xpFbybz(a2P0U~Mspi@x8JxK|I^71z(OMthSzn+YPuLT_c zsc7WQTerA?f9oEQ3On(aucYe#&pld!iP8P_F=jHd4-cZ`+~r`mY>}Jp>IU#^!@*V~ z^Vi@kjyJWzaETyN!;bXe#}>R~)HT5Ny~0j4-%`d;_E#Aqc-$ob8N#BH;~85M#T#y9 zDlMR{w-FWm(@uE!=hS$f(}hi?QUx{>8_lb{lBM9AfI zw44@~t6XUVcKKJYZvO!f5xH~v1Rsc@-`>4id#GCihl$%|AjFOQv*ignu7%Jk&&%Jw zpC|8j`pg^wmlMm=r?47|dp z|K@fL7xnY=1J(4d5>!OkihB1qsD<#ndGG*BOIML9^s<&EH1wcFkkC2Vm>u@Ehd2I; zkr0RnJC>m= z6isoalN-TFfT{8qXYLwUMF7rC{jt)VxH#39FTclfI?8E?iHQN1A&jno>(%)F0pz_s z2A80$4NeKzIalg^0Pome>ZzZaio;rO?YhzL;NAfzo2!IFr^W-Szsvnn+&KrNqLDAh z0CtI=IGl2=sXf{C{x_>C{#crLT!v)YU0g;oA|f}XlpSALpasd4EB5wRhel{1ko5Zs zqrgT2vmXUh*VPm6dBzlgwx3{1+0HiKxHwmX6&Yuo5^KQ5>37tf9q!=4O!1IfzMo4f zYX}+8z%l^90SN~tPOgJt&0rWh^z`;-HW{}ARW_I@0$k^^*k?}sdzhH~V}MM`#2(iG z<_%auC6J+O!v%n4Qs~O=!9^i}&X+C#{-iP_v}fu(!TH0i7cs#y7aft$R|m3&J`)Rq zB#&JvLDJjP6Fjkim6J2(+7~KQURGu+BGL{x=#rTQn69F0RlqczHW3_*Q3?Wh>Nk+J zI@#}xndUupT!>KLdwtYO39KoOo6gy^Yuy%>u9@--`JkUMNAd7tH!cp9@Ztw)+*&`j zq~hm&4^Y(y_C~{#y+oY<9D|48Pi;}A)$$3vo^Y#&rdCPipfe)01b8O-Y2)WlqFF6l z71RxP+S^51W0*||@IyjF1;zm3K%n>wH8$MvIyt<3d2v{iff5t54$JOr0tq-3)N(i| zD11{u>#|#~cq~VYjSnb64-d;}0|C{T0s8ThD$ zD(4ixopalO)k>5S$71fW{v{3&mVm%O-AeE{i0-ao_{D;>pU%uINuw16WbCKb%e_!u zPhYU*#?j57lANC%SG{YMo-i>3k&SWd7&BW$7T`Mw*x^n}-E!|3hy^@sK@~2&( zwHgI)9Dq4@3~Ditw4R!pTBr=ss(qA2Jbe%FL+WynMkI(8WMHHG8#bH=Ib26?QqrZE z@F6fYWXlzRF#0k0xx=1Z=s>nS^5{C~D+TtomCW=l;ChW^WpFt=8UihFn4qCH1=h2w zt@lmby7%=^j&O>$E9ifo)3vjE36dV*rVEXZ*0J7aB_xcyI7jS=yA-ptV~G3$YYdC7 zyT+8jLGl=wkVh#S+MhjXzt5lW5A{93RRJzst~Q48LKcwI5>L=iR@n#jf~c&RB!H^W z1*#r>pi?%@@ww1AD2ag*3UK+j9?yr}L4OKt5Xx0{pP@eSz|sT80x&^f8|W|L}oG7Oefau&^=!A5~q?Ly*vL=--dGb#RZS0IHb-y&N334!UY?$?_GM#A2X`nv6(`Hr z$HKBA=Z^2uNjtNY*{mtT7KkX~qZ5Ho9=O+YGhP@kJiNc~A@R*Wq+#@+z8%6wLgkyck-U0wWAmVl?Zqho!%oB=$SLV3P51k`(YeL#T4W4ED7s|7pj zXtDmRb_(z-11|#bwBH32cyV^Np1{7jwG{~sO;!UB3HV)j3YFMk5gLL4kCF#+_KF>L#C>cEK#gJlo5zl=U>J9l`YFls}=V5w8} zMOfbVd%P>Z$0SF7n4jA}YMm`hg~&l^-;OV7dn6~pN` zs8KMkI!9wQeI=;AP?rA zf06)uwAdJ^I;0pM@VbKf7@dMJ$wat>f9{g}Le4$o%XbwU_#X zCzD@GiaK<~ItP1W(9?^3MuWNQ)`2ei>8{J=aB%;9whIHGL2KjXKvhLNd-e=e11h3r znIN^nb~{2ApzHwrabPa{`T7FA*u!n2CQkcGOw93keyE@PU;S!zG3-<4IHOm7wVd`V zzgkYqwO_3U-f+l;MW;QB-PYxEi1jljo5v|N+l?qTuRy;H=&})QI9O{D5uXxG(_CI@ zsDjd;pPZV zJTwIgUfFpH(OjHjKD^FIj@N{G>)y33)Av~=UK9vZA~?|7maSNp`veQtzeTN3{7OjZ2e;~UV!-bjeV@5sewUL0u=Lr@t8F({!q2T-gq)(|BSY?5ib0Yb5ALv9y1DzuUn!5Yi-{~!v z5dK^0x~u+i;PV`K^Z*?h85tejn{yubTg=M{3k?5z9=Ii<&rM96q+aiJf{4Tj3@yF? zeV4tmCcy#`{1^o-EiDO2!vZ`4E-V`)7;fXQee@Os=^vRTAW9&Oe{Vv$gdi5#4b4{j zNQUJ38w&8JlqkQkX;6?f&0)1`+}Cl^XL|?t+3{-S!W_c0eOy`nQSg7YRQEBO>x+Hvu>f z1mfckikN43^uWpl!?8z_C@_czffQchS7xm%%i6sY97iIoGjgvuWF*hu#~{<@YpdBF z`vXm27Kix#JSCN^-{kwQe2rIAokMez!$NGJ;kK*q%%TVH z?|N_l8n|ZAD~dfM{_GlKHs89Un^z~xqcazL;CKH5;~KZQ8C`=+oU1`5qrVzb*l>@) zLfzH*evXTa1K=zyEUg3fhp$&B4f{z8*r)*2Y-TBknSB{_MC9b;1O&X8&>%!qc8vtV z52MLbYv2BtA@5rRF6TUjl1u>mK+zMJ;|adQK}2p%&L9e*oMR;Y*E`%_zUJ;RJw452 zJbDuW0aRQe8b5DIGx<6;ai=&>E&p#(nwu-1KzS=XLPvIgF*b33n(ZM47 zf0SJZJe6%9J`oMk5R#O)-llOXq+vFwB+5)2Qe=dd?Ag}PvI`NJiBRcSMHEF=MIk#Q zd#~?$j#0fuef_@Q_j`ZEd7ks!_jBLZ|GKXKb-(`ibkabh={1;AZ=h9~_~VyKjN>81Zzcv#^{y1R9lnL!d3~2WS+5)i%j12^yVGq~IK*`C#!+59kMIjQN5w1$XIK z4@L|pen9d-aubb_OP(}l`b)Mc+eFcxo5S?!{P^$Wh)GfV4dZ3H_db2s9vV-~Jksbj zypHCJo^;}Kjg7_`j_>YMFrlFqj)Udm6SJCD;zP0iatx#oGQ+R0!;0+|5nkiVf*nVr zA3Z`_@yjb*?lA3w`2H}dv}L2qZAIbn!wH7mB@2%vdfu8hsvijh zH_3P(^4-i%2#C@=re`9mi&&`>hH;~-7MVj2AkoG1sO z?^}XELsH(lQw?fW*WizMw`xFZs8@COZWjI~5M>6D%|P`Z{kL60UooG?ljioXdFUYR zfqP_y*y`0sVMz~0^uBlq&cg13%W6b#H#^!+%wqC;XgqTMPgD!~0Y&=(#_ zUU9VX>C9=xg}-NOX|~_fwlCm8GL-8DKMS@FbX+C~C?GVSrA2(VuV0tCIOc>}sTlOI z@vx7jbi^>PQLJ~C{nFVvaFcu>%qaRI!otd$j3jN=4flQh|G6L2B>oqdPq6)|$Opyc zzS0)RzaUH%_f3JES{g*;%0}u8Mzu+=BH-lhf1B7dD3{BjiCp4FtvrKT!wM6g5jDRq< z^IkY^{F*a*YZ09lN)~NmFZT+*U8Fnn6f!09e?~pUu>;#^=Y42d}oRmw0@p zWyN9AYTmz_9sj+CU&KVaz~JKBzWbkB+(K6c+h2^p_YWsY62Y}3(uy@i&tyZy#mEFh2RuaP9tvk6dWm{w_ILa#bF-kmly2kDVD9G!BzUX$*-K z4AQ{aw&QDL_Ol;kD=%CTZ0Q0Q+?-iV(~oSRC#^X3$KjNGG*wlJl)bePMt^P^{>8WL zns5f-S85_(trU@vurCNz#!|t8T$Jh4{cnLtguD95WONvjZjt_Kr2QURIY!%dH-DME zL^?lAH4+6HI1_*&hYe_dSvg;ymuLF8i-=!_)ub(!pLkZUeu!lY0BaWapNBtrTY}`5 z<}WW0xXi-Dbee!&D1&L!U@3veR|q6H{0y!0u-JZo5&bMWhz-?GU(%kol}*8>LLy+D z!*YjGbK-Lx;47hbfH_6s^dGk);y3*mjn-+;oe)J4KqUX~MhEFTB*`m;bSb%?4QaN( zX5(qkw0j(XQM@vgU6LRpvnSAqe)$}^%{(*qRUeu|cZT%OyyFLENlg~pzEyG__f{oF zg*|G)4$+nVFIpWgr8V-TXMRck;xC=CcbU_qt6H?cJjPG&C-!EgNY=0uC%4l$8%9Z z@^#0q*v$B>;7ylzx~}0b{%0ODdzPqN29uB^9(38FO49Xgf3!gXKWiO2>SSgXAzHse(cC8przd>A=?> zZjG}pGcxJZ*t5Ot{m0f*(lh959hkRPeDdE7tKrP!2SKCJ6Ht~jRi6OouDtpP4 z$Sbga12Q~MES%KwL2)&6^$|a&2Vynz*2f9duMPONdX@6am?P)4h16EJ3H?LP@uRdl zp^!sRQg^pSkv2H|wwi3MM|xLm1HAa*c#t~H2$7eaoSB(<_>ETwJgkF#Nke^bVG&v{ z>NCx!G7%qGtjm%ev2IYFUL2}CJ=9&{0+87F`B~S6*-O|3H1tcAa-kFAe?{*%YQy0S zZn`s;6sujG?qZ*Hx%19xqwEcgS0jG=jDy{&Wf6}{3_m?NhDTswS#11R&PTN8wVYDr z(=L%xo0}dU9}qqRA@iN_YGeqbLF>~ejXv>Mo<(u~{{Aps2!%a1tt8i%<<|pTq0Ipn zs>TxQCa~y_Y!xrsTc*4A1lm+L5m)#2ObFA#4ff+-GyB>qzNNHVmBhbW!QCW(`ZCw-rLX zijvX?kydxJW~jG$&*20~wW>eH=u1v$qbp_<|7=ws;Ue04!M3qr#(be#+*@oU!;|@f z5_bKkqv!-?P*pSwb)`QaPzt?l@R21&|DkrZ!DfnIN^A`SJl)9P{mLxz>DukvL~@t9 zAkwTj1@$hdsQZZ9_MXTV&CSiQvDJr7I!-A&LElsachA;LWP03nhvL_) zWIyml-o97yksG4c{^jvf) z4ed<;*v)TmNnd38G5Ty!tmt{K38u zu9Y+h1SmdJ_U2)AKRW$B#6o0cWuemQX{)hE0vRI3h(wXt1-I8Botn%)bKdG?tHGqu zP(nZ8j2gTys^plICM zHCr4(bw%e&G^rZs3QFiNzeE;QRpH$#Esd@(MG8HsBO^;6C(e*0nQ+^adB_jlv@EOG zu5(=AY(;^UW@Yp(0Ty?4HK-G6rjKBNfiRK!^5wFnOJ6Bk)prYX$NBjst0zH;SEnS| zC46{U-j$Lj+X`+2S-OG zB;&Mc?2EYH`wz?fMl=bk8NndL*-CJS3X&8*M>neW(BJ^GU7r(a9}b`Ju=W+V^;%c^ z`PpMNGHdqK3tCNZ5M|fgN(_3z&cTuA)Gfn4or%f7vMxVFhwF)!USF`_V;yf{B|s5O%eM#l>@KC&*n+}&mB3H6#) zuP6$@rK+kbu7a1v+tafrSC(uUIwVbU-N}7-rTLB>uKR8~g4h?6R2Pn)~)~^5?zWv15nQ zOQQ6RMBh!Uaj{DOE9w2QLMN4W85o4bGWxA+-bBe^uyi~zgBtnU1xqTSl0ja)=MV_N zj>QOOK^<$B6&??>*2D_=d6EIW>$Wv6i8}oAiMz;o`NR^A8SQfwK3=mKOqp z0;e0xl+;jbF5l(BLveDfEl0z~>@|vawBItumld73>Ugj|T0pRlC19`auFO+YrB5>m z%Clm7uUkrP&Q80;5n<1ib1vwa(4E1$u*g)c!N=%Sa<1--QJ_%lzJ1#8^wr+H1NR~7 zS+(oeSD}w@n~io$Ul|&wdOM3v;fgb^pT>>gTGr0kIlf#L@0TSi|1-F9$`{OpjVG!v z$Gl<#57pOEzua^t<0?Kr#2XHv1tbBif%Sd_A9c65c)m+KakOzmdUDk7H?#R|PRR%l z^Rac6CDa$2K)M<3-rmJ%T7)wbjdKL^v(AOfqo<`}(Pia<&4c9&=p&Wg%{=#*&vRXM zP(5zT>iK*gmR{F5^tF{JByB%58R0hpEU=}-AuBR;^q1L=9w>{g`|Z;L7<%G!VTPR+ zKNe3|)LNcQvP<7@t!Jl1FT+^!{`Uyxf#oF96Uoh+=>|kFjp4-TTu1I4nw@NlPs5+d zGcXKCZcgg>B>8zdDa8O&8kuw)H-}IL!|RH>Q_toIZZa|p`vNFJ!0H$*4U<~wNal~8 zJ9(SLhrovbtP?dbK-Xa#VZsnBlc9y5lAJUQ?=+6!6On@j?^i25!@9aY_0Q84T$%@1 z@H50BLwwR>VocsYxYPCh2WW8bu!zR*Hg@7yR9CHBi8;XoxNA0-}<;rgFZ^XLt6HWJE_zT+^K9{yVgt26xs#GZ?} zHTD6&JmZAUrqZDp6(9`DK)rm!(l0x)Cq_5X@0!cOQB0PJ_|pSV(0~1zBzYb=jc@EW z7@nmjkBdlw`u*H9m>AK9e90R&mOWKy@UnfQ#JX(P!$_TSAdf9zyy?>me~aZ&0p!S5 zG6)R_ROzATP^o9RuZ>RAjWykNN<^rTlm~}LkG`&UbArl1^>{By?OCb=IdM@ziYJG| ziEc`m-HG1rSbWiEWh2Ml2ax+_1mAdl?&G;hJpZ>bXILF2cw7spP1znH7gb zcNWtT)18X8RvYxPJU~hYb#|y}4kGa5+tZqb>VvRSH*jgvN-a_{%Ww%*TctqB0ZswP zJW@jan7C)4g-rHDBL%1Ii0Ov+8HGB`J^JEle3pGJk7+u zfTx8&!*fiMEYa!&!y*EiLNLPcDrAdwEqL>9niVhE172I;ZOKe94+z+;b+vxa)zY-Y zrt{c(K2{ulUlXOYH~hwZ2winGg928ZfEi>L&f&CJ6!k0zP%=li<2Sv?z)-xOEO2 zS3gp2=tH4}R;(fOq`uFJ@?uN%8sg~m<**qd-L3HhmTqRQbs46;Xn)i+|7-?tj93KD zhj|pSuxU$AL-Ynq$86erB{{N6CG=-7MMp;m?edHUq6MVRO#~~#ULQfl7ZAU2=~95M zR~2UWGu3aJ5PX7)L#1zm*L>I>HT^i1wfGJDQRiOjzBQa zI;}Q%kU2Ry=NDRC2&w{h%NA|hrL3%s2^RuKeMrmzxZZ!0@J&&G-6J9a?AzXm2FavALl zrr)C`*L2YYsma5ocTT1YRkFLUbZGY@xgvy`8t7c^XIadl+Z<+1hUvr0Ut%Pwej z0;Tf~cGD!eOh9m*1MmE|E&TeWUscQ2m7RF)?fNae0*UB7bt1@5v_IfjV`%B9#@=?Qw+Wl12>%Y{VHX=|}1HRv1K-|v+#S-cp0I;N^sRa~cvrPg(h z87P6CIY1f8^Fs0PV&m0DIiuH1-*0cmg8k#I>ynZ2)eI>60~?#->mOix50dSBWa)J& z&8V|9qS}PpHt{v*uOWYkHR9lhKfMtyE@R+G579g!A9lQ@(cm`VQ$LPH@nlwbIG=i6 zm@3)OU$}MCYZ-BL^iwD$07hx#PJ`qs{)GK$i3r>&er(EdH~Gd=*&_`7HTHuw(BTZ^ zFzbw^jZlUzP71kSO-+7A7Jt?tMIm*hj0b**g|d}Qt}RK}#E*POXE!(#dtsw>qj+-U z+`HvA)SWJ2^5J2M-Bf!`S+%l|gA_?FI0O^1Gyt=4uhE$tp%JCSVB8Gd0u;czOstcg zbp@9waKaCwz+NFB5XAp=XpgS0ZXv!+(1E8dFS)+zT3B>LXhTnL#2cG9XIp$3UoWqn zOk!5;vt-se0taWo$vIB+1QA1k6_UQ<|-Be~TH`p2h}d2;P*H*ENL zYVwfALAA0TRF|bmLx@imvEI+DUm`GMJ%x^jLE|LU)MU|+OL*`ajqH~^cH4QP4|qJo zdmn?^q5{0u=`M>R!^3ZhgfTZIeu%&A>pPT8KXcv z5^dAAx0K>3P*qFLg#O{OV1tfzbn-HirQ?=iq_}CA(IfVDNGq`dE5uq-SsBkU#HNZA z$8@hz9g3`u0TN3KvZW=k!kuEpo+A z5HPYZc?CcJ0Lq#MBcsL|P-z{GO){~aVJvi)n_}xk#$7K)@3A8r90MG}jYdXs$d{e( z50p^MW%vbwEeIRnmawy-P<#>^y;=r>3+)P|95^Q&;!aO*0xlQkzBMe&M8hYBd9Pv8 z^rSW?XJ==$k-h<>@$=&m741i**vbEZ8ORw_tb^1rQcsA<{*>Pp8y~wY?&$z%$6lP> zr$&wxBM0lA!Vx8(P&B}usJ>80KL_N3QE7Qm^Oeq6Ei(c-n4KL)t;0iA@1>4IWp25; zvdx}-{l<+}r1<>19Qld;fE8H7Sr;zc&1%-d<^W3O?Af!z2DxYA_C@KOt$9t=2AP@% zD<9yF&cTD&Al8|d@D<{;ETsiWU|d1)#*U-=qFB!DP7g&Mc z^=o9+0I2A{m2c|@b%xgV-3>$vX-rJa;6Ps!A|Bwa^WklC!d`ps+_@6luFpUTiB)d< zk(&N3#LmXy>JB+H;I9n14L)nC3+zm`M9=a40MDHM5I3Y2XbuA$V$qtjSsZ}f*Y(5Vb!#M#$vcYLg zv5W5iu3dW^!gQhRO@pL5o6VH61rq|>(c3~>xmc(rFid%%u&>tB<4gJfUAi=IP!HhR zC#;GAyDnR%(A>r3S^JU+#;Z4Mp|1@{;{3UD=Iqtb;47RvcW%a%yPv<7!4Er|%zXc^ zU+l(59RP_!g4u81vXjwD^lx=rdDjq#sD$HfLzzs-0yjyZ8d4tG4-GQrs!l_Hqo24P z)@4}j(I|o}_J}1M;Im#9N_?_Fu&oso@Yh30#ljU_jYfC?YujXelUGkrY7W08W^xfA zU9ViZ0`GVo{Y=pu=;qh1%~A)$45kHv#Z-{;cEPe2z~q1rF14)TF525aK)0DIsXbR##}ZvZ*tVd0lii`{ra& zUWj>n@tt?%vMFq15_f@eD=$;>EYM6R)R=Fjbn+!EE@JtzJmNIFhjvq>ZcN(m3T;i zCuWAYtIjyDANXlnc}rVd-skti!6AnsO}#K1FZwB&=L0B-aJrPJfPlb~B?nWS7-B6y zIhdyZcKrk)lS$N6fF}0@uy#<9b7f}x$zk@mt6A9o&*{!H&Y<_9VDK2dG_k9;4A>D; z+}Q3syvs#+K8nJW-8v+6da#y2&ksQ+J_b|+Bu#B&sC%dIn30XR;S8qR2PfcTMtAqH%nJ{B z1O*@A#f9zM8ikaxeUhZu{JKIvf20Ra~k#&eDmD&tZ^W4B^7m!17oZB9y`BOO_+Szxb;G*)u8^8#iiXCQcvydfbye z{%S4+Aj@Uf5~TI%s-xNCl!?g$+e==r`U;nferIB0Ou%N2J=i_1x0Ar9B1SRBbdO*q zgCVwk43b0qe@9?Xhc`#Q>?yy|+4I}c7T$neAFeP2JU$0Ca`Ptds#W?`sDhDzyweEi z1J2oh31?RsFblF{zhq=&06}q!Sqbs-@`835hEtuW@&tZGT<>F=#;}?XVzVH*7(p*{ zzj0%&{h&?ML39FRH-*}@gt97FX3OXKO2m@m*`vRdn3;3_Gc(1p`|9cGNz2IOo#}^_ zkvOdbj!e-4`_tOkZ_wQfaaJahl92im*&H*bP2*gnlZsAjvc?n1wo~eD!^-7SF|p5w zQGK5I9r8-9NyH}4$;pWw7}#f_h{^4OJMI*#5bV6*_Qg-uD&VLb3?*M-SjZ1IeBT>4 z?B_O0eT~!(9R{GO@&jOgEaD2iBVj*ymV@HAGTvf`U_YdOXI-z{ysKyrW+fZ-iqkdb z{tUkEeo&n&h+PlX!q+~a%pT))3jYaY_m5qsKwUZVd1K(0W~DD2O!Pj81LCoxNqJ1w`Le|>4+zR%xu|vokQ(ePVGgiUy$v#HSJeJlJ-Gq z{7{W(xPTytyXECNQPrXO0e4N9R}t8g#t;8q90`}2?1ni?+Obti=?7ejTY(xFA_M5{ zstU)tNOxn`5L(jOJUI{_>>IZaCq7s_)lP9Ls$mdrYd>4_WxZ-f+XNT(N?fOTgT)ZHTGv9^8R( z3NafN7KLs`+ENtq63bmy0v{lXFbeoAIJg$S5z_*vE%GR@!u;@dQ&WyxcOOGa@?S49 zt|)e@Dk~wXWbn>hDEa}jo3Q|~njx;$jc6SYa)*#d_!V&Y$j+V9jXmAm;MiJkB;%Ek z*YCT|C@<&@ii2<}&&riwG1)naGoDd<>%va1=tx8_K_bY|`AYU3e#3&@o9yhF%*>yE z09=@Cv&n2@<2iLTy?yw}ak=T?ebTv*c-0n(Q?U-92YDAkqxZXru`0({gBESF<;;Wq8l}ne5z;wwS zaOAagIk#(g@xW{NpDNPmsTtlvU(r1d9Z+M~(5On7E+sW#23UW$s2oUTGlaZp8b@Ee9B2B(qoD&Nb)V}%YKQv?wqij!q_ zWtL|*dOQlRKCqbp4D(LL$?6n4LQb03T)-bJIyVfNB>oR&@@=@k7yz}Q> z(}c)E^&M>jmt{^wIg((g^k;2lyW5>mW6q1cZDA4OHZJS8tq^E!4 zZoAf^5226ldVh?(wmjRkX$59S5*96;oZ97gf~qjYTX%&#R`cbh-Gz;>#*+n z7PzJH<0Bc$O4D$HE;7>zYleaS5(jx95lMs&`J& z;O|7!p+xX8Ar5)L1keVDhx0XpV18GvYVZ&!dQLM2`i&dD9(SIL}sY(FXLFX4*Md1h|fM3pQ- z1kpJ+0FXf<$QN#Scurc~N+NW$pq$-;e&oUqvgO2>BBYOvYFH8?EF3Rhyda2hfUQlr z-&(ziV|L!Xdk1C;ON9)Wg-?~X!CvvFsmZ1#s@zYwN{tFk$H(TFRxpW`fI3&F#OPnY zf39gs1{aPb&5e*F;~>)kCQ6e^R1=s$gQxfIopFPX)cJ$R(+v+BtS%Sr`1eJpZoJj# zGB@YIh+dOaYsH)3TM z91r?Wkx~kaoC(|#5!2$fm2{U5HkJZD?DiGsw~LYhhixf~Cu6#E=W8I|Z7Xp0+6|bk zb2r100%5Qd;ja(y5%3JfEL*bV^tu3HwBLm2Qp$+22@oTfaWz^GlcG{ABU~O{wU2|g zXVx5isR5M`h6&UF_c{Q|?_wU^^1cdDtsAtvuyN5z@C7k;Y0hkgEn=!~vrWUL$(R&V zX3T?GM!@vz=T)7?@B%^O<`- z{%h{iK6P?=BESJ*wmo9nRi;DPV22~FKvbuHA&G>2`N8S)vz9^QGcm-Zy6Hbr%5{a>ohO9*)PsYDr4B*^nB?#y zeGmG{o?_FI2E*=tGE!0nAybE~d*dUvNkl}IFB`g?PAs959+#4GjJ*WUE#ZF#a26+% zvkNEt@H_#g=%bl{{=>P4?Kd(wEL^V(KGPu7Gy#Xg64txOqI{V1P;NR`fk;9|EDPt_ zd!P=L{$Vb|DJrX0t=h`VA7k|11V_kJ|w3##S zb3W@9NCw(R)$S!^u(=q4H_roRFwB(`u41?c?<_z6n^mqQIJRq_&ITNAhWZtPb(oT>0{*XT z;0Hz8E(Uw0%i6gLLMvP8TCoHxG7~iJ60yfA;4P}D7n(=iPGfo$F(f@Zc>*io^wqE#)XqZM-kOntoJ&5dM4 zC*Ru6K7IOh+EE0~9ZJfGK7;e3@=86^|M6P-Mj(t98yW!9utp)F^$@laUXh_Bsy3Q# z3NxW7p@FHs3Vw1>H<3m6GMGT7u(GiUAIg}e4vsizez?753!YFr^aIqZ0}?-^DrvGoXGx@%L{T+N6ahmx zt~df>I>$3!FBpHq8~mU*Fo%9V`hpojUVy*wG+)+VJSH?G*z^#Q*D$GS3->7P-HXS1 zFpYCr4vM2x5uyjhfi&v%8PPeFpESl5Z#4hL7r6oICb*tTVIecJfI#BOuQy_eBA9SO zpc+q;NL`^QRFM0l$RN=pXS7#M%>&{ljy7!i^fa%eTKad@#BlK|9E1~<|7eNuzIH!qxdNd&ex`NDB#{7C{zwiYi=xiH&sil5f{|{Z=-joWL zQLpLov9GC*N@?*y5Q_>U_-$B1mOZMo2j`UneIgD68si#IfLq z_4MHERuI)1qe%&Q{9xc8_v84>Z0s@m@0{2Psj#naOsM$V9oHMur4UWX*=^^SJTYUh z8Guej;P;Z5b3csHq{N>5vtEu3cN3^1oa57N^TS8dNN&vBU+78UA4LuOc;wdnm)NLN z$s4=gU;8V<48|y=i73IJXuuyXMQQGiLk+UG?J^nx)M+ zsP=VSgXph%$Y05Sf7Dm5Vrw4udc=-Vx5QZf7hkE!pnJ?ix*8j84AB~bBX3I#i@*_M zNlA)Jvth>_|0OQ-g+u-QpBF`~`#!E&{dsb@X9d|&+&_X+H-?t9 zIpJiUU3^0@azVZiJdM?Ke|X5!QJG_6fe_|o$x&BJ#49jc2p|G)K%^qyzRhQMg*eF) zTTiZ6dwV+;@{9Z+{nrC(pb2CB+O>om7JB%b*RRpZ1K#5W%2MvvOxsabsH>}MTHi0B zj7SVLuh2LR2S4K9?~+5duf)(#nuFY*G>4oJ#pOSW4o|5LqA(Sn?8g|s<}LW~Vg6;= zFsvsmv1B1{vLEbcB2#nj?O<(*CcM*qootzeS%aG}Yfv_J*-plpryEZ8gK*9K=~{pE zx{V6ww(78BbZj3KVLAh1JWl`J;&toRArAK~6VCDCb%Wi=ARWNZ+5I?W7B@En3*|3$ zR1SlnIhoGO%qVCjT*139cx>eVR{6aD{Q2g(>m4rhrvtkcKBE7P9ze%S-YzSfnUOK8 z{?#z{!5gvTItMV;vQ?`Lff@?EiWEkLk-vOzZA0O!ke9#Djdo4S-o4S_EtqgjdR5gP z5wr;@Dku=GZ6H0}+}*7oWHD_g6aiOpx<`*5q17USs*Pi3!NJ6|_V=`bKr_I$4>)uz z>Jm{Pe6k-J06InyVpVg;T>lZYFpS#8LiGukfI=^%W<7*cfjKlSJ>4B4r79{o`q`TT zFZ7$+8y>+t2`K7Qcb^^r?Qr9E!5$DGMVEuRpixD)Iw6pQaN%awKX`U^(7Hb2vAVsv z&6_v_MaQ(+0xXAd-}@=R zi^}`gm_{!2Mb zCCtK)2WK&K74*Uh4u&k?Ih}k&`l{|RBhw$@jbd1bq~rGK83$d&^t54aO;h`*%E0@7 zR9QiVu$uIm!fN2k0aMR$r2n={ZObgLczs(}cqZ$J^00Pws_>DyzjXutA}oZ&hKC<{ zbz>>~XNaCT2(>8UBE$~_F*{~+d}tmq0=7)pA~C!JRu$gaWG;^P8$7Cg_lreHzr313 zaG%3ohCfTz=3yOAq-<<#fY5hc1)ogJE?P^`_l1@%qWsutVB2|Ioa31R0dDU19y@*e z_U#)t=2+8DUNcOe{Kk?Ow%>6j?H`k9y@6w-#6{0yIPJQem!V|y&A+VPxQS$cGT|Tc zYUc?ll7zi?I7pKhw$h!L5R{~)r9~RBadY3%5;Tl$A|-j^+#p*v-jj_V(K(a#2V!Wn zqeoC86rD!_uIM}(zrSnVZd)x#8;7f9gpVHj>z|uII`~4^H4BaocW=-!4%0lNO-ny_ z;t&5Vsbeb5vb$oWillu2o8Q7OeT1CmH^KsqwH^_TK;qB7jEA&_zt5z)*{yWrHrW%n zZ{#-hr2F2k`IEhFw3Dkp_!LVkN6kEoh~K+)1T3Wt48DS}*43()1x&EB8w5EErG}%) zoh8K9l9VF-7Z3YMB?IIelN`SkxS}J3?T7kGQMs!rDgA3)g#{Y9?HABXxfe&y=~=Hd z-Iqkoq%Yh2t%73|R$jv~%_YdL4xXfrI3Z;#e7UVS^p; zqPca6mh6<%Q!-gw-L>pIJ8iM|=vO&0Fr~f*>j!qO{T!ExpSdTRB^#F-AFa%|jz0S{ z=g%)+wye6U>S6*l(_6@34nNLYIzxG&7Udtr%~myOwLhVj{W$fKzf%1`LI?^9Zro@E z3W8`*1sy=vjNe)hvMB+%cl1+O2!D=Qhx{fV9G+KmRq3L?C`p_=X0f&c!9YO5g$HX)O`cY{;lK$BTIT|?m{JeY0T;!p ziwWPV33*HSbp_mPzp3FttRwM_^`icvjS~a%`t?q)s2@xq+;R;>Pt>Udy*FOq3DCAH zbmYTBI5tn{QY6*mj_inNXSFeQh__dKp8bru;R2?EBjLOq0--(ObrlDIYBRmj|h zll354!T0QW2Oo*8TTO`FnY(y<%C#uXPXq3sYYl(Q_kPo-%+mq97zBa9| zz$1pe>TE^ReGDh}^0Bt=j_y_2iUXgdhUvAmEwjYU+xPi&P)Hgh54k^>@#=W-8dA1Z z48ZV^-V^|S^@EH}!%o4tPt-p~zk`mVcKuIm8)NTwZ9G9T|X z)~ZR9J<1b1H6jX*4!1Lpx2HTkT6`UJ<0~sXsQ+RKz(qQki{;ZXrLJ0?N!O z*L;0TVfRINi@K+ekB^s^^FxwDKv8Lj_Q4<4#5ykywV87-+;c$R74v~fBrVm1`o=KQ zZO5^`T7~yio;7Rsq)uj6C!!dLh0iT5@2T3$wQijJLxYB*q)Gog*hPRJniIr(MsN*d zQlwpC8Je!_Vg3j&Lx#YHrArx*Q~8A6E}bc!hiGUSCpRb9h@#C8!musde(=O4c7EbG z$Qw6iapG71kXMroefi-+5m;elckSAG2nR$HNi9g+F=v?|<)&-NTg*%EB(xu)1Ry!uMrxqMH0#UkI^Nx?$tr`q~Xu3)x$Id zl7s{UY>B_&9~N?vRWWHStAennlBP0t)BMaM(1n!or^E%~x2_%dLq-9RtV33o%c3C< z&c;ns-usN(S%l{y^%KmnE-tv`=4RJXpxPPxz5&UCagoQfuyxAcUVlKV-a+!z^sGZf z#?NY%4yK+<$c6ZQkPVRwf$mp$%^?fNqyWQIXZt4Uy_w%9Exeyi!X5jPX@8V5g`Vs?6`!!$>_J`kOJ8<1?{}s zSoQjf)E~9d8NFHJBD$H?&fsRe=O%L#m|eGRW8g0Zo;oRnDfJCyG(nW}z{{|2FWn#^=(N zD{nF~&_n!4%^ny8TFQkB7f|Ei*oy8@%SqgX&mG`u1WfUw)9GIpyuw76lftBOo|x6J z5U6_q2Q{MIkX8MWPMY&Z?!#Eolw8+eZ5R^*<#B3n;(Q+Lzas0$th}`mU%LU>N@529 zZ|r;Xe7%&Pp?@0dc@BHtVnEx0*^&)llS+SUgA zr%(@h*dP)KTj~O-sk>s$+hSuUmWI4=opeC!^Rk^BerSL4vg|&>W-smO=USb^O!yXkCg_2#z zX9yb6I|^a$bsuCA-1#Tx?7;yYg$!q$rn2;+`TJ|_{#x({e z_TVd-vhP zYbpYo@k*jAC7F(grPuc$@k^%*;ZLu5#Z(KI>0CwCb;;c{v1eJrJ#I0IWeRxXU;{$$ zoR8p(4P3QO6NIDv92+FG$K~>6r5XmrtHq>v2^;C}m9rM60l?dZ5VeI7#!&rbrf9Py z3JdGw@{TpgP||#%Y-38<)v0J@n28StM91T67blj zrxhoeuFB zYnLo}VKrhGZmL4P8w>7Gr{|7&$wg#deY8eBN3{<$&1BL~1Y=}cM6jrE0G-6aNOR>o zd<7S*J(K|#6mimZA|?W&m2~a4U|1?h;0k|S6or8E-cQ5hM^zMz0B)n zoza?Na0@a7(fQRf$FJl&5`?P{GyKe%GZ&Ir^ohE-f3KA7ZNF%+?k(KYN$1PVsj&p%qpzx<0O$Rz zMT<%S{FlnQR;v={1iw7VI5%1E9yRa?120`M!whF+cjTD)sl_lWU2LKp_351sc||duUqxT8n1w zVj^bhQNyBlSU-KmK1WBIXBMw!SX;y)XHlow325cI)#wqKyzlK?j0Y&X_9{msr z5E|dgqKj|-ng9hMjC5!e1oH)t{N#}9n%{mVse6j$q{;lmmDyl-UO((-Cpi$&kd6%h z{cF->`bu)g_5n*oF=4!RkAP=V3aPXySmxJ3F{k=5wK`ed8>Ff{jz66_sQPl8N163e zl0(CK_>;}1xNGkIHF1z0&S@S&;$2Bu(Ab1@1OpSi-v-1EThI1{ag3Usy!F_zsDYhk zmnXO!F>I|ZaPX#=&} z0y{F@ZH^}m_PW2n6A}uSG9;>WY$gW5Y;#!~N|U3AL8YaeHp{P;>Fe;|n8CdC*xZJD$n2gzE)PM%In{&DZsvCc!EE0kl44-XFz zXI5rg+1OF`Ynl{>d(Ml2p7lZGI3rOAJ%OWqIDJ(dmqKb_?p^qMkZy#^@+eGhMMVD! zk$-Gpu8!8(_XEgB8FZb7893}BEK$3@cqfL zTZX#>NnOWQkZXYeAyAbzppvWXm=_bi{I*t-Ow z8aQ4~+WL#{1?|rk@Wk17Ju4MM*s0D-6JCeH%Ia#IY?pf##+}lK2Tu0~;c)H`X74r4 z;ls`I!rvCx%|4GaoT6B&KIZ2hfQbMD3bTKJdWC9VCD5@+Ap4^Si5~3?^!BoN2@lSvH5j z3*R&yJT#H80GoS%kWZaU1sJuaW%UX$WY0O@`cb!%p<(rJ7w=)_U~-#UfiQVJ+?~Km z+k|)$PtNM5I_On1*Ue+Mc;LoyL3fRO(9m0tHCuLh7%ctEfFkgE%l|f_D0~a(%8O`i zSldc>YTmC|y^x0_^#~5Y$ub;lSk|3Q?r}+wmJ{)g5aGAXw=5yX+8j-L+mYh3oaxNQ zDh8rzJPR2;0UZmlm$2VF?DaD5X9N7ztDdf|+l+9S!8W-VX*-#o3@9fVnVFkxdt7AEi#~MGd=eZh_k>Xq#&AY#I9_=HkK3z_u3iC~N4bLdv&&Qm z?s3*`O9@40;c3+_hC{7RNXW|D3|dqFDGG6k!R~`!T`ecc?KJ3dvG1>d%-?YS38US4 z2A_@93^6S*l5zvem{?Ws=NxTy*W>YE2W3e;RFyH zk|bD9chW5U)ia2g!=sHOgkG|3e(D*-WCHDldaKTnjMq7y>?<>6 z*KXK$-6~PVy-wSnQWo_kb)4VGx^1_(qFUb`8(@qm7miRr|DfG>s6So(;N^ti;Y(iQ zxHUVVdUYsbv15g$Oc9H14BG@EZUE9w^j^H|-S>L1YTw7F8|)9rh-rn%nmx3ajPI%9 zoFx6`fRZw2o}rOb39_V%&rp*m4KEPwtehfUt^=8ZN7*`TA_NLj1}A;3c0W9Mp78lS z%DTJ4BBog(+0_*Dc?yA{;VtG87m+XMBxffp=eNbiD^2N}axcB)^*BF&0a>I+`Dvd# zi5{((uhHB=PhgC#FW;*k`>F4GQo(IbUo$=Od+1bY^3K|+PD6GXYj`A3cianU!!X>YzX?Ib! zo(BgD8IO+Wr)Ck#icMED1+81@GKx^%f`XX3ic#bc+ z_HO=efs~1-Y$-A6w&^z95x3pQ&mVyh9A2DiL}bfkr&$eRsf?+z2>x>>eeW}{oGAVu;8?hk~@sSw)x$l?D zi?(bm3BeyXr2FR!dU&`D z%asPaFWMmM#@FKN#(|D*jU$To&Q!@mlhCEc)+d`F-h-UekQK|8;TTUb9eD&;*v#H| zM?f6v^bb$xp0}3IZ0-C7(#o!DBI1_S;+zL6&Uv7{G>7)|a7F&}NmRKwN%X`;Cnq{} zPq-?zL>Hi4LM{7J(h$N@yZT?)zhc6~ud!D%q%^-;?tANI;?C6wtnBDOuUHFkw5^Rjy3i(*Hy|JfmJN#u?-K^D`NHXN7nb)>XkSxQ&7DUTqp-S zyLu;FTLA#lV5cl=@1B3@vPfRmD#{*84JJFEYHNW54l75`kJBkQCZL!{ZazD`eEBrA zDY~VdT???Y9~|><-nb6QF6RPI5$0hH`tVZU#+QD1DHketvK2^?IOAe!<9mA zbU#Q17KUfSth@QZ#;zixNL%##q^)`9Ph0;yR%7jw6d9T5Wnv554}Ym4L-lUL)zL{9 z(HWszQx5|!8X~L2;KJnx)7+KgY>U}~4p%qx&^w}*$D2wL3KN#nMJ{@c#*u{*iNDQSDx6QGNuNEE`91@RW=H~V5 zvsqamA^NU<_5-v>UPc``2m!0mX{{n{)%p2Dqnn3bGMT(QW*L;hR2Zp6RB*&OgE$5b z>2~nz+AT?k*)odln!of37{?MmSs@O{x`}rsa#~^+k=dlrU7e&#I9kVmbFxQbdR%j)3 zJ2F2p_FHb&#JjWS&!1SCi?(#I5<)9ihJfiUPiL9U8GN?%apxaUL3MTZhi6y3?;G~H zAD*p{z0xso(1j}>K5ox7qZ2k<=;~QnpH4Nd1Y4>-x zIE%BALH8c<)4dCTv=Fr)`>jg)H;;K1@$LEC4ih&tKN0+nfO|SSB|7=>lkp9zd9^ z9sjdgy4g(Y^`?C3iVz!r%=-gz<^qnGhGeCI|Dxbzjv_&W+e8o@xpi+4_hOy31PFRxBZKm&kqleY?@X) zZVTuM`-?58#J;YkF4z8lQ;@iZn|Jf{v?NF;=?bwP5LI5#$vub=GSYnxg01K_J4ck$Fhh_Q2 z<*(hzge18q4GcXrrX`)vcK-SPX$#SUMj(ev4pzIb%bvDd^aVvZShIN%A8eO)ITd-k zx-NCDY?`aq>SPp|(1|S|s1b)U63pgHeAlmKP!#sP)qHHiZM^HwMpuDEXe&i;v$MNg zE18gEo`;5fy8>m^j)sqlx2x6>V~^Kmp*8Qs%eB_W;XB$>$&fA9r2%IFoX*FOM`th* zd0&m6qjfK>mqaQw4Nq}g9Klnux1SyTvbo6b{`O6WVbU)508@Lz8NW=NywdqZuG`jV zCdP9jEH%7aj9xwpP4~SWti^B;4Z6^0fhDR$k26Dzl`qmw*XtoK=t~U)Y+lp2shCkw z_P9>DMoW(q;FR-#9b!)jy3)$Z3V@Pa>pr(}u3c%-i$ClQ-Vz6!)|vQ(Hfs40t4v1V z7)bJO#IWzl!^tf;^#%v3>_cBYX52f%Tl+FS9f7D1;K;fOy}F%#acO$2e7ACJF5B*arxKWGO{yy3g80s1Fs!-ZD0cafo)7p-;M z8^=QF=kP>*#v}&&bD80Qt3+D& z3%DYDan#8=_*YN0*Y4@ro(n@HREPbiet=Z9y%_Go1eRBsnX+mQQVTJ47V5-~C z_4}1EUPyt+3T>}lg9Z@T3!vp9R(8KjvontH!^abN2!=%jp-G{8l(xI^G5!nTV8KY~ z-n@`KQ?TQ`bEsOxTxY)}Sawn}{Rm+~t3D4jXkNon zs(6a%b>5#kS(Rd`i<->WvYOK-QL_2NQJo249PwiEZW5^>n=Eo<=J7nXvksw=SjK_Gu=8~K0eg(EWM6&OyiR*=Y~-=Q4#nxjA5yx8b057qMxY_ zhc4nDd-}K=hQGstDa1rVaP%k#RL`tqDZOm>?d>zaCVeX%tk)Wve^MfD$%hB1#&QO9 zymy}d_Wto_aLC6ys~LW?C|8AVl9V7=s~4pf362%MC)RZOZyzPBtd6Yz4RHQmuWu-t z886DEtb>)fb@%@``x3Ak+wS{Qq&QMYQBvkKort0|sYIbNG^ta`&>)3G^YBKla{l{B8;*TA7U z=G3q2j3lSuGprfOt7V;fL|am-kMR-b^%LHS!o%HOZ;%OjZ9-GKKDf`aEvR)MWC?NG z8gzV6b+tA&>+NhA{g4a(16{Vz=96BWM{%0=_EP+$GAF~{ah-`SRas0;O7_|#bq_P^ zwSE6X#)s>f?(h(>O7>#}LbPXR8yg5G>|KOPYN`{kp?1u_2zJ}bbp`PP#|(7#_wFe! z&OHw`N+LSUlzg}b9hj_9%L_Poh}tSP*8U6N7xewu7#FbT0A1oh&ARef!;}M%{UJ(% zk6UZgic%S2xfJNNCTqSalp%;A7&xV=t`5OMkOD2aKEel1JI-|-o>_$xgV$&(eZ95q z7HLe+L>dLBtxX#?V3@$ss60gM`oOZXGH5Gc#X2Ce{z(JG$i7F`1;2|>rKTPMs zPc-u5J4|WBJmMit{u&x;b))GtduZNAf?&xXtOw-?=%VeeZ;0(g1TSPU-Msv7$Yo_(73MHUwBWzUZA_dKf?5@k78b~BWi7%ra!m{* zprjy&aH24`m5CqE>b|PK0Aj6MzrG(hn<}02NUDN9+$D;(=^Cl>B?c1Ox#7~s>Fh}1 zZuq=IbV<}Yd*Vd@V}aqSxNEJ0aTAU^(vh8^9PS4ShLdiIz$`ssH@1)d+xLaDM{lbt z`Sp8e)=O2JaK7*6fNR-L8C zb>t@0XZaz>3qN?b&KF`KID%bkzb3C(WB+-W52OKLB5|u;-A>GS= zszFOviA;>bLvf>%o)@hA{D!W!glBW8tBq#&V;)M#CPuFD@R|ysWsxoD((y^FV!-Ij zybgn7x;IQT*zF_CGL-%pITAYxXz0j7+QB$;$_|M}cBIUsg`H%Pe~(TT)$N0&6D4VE zX*dVZt1z^d43%b{PRp8Siz1g|DD(ps@yM0bplbogg_aW+`U#54>qGE=6HstnZ4Dl? z3Lf28*$qBmNL@IJ{=|(`GdH?ooh#-dCaTbM&+&{8pRg|zcbYs+NJuYf?^`Htvjuu?YzUfnhKpGvI|WG+d7-M1FZz7?><}fd%Mp9&$L6n5 ztvt%3GSlwu|FpKe5Pu@masU*}?(pPfChE*1R^^FuH2_>x)d3#LM@00n1L_N%NkcX8st7a-Da@f52G8fUYQ>*mI9 zy`rHBLETzD_^pEg%`nk~<87kww&?tjNi&2+_2RS6@hn)d04a|8-t8wv10v}Bs}3wM zYCNYQ-hd&LEpE_yIOkBA$4^=J{$JRecY}PcoEcf4gL0@a`6t?n<8rVi89~dTq^u=V z1ZA_Q^>&vUmlN4h zPGA0#*47YJ4gg&4P~!!=t$Nt6SQV(?z6#XV)O0l#Q%55+x8=&E+5eh&m@CwG>@}ar zXl3zQ(^QQd{Gy0oVBkuiyiHRbFSs=8%Tuc^5W!_^&oiN((L}&=%DR{r@>dLx{`;}F zt>^Pwl(-80HPf5u!7oBGufPZyWu(6*ci{Sw!&>O8dz#k&a9{zVm~5!}{e1s7LQ1D6 zv;ETJms{@r%t-w!&_prR82QydlSU*vKl?eTdK6$LP>_)9kL?IFbl)rEve8rbXS8ty zD&05i$|^eo{EmA@Fs6NQ-y0#!j%Btxj(hfbR)^>DV4=CKqrc$a3s1ef4u1{h-o10s zxtR<}DKLSO@3yxvFg`N4vm*rX0J^ojJ3@rexrT7`9>SOuOvz$w`i??2^x2*i{}X%k zH{kT*m0!aBaIZ1~PPB?^V;_<{-}(-gS*ND3Dxl=3PSkNNm4!GgEDEo$_g2{m%^r?& znBc-60G!Pr(18;}KgbEc>T4W-$mYk=jc?DBrJ>_mhMfS?JjaQxC0sRm*PcEVx)!bi z?6Z%Yb{1#H&3^Lqv zFYdYq_Gc=o-?6tU;ocaR_`fhZPQy=|*hg#dlqbZ!^vxSy>3wN9&{4#}-gt{b{xZUs zkr@4%gwYYgOwyo@j05>@sr3

0XjJke_#?nEf-l8}|H&@KN? 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

U`%4{{wi*R-c#?m=;UQs9u#ygHI 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 Ouea58ZWO3mh5R4vxmxi6 literal 122489 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
wjkLafGd8@B%hIWfB9kvBB*?|TCjTH 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°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 literal 132279 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

RH!P%= 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

U`%4{{wi*R-c#?m=;UQs9u#ygHI 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 Ouea58ZWO3mh5R4vxmxi6 diff --git a/docs/img/CardViewSequence.png b/docs/img/CardViewSequence.png index 16e590b78bcf37910e22fb26c8761ced339a49f2..ffd1a7c0def0ca531ad53d5c7d05c267fad4033b 100644 GIT binary patch literal 74789 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°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 diff --git a/docs/img/ListCardsUnderTagSequence.png b/docs/img/ListCardsUnderTagSequence.png index 46e24070a7f5ec868f60611ca67a4e46fa314c1a..95122d5cfbf8bc366034caa7de4dfb79f1752137 100644 GIT binary patch literal 35508 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 literal 46870 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

w?c^amDs^-Qn&AMaXR*E&6NT}{``?&f- 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 diff --git a/docs/img/RemoveCardFromDecksRef.png b/docs/img/RemoveCardFromDecksRef.png index 30f0a4b5692487eb65cec7249abeda37ee181ab4..bf715cfa6d02855de00aea33662a8361fe81aa2b 100644 GIT binary patch literal 37355 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 CardKeywordParser : parseCommand() - -Create CardSelector -CardKeywordParser -> CardSelector : create cardSelector to identify card -return cardSelector - -Create TagSelector -CardKeywordParser -> TagSelector : create tagSelector to identify tag -return tagSelector - -Create RemoveTagFromCardCommand -CardKeywordParser -> RemoveTagFromCardCommand : RemoveTagFromCardCommand(cardSelector, tagSelector) -return - -return RemoveTagFromCardCommand Inka -> RemoveTagFromCardCommand: execute() RemoveTagFromCardCommand -> CardList : findCard(cardSelector) diff --git a/docs/uml/CardViewSequence.puml b/docs/uml/CardViewSequence.puml index 17b5b7ba7c..de48042eba 100644 --- a/docs/uml/CardViewSequence.puml +++ b/docs/uml/CardViewSequence.puml @@ -14,18 +14,18 @@ participant ":Deck" as Deck participant ":TagUUID" as TagUUID participant ":DeckUUID" as DeckUUID participant ":UserInterface" as UserInterface -participant ":CardKeywordParser" as CardKeywordParser +'participant ":CardKeywordParser" as CardKeywordParser -Inka -> CardKeywordParser : parseCommand() - -Create CardSelector -CardKeywordParser -> CardSelector : create cardSelector to identify card -return cardSelector - -Create ViewCardCommand -CardKeywordParser -> ViewCardCommand : ViewCardCommand() -return -return ViewCardCommand +'Inka -> CardKeywordParser : parseCommand() +' +'Create CardSelector +'CardKeywordParser -> CardSelector : create cardSelector to identify card +'return cardSelector +' +'Create ViewCardCommand +'CardKeywordParser -> ViewCardCommand : ViewCardCommand() +'return +'return ViewCardCommand Inka -> ViewCardCommand : execute() ViewCardCommand -> CardList : findCard() diff --git a/docs/uml/ListCardsUnderTag.puml b/docs/uml/ListCardsUnderTag.puml index ba3a664cef..7bda93cd30 100644 --- a/docs/uml/ListCardsUnderTag.puml +++ b/docs/uml/ListCardsUnderTag.puml @@ -13,19 +13,19 @@ participant ":DeckList" as DeckList participant ":Tag" as Tag participant ":UserInterface" as UserInterface -participant ":TagKeywordParser" as TagKeywordParser - -Inka -> TagKeywordParser : parseCommand() - -Create TagSelector -TagKeywordParser -> TagSelector : create tagSelector to identify tag -return tagSelector - -Create ListCardsInTagCommand -TagKeywordParser -> ListCardsInTagCommand : ListCardsInTagCommand(tagSelector) -return - -return ListCardsInTagCommand +'participant ":TagKeywordParser" as TagKeywordParser + +'Inka -> TagKeywordParser : parseCommand() +' +'Create TagSelector +'TagKeywordParser -> TagSelector : create tagSelector to identify tag +'return tagSelector +' +'Create ListCardsInTagCommand +'TagKeywordParser -> ListCardsInTagCommand : ListCardsInTagCommand(tagSelector) +'return +' +'return ListCardsInTagCommand Inka -> ListCardsInTagCommand: execute() ListCardsInTagCommand -> TagList : findTag(tagSelector) diff --git a/docs/uml/RemoveCardFromDecksRef.puml b/docs/uml/RemoveCardFromDecksRef.puml index b1726fb738..11cfc2ff65 100644 --- a/docs/uml/RemoveCardFromDecksRef.puml +++ b/docs/uml/RemoveCardFromDecksRef.puml @@ -4,6 +4,7 @@ autoactivate on mainframe sd Remove affected Cards from Deck +participant ":Inka" as Inka participant ":RemoveTagFromCardCommand" as RemoveTagFromCardCommand participant ":TagList" as TagList participant ":CardList" as CardList @@ -15,7 +16,7 @@ participant ":Tag" as Tag participant ":Card" as Card participant ":Deck" as Deck participant ":UserInterface" as UserInterface -participant ":CardKeywordParser" as CardKeywordParser + opt tagToRemove.isDeckEmpty() diff --git a/docs/uml/RemoveTagFromCardRef.puml b/docs/uml/RemoveTagFromCardRef.puml index 3d931c2282..a7f32e7ec8 100644 --- a/docs/uml/RemoveTagFromCardRef.puml +++ b/docs/uml/RemoveTagFromCardRef.puml @@ -3,6 +3,7 @@ autoactivate on mainframe sd Remove Tag from Card and vice versa +participant ":Inka" as Inka participant ":RemoveTagFromCardCommand" as RemoveTagFromCardCommand participant ":TagList" as TagList participant ":CardList" as CardList @@ -14,7 +15,7 @@ participant ":Tag" as Tag participant ":Card" as Card participant ":Deck" as Deck participant ":UserInterface" as UserInterface -participant ":CardKeywordParser" as CardKeywordParser + opt cardAffected.getUUID() != null RemoveTagFromCardCommand -> Card : getUUID() From e6ab010b1484b1555478c207d5d9b898fb17a4ac Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 19:24:43 +0800 Subject: [PATCH 289/311] docs : replace cardList class --- docs/img/CardListClass.png | Bin 40097 -> 99069 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/img/CardListClass.png b/docs/img/CardListClass.png index 82920c30e546959d719fa842abc9f67e3275c237..01beaf73fa99b22c14c8453ffc46f94be20db23b 100644 GIT binary patch literal 99069 zcmeEubzGGD)-R%n4kD-^ic(?$A|WANDi+O<(jYLzAl(Q!peUtcfRsoLLx>C^4F-x5 z(hY)i*U)p<<38t}ect!pd+`4K?)}*?o0(_knP056zOjA}RFxHJQOqa`3JTh5S1+kk zQ0ygBP*4f%*$sb@jJH2WL9s*AT0ueent}qmsw4KcwXFpO#o0)gh|(MKCJdkaTB9n2 zPBI^}eL(r}M?&)DQ`}bkH`eq@43%~gYnQGp$?USLQ_AEGP-Q1x&b!Q(*L=A7NO$tk za+zNGWop*C@ZjL;YXAM0Tb5o?4$-6>h}pZYrPbzbP=B^?l+iImPmS(!(!z-0Lm&!0!HcE8fAdpv?Iv%8h^*d{ z;^Mn=^yD)VYV}vzcsC?h{I##&wMA? zf4{`pM(Tu)k}A6b*3p7pX)wk<8t^vsS{St&JN;yd~R-T z=iM%x$2wZ_35bb_@$n1t2@3MUD|nqe?43>AdF`Dz|9X>uzRx8KCo@ND2WM-nJv;Kg zCZ<>yXQ>k>kPrIb|NM2I7Vg&n`Xqa&e|#+MCyBh7xT>|gg{|%-YdaWKxHV}3At8Rr-=Fi}p8D6F{&gwZ$-+?qYX?_4OaE(L z{&Df&pZu>E{{Bpze|@H)u*koC=HH(B+oi~t5La=uhL1BrMp0TolJCF$?H{j~n4r!Ebb5TD9g)GIjOLCg-J0^QPN|Y?tKhNDbAZT%uL;b5N z!zm@nbV(uh%iQW;j)Zt#=VW9S()e`m^=m;PQU*Qq9<{4a&AFXYzKs-=w>5RvORrD* zOmdD~tXu8QZWHsGAx@XJmiF3+ZLOAN@hHZMyF5<0`OwR cZvSyi*zu4b4CA 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%0AJPayN;3cTb7D3y6#8V}oE!@k((C);}$oV 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%0ArnOx&}0jGN-f0K%2z@5zED+N5JS7cw`iFc*B}k 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 l@Bkiv1SpjJ$AywfwSDV1*4M^52TuS1 literal 40097 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 From 5c0b179848dcabe21a92853d12cfc2a86e38278c Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 19:27:25 +0800 Subject: [PATCH 290/311] docs : fix image size --- docs/img/CardListClass.png | Bin 99069 -> 40526 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/img/CardListClass.png b/docs/img/CardListClass.png index 01beaf73fa99b22c14c8453ffc46f94be20db23b..85f9078cbf4d5ca9593f0a4e79bd8b64ab86eb78 100644 GIT binary patch literal 40526 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 literal 99069 zcmeEubzGGD)-R%n4kD-^ic(?$A|WANDi+O<(jYLzAl(Q!peUtcfRsoLLx>C^4F-x5 z(hY)i*U)p<<38t}ect!pd+`4K?)}*?o0(_knP056zOjA}RFxHJQOqa`3JTh5S1+kk zQ0ygBP*4f%*$sb@jJH2WL9s*AT0ueent}qmsw4KcwXFpO#o0)gh|(MKCJdkaTB9n2 zPBI^}eL(r}M?&)DQ`}bkH`eq@43%~gYnQGp$?USLQ_AEGP-Q1x&b!Q(*L=A7NO$tk za+zNGWop*C@ZjL;YXAM0Tb5o?4$-6>h}pZYrPbzbP=B^?l+iImPmS(!(!z-0Lm&!0!HcE8fAdpv?Iv%8h^*d{ z;^Mn=^yD)VYV}vzcsC?h{I##&wMA? zf4{`pM(Tu)k}A6b*3p7pX)wk<8t^vsS{St&JN;yd~R-T z=iM%x$2wZ_35bb_@$n1t2@3MUD|nqe?43>AdF`Dz|9X>uzRx8KCo@ND2WM-nJv;Kg zCZ<>yXQ>k>kPrIb|NM2I7Vg&n`Xqa&e|#+MCyBh7xT>|gg{|%-YdaWKxHV}3At8Rr-=Fi}p8D6F{&gwZ$-+?qYX?_4OaE(L z{&Df&pZu>E{{Bpze|@H)u*koC=HH(B+oi~t5La=uhL1BrMp0TolJCF$?H{j~n4r!Ebb5TD9g)GIjOLCg-J0^QPN|Y?tKhNDbAZT%uL;b5N z!zm@nbV(uh%iQW;j)Zt#=VW9S()e`m^=m;PQU*Qq9<{4a&AFXYzKs-=w>5RvORrD* zOmdD~tXu8QZWHsGAx@XJmiF3+ZLOAN@hHZMyF5<0`OwR cZvSyi*zu4b4CA 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%0AJPayN;3cTb7D3y6#8V}oE!@k((C);}$oV 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%0ArnOx&}0jGN-f0K%2z@5zED+N5JS7cw`iFc*B}k z!Wz%icM$*w3~8oO^k-*5Id5|sDF}aUN-x9(SYpC2dh|2lM%7}EuQygbl37}K%f=2U zx0pfUp*H`joRR%df;DCQhC*^~&aG{{6}E*Vn$>;iD36u998w=ujHtB}P!Uw3CEs4K zsCumoluF`Kt=5@y0Im@0;f`yxf$y=A5nSyG2=>sXpxHq8y*Btig4<7dYKpU{0FHOAY2fs#x18m%F7NY`lA=L^#MZOKQUbJ>`NXv^!;-sG z)9Zq2{DdaoB?o|S)R1(8i#0FX1KOQvDN<&-kg)W99TRm`H= z&bS40xNi9#&rJ#Jl^IQj(TGLY(LR!Wot{m$M!qVY76N-8eJ5}|dH{!Z19{9My{o9G65(mZ zgiRQlmQ&om_7Rir2{yQ)R2!i#&r3tRUDT%>D@1?j$XpuF0SeID${{xH1~!^LADbLx z4$^SG=zY?x*pH35PDA7HuHl8ndNpYE`Q9+SO?53{?`&*TA2&*!0hh}=2$Lmm8z~FE34`dG10QeklFycs z9aBy@x^;^BA>Z;#jFnznlm0en&Z(NsZd8z<7g7EtVE56hsh&f1earBh!-ztB5L;0mbTBIR-VtO*S+XEF z0HuRRRXGqX`y5}%ag9L%CWZKj6Tmu##rsu&RW1qq+vC*u@ia0GEkf z?kfEN2(!uD_{Vn+Q<(_z&4Xn9iOX1r183Z*2WnvDfn{Ykq-YUCl9|zwl2)3-kP^oA z*Zi^U1uy{%uL6WB+w+mv(@W^7G9h!a;r5YjtL%uZ!Q-}Ch|Y;fOoC$2HsG);eEcGy zF*o6Ylu9rYKPx_kOe12w>Au(iGQ$(pd2BuBcF@Q8LAZJegzp_d7_lD)bR@PD+A6GW z(WwT7A*J~MY$R~hixbSFoHV}-HHpvxgb#w;29CaacwdA|6;FZX^KX&hrF}2f!$CMa zcnth~17N}D)3A}dxhQjO9zcj;?Of=X-P_lA7G3m2)HhcE4aRKn!WK61{fH@HFVnYp z$B4A|?}(m$NGVCqfA8 zJW>ROun$eq?eOH;(B()PLjtB z4W0ohdJLUJA*BSlM`a$tNECjOF3*gwlaZWcIzwdibkYl1TZj6bjYsu!z|(Q&11yZB zO2XH7X_~na8PIqT?-y-__M?2|`2x0=VJTv<&RTFxxJy^T0+)Dnd&JPdmKf8%c%*X``9FzH10e?3|n`{8} z;*ssRyXW{P@bA0>^t1S@UeG_kCAgjhDQ!rNw+81D6LoiuFDs2Lfy zfm7X2@U1K$pG%PuqIIUrvr)>hxxyXrY15qDm3huZ-mM*Acirkm%?z6NoB~Y};1X4E zqk880F58_bJ0<}VaT|GdqBd+E^i#SKA`SfLxMbONJSeMzz9Z<^T}e=Yr_iaq=M*j8 zp=X_bp9hr=Btb=RH`U~ zpe~A{@sADFH@pkDID!(>1t9a9JpP0AHkd38@sy^C+x9rXLKQgXsH5wOI_BXt5@*vM zhpcr*q3C$L()a~mUh=GQ`~2s}f;y3S|4rF7!&--{(ru#|u{Dxr^Bs_IN#_6`MEdjH z2E=w5Zwhz)MC@;aJ1>=u_XvLt z7#;}$QQyEM@wP?Othk(lc#c=$$~ei9&9 z;U0I1@pM}xX!7Hfm0IH5&A*A)N;6C^#cXUG(ahmJ9d=fnAGPB#6#4jWtRhPlcT)vv z_h7>2_mXy)j!-v;H+Poj?Wd`F{|Ai!W-`$yzs4~aFOS1rH$sifzRQJq$cD)4y zYn@aAkbjhKeXP)LZS&-UgJtfOs@Hj?nd+>jwt|X%uZ`6VBI4Wx*4dCpT7vbqusMeNF7&G@wkI}X3InLI8ZQ5B4=}IUgp6$ek5F4nU(jlllIQ@ss zku9?a8gyuB9Gu?sc4j%b8$Imp<)<2lVoVqg@y(@~Y}MYh7GopC9hQ_5ja?`p%*J{i z70IMduhTshV?|`NQm6Vue-Cj?EDa4M`$6)R)t~9K_rD z52nCirR=>7UNjYuyS?L|wcmyrITr)E@sTSny{BVdVZfy0)aOn*s&lRmOITyS2XlfL z9(3;SKKPx!fwiGG?TQ{#w2|AGX~BtyN`M#TnD6t$3#p6+ws7m&ncQ|c{%s?tF&Sj1 zxOkfs7>uyOQUFtSfO2o5P4f0X8jI3Wbxvm7N`J_wDs+S+F&Yy zPWKpmT7bKd_WNpzd4^FkIIL0UwDP1tbi789nVHI#`8E?VQ5&mBO?6x`11ncRF@K;C zz?6JpIRw=1;hr*bILJ-~aOG5m$E(EQG#t6thErr3USw@wc_kcr;?qUIy*#vi z`StQ)1xe;6Osu@y8pPl+o&5SNSiTJdc0CJBl&`!taqmxN;oIMpdTgL4N2p>$mq$VO zJhqn*(kLml@@8#GgU6g%7_N!@HeLNR7;%czwHwyAR-OinYw)=PG5NoLpXCN!_*`~K z*22mQFUAw?JfnJ|^|xsNVjFDUpreD?_TaXJ7H;+Wu9S+E{tZ57iLs-#XW&<+0I1Lil{G7 zUVhG#*j@z@%*sDTe`r4p!XB2&}pf3gm}s>D$ntMBvO5(N`7GI}pubmcM9JqZ(;BwEPu{m)`9VZ!I_ zdTYYZ6n@b7*Ma#54{5jnThHl(qSb|Oe~49Ns;cp>COiMmduh|kpS3WA(XAc2v{YPK z^kKp;*g$1E;=vNvd5`8{;c(h);l5(d_rI+4(pYm=7_IQ=lI&b7JaQed1(emfm@bI7 zK@$TE6LUf60c`3ZLwn$s=S*{anZssgi;Xa#t$-$f=iaLah1df@x)R{4?gIuxd#Nmn ze;zyK0CMd?P*kJktiwJG=WoWSX99FHm!~{B%IjGzMr*vMjt3vR8P2Ijh4zfk*#R#y zQ(wwRe@NH(KS@>j^6SD;;(xz(7-VmLz|hR(prD=&G>UJ5My?#P^WEUQZ-`L*NJx8H zFM{Q7Ah4(8Hp}$Kpj(@F9o?~m$-)Yci0X&{7F7Z85F6CI7m#UTI!cBCnj_|e6I;x1 zASh;l!W)|ht()ozMpNK~WmdbGf;M&n$nF}I8OLH+X~d^GNi=QfLdWzMn`Ixkkd}%1 zq0`V0(4shh?!-eUA;dw4eGV>K7xY$xTMD`6iys!7F?~fH7T^s~*g!^c8`$ePEfj!W z!ioz$sSQ64tr|v4X-vwVyKvz>z+l=i>7U?U$6HYLNqdd^a=iq&cNbta(HEf=y+jIl zMw+kp4uB?J9*v?|PNtgbQOQScz2N|q{(|HT0dkX7c>szjGgP5=n`GSBZkmT0T|oE< zgsWv^WqN@sz7;ylx~AiApySI7olcQH{sjcOo&F9!*^^ud3kLcyXjfo7L)ScmexT+* z1NC6B-6psFB3Ld6daoY^X7AwrNjqr&Sa02BlXZ@79|fVfU#S02@bi2NvX+er_j#l`hnArsvhC;F z;6%$Rkdk#CF{SP`(@H$|0P#QoP&W!`rWR3UZ|6CrN6RZ=j*GF$0fJq+=|(x=xOBt4 z?*f(LqM{VCU{=E~JO@2dYF{Ilw0wsAB#dK;43NOs=bSpwV2QaSnDMI|ka=T0>~QOf z01Zx>txNV|W7NK+^QTxVe^T=KjCDAv_-{SAnl;<}vFObzt@NG zC8@?*F^tWDyLh)VwIl?gmIGN&14FT2iyBByoH}F~3A5fYa*-k(8K_auk!S+Z_TH6* zLvN92PBflCB0$56+M3OIa7Sn*i2IB%jOfz7Dy$Q=Tvb;E`&5dWxsv6NZiPzS&NRn0-VcM5IXvup=a<1Q@mIL?N#cE2BH8 z>n;y;MeR1QEH$%bV+!N(mFT|&(N9DH$l!)|>RUI_AIinz(rbos^G98w#f7>AJ*=pq z|H^WHp_5WVBL#}iyfQsR-I@T1l>b!VZcfyJn*K^BEBkBArlqlf-C|I(9`(^p^JfLO z8eIbX?hN17=wqI4fr1oSXhGa(xQvLCop(^o@DQ1F&v?nK{6IO=@iK0Xc)l66(AZ|d z^wl5kn-DGe5-U>f0yMQZBECdPYC-P^1U(^hD^rXR|8t-vhE6O%D210adezkgrheyb zub|irC)hr4m3nx8>t%Eh!AdxaZdJM8lMF~Q&$t~l#&1i$*WQQV);x&#-4HY{y*{!l z601z_vC!HXAUGW{=8D@-^og@(tNHSTYw@7?HXN=rQte1r^{jcVWRo8R$u!en)G&oS zj~<9c@QW&hQzmB@5j$9X!tB;u&2VUJ$JD|-ZvhqQkH3F_CbH744#vBjpwt2CZwh;9 zX!yEJL1((z9+&-kJquSrX?2p$-w1-x6@bnwkOm1lFpl8$##;gyuwu`cx?0o7_j2T? zi9lE(HWZqe`7T#N*5Kc>hBXPQhEF5W3(wtsgz6A&@sI=8<)ed?Z5-VMz;MCosSD_;O;X-Bbjvh zQ!#M2lj_M3217WisylP>MNE z=V0n%6sv)WLe94L*~Xzmeg{!~5TyfL{V&GqB^L}PzO&gy(~^Y6?bU;DyDQSGr?8>x z73FAHXDs9lwJCQTXj)FkJoag-P{AQt73orf5F9-B6gFjplJ(i+7n^ny&$ptW=G(_X zg*k-pMfnRU?$rLXY8ccW(eH{eknOmid~>;yx;^s?|i z83Y@j(GV)Hw;sJ-*>Ulc-(PQP13ac%baC)y7K?SgvRMX-&yi-Rrw% zR{p(&a}Z@EzZ#!j#*yzr-R-vJ-+$!qk&4*^pW5_HdRYXNuoZpFB=_m%qVXqlE{O)S zV)xB~<*I&g!$IK2zn}st&@W?E-)k_-vrs*=dmN1Wj-f1n+kZSYo}CG*=XG1kwlDu5 z4$M_u1VFoL2eP_X9vAM0-%yeFX1!hWw?D)#FjZv`AV6Ak1xZrf$C5A}DW^tGeg6@B z#m0jRt*#PUKY7ySNt2+bCl4{IHnV?6Gn@sWaEH*58(9DH+kg65Roie8=3m$Eed+Qq z&hNN8Z%5wb|C5~5+@BwU0F+BM3LSXJi$}1>L*1FC&J7}4fAWRjSCmXDd~d*l zbxN}D#x@`=PXK{H`oQV1hB7TnH=16fF6b!-LVKG#0PKTzN?JCOwph?$QVybAfRtiU zzP?A3%7dGs6~Q>_Ow+5_1t->R5DAHrzr-t)1H(oAdbJ5kvN(W)IVF*0#o%ax2N516 z07#eOP&MXnE>^iS6oz3VHHFo9lQkV{W=j*7hyCAwR}|8Nda{Ju`{DIKZivzeD$g!woEQ$f)t`M=9q79Y@s}j!n#pC35uZ1jtuYF!p?F~ebJELsii~I z#Ru$Z_^|Xketovz;mMyZo4LI(d`9~}%i-C#X~V(Z4Vs^WnTZcXqoA5aTmVTawYMn8 z#`iK+S%;!++IW_%dFZyX`O3#-mNIZ82;h(Sl#z)qOnd+HG~Yi~uEt{c8&V3)eBl_`^BffWm0)(m)j411vR8s) z=2Ho|Sj=a;Lf5MYK=2AN;!w`8T}N5x?F!k#Yd;%_Zwq$hObju(Ue`S$Yn~bQj?Smo zTA5E2%!aHIOGzFIGtjiu2Av@CrLq_tF;I+oM+@SPoj_Z?BRG+|@*~5Ope*F}@2VKd z{h|tGXC$*2)%G;(#guRf{bkv}&I*^ZpZ_w_dRUyES`xPw!-7u@-W2`!63ynlyEY9b zC%O1mIF%hqpY;r$LaN8b;rj%Zw$T=VA-Kq#9dt?^2&FnJPb^dac8G{FJAEleQy3(bC&VN{$$k>hctH}Eu@1GyBrxLd^;k_k%Zfx1Tu=@ zHmv4ylJY%V{MX)l-IGZ<{iqzj2A{(c26|vb8+;9ybs$kAI7^Bl*bN+i1ovbmB>o}O-TAZwyM2FSx>+@h0|tgQ;u=-o zV~Yl+hsazS|HUVn8|J(mp^KZ}6m`to=sEe>CJn?lRO? z-#KXYD|coDCv=Zq!vl*ak!n13D3<+u!j&Qz=Df1lig)EcE=A<1%H8hP(__DcEFJ~@ zr}C{ismKt$mGdPZtUrAfNo(JhzYftq#kLRQGRSVc^o={l7Zb)Vq&d)|Nz>H6@JE=K z$te_HkOH8Ju!SnK>F#{JEMjf)H`f9q_!xTJ{4gaO`Z=%03J1|U?^(0~E$fETMPRKr zy7Z!y@V>|8@XAZMF$-d<=~@XZ-qN7l4eWVU+AnHr6h$QxrpOZt&G+Os|q9+;`Dy3 zsU3u|nI>ny^R$}W6Q-WDG3(tzljf|Alkwr?-`0*9osnk^TCvYyEKgfd*EcOpWs&~4 zZFF@|Z_u}p^T+@Av(>%yH(^F_E=&pZUtM`>en^oTs!;~U);6-@_x>0_N=c{*Wpu2G z%2NGjknx(RCadnUUA5y5O|KSqypyz{U@6f`!~lc#CZaMTa2EyQ-O(5o+v*+*33S z-FmbgY9+e~lm$ZH)%K#uA|T0Kg!_c~41k097Ma!z86dJ`@T@CHHN`|agCLj6{=#*{ z-V~&IvePB&=A+s{BVz(|!s*cqH%f;wLK6!T-Z$W)^6QzMmXA8D2o#0N-hYPqUss7t z5xo6o%1xo?DKscDRIMo`%}+&B^y4M~-_i(_Y$^iXzXqqJp?Hc}bhTt~J-9BPB)38C zgre66MBb04kj$O*chQvm+69kx2LzJhfPt6XpBO_aA$Vcr(*)ss3>qRsq5rudD>uujVK?m*6! zm#pIkSlLmZ#Pm${=mnpbVvxLlG84$p!F(PA%0`L13*nw>rHT@OOM;U<&`B~d1yP_J z%o@(tnMK#Q&H#3s+s|z8H6O%=q0Ch(RA`k<2Iqm8S@+8$x-n@Cy7nd#It@sz`T-YV zqjaE{(W@9x-)`g@gn(~BXTT%Vp=DD6;tDQs<1uFVy>=VOj6Ea0z79-49;QGZ=_IGn zh(&>A?!8WbBp?JWN#iGN1eMKi{#@t{yv%YiLSaYBmph$Jn_38^ZC>8Jg#@5rhq%ah z_7v!7fM&Zh)J2Z4rIN$pv~rQn$5e6+TqIPdgc=a;BWI1iC=W=W!61LbwIG7d#JwsZv*nq!ynFzOJ|yn!az;@ zPjaudo@rMrh^#>n(t&aV!svbLZF9fitH`bzwSZiy$RIE~tv642sG%|I_h zdNAS1C!iAEM1F7g%6x)D2vg{viXm^2SXJPLUQebtMKeD<;)iJVZ)Ibt2ZLioT9UzO zA8Zf};#MQk2*~(Zc}gu{HiXKYffK1?%KZ-7Mdz!>Qu99Dj#Uk^73bPv#+vnhvvg$O zKtYy2Ej&`OxG(Ah1xTO^ft5}bgHv$@7*#7*WO~#K2xSJExeX)c2V#mNVZUVmGf8oZ zM(??KeamOD)i|7q9=M4J-0)=n_VO^0MI_<+&H<#l#3v(io9V3qD6FzfUm*ny(baeT zmH^}|XWi#whVbgOnQTmX$m<2{#Y@IZYTrE;r}VPdOaFU9^7mjg*dta#WXe5;nsdgl zPwwzXZVBT5P-(v`0=B+;$x(_#To=xh_-68{jWv$Ma3XxD}u+trNQvi+46(pTHt z8j{^WF}E*M{Sr;@Np4@Q%y*l5lk`Kwg(U8L1_{A=rAIh!1G=y6FyX<%Jr2-L5X5`u z2leH^ULBlI^O{b2HzIgX#%Zu|(92f6I#xLSB{PbCS9jE3;9Zx_-*dLFq5J}7(*||e z7UntcH1$#*{8d-_9yMZU2)+5>=kWZhX9)!{MtrXdBBaxXznT4XG{lcJ%r zYvlpyKZJ7Z+9x>;y38m5Tm*BE2}qeAWc;av6Vn4*G~$G+!eZ92`SmO%BDPF0`YT)> zthqV3zVDHHDo1@33Nj`-nt8Uwm}J=L@uQEA*qV14hwNb`9ah}Si`xdmMieYFsiP*gRIc)1~ISz=q5t z8G0x^3lcCe1x)-m-p)?dLm(GHTyHM8=qV5eqqEk}Z0)_VtPhr9;UR#zZL zCx!M-)X+r;`Kok64{}l-j-2M64@E^yUX&gDl$G~Nj2iG#hSURFFIt`CUPmbbimoE= zH1W+{{nljN`f&R_)aMNL|Jw+Xd|jWvMd8yVYZ-Vm)8aK7ErmYL3$*j+H?pn^lqH%8Ad&Eci=- zf%P_vv&Jd}1%Yrq^s=FXX>4;3W7{PbIzdsx0lh<)&tq*Qc@9vG_PBU~uS|Y#J!;E? zOWmbck>Qnu{^FShgtTKo5H<$bp7LO1wdM-J*E^B{=Yr z;r~m*Vk@B>fDg3;MR2x(^T+dQ?!+2D%}bDhpC5)e8{E#kb2`P&Qy@dmGN-0$2I%X1 zkUS(K8m}At9@3nQ{FxT3(E8y*D5ye9lR*TS@urp+FS1=4d{2GALk|Aqw}*ZEwLL|IgDo? z++V4ubX+r_X|d*f5STO`OHQv~f43&SpwEV)+NGse91Z?r3}UW&2ob9t4$&FB3Wa)VYl^k`rLJK;K0Z138zdD|y4odWPhOpu{A^#3`Qp-xcTGx;;*JPMs{8KcxIOxJxSdm8?=b;Xlj=02o% z0bdTae$*wIdo11vS*wbClmu-GAaIt0d~OF^spa+Rr4}K+xR(japR|&uhXV09FY4#wQllr*kAP;0ls$Q@alaT_j4U}8!2F(^1 zNGt(|G-6UZ2ss6IYEk-4=`<~ai&jYs&dKrSl4n@pr>M~z8#CaobiHJvjBUvhCEMga zvm0LgHfro%+vDEf{{HNG_ui*iYL_l(z1ULOxZ<;0WMG>P7!CZg;#mHVZ-_aAh>{G2 z5i9p+{_ZUR{uH+nNPPuS0xLt_f1k=&A8Z5w=T_UC53kJn`!T~mv!nn07iELrjLEc` z22St#-^3D0TTE#%XPByH(}W(*mIyVrXYTDPPWyFk_%sYthsyzzWs=$dc)!0NJZ74< zpyq3GHrb~AUMU4JX|)D@~Y$>r_I?4|S9fA3y;- zPX4QwV$kSfp=RG0!+!tASzB=!vYx_Xr%qA*VfHN6!cG+OvHW$_%emn`s`CH8nGi}~ z@xqqu!c@u{GC9&;ziPX=HGgV&oSsnR!C_UcW4_!Ej*0HsyLJ0Bg)cMRfxosfv4p$m z$0po7aPuA4c~Oe?vBh&Q$V~5LYA zd!)@lA-aBQLau3{KB)euOq8$NMae^IP3fy&I9o6k-bZ6(_Wv-?D^3tozgp>BnyNwN zYSp=GF-PflQl@p4KP=}M)wSIOc_+@*8!UX`ex7y1L}oueliA{7Z?fT7In7>r z*G@%?bJsIj#!D3R#L}ojP3EkkWZ6vrG{4`Br8xoyPOBU@eq6f$#;+Z-8wzvp&o=$kp9=vKz;a?kfQvOKO#;$f1-#lPU+L3b3?T4N4 z!wCKz(Ek1hcahJ8(cEp?)oypZ1uTsJ`vNPB>HmQUW>nMFs|M9CKLXf_zYV@`_u;&nSkiPNBkE*L**=Ymuhq*i)|B z*=>{A$r$9|*bG;HL$fBN$qlka(Sf zCmx0^djXuH9zII9!?&Edz$bhQ9m*;q4PIZKtzSj-$MRKpchI7DI_qC*+|{HhX_kMM z>d(b!trfU!=*GDuB`H9s)A_gQRAUzYA??GDq$j;=QlqdZ@H0=&ELxnh){GOTA$d4H z?%$aWvAF4d*wD(EB9?*~B{dP!B~~u;e^?iI6}mO0^s>6m?|(R*#>#n?~? zYj#>?n1=fAeShZ|Jvhp3k8&=N=&o)@w}1pHx>!(MH$K>-Frw3rJxcIIcMW3}`_;Bk z|Iixzc|S_gMzp?S*zskhX(^V~_K&GPEH(|JxxIK&X34JoI8- zv39M#EdC~DL^0y)YrhZ4rw!;K4E*w1%yQd!Nm`0n)5?lDJejs_KF!<2e1(JNKmM;M z*uPHI1IFmJ8sbY;y(WX?w~Vc#y1-k~_)!v{RsVsiIJAXBT-N?yrs?Up!*$pw{ zYJq($%+9a>yXVv8K7z0$=Q5A-pH1+eAvranMr3F?dPv(B5Bj)4rf-|+ zKLW$S^11qNXJO)27+uT6)x_g^Ozmaz>!~9g->8L-2O2sSVQA{4IhPsHD@=`gX%vND zsLpKVDDlsXVhv%r6}2m?z#%zEGc(p{)Gk?QOmz?YV7btCOprN%R`i#>4PKwq{@3!T z)vr^OV_R2v z@6cSoa#Dy^CqJa2NzV_3f)LyrvmJ& zLACFzGKfXm{`0S(;&C~(k1$JaHf#o&sOmyCT-14H=C3H~cYAS*9)MvMJ0=URBQ*4a zhFyvZU(dlk<0Tp)B1VQSvWuJOe1p7m6z8G4U)+^HBY9&BmvEr`SBrcgKCpW4O! z1ZKb~7m8lKeb1}k$BL&qk&0z9R>boehxFyH&sL;A{v*o&%aUX=fF=LuVL>jm<5=dZ z6y?vOd%!Z_!b4gHxbQEhs}s3f=0i7bhg=`me?QfK{ug{d)N?zEFU-RmolP%|2FAsk zfHf3EQ368Amk0an<)%(I7dTmgxw@9h{6pSVy!k!IzD4W{Ghh&7?D1Q`$F>LNhCeei zGyaVD;lo-u98P6HQk8nNq}jVMZ_4Pivl-Op*fn@yAcw+4dpNofz%MZRbQWCbl3_*+ zd2O&(RenI^KVR*?Hw=D1ylm)G3o+QmXOl{yBdS?Ko=yveJBfvFj>F9j4}f#zUgkhv zh0}J`Uf7p94?}`r(pWYYK^HW(c&HP`OdZiXCc$zqq#mv&=mFiG5Zu=JOgdbdDp*QG z9~l9)U{plJ7$W-N#Wp1CW+!@pv{3*C?@4A|ZLR<4SM#~U70i)TL_{zcVf>J?M1JHib|-O$aYLz;|MC1&e@$i zZAcwQTmDF#B7EX%0Tq0F`LEGr8lQs`>(0eVY7PefOuHxo2j0H@LtypE$sJ}6v2U1lHlM*jpmQ$@IK5)P@{`2 ztU(%Ps+AU+j*o#qeXTYnzI@`K*;#WcPSA1;|1=WKmvs?ySbM1_p(@hk^BO(N%zc$97a%r?u#PjZkTc-%see$#UZ#wXHI9wcJ#r7aO zO}P6_$bDv*t^J;zv-8YLV&$Z{teiF1NYt96)Ity}khg-64A+k2Nx`qH3y%XGl3?9Y zy&-kDt6`R)37!#eo;X=_#6gKog+3? z!2((#1UTe+)^W{Y^ML|-Ds3Kq+YqiACQqU(+YZsg1vCV=Nq4x%7fUZ(zG(68}gu!$34S7tqb6%x6-@$wyX47ah+@{PvX!GIu<03GZHG@a$f$g$8AKCo( zfNu*QEI1KFUL}H09uX3rYGiKurliCZU0^-joEe|x!e~7v`k~|Gb52$y&w7#;JxT%6 zmOkRZy$RURYIRA$K5w!Aql7=JstaTNDni$RJ+SH+ocbUw#h%B&p|fsovTi@P*}5m@C_Is`KsUh0Pq&XIlbiZ7O{n92|O( zKK#g)&=PbDOAp+1$ETNL%?GPi0P%cv2wtAyQBek$>$Xv}3mh-Gfv+mc9IL_IR?myn z%@r7cQu9Zyw-l(Ba%(Ya0u79PTx#x4!hSI3YiV27MpC{!D*5m}mUGSk+ITzZ4F*f*Rd%*i&rs*UZUEP_7^=Vx8ivPH4%$8k-8G>=-9csr++x z{E#W29kRTY#Q@2>_~jrtkFhZ9G}2JlELEN+Z`4kt2Cd&cUs_3yOEy>qr2XyZ5_JBb z_Rc@F$|{WGcT*vp!bXMuR962_e6~`o*?oaf#W(KE5sclqC#e473 z*7qzXDfRvRnzi!}?b|ew?yQeI-S<_MEoB`Zccr>;#lSF!OFL^G0>aykg!z-L>N6%pIR@)w(y(^`#jkIr(U9N+N&hN19QKJmGyZ@Z^*`z_) zMOnG#odSzYCxsfR6rG7S?b~a8Cgq@@qU+;|8B$hs(Trh6nq6XPVArJ~!%|HkUc?c$q4g@F~LKfiHflyGE284i6w$(?8QDT&sl+s)aAfX|lN!Lfl zBY~B`N?;`@EgFfDjEs!TQ`Nvq7*~uO4q$`BlaP4V5D)@FxY7UbF6E-`pHHRl0?4+Q zq4PWTev&g^3rh0!sYYjfMvt7L7Wh$KLXTwsPkYNG?Gc3 z2h)IQz%=+JQ}cv6kC8!hq0TefR=gw>dgR%frH?kaECnPAi9(_p%2cLPH6YQPCsBw~ zafP`-+U|miKUG6@QC+owa>0GNRs+}v`(Pi(>5l-W!9|mp1}?i%H0f_(8vOi`c|xjA zs-B5JPB_j;BK}~WTtF5(l01}{vupU}IqBu_<6Rx26%)AD>%RQ&K7D;|zsaShU+sLR zeNWr1!xOlbY->q4`S79v>z@&&`<|->vnGb<`?b;a1n>YJMOHA6F~5NKvzXNrE5PFk zh+0;u2H*iaDgvl3s;lS$;)FO=1V~q0$%*1i)qpr5PKZ;ng|UI-RJ5UKpt^uZMF7=B zbu-%`5T}MOQC-Cr#s=U4JSqaDE2JwBr;#t!F)oNx(T1i$x?)5T;L%_P<}qRh<}qOg l@Bkiv1SpjJ$AywfwSDV1*4M^52TuS1 From 716686d68e8a437d2ebae5c740f8cd5c7c59cd7f Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 19:40:58 +0800 Subject: [PATCH 291/311] docs: resize CardList and TagList Class Diagram --- docs/img/CardListClass.png | Bin 40526 -> 63941 bytes docs/img/TagListClass.png | Bin 102424 -> 61154 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/img/CardListClass.png b/docs/img/CardListClass.png index 85f9078cbf4d5ca9593f0a4e79bd8b64ab86eb78..8352780179533dc166e56342590b769fddafc80c 100644 GIT binary patch literal 63941 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 literal 40526 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 diff --git a/docs/img/TagListClass.png b/docs/img/TagListClass.png index 4af51a85e11d611f34b6789a1392c5074ce4913d..06dc361d1dc4fd6bdddc4394ab7725457c8d26d1 100644 GIT binary patch literal 61154 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 KwE`8Ji~kq>&}BUU literal 102424 zcmeFZbyQVd_%%vO2#TbDlz?=IbW2G{cZ<^99ioH+hYpqQ2I&q-=?3ZU?uKujx8L{b zxc9F+zVF_j4mg{A&e|*Xv!9rAuJch&<^?(`0V)g(47!B4hyo1E9TXTC1S;e^;LNw4 zAn=05Zz3!#Cm}3MDrakDXku;v10()1N)<^>u>&_jGdxt#*c(|Kr4D5m472xeHuMkIw^iRi7lUI8aJ#oMPePd`52fTbpde=G%|*gl9?oVT{|t07IQ^&AGq|qg42uhdd&V!?}JK<(57N5eMXaK z0(o?6RGTY(N6;JEGu_O?aa7NjWu$!Uu&+^D3|-!xA%9RNEAQ(FLQy;mq7yd~MLYjM zIWTzDLmIqtR~T;TN=+w+lT%|}H$46stFF0b^;@FkMkKqTH^R%u-!v*8soz*L{$Q&Q z#ph^g?)!|*&x%JZz%0)1lo!Jk6ezz}i?@77q^o@aTV5ryiG*X`$X9&(2}aG*QY&@a z!hV(Y^Um{qC3#DwJYLya()Z8!B@^z~qx!((A|s%YdVhg4e2YeEylJ)O?{tvxsuA{e z=$*4h89jW0Fw)HjO=f7+FkXT!NLshQ3n8#0!-}A8!?0;U#p)E&E9JY+m4}1O|r%e332)7b( z$-Widn&kVv&oI;~kdOKX;dIt;uX#xBER5(owF~xmqB)yw zS`H*=@VamCqH{pn@mNQuOBR&FPzwHV~4vWeop|@5jY?VXy-ek;(D%Simjp)wsUKj{%@5M3hVt!-&CvmS68bLO`E;$cf(TEj33_iAdZyGK8-47IqKUT?oU+ zNA3YZO5j7Xl@AOHKF*}|;ux60BIF;%S;GC0AE2<{sRuSRlp-r8FIW( z$0g#yk4I#MVIkChIY}B>u%_O@qI_~s2>jYo6bD%CpJ=?rO{VKdH^!;P%YPx88q=?7 zjC27<)B=+cH1PCI_r1eLH8qN8pY+$S&G}W{MZHm0BN|0WJVeif-)!ff6N&SCX3bOi zPI#X)F0ijKf#O_U(z8kRYV4g$L#CK-e|Q0^r)l@eAkMsHKy zu(Y!j1?IYlR0_{j;KvrUg+~jv3x*4x3pB5JiUK*sABWjXlv9u>P<#~bq{N9}4?hW) z2``AKme`Goj0%d3i+mRq9_b_LE4eJ`7AZrmt-2w9A)-PR8&UT?OrO|=-G$PHs_LVA z)Rgp%$Uu^sf;)9lBwFX=&O4Gs%k;}+%aG#Y;*Z6d2O=bWXHhasx_5 z@_N}X<-@Y_rd&=d>)>tbYg)JA zFcM>`&t}J#F~M2}S7uu#Y^pkPG19StyFu>|eBpkKdYro9G>pV%Ob|>EMlep$#dcz> z)xS1EVWMGt$K-%Dkk!dJVPGpok5!Q%uq~Y-V>>NA-NEcZ8GYFg4SbDsjmy%B(mSPW zW!j~SWrt;Sr6Fcc{ZFeAIDzkjQL(ZqwCuWs0Ltn?>YIJ<@!VGdk+(V?zaxu4dd688Q@hrW0 zbWL;-bBu(JhAxCAa)%JT_u&!YAo?}>Gqf>+1m>-0Dfs6EC_$qH@vN@B{f5l=>Ots1 zxNUEX>TR-$TAXWaV)v=Aq#`&Ygd(n=guJB5AkN6nFq4jzM(Pgge)6e@EtjpvN{0QE zS(ZcBYR2@Yw`uV4x7Qy<--{Ne2UAWKHx`c`B;$;9_L*iVM~z6ErIh(QWE>lAnz3g= za;2-KeS4HOhevxs&_25S>RUYoVL&4M&elxJoju5JCC{7 zjx#Iboia{|cV}#(7ta&aBeB7WAllVtWCTE@A8RKSN6Fg z)61dQXtwP$`?B@8b^mab4wMeJZ~?o=T*`6ZupK20I$>g3wfj829j@jtAMbmd8C)eO zB@P!4&#)$zvYB|Sd#*39U&BSeikMRtGj1CVa{3(hxrU{|fKq?EPo-0)m!EbR+YnXL z@L})w!~w=)9GpOIL)RWH4m-g|PYQaU+h(k=u9$u!Iq$-x>yQoa<(;h!s68!NFe2(4 z`;NDwn_%(GZG0=?-P}9fl{vdgyDzH*ecG%QcEolwC+FXE; zGo@Qp6_p6J3-wkb?rUZC_atLI`7v2Cff3wX+`zzH`hA^Z2by}Nuca2B4~rpP_0fBh zjM3bY(J`Jnz1p7pM(v3lS63FI8v*4}mUI<)j|(shs_Q1Kj(1of#qWv>*sw;23k~uZ z)Gx=X*Ebm>Ya*?*W!0I~XN$<(g%`z2Ai3I{YLE1c^b60DTZ^%$i*In+%R&lypL5CEFHCm4i+Gn0WKG3SQzx;BEg|>OuNQSF_i}t&7X6LBUhH{amZU zn1%t5l1-+VhA&8|cSss~JTKR^JKUyEYXqF#jjuoL6|D~C^`-R@)~k7$To9Zb&sS_& z&5AsF`r?G{?Q>B@MOf#$yD+AYVOX8{Q(s0W-s->m-j~OMaDx?{_`qP{PGhhlOba6d zDdq<52ZmRB=z<-bK9###M7k<`K-RR7(BdRsjbb76NGX8`Ov@iMY&+- z2Ao*=Egatp#{gtFo>|2F!10A7W{{SC4fQv?HC3|5|;3< zV+C01KRyEo1LJQ3gYd^^G{7tLUnuwit^at15BGyX0)JtGAD<++KR$I#PEk4b;~h`kx# zV>M|xQei7w15$QIW=7`6{HUa)q`bEJhTIAwVt+ITfAKvwwzs$DW@2)3a$QR+gmD>*~F>atK_=)sOivk^nSR#H-o)@1&7kl6-t4z|{oWlf^kUq~ zb_TY>Ru&cpmiGLAuQ=~-J^ky=zsLD|Lpc*?19LSI6VTEQ%!!|clau+6X8(Qbr%l!W zZu*py`Cm={@zy_@LMOqkU|?ru?f_jxWlIx#eimM)pPl}1E49Cy@jqo{WqSHYvwxod zZyWVrwE5@x|F)5}H393W2OS>&pMCuE+#jFkWr7;OKMdk`Yy0giFgJcwUZ%fHmmf8- z4b}t(Mi53qiC103?K5BLx45bUO0c6SRhXC~RE`KI}v@g>)vx)@eh+j`_=7_Io(O>nN7 zUg06aB47x@fM3SAaBOT>CWG{r2vpuMaLA-@|N0e*;*HN@6QxD*ud{!@4?P;jG|uHZ z`jNZbg!ab;vx)^{*)4M1Meh0kb)`Ss1X0Z4|JLhIf03rbv0~~Uwb_mTa}gKLHdNlb9KX(zkU;mBaODEui4d_fWC|kINGr3(a0Ja^^AR@w7@aW|swmhQ)1xK@4XJZ+3dChezyyFK-~UA;J3R~#tvy1jPd z7<&0kxzr+?(Bon~(=yo?7d4jzbh$IED4TCLbf5pM(P4XnEzhZs@3b<%d?KgU;vk>d zWRT)?#%;HXYvoh(@!A0SEN!wbuYjeqB6HLV;7&A)oPfw2Y_bP4^`N{i`%bwuy-kIkeYI*uFQWft0hw(I4ZzAtcv;o2{- z--5N?s_b?xHs=l;&%s5d$oGAKy!83^Y;35Co|F0mWbQl+F~;L#Aa_b(W@HY@DrIk z4o_oAA3q^3)7M5g%Xwcs#&Xl*m*|f!Xq6&!=MMV>RD((}I=>4=v~1FKhl#0Y*>8?A z=(Mo@+`iHf48`kK8Q_phUwLzC^=X*pN1aN}xF1SqwzTF1C7Kmf359t0k|+Hfi0AE}WGj6VF}s?LATr7~0G#oFG#lSEolXAuk0%Q&YY1* z+`noXL@7@>&3eR?2+aK4`WtT%BsaN(aKYe_z43IM$+-GPRCW12mw)spcKvQqf4*|U zzN(Cl29I>l{#hTdUDi>BZv>UBBhPlJqA|u-myK+%_4F7&CgllWsqL2OQ7Xl)JJU|H z(ivmwM)CU9KU!KoVofiG2oS5_vzx0G=VZuoucs~5Nv}QX2_u*rpFo%;iy~6a4W_(5Fx$^1Fy^6Jzz!k0DidoNCR*a+d zq4sPAow~hDnfMLHhN}a8Z9>>2{EhgAC_18Oab@jJ5moll?;1T1im~q|obzrR7V#$<8 zHcfNh%&!R7@2wWA0}fy;;+o|@G3ie?Pz9c~@5ggQa11JQAp$qnZ`y)TRvXqcVn?fk zHwzp1yA|P^7%HYPh0sm>#Nf7ScI##MPL$_KRuMSYlHSKPVP$98G}5jd-xSpBpiXLB z-Ewm62Qt-XDGRAvl#Q4dujNACsR6GP-zzUl7OZ5i#fGVN?_Gg*O*Q;|-hK!X4?DeT zFaqSQnr#Q=v{_*t?h5b|%?u^oEP7w8e!k41x^Ke}&b2=U3I<|*Vl`2)?FH=|SuC(( zEy~rASD#rCgc0V@j&moGwkZ!DtlomSn(ak?BIaL&ldZb~SHZN9)wlFEM-dpBv-!1uXg zF_`Dc(7ultQS`-Ov zrV z*eu-nhD3taHS#Kn31Z$~mEdtQZrPvoyrX=SGx-4;1)YrAr=KPSNl7sCeyD?AVZ5U$ z_l|~S{jqvgpBK2p*K8F_8I!8L{zy4R=KpBHvU)uO1J`(>)I*|4VW{@zL2#fB(_2|s`lX!|Z9jDQK2ahO0_|3-SlOJ#H zL*p%lU&D&W>9o^MFwahZT1mpK*Uh<6md{x2`AV!TQ&}gDs#aLHro)JG#JaP{`zFLF zg-ELBqGUdin}TG4GoF{*%(9m%La#m0@mVP7c{cM(rm`~=2%^2fcr9CTRM8G~U6!Mm z3pFb&=c9gM_HtSv6-y;)F+Q-sGzf*s?BQ@H^QPlAy)+Y>YqEPZ;icNOj?_|nO zR@(1izn!E;+i9BZWv;yNYW4v%%Bp%O3d8-CnE%@xH*k#?RkQcgci7b7VG+LMH-a0w zW?6SUYV9d`l#A+0w-ME_Q@uH%nHg}rK9uQ?(D)_0@>WHnaOQSQ%T5}3+wOQowWjW5 zf^J;q<2wtV=e3Zgd)sxVGkSF|NIZs*H%92jGYU}HXn8NUN-V)*-^=~YNpoR&f?On& zemppnSwy?W5gmeyt02Cb+Ar3{SY!U<1h{bNlT>`*7(8BMs>~6>A+x%9vs)Y)Nt`vO zjVIDkefW1$_*T&D0jZ6RSyhDAiws0_3U6D~7IXxm0pz#wjuSNdF2Jya;k}y>_zu34 zCx`3c9MZmN4|V{_gV!gOT@Nv*FTL4CLy%hzN$|WdIUP4j^j%~s{{GnVvq3ZpIne=;B1#C3qj(htuD1O^C<524 zD>ScMp=lI-iegzY?Ra;R$o4x~!HW=Lu1mSc z^XV}<+&;tv{O*-JS9{HN(T8_{kI#ap|B}l;?)}H#dv_v=YiU&xX+G{ZMT8otwZ%qQ zAur;y9#%!?!hXT)i{rcK2&jCl#{EeuW{tjNe}>zCK0Tp`uwt0{^Ne;7r&Vhg_GoxB`api7;Jr329=oi0*KbsJIxCJo*yg%fiM_no18%+ za;dd9G~kg5`&C}vKpZFj@3am;*+)Ga z#DMWV=q=_QucLt%JADGT_H=n)-^IG^R6VoX)}n?(R?-E%ZN%D%{C60}f0w1+hGd|R zl1lVAgn#Fyf^7(f-+vt2R{e7+{c<(>YZm12^Dz9MY4t`ns7emd*ahFdu_~(y3GAXzSSeqLd>+@gU!*OVJUvrv3 z_u^Nh{$2^KoV{Qw-G8;f-dj+RVcM-P>Zj!w)T;EMQ8P#YMvMQ?iT}se-U>QGv5uX( z)y`i|n1vBcxQzsck>n?L@wefV)<7Yb(;2(vUrrbw4@`LRK1@u=FIP<)tXeTBmu-JJ z;h?)XyMDcD1z^?2>rS<}emUVb=!DPU8<&5*YN}w>wr1Q49{qB{i_i)GkD2^) zeg1!FCQ12>b<(ly<2ZA_etMt~82SI5r~KVNQT*xIyr1B_(ti_iU}ydBM*+Z!z}fu| zC`cMA|Nlnx`5%<{k7)6K0!sWp2Ju_${U6%kcQo?QoQM?3NgWVA&6yaE1NHtM@r^ou8h*nF59H zE&!Dl?{O_*jFnqVhm2s!^3LnHu2YT`y?IfwSx}?0%)7}gZssYoQSBK0^TbGy9dVu>Kl=gIOT5)y&@W6N}31H(meG&sJt#tHWo?Tw2-MZ82l3s4Q zM>fsq9QIJ08o&Y}ZUFF@qA%$lTr)bDdw;(gfXdGv8STw|qh!Nei({&sgR21S##n9` z>FjmE(L2pUJB4hN$)6UHZv{7TjU6BeInMPr7n{>7u~s|8&U4<@r`3+z1hlC`6$(*n zDoX0{jHbrMz0239vrbfT*6(891anQ@T<(&{lmRkhr(gI!I?f)z^_|*@oV4ufeOwbY z>o2v}Wi&TI&q%-Q84ud?x#c)zj8?c+dF&tL$(-X4J%5ZGs$Iz*=ar}JkFa`oK9C1n z+x4)i+GYTR&DofO^X6=E8Z6Kj;HrxB)$Km_SKS^a-lFM+f9c{X8(mGSIl|%3&>_u3drxUjgO$yJ8L3C$X0RT8y`aiB#;Y8=dvKo%Vp1uw%Mj46Y9$ z?<%*;C!4t4cI%vas{w8yXMEP*4GcrTNZrn5C|MY(qMN0wQWRG`ZI0#|++E9!;p_sf z=65`KP47(ksFW+Q@BIQq$H$<~4inTfli@p7g7RI;FH<@_T6Zc$>RjDuhEHHuo4enk22}2|ck9X+ z+lI!Nwv)Eggh^(VEdM!0Tu6cPN6*ESL+v*ZHlcgoqIlY@M_14YV1X`>YDgD=_Z*X19>@4$EMbO2Nh@D^M8)fvLGykf7qJEK- zQLsQ~W_ESY%)NNLTBWDP9XzgVb*{&#m;IiDx_9Zn3VvFp6S6CB*sZ@b-TJX^apVbZ zc#s#x{kC~ffBOqF_B+!mXuDKBdQPH*lgQRq0u z?{N`XT7RD?@=;gF3AG7fA_tlIqTO?f%`W#CZAXa{gVhHO7k+_XJt=gy5fMt5v26r(vxI?VYvd;mk9&z{v4wMqc3~(ndvl<2d zoBu8NlPHlRS;HG|hja>UPsWXEUJ$!bYzgyCvGI9cIXiXIWcs-1dY&8PU+1cxMr&H) z+uorsYQap#s~U9!6j)qg?fp&g{_+lZKJE_z+StLW?l^k#bs$62d%_4p$J`F??|p@t12y3N7(VqtaYZ&8DK(+X8Z==7uz6q08&Js_cHfX zJ3HmrR;)Wwb{7taW!4iy&Q3Gq+sI07x~kc!?vnn(N&{$?Ug;`qrBNNX?Y%EI8S;1l z1DE+^akB34W%3eGd*7h+;(Tc^?}2!xJOzRGVk>0?!+-GP}b5cYO*C@LDKdh@bh_q(d^l~>H+*B*=!47^b(xXB=BPzbAIkbLiN1G ztSIDK&psO^;D5M0-Q5)nA>L-6wjaVkU2DOTMVog&IM;-Kx7)hi7KFdZK570elk)_% zBlWAuL`*=_Xx3ww@^QnvdfwQ<;-V5Cact8}> zRAe~k5i-9@6{`VGXR6`mm`M}6yQ^x}v-E{?uYP*Jtf^LUir>4;1lLaK&n&GD8^axj zF;^Op)ieM{&wm;DkaCBXFM^h1+CE})yu`>_K{(FVQ0~uy?4NZm6m+shAgBwQ1Is7T z`yy(_Vxm-H#!M)xH0NzdpzD$@pwsoDX+?){uAg-?3lCoE@a-&09y$vge^yELaW%<> zbBR_r>=*}Rt_P0o9b>~drbgGTO;C8 z2N3hQ4!amn<4rfjJI#z|k6pteJ(?T7t84Hco!xp&$1VR*&s~T=2%Tf9zoR-_A%9h5 zbw!xGDv+_7I>>Z?K015=r@EmtEIAH;(y}JM22ifC^xvE){mkG09LSNT>SyOKbzQnt zJKxV^wn(;6TF(iXsDw%tEITM;f{d15Hh_zCT(;ur@_sHyQEsIB_Eq_-*$p7|3YVFlAGM!_TofO^&giGWOB>g!2GNY=! zn|mDBvYPBi36UI#DUc^eb+-)IGv81ji77Y*<8lQ4*1VQx=;x2!TftyK8S-yT4Oa_y z?mhZcB6PI^GN=!;ekR9fOe*W#E(c3r6J!qvn~sMkyc3_EPT8$?ms_wZLXd3Wg?aZlJ z%Zj-q{D%1Fup0#&7f8}Xlnp$q)s`!0O@?qT)=$?h76UepSlmcL*!ycwwkIbaR}9JU z__`x>1o2`8Je%zoo%f)3ta}*=|NI<7X+7@&EUNk&39IcNj`_YqV_6(t)!u@WoqIr0 za<}R}vD?4>5c^!`-S8|lqn3B6+o9_YVv?3MF)*`}|7$LNpyE+GQ zHnil31$joO+#*@})32~h1n)R8IOSdtp(o3XmCo}eH7L;-Rk$?Ggaw*0cXN`T&j;mk z)aG9TzKcuh#`Msfuuj!?7ib7f1H;Eac;u5H$Wz-wS1+|PBV8LSOa!`U6b!m1Sl zr#Ww=j6RxL)dh7N$g77yg`@Dizy(#nZs8-9=^&7hs3fntI4?G+Qzt;xFGrFU=gYOU z?DbK(h4mBaKZunFH?KzSP6xO~Xv$MoL;*8lRFd1Q!=$4#ydrX%(hH1GJ-$$pCw~jk z`Ra>Go=Ut=Ybx?J;D%G;5NLlajx`ERyXE8!Y`M|__fB?ho9w1&u4_sE14K+?)bNukt48Ssm-+hRRPpxVm%!6Dahd3U2&k3i*=DWSD(>Q@^dI#Y z&5E{_EK9)Ra{~9l?x8X?6!~7EMcX}xsNLS2HZ&VYLdy<{I>uE3HM~C}YbTcRPzGf2 zEGH$6c{BD|_d|l&xzO$*Pj>^8V#pKsgIWEmlLkOGFVTn0{%|?NVBOzh zt^*nV>Q=jI+e%yo30o-rtYNH0__l|r1&e@3e)XLiLxG&f=8MA2BYB{R?YN3k)u|F| z4=&W6Jj3Abc

R1KI8h$r4{_$C@Z4>Qa5%9=H)#z6})(u2yTze|i%v5o|Dt>l&3B zuzO5gK5(qDk8{q|rZGlEQ!v0?E-?Kp-zYuq(qhusEpauu&A&|YB=`C!(2AfPOf9 zs7a2DeW+^y#4Kb?g4`tDg+ClOv@KeNc79yC7mf-G=&-+TL0+Z1jZgN0I%-HFDB zXScv^{7&nIIFGPHUNEikA8k)^(2srha~CD2$!nRMs8!H8tXi66BnqaPG>0>Y>Fri6sm2KxbJz#0s)LL^&{Uf8Wm9R)`jk=RG}LJ zQPS&NTL0z9H#|61VYtT~%SXEn00=>!zxP&6lhb2wY^VRXS}IjUtV zq(V-(T-f*CAdpRj9k9@^2zOE63Qjq{-mC{1|GfK=4mvf^Nq!ZbSB6l7N=sdQ*sY79 zVu{{t#|pbiq9f0MNtlnWdbaqhnBNiG@Tun}KaHQ)lyMlpSkWouJPw+A?Er@%Ngx{# zkJJUtU!&Yhqw6&7(Cd$h8j}`>284W0 zb&Q2ZeF@1_S5>PCu@BAsCr)b*dkIhS+i)PBNvtH^rUFzwtDRg}pu40>n5g@$9%>W3 z2+lIG?H+UV;M@hA`;GE!9QotlkZ3su?{bI->2X|zH7}@jN)C(8ghMQdoB&iI@#B&2 z5)H>U%QuN`RhO#i4ceQwT@0%-z^V5iYV$pA55kXN#h^BS=|PBWZwX4SWKEOws5k&tiLu*IkZ~CZ+tiKuu?b>Kg99FVJ>D$jkKd zVCpkxs$P4%iX~73#5OgI+SNYO8qOIP#P7EWRg!2DBK+#$PW(WZtidpR*o5s-b?kXC zeJ0JW#T=km<^oGo7U$Ob`H!_J5LEvd*fm|1?*+v@=9~TfCG98=hXUWj$AcS~Q+{LJAlcF|h zWaj~`sHc}YB7~d9DWlaMQ;=B}taiGv#l!ST42|3AgBf|k9m$z{p87n?VQ93|nDpTS zR605=|822NVwEJcS8sDvrLr*6*cL6eKl04T$AZhkG?IBk!*INr(jG{hfaqq8f*LVp zpUv+niLtwPjt`;fRo5KyFYnCYF9sMOiEtnLA40PmU`#{fK1uCkZ9)J<;w1^%0}H&7W{72oO9P?-t&yMr#MT6Yx4i4QpPtnW^zN^?vP z^8t9%a_dJ?0g%?|$pW<4v@!t^PpjWyb2PuHjw7U}m;ch7!+x#5Sk@4LQcm}I_XNi$ zqe{Mc-CpWeOqk|!vB>~QnkH24L}O$(`kSzW`gx-#RYgmKlw>8ZiU}pS+xbgkw)o)2 zm4mx&5K#pCyG1aFCA9`q7*p#(o}7U+!_M&(z#-L8QY5ECg=sokWv5V_PZI!; z!f$#2(796%;z$lrEd0-baTquVSw95?LEvidy`t6iJtFSPatkRQL|?aoJu$)sHCn#| z^lpI7q!;K6xI#SmKyd)MJm_K)Msx@v=A-3q2UqX$0Jq07!DYo}d!mfag=A!p?p$9| zO@5Uw7nEx?Agtv2Fx*r~(u`#fAOKBz79p!~C=aN>g+1TdCboyme!%&=D$wv1lz zrERQ2{>y=Q7b8mMB$EKunWEK+H#|}`@WRDg?~UP?(H}m2E%F^PNm7dr0EM-nP`Vas z-RyqWXI>I9Mrc|24S-eBI{<(|IaHD;NNa{l&x&PS7r@Q|JE)3I!aB-YrG0HEQ}+Fn zxcnp6o!Ubgr*VUrDkySDp*;ft-Kp|POF~<^?=AzPc<5w4TVJqa&V!!yB3l7_Y)lIi znYX+L77v45_b!O|-zYPYAeUQWQH-rJpZS&e6woy8WCIDZJpmC)Mc z$olIO&CCaPp%D_fCT;32fcQm!h`GQ=4n6Nkk?QIA+Q)y%86PNwNMzIUpu>fAsRa~K zyGy6QU#@IHu~>AR%TB6LM$~8N7WT3_;OWam_&#Y~0+|GT#oO{x_jwn9l;c!}eWdR# z0m_jUjetmB0$+r|%YW=52*vH6-HM7tXaCU%kgn`->2au@?+_FqLvJ+UUn)`Fa5N}o7rib`IhMNZ-s)OBTk2hybg#>ulQ92Fc%%L42|?k~`;kl6U6!Id1#N5I74UXSDBsUKafn$XY?# zU<-TcA%9N%1Jk<=Z;s2teR0$gArU^m%_+L$ytv`|n0I}*_sI6Q%>kN(h+{)dh-X)3 z^Bkc=zx(Z^4~=Lycpj-SAZy}2svY%)a%$KKtI!=QP$4NUf4iz{4Yp&p=lSt$%iQH~vg z(zOb(MpTbv>)zSd)eFsNgHlpY#G6u5CNWeDE$a-`7Ftz33A{Yn-gJL2zP4WQxqgAW zwqYTFu8F(a(3eI*UIr234gf=ecm84&S;qF>u3eg8iLTeNvnHAGD{T-$ydA|Y(@hS4 zRlXPSchHbCAHSD~c)|se&5|^EY!y~laz=s&$pepQ322hm_ZQp!jl>QE_~?NDFH*4q zu}If>8HjQJvMgVONO)E$Oh{P(nc@9q1l`oZNyh6kyeY zeAUCFUN2~dwFBw&;tD`Knau!(ineP}MS!9-T$#iy3-(q>IX4VS()qUGv5{sKwS~wa zA0A8J=JDQM9nN2W4KuIwXe8~ZYwVo#1*2~WU`s7;FZk>JUd| z^Q3mM*22!6^&kFdL^;%1m^4`Qrd?l$=C?f~%w8MWnc;WfCV#6D!tr9OqSgCcA;S+@ z^grYi>nMLL;6;qWX4_gzaM+ou3hxQDOnrpkiM|H~+t|jmo*8LVwyVs*;y@U`zD8$q zEo_4`BmKHepicT;NED?ae{DwLPrCpXVr&cxLEs0QgQfuVxi(BD?j=RX6w8gT4V((u zs%rh4oQRjZGj-Fz5w8I%uwc(?$m`~iKT`rd}q5ODN zbty7GR$HiK8g<3CVgPR4L*4exafYmFoSC+-hpDCLsp7m>hHN6Sn9$mIctrvO`gX5V zVOe)4pl>WAI&#Idzc&&{ha-B)wm^7It&{(Hy1>T6P`Hap#|UY532uVc%hA~y|3|js zSx3+y?+W*t7|APP@G*c`U@YHj?^8dj@RlV9o^^>vho%H-;`%o47o=CXuSK z)KFHHqjs126dnHa05;5Sz|o%L;>BgEU03U(5-QQxd)C4ONc~}|d%DGBxy!C>ek5KEz!T6|L5i*Eb&#rN#Ll2*5sG_ z2gNt365UyrI298Ze9e?4Rs|J_SsV`J+wpxLD8s}4V@HFxI~*5V8bSD%!ps_FVmbt= z>I2qmeveR)ERR@JEk{c*J*1?CQew@_>O@k>nhOcz6ZL@R>9F(!4<*HpC(Dp*i(Y_v zeYs+KJ^>FZ&fQr>V;Aj1x~hcAcLKe17$kI-4?nJIl1sWGyr`9_Ux!lI+8}?^3yZ^X z^MbIABJ+JX>U$SXrD=&csnh&P88tq&J61FO%wbGB#z$=MFq>>x@>O2jL-f{B0hwqo zQjho({#i5L3DP=V&-xA5o1w{rf2hyBs}Z(#j}+{xN2riAv{#${7QlLsGKCI__t$$| zhTbRj7|-EVS>6L-1fTY5s4K8e^%EibM`igwu$=-D$Pl>NN{$toD9CkZuvHAbYqSxEy}cO~RQT&|vAgXLkho_s7O+Qp6f!o2fnC^2sI)X;hosaJ1aOT(@ z(4=btLt;Yg_AT{u4Ldqh5e50+0DE}v1T1Z-YHAMOD0ePSK#N)g9@YbvyrRRM00k5E z$=|MwKwOZkKhjAmRpt1$|G|q#55&4@tyE^~JIbH25(ijjp(cgMNH3cl43!RVvJ=rTS@2QAhO5PFJ z`yh%aBhU^Hz2_if`4zY20F0>^YYxpP;iaU17zH8QXHZ1ESbKKcqZGS5n`WbgkfIzKhgb=^*A=F)EJhEP7+9{Y9bOQbGnJ2 z8NO62?_r&l<|%&}=Z@$&WNR zwXVE(8kb`>mq+VZ>@F6Q1;p}hc#v&SZv~!>S=pG?;^;C9M~VJ&v5Hf zN)vKe#^vKa3g@7dNn?c**2HAUl^_rVI+UMDs~@F8Hm0UN6PjoJtlO1lqG)~Xaz zTU9hIaLPv<08%Ly55@E6>j-ofQsnV*2_#V}Y5uk@WY#o6Zlo__a3l`H^7Fg<>Cqar zMx~`h9P#iyEA558wn?p<%zuBQLZ~$C$i<~N9UH{+7}YGba~)VRlaDcU`>!qSm#DW= zE(pVSd1bb8F}OCKrV5zilpFQ1jdiQ*thIoGYX$q=i~Vz)8bt{RfaNlTa%1=!1~-e~ zp?ap|gK662``l}!9JWi}_u3m=QCdao&Op(zCudV=)~ULbLs4rg_rVR5=3_}XwpoJM z^A?*+oCEPoMXhU2_0nzKx=+|%x~T$6^0#0I8D(-1l%x$sY8jE&O5<*VvSH?baOaBr-u!Uh5xGWu` z10>fQL}@e74P3P)`fcU4$vSK)f?Q}yA3cHm&~Hz4zkbn6&0YpocNjB}KxvDF&bO>s z9?OvdRYD)~1g!Gc&FPv723yqIG;85bx@69x-=dkfAC_@ICz8Xj=5 z5;Rf;6#*hO@N{!bDKBiUgDMfNs!ZShJDI`sO?k#>~iyE0`{uHR;3v?Si=ktY1 zH5e6^=A9X4_6+!fn!fU93|9VOup6N04ll#Zhg8)j?$$veR3%c8M8PPUq@pRa48S6?vh3H2sG zJ_?D#{4W0w=VEN^ZMrIGwsvUb_4gCQAPaC&+UaMl50vGtM17z2liU)#&SMq?d-BcH z9HDZ*jS*tpGb@k@8hwZ<46s->H4YlAb8|AST83$e({V{%a@Wc-#m>%S1>a~8Nh8p8OJ z6_=~>qs2BrjEFWazG)QZF4^* z<0=kg(wbF#$=u@yMY!s>R46!RIh-Y*EToCzLYPWz^d3`)#JUky@6@zku2@$}rxtMM z{%Q5NyQNQilQk}td~f&Wn}sc5wG+jV-N6RW`8__@Bjk>ci_9XZ@@aASAc@drxvJ4v z?X>xAMG15S$ybKe3TGW?p@`LPAy8~Ay~_Ej`u*N=_Gh4QoCcu@n|2pFMVx#fQkPm+ zo}bkBq~G=8x(<{Be#{P?UM16xlfH$3J6JV`%3`X)w}6nd%FwmE0(Eqg4bGkHDL=nB zBIsVuFX?X&(oISW>W@whs*S6-?*IhXP9{;RkN5E9L+`7^+bgOitf5ulbCCqkAV<<^=3 z?1Yy%ScrDlj^hC-Q$HqR4*sSy_>!081^#V&P{LP&@7rKen##u90cnLqVR)_T8JF^0 zD`XXQoa0sFTm5)vq0RqA*jGSRwY~cag3{ffw3L7%9h+{XJEa@xZp0v@MWjKbyBq25 z?%s4Gjc@J~_kZra=e;)umJb$HMpGNpx}_zaHa$9 zEDt2rQy$x=8vR-o2yk~1N~vTP%qt{3T|WqyPm8w?;mrSp!-b5Ihoy!!%l7_@l*Y+1 z+X!+*^Z~cduCQ_vg?bZ%Z?9xHQA5Bc4s~lI-oO5kW{YL17eon#PY|>gX%y=l#?GNI z6<`g%rd}MkNIwDGAxy_K$O)}PMg+eDjM^FJ$3H7tsGMf^yfzj-Wn)&PJ7zq5y+>}HPUs$?JO zqa!dDH=M}0t9|~4O)c^6hzvAz=+qB}!1|A@mtdj~`+z@C?FfL$TF{B78s34rpkDy! zxIIL@8vvqL^$FIMiz11HvyWfFARcMj)L)V?pKS>8IM-wCQlIjFJajI=!8crY$g1&o zsuMm^j?r(x47tHdS9u(-eVI(G0td=L!nAo&Mu0L|v!PJ-AHkS;PPb8Mx|zB431Ac_ z;lSb|p-(gdiD!_k?%h9eq#fmwY@F)C$mHOwPjeYR*8Z`FRYI3ZRsdeIOCt1N8nH zkV>jlgL1GQyjUA2UHf6U*9o#sX$L_O*g=`89&0z9n*T=%B{YWgB0B9)hV_p@PHdwg911l;T zAVC4sJKur8f~v0?tR>JCFW!#M$*B^CD3!R>nlN8^L~64P1L1W9pcloh2pde~K4(fzGbDvI~#cPHgZ4d>+X;jkl>e_ar>(bF9y=T=%Ber;k12*cNi=t}h0C zg577JP$u#`2P=Vh-$_!Cm(o;Wy4&lkvNdn8A9kqQ#+pKit+`+TV_BV*7dD5Ent}ip4p-k_7qXto1x=v6+{f*^e5%^kcHqSE zx#J~xl?H6mv_K7<>PVAN|J?J?nTGB4)b0$>ftgw(zk;#D2&0qq^4aG$z?r7bnZ&$qm5MO) ziVn9o3ULu|KUywN=l+RE2CV3$*m#m{qJl{it3b)*1B(OWh z0ZlK$rgwI`ZLUd;1*4>r_Prk_*Mt3RH1VC1IIJPQte2v$UR6RO5rC4;%)=}y_nadZ zf$koK$(5tT@w$%E-4i9CrJlTU`}%g-0lcbmZUA&S55(&eGU7G=*iKxyudP&55B8L~ zO6w_>cefx*D|;U3;Eh9_c=_p_=Rp~;3@j^8ssWi-gUZ_Q!kN<@*g`~1n`t@aIe+2$ zwyV464?W^wX&-_DvhWb#15G8~fT!v+0kI^wJEx-J;ofwzJ7LnC7^KwoaM>Be{&LPZnxu!n8 zkR7L@x=xwFDVvam500r^9VIMX{e$U{;*eKGtD>?KRuseD;i|lVqYx4Qx|m<>m?b{7 zDOwji^o$k)?#l)(z4}@C8+@CN$#T;y-;_I;`zeurN+xM};@4P`K9h&U?&+(Eq#}V( zXhy1J9PqeNulLsgE=(k-G|65?DoqxO%H)0$(wbVlKR zFgiOC6lblRR^L5AF(i_??*{zuX$E*a}hj?u_RO zb*dGyr@`use4y2+AJ^{$$_P}-$I<9JFVlwwPE>HjXxsDvH726Ks|L|l>PU%bCS%0# z(cOsr=m6FYGBo@9C!oXi-dDjV+L_3H_ZgH$$b%^H89up=O21nU0W!M++4f}!3-P?g z&u?i2nP|~%3;_i_!kO5H8*GBWSA^W;&<3;_-ZLi#zsgy1T~vvY@ERdqY#-M5Wc z$D!)d6fS}K>zRr2{3A9`36~+Y1P!~9CTG8M7f_nVSJe8v2lu@IajJTKi)7z~QXY?2 zbf`cCJ@+!{=}IHV^p=xYU!1C1I%jN>-cXR|LSDMig+^-mbyyifs+Il7^{jmOJI@3B zUeU(9bGcllm1*OMfkcFw=%H8Py=5Va;b{!nIXLQru>O`OF|N|Cb|`1RVKkLtE@kQm z;qc*;V8RNcxPH%rRqTg(>r-rZHhC*Tf)NBLiqx2DXKn!y>IovVzKZZ4=Qk>p9R)cn z!s3F^YoE0BBSw-dM}SuF-pMPC43$RDT8k+X$mXI)S(4t_O+YFCL5cja6|=(`_~|!j zIzkLyYI=8!D=#6X72SF?htRUXcDy#uCJoI++e!smrSsqJbdqQI)f`PC`ODY$se2`I z#T_A-kE8e6G$2#jYRHcUGKVYmfYyX(?n?ibqbd7M+0vP-s~u$0t4uGcW}0i5=2SKT z7);SyOTA4k24DIZzn<2;5SMlw112!R>#a;D4AW1NE=5gc)Q45P`swcqWc+u%2I+3X za0&Znx{T$2Z8K>^pW9?8uCB@)d=M~b%An&h^WOiaj?;d|@5LJGJR(rGai#Ags^}R* zB3pME;de`Iu0<&-TaX9sDWY5|WgpVmf$pii4bh8vqB7`E+TJmnIy4oR((s*Hm(?Ys`+N}>!!y_3B}Io?ynfoxGX8-CrAu1S zysBY1|E-wpVDT`p9^Q0rn%ta0%d7I&i6>m+ZsjcbWDMcFexVePaLamAyM@2~h~5)4 zmin-16mpAp%}>E`y+B4-m_M}XE&ZV~PFpbIJ5*a%BlbKy{8t;%5Rr+B&OW|(qM8Nrn6eOR|nGm4+q^w>9CVMi;|R*k{z z=0spP#&%Wag>A7PmQV45qJw4J(X9Mfhm2l0g1T1L-Q{8^e^kUs;VJ?RSC>XF5xz-xA|j^D6V;Ne&`LaQ6B#w zFa0atjz$sDUrlwF2;yK}R`d*o0|&gkR-v*NBNxMHLmEvXn&jjVRkADnj2@n?TW^J( z^;=a36BaA9(aIZac#e~D8CT}1QzP-AaN8I=ykmiJQPYpiQ&-#2ZW1kT&0v!`rA&$7 zUe6`I28jzQJI&D4&}p5a4@GKmN=?;PC-Xb*+r2t`e%8)MnU2xMkw6YfZ=r1{&}zpb!4Jr3AdkKWc{V7CD#p9y*dD z@2RfIsH&N1e`3l77doemk!2^&+%G97P)9r*8&Dlrc@N|+>Q0dnVr+NDq|(-=OML3aT)#I6qhT3G`xQwplZkxi)-q8+j{<9lZS~J~MzfHBDHnc@=%CSlFRI8n0)O1h&xak!` zHBmz7)DESKcf1j2F4ym(d#<#KmCmUuoletL9Z4`N3_P?=^D(Dl$YjvshWh0XHHa&4JC(QPDJXK4|XtqY7_a*TqIPOA0@QuAo{MTO(tC;&~ZrP z#(E3-x^ZPAV~8zZv-B)`)p%)98nemV03o+gu z5|3w);C1NiXoiQ1C4AbmiX`A`E!u^3SBGrFTNQK9PWylDwzbm^Wn-e7m+yK56jLFn z{BC}tR@f@|l6Z(KI&I#(0wSoAtFmS*)8b2@T&~kUXV~_hcBsbZ(eC{sYglC<1a}jw!x2k3aQ-ihcpnjyRWs zkG_4s^!p`3wtu-Cf_})v*7lq>SIq;oJu&a9Lx_u~PaI$&nMsF@ghP22+NJMPL1<#6 z_b{f%(9DNoeiw*|INOlX76g>6Jq<7;e>;=B*(I`I8HKbm$PHd5Y}oi@|$+%#N8^hEY6*Po(0Q2L2_qix_SHF)7~d{lfI zp&Vj#v0E-~P&brCu%QF^6~ZLnd+%W1L9;rAkf0)dI2h>h)r%H9`lN!rbnAIi11#5* zTs4!P7%mv<-qccG3l5=Ld+U;@GY7lg`=Fh)*9TFsySmlU_`N<7q$lQi(Wj<~n@nj# zI5%<{cEoqSs*6uIkV+p83X3tH@tVj$g>T$ms8UsOF;` z8qnCzGF2x4>~*4?e%y1-I0px|Hj|Yl+{a}0{$m>H(M4aY&VlDwKYw(Vv0CkuQnwrM zHPtxH3m>OAGsp^o&hdP18LMrvroCqSz1jro=?6KoC0@A??> z#x;~O$JI3S@JSv(E|-Ij$QV~l>$Zq1qYuAT_D7IN<8aQ^1?#IZ9JIX%{$7<=pp+?G zic;)2#09Yv<$o&^Z6^*Tr8}y+Qb#VjfS}3CXT=nbMHXN4kH(XrozQuQ-d4k>aCO?p^Te_nxcw6f;R@m_yx7ia$p7*(rPYP8V_3$Zb_xo@i zX<-LcLJkXcE`3^DzL`s@GVh8$<6ZLw1^$0igG4-D8kT4N({Bm_~cdSIT;^VR;M89SjdvQ9z;;{%LtQnKf z$?{IdyWEP@7_bft=5Mgyl4=BYo^m|lBKRKPakwTC2n#6Ik9C`c>LZ=5J^j5M#p=No zX10@{Y#ieIYqW#$&Ds?t#ruSF!D)dYc23a&AdP(FEYEJq(15hv7IZ#U`P#+cd2I-K z@4mQau6U!?;Z^#Gr*KU)V>`=Ad@83H=8R(};RhRR`iV?9qGuCFMz*G@##Pi)#j~}Ug95|NHO_C37%Z_5*6~Y7f?p;oVN8t1#*e!&d*EmVPI)SY9dMLMq5cREBH!pc6<&3 zi|-_`cWigGKZ)7jtn)B0qN7#eL^-p8g7GeLcFM#y%Kq8SdlO}%NM)J%a=o~cJPY~w z8fDJLg7FI=d2s|$wQ}kj9|;;YFgeeAHCXM)nfSGeK6&Gx^Dtd$N9m<%g2(y{5frtD3OR9nxrc?a5mdsm7gK zq2cM1e>RDP!&FDOKUZB{EpFg*vWkV#OOmTvn{I9wjIWL)SPvXYIr!JlAYCF;WLy>a z0s+m0R?Z(u#PK9V#SPh?7mP0Dzl)a{w(G12ox< zH~71<$6jgIJU}N>-6BYytl`S=1-B`CfRNcxb=Qpr>4aCP0)*QO?CsEmVAH+}o@9tV z$D+nb7-#2@Do0VAv8skpYS(oJdzin(U~W*5?-Wo5_c6>T$H9E9VeeJi@*w6B0>3nM zVlO5{1anJ;s724Sma^kG3DyOWUj0X$4nq+MXn@ozt(U#y0u%^nxzKDzL}q;-&*UH8 zqw5nKg3>EQW zK>OlIy`@jT=~}1i*tG34e$jY`W+mvkc)CEn5%Lu%FSu2W1x~NYDj#tN4=5UIrsMd% z*LoT%va9aYq%{dWmGdB1Md656J@s@hkVzToyiUmbRq4c!pbeJj6#kC<6LxkhcDwoU z3W;il?*?RSrNigBL4APYCiDG}m+s#gD5Bi|PrFM%0aEOwT62PRdnWn#*mEGq(h(im z)ma^83t4$eh|Z(o9^kwU_IfrZgQgE7nUZvU`7g1dl-+I+tM1F@-#5+nj3L{JfO_rZ z*&zyLuF^zm%&_F>)=YA3tXA&1E3qZraRFP{YgZSbf`=uDN2~65e2RHkTrn!s!?+zO z-xJ7>TN-qrP-k%_Ue`S;!>b##*{9LS%EXYJ?5Z98UFB24SXT7u>%+{ZLwxX87AC$L zUeT=HD@8@|?>Gkx&B7eAKrNe0yRBNLMJrdC(cVhZ^j01CNE(=}qBUl|lNzt$ z=E906uJ#HEz8q{Jar|Ki(E!HGIKGz6eel(W0zN8jU(})*ljQ0&HR%T;yso-FrK_#H z?MdUH5=S?L`KHU5ydH5_{q%*zb_wCH=A}(?%2ep4jtJ)|!g699`_IH^p^1xC@-=Ok!`&Ezwy$8OiK}a1Wz9cJPb1kMb&%gQG-VYHif3DHV;-^#Sz(^VZQKykqDu&BCY7%6c?u^{buqkc(vGb5cU$#57~Q3JFj9vW(`3t*!? z9Nc;71WR_F%G2u>v#XQ5CZ5dqC0JJ<{74ZgtwXzo8e{lbSFLU$N(jVlFmnc zyZk2!)ENS@(iOj&-&FA<)|tz=C$l<77tRqCpWpEVrIju>v%p)Kb!{u9MFJkCPfnuo zGN~h-w+U8T)+Rs&qWJAWIARu0DHv1nA0cxEB%llk?n||#8DhQJpD0ZJvZb_J-Kdf) z<`i5kHmb|VaRFdBYJMKhYf4qstL*8eD-pPkn+nUh>cy@x&thyinCeg&Isfud-7>59 z&G|v))0VtpRxE9sY1vS-eb6SWizb#P2ehY2O^=-$8h@-o>GWAsl+3!woIX|C z(*>WXFrsFXxB<~z*n=uV!JZ+z#H!+lfQ=+&^xCg+eYq1?m=W?O*h41%vhKV;2ikn{ zejbRZd$#bN7z2pYa0~>7Kf6WCq0;V}VDo}Z&}V(UvC0`{V`6InYKkPFQO}9yW%-5H zF-6K+ZE5XZc2VV<1+|`=yI-Ah*W!OtoVk6eHR9>`6zHfmUvt(;erYoVuIz)t>czZQ z$Ijkim($=R^;h(H3NeReVw znjp*1no?!Esxc>V%6P?J?z8PAk>&UMp68?k$R~`RUsJnk94b8FAs6dGFw- zsa1H-&CAxb+!Q#MdqvS@FutQLD9;Z^EUsbr#=iQ_sSauwcL&Z5`pqEB7{&1NGRI|W4N#$azj@KGlTC$AiwdCkN$yP+l z4@Y2HD9`+SIH@7SrVRU+o*3f~(!Nhkc4HOiqlCcHzf||EY5dhD8Dk?;goE>yx~ak3 zh{HrVJPgT~>!$+0cdm*$;k_V0XqWb)RSX)*3g_l6A160;;myQj2GVOvA%?B*BB3HZ zPWUWR?)-bb^LOq zk;=0XMsw-6myF!-TJ5GQ9*fF^o`EJV1TRiCmXerMN?QCo-e@9C$TJelw4aKW!)YR> z>OW|DWW{h_n|zFp>{f*~`|j>*{jR*2fzCS(3P9(*4(P%SI;gR#=^mVpE)99SNpMG{5rVg* zp!h9+dKdp_nk*1O${+SKDn~Iyj6B-U+P9L{k1Kd=|7rcA6qAc&RfqhiOb6oYFHg!v zQYaq$KDB2Z%MeH9@VP#VoyWcZ2viS^FA)qMS1*a9%hR_EBbuIrsRX9ptJx-0d+ck- zCQzUEX=(Q72pYCPB6(kHngx-(q{okpgZ90%GdeECgE^ZIm0N3>UWYY7*?$2YCYM~XP4v?irwA>?zUzoLLeP!5+ux9X7w9uegUk}V~ zFyngZ>SBDs^SMIh1QU**oLjogu0y$%KDun3^C>F>*m1YxA)@K;@Nvc&4|NI;Cif-*?jAaBhWDL*{Mge3rMUE0@h!lFXEBe?tXnfo6rn6^ z1S04<-voa}E*j5MlLg}-Bw?Xh17_b4;E~&JAfk65tY@J8jc}wbm#f6`1LD}8L)8<) zP(Hkvp;!TlXIQ&EaDJHH@^@nHui~|`VUGA%GyU6s%?+=jI zjo?)w>#H3-qAEeMln%$xM>L<$39gblWkSwjH;)8%GiO6ieE(W(%fG>a9{qm)mFn-y z*)0tF28vs6c6NCjAfne=@Z2rz+&6Bh9)z;%8x<&kv(tc`t%iE^h43F|D+CW}6B;D* zRZV4xyziq%?V0=Q-hsfy$B64ML;rd@|2m{U zR@s01e+qIikB)-;IosQ)|IbGQk?>G@<-`{Ulldk989o83tlVW(*R!pW9T0e=0_1>U zD8V9mAR;f%aicevX!fkuaYKd!r0ltDrGLl+M6Bo?*hzMPbRoj4ArKKY4=7KW4_uEq zr_0SFOmVH}z(lZo99o%nZ2`$$nB{+yxP=Cby#%-il%PS-b)dUZhNZ_?E!0&O@;PnF zor4^(9L-77tCI~Yuv7i81(O=o64*@Tu7R3G9Tbx)z?T=n3p#f-5V~jk8%(%T&(|of znzGBVUuoR|wpn!$>Xyg5`jL7*op)nEJ3T#{$dZqaN)s*le$c@_hBeJkXL5x{#ds0L_G`D)0)}E?6wRyt13?m4`pv z)vmNkNR>LQg8AtiWP#%8I|;kRa)rDvTXnI=$>CRlXt3J;*Uvg3ytZVj=SWCOgqgm zLb@IgSsI3kwk%1VUxK)Ru_d6OGzu-X)2=1?#_N(dAnQieTqNnrZHyk25?pYiU11TG zY-ntkSim6w_`3lgPV33%eWe>W8F4o$bt6s2TF22RU?$1?3WupNRu)dXd5cZAR%E(& zFXS0%!9`#^6wveO^USv9|11js32WKu8xltqC0Nv`utklU-|hAHqJ9H!$s?T>mxjW3 zMX4Q?3G|vd6=nJWX&74HXlLD%>A+BHwpnb@x&yYnXQX_-cl8>m_%f($zbj(Z$AdSn zUX_$5NAto1>042@lkHa7P>6bWp6B^aE^y8$xd5@SiUJD|qdj&3{?){>=degW6DC^< z74De_BL*soLt@VGGkOtQjplkGW7NWjSRPa9AJR^&Ch|-dJRk*>*^kyIj}P0TX=T?( zy%pp^v=Il0^%&~O48dp0TWs{o2QD>b;CL{$YVn7wdR>OAduoDf>Id7^{?|`!fRHx( zB3NBz7qHj{7ZB_8&AP@ds!X+xq%4RJnf_3{KyzjNmX!yj>+C*z=v1gxZl;;+Y`(Ps zwOVco*nawDjR)b)_%+bqCMW%-^}E_2Fw69L?J0DTsHmZ!CUt@VOln9IX-h%y!gqqIz~+?w(%zA+UgCEe_W`O-zhi(qq80 zG1TCAUTwsOD;)r5g!1+GI7XeSg2K6M1#)AW7O#_?{9<)r77t^VH4C&(k^8pyuNx9Y zHI|g@ve9KG0k+^#4Ft?bQw8&Y1~9!VBysmj7OQM^Di~AP=;KFAnMivXZ`)se>1%tn zji*n6(GK>Ehmx?khKX++);PQ~z@7TJ1rkL(X$cgC$s@^jN&&>5zkX`4=FU0S%_zmQp?e^L7zcu*wAm`#d=SowJI%S+5B64K-|4te zp+pX=@fX4wdR%0Rs^~x_N@TIT`LGDonhZvpP{syR8~VkPXGotLT=%tKUC6{S5)T58 zSk<=m@B2Hm?6)9#t)JJhQRd6@Twdp`NGSRvB-i;LuStVsyXqBBp+khuo47@a6gdxr zpCO?5y@(=X?pP(-G+8kJePo{1j9lo;f!kna4i|+mgP>;hr zFr8>~36-D8eF}2a@=&JBP_cU6G4#q!v`a*KB6jA_cl`gjVL}k9v~%bPqA)#2MC32T zCyg1!s!R@Yd==-v#ZYx&j_AZ|P#~dM)7=5Og|5O0D$kbz;lTn%u6nA;sa{%@_d^yZ z;4;rbDjYcr7z0gEFcU(5JFRy|rMP+$`XLE(-JP#%Z%zU^(VRR}q^%D^eYhle8@!pd z5`Dk_&{$egzW_BbviDLr71VsEXt_SViPvBA5!lYF+uV_scZa&pL2ku1GUK;`w7hK; z-J}Vphnld+oW=_P+{~Yh_3GX9hdmXT-IQ&apwL%l&>Pb6)y6a=-By{T{vy;U?4t|R z9Gg5XUQ|+xAWHWpsax}2VLx9F*uTYlN7L9h&G-?h8!=Fso=ZtiD4 z%y*fbFT8p)^!zI;LTNvGDjMW!Iw5Ef{$dlnaz3S#`-;V$6*ds#)jv(T+ZYtzZHxvB2n(Ah*bT<-vW zI9irP305d@r^Ah)*t9*i+#3uYIs_m&{hn0Zo06~PN0I{A{ifg}n@>xtra2;jvMTJu zgC7~h2W zcT@2kH}p&=+!I?0IG!}Q?$2g{!omE9|KTjC4KnTX9xtuHY6^K<;2q%%7js>rOc`Xm zgbxT6zdaPV^$J>E!D=ve3Z*IAygoz?#$|S&60!GukllLJ6s$wrGsJw+?eV`03GgQ- zoB^?qSl-{DwUha;Y9dSlXZS~5vnw9A1KqVRqKr*I%hu_FQIu}+fr*q}6>Ay?KDctx zFfW9V)vjn|@-d4pEFjk@IoW_n5)IcgyU~I5-947jX)7wLDu|b>R;m*Xc&I^SUm0}P zhAC+CexlwcoC-^q;;RNI0BzDtVu+7W4_+PNzJ5_n5g`1)E?f+Fsm-mEKsq34*ojha zT1)30EC|bN01FN8Ao3QT>p4BHFok|iyMKk%L@xqS99xO-0}G`2%_J}iPB|6|!Q|U} z;iXWNLEbBXUE_-r^_9$1qr@cPFjRMa{PfwH`L+4?^X{FdH({c3xE>!&)C5ybK<_w7 z61E&D6Ii2>tK2~!4Dwf=a2R)@1rrfa^|*hKGDx^bo|2FrE_P<{CNFg?)?`Jf^u5>vI z=pJYYTbNDt;wzY`2ayx`8i^{8q}mRf3~Jqg#4sP!)S28m@EZ{Cfi`;wV0QDk4phee z86ZwmvIU;(=USbb6p!G0+I!&ldnH(6u94+`Uk&;3`_wg^RH9NU5VNFdiq9h z>^u=#@l-1uvyEzzxJZOIpR@D}Ie^hN?_R!Ls&LPqJEPj7y5D^bW$>MYZg zgpMyr@8Bhv{0v0A)7rcS6r|EU8!`laLxrXZC?Tuv0t&4WT8b_}{XgSK(>{PR8pov3 z`9U)6T~JFT)oN<|y7~FGMj73#LdJf^0A{^chYMaHZ|KJ;iYUF_ZO=uVji^t%l)KTm zsh33*iZ?)EjprH)UT9Olo&>7!ofNr1zijc*Xj$(J0+=3Yoe9UJUAV+K3ixHR)=m7+ z$al@DtXUqZ-OfG8^fy>mju82miV$3@9;)S+IJcmK>hw|gKDhFx|{ zJlSR>S~$+)uTOn}_lXQRU8C7wGTCESJgriGCsvoj6)&l85P_64_C){`rV}95L?}pT zmEFkY7*UjuTmAKD7vOVung=eJ+gXGa2= zGsbo^zX26uoIz9=Bu!|rh@#s9kf1hPpm(jUeIJETf3hN}3(q7=t6@p&aj&2>e{-th zz+8YO_bR&Pept_xYlp6mZ$|J-A0pi6Oyru-SXKl5=*=-Tcq(o-BT+FNt|pP;S2($P z1y>*ADMxD@jHPE|2tTS|M|?l^=u_Cm9wMQsKLGrA;SEuP!d#WDbzm^{7nD^s3Zc^W z7g41Pl~Me^&4>BgZR3*-#Iu3h=BCKBNn_Z$+W9?H9-K3nzZn`HR5W3hljJ zlG86w5z*yGYrJ^EDOx+Uv#B?mqIk~%4Rx!Dc{rRkgZ9j`vN z?B0(lJ6g3QC-R>jH;G19{%|*^_{xUxp0hm!8HX#c%Q{$K@q8=Zg;cyErPv*D{R`jRo@rpDg`b$@#J>Y7UW11 zlrUzP$b4bO3ozMvt-+{slr)_WJ0m#0GLmH9c=WOE8WKKxjAQgpJPfZn;K5-osE30G z82Jt(O$sbQN4S^t1}SE_ms5o<@}lJ-=5&DxX$%NV&4E=DH-}@{5wGi!9o*ijkVLtz z)Sr(<$(sypEV1)r0;_9``8V#;m)@853Qt+VRdIa(AguJ3@*(7*_oI`sSCOyY>U@^@ zdo@L3z+{`#ugeeBU%-F7$pj-f84D_zrkTCLWY}-d_e`3A z2EM-sf&L&p(xB2R&S5F=Jm5{d;PoesBQn?wkQ8zvEs%=ai~bo+{m;PhE-c@h;a@c7}BP|p{!$y?yvD;x8dWvsmb35U5L zt0nIfF5Rr-vwvN%QWV4p6@$EW79Cbnn0VjVOl8hOuw?*aV>g?L*{Cx)Ia=Rjdk+92 znSCjJb1Ja?;!gHFQ!!uBnY z-L>q1{;t}`*n9rr*Sb>>fuGNB3r^W~)*`r?j+}6I_|46j-HX=V%D|!6i`^;K0=atD z~VI{YxtmCodJ-VLeu%o1lzoazvZn2*>x&u#0&d@VBd@9af5^4SKDax`1P zOrNe>AF=w$M}awqaF(cpr6I0Q%&&I8VwG~9j>~p@6FhFmb=9w7y|~-E*U1i#OQ|)v z4lXeKvGf?4T8(_fGcdQ?S5FOx^HI+Ku({ht^Y2%Af;>f03<9@I!bdR_*WJ1x`?1y4 z&H<;cIPYo$go@xHtC>plDHbpegM-frxN3WaG=%I@qrWsc?Ei2Ge^NI6GdGT-hP~c0 zo>|9iR2$Cj)};?aanCnCx%Dfq5tS~`-2EupBapaH;&F;aSbnbGP{Yv0>Sn`b%Ooa^ zM0j?QjGR9%yp=nWmjmVJ_y{GkLL9T9xVCTC~jEa24^g!E(Zg^i$f!(hN zWJXr)$uSpI9Z`RFIRAu!qOd*NdNPdynMi-(+UK<6(bu<&eRxe<51F@G;rXCL zi6HbLy&JzKIdFC6x1DhEUV~_K=@0j=))LAhA1tSbEY&z_CG{7{$?Wr3V4l4UB}N+v z2aQWEQXb{xv;GWS2c9zxkP-CVgXQRRj2pFX=O@0LSULWIH(Via#3Vc6Jw%UZ(E`Shw>{6ko!&XTF4uoZG-^K!2mcT?EGXeQsMwTe zO`~7ZP)`OeO@~b*bEiM}*%;5F#~br@>XjQKIX}01lq~GY%R+6l1c&iG>A{j8gJeJ4 zU-y)v3kk2cH0rdcWqKbu7}Mn9U;*W)o$QzAmPMuIs`JAw;bQzhIbT1%jZ;E+k4atx zGxizN2n}zk)*!E(eo=}LlZ)B-W)?2p75y>}D~*2)9iaxB{%&I_JVu^Z8pP}Qpx8~6 z)IYV$X%~8Mq2SRY6nQRF{^(y&{YW83q$3((#+>VGvKMdsJpnNy#}WpoXhf<16AWIn zS%l5Da_w!ILT5dF0Ovsf=FBr>JygqH|7?QhJP2i`{W!MBFvZU1*lwGnnj4+_fJTE1bGEOAo&3!RZd1;G}h{>1fysqU-D946gZYY~f200sKq%$(;oTIB=+ zm-OuCH_>HTe*9J_Grp=*l|qrF$vt3Z>UNfzn@RZHOLpdKoz_E$)ysTtTyfX00bX_7 zPxihUlmdwqgC0LAR%>~Dgg1gxk&2zD0ZvrwpvFyyLlNK%JCrA}Jbz!cbu`$abU&#V z1*A?sj52Vor;;imJ>m{mSy8+KXHnfy-K{&;Q2j$|VI7J2K*N$^Ru_XfAL>z2_Q^7 zp~3UY{J>lObV&PD9(=R`tn$;7W&FRXKw9|68(E1fjsM>G{{vTSmj?+a(^{p^{%tk< z<8$i_U@Y)@?#BAS|K}@(_5dIFF&W?bUumQN{AHmOsz|0V1lYp^18KeiHDA^8J#Z24 z0A@`CME9$Ky;ra5TE=A!#NgxuCx7lhB3EKMxKZYtcL2BVioRO^;q>O zpKC$F-0jurnk9kL0=VU~CGH@V&DgFj)j63oi_Vl?t@6+G?{poWP5}A_li|qHq(k6 z){}ArNjzhCORjUaJ3vRMT4^<*47ST7u21fIxyrPafUQ3VhT}X?rHU2ACkK*nSkcp; zfDqJt*odU$qVbcBz5(wD?o}kUYCFBLDF6&+T1^!dsu$_zsuyZ!3lra7Q6q!U-c#Z?2b$Z~!lR#8s7IbjqVjdIx&T>BXYa*#W_1HfvosW&lW5=?wA z|1WjlpB)QD1TKAS*CFfF!c%#(LIw5>ls z%$zdQz8^L+FUXSYTam3m{H7J~Q}2M7W`!Bey+6Q#zn?Qp1 zd6p#y%ec~JMmg@emU0}UT5o?kfc2~Z2$Zt((bV6Q3WNj3@t%*Xz{qR{t<6`H_uofA z+(4o4-MPjetTph*NR;Pa+>{}UMLu++J}gzXkL z>#sDG7L_6yNl6q;^{Qs^O|NWtg^n^#!B~z9Gz#P>3pTz74W2Y{0Nw3$o30+nH-}SvE?Hc*p5DU6$4aBE1lGegi)$ zdOK+<%X9O*g)71RX1FpYM*|*$=tLEL9#-TS86gK#|024*?guW?(8HRA4_t zulvsUwNVtzdLNegkZ^8?&0wF39`6(3q&%s*9H}iusZ-qX@eIK6=jd=?d~0rY_~R6B z{XaLTbszYXL(#=%l|{p6K*aE^C%>yU1_0F`z(X~Y-c|M2xkuI`w>w7*{eBtA9B}g$ zR3=MjU}C5SeW8tp_LZ$$+2MTctAgKP+sX$d8B?q!ZAI&#(_X7VopUZvfd3;fpDD=` zbm(of*RO_u0rNNK3>dl1!8boL1=KF%;MHV#Qi|(4n8foeTyJky$grLmq{Ah=1(D^i zK}J(Lw!Cr}x!_`jn=$s+Fr?B$$w=&omb(SD%cvZYofimF;805wf^*Vq^mNH`Ya^ZFy63}Ly7T0!b9k&;Y9y|L z*mMI1Rv3ppzOL{OOiTgM=pc&1y>(`R4vq=xLogYp}I?dg11FwWD~h7m5M}!miYjo$anddBtowX5%vqH zJEC1C7FU}4@#--rdO<{G9k|gpGcd8hJR-AJSv!%7qJL@0qP-+SKp&m%O%`AqpP|10 z0KzDH3WA$4ivM4mfImXCD8&XH@-u}L8*>!#G9n}zT;Huqz9+TpsfxZ4Bp`Oq>wG7x zU5FwMYn=dcPWeIv^gNm&tq^R<2lWe-ie{k!LX1zrNL90HNYRq}8hZJfL2n=gcmFL6 zj^QJcFv9MC3=e^s*R5e0MZp^#(MpBd94-Km|KJdwWviGB##X*FO$CmWXA1Jd@6di3BNje8T#1%>PsAL*W4s)j*IaCTnQ!M}u80Y{%nzEBOki#TM1)2kfTd^3BkSqS&HSXG8B{ptvv60UzPV5G@_3v{@<=UYp zw}T4Aya+a;l5Q$dOiP{w*+>9?CD~=2iAX>UP+=w*w>1BHA^-ftfCjn$L)ce9Rke0q z69)-tP*9|iR3wz{MpBRvK~O|M1?i9mLAsR`5RnuFBn}}V5|T=%AdR%r`LBK7Tkrc_ z?>~m)j>EZn*k|wOSjoYwt370Hn*9zN-VDR!R+LUl2ph` z-qm}*;y4=9CeEhnr81;qRN|)mD*f}F-*@D>T08KhEV_*^kE;#5xzU5da2jK*m=Ssr zIp8$1I#|^3^$yZtOT_>8wKz?ozZ+1hGp}8mr&e7JMT zPQ#Y0=HEW}e+SEz^=F)>CHQUaYlMRRs4&!-n)qaiU#GoN1#FRa%+hc%eUQmLlmeQt zqV%_mzGM3@L>!}4y5=V8{W`8VwUV5@taJz|W0^aU7QTaTDDMD_Qi#gcFG|1olMPxu zxh5#@x`~Oi1Sal?@pwlS7*42)ANc0cN5Lw&s&#&tepD#v_-LjrZsaKaJYsq@I0@a? z9H<(GZgnN_D{d~24BTpt$-Y@$fMf$YZ*RSyw0s_0`C${zYHjIt`X@wpD7>%yQ6ch2qC?440{(i?bP~#@@zH95$JmiM(H+rP0wx>-wiUT zuzMX{*J696^PZVazyZRKy5&E97(*QebdU$5l4kZo0&M@X2LaELVc=%Qq#O&vi#-HX zzgTqPHno1CiO<6Q!NS`Jp^0_*M7=n0cY50s_;r96qIM>>RY)4cOgIDZK!PH|Q5V$8 z!RK2U5IvfxzvSw0#rR8nrrLY5ZUR1%_byOhHmrb|NK5BK$>Hx`83@`M03^AGZrgF9 z4s%41oX`09+)Cvl_a@-DLzU?h&DHgV5PmY--#gzF4tWxqAb;h&z1?EfLfTeTEAKe0 z_7T>C#q+3(DWc8=91p&v`{y^He!U!_7L&SH7G7!J+(Q@pPhjO`AkdIH)q+Cxm$^eZ1H#MEHf~+gsu@Cr)jt-C&GdfnOZPi)l-K z(7NNY=jTRCO>JTm53D)zSN>k@X^TKs<3i8hsP%kb;q~z`yCK>}voEw|AIgBRmnhYl zGcMqYq65Ayp}dxWN#`m>F`co!l+5zmg-hAtwbT|Z>{YP{zq@y7Hw;SogR;qLV+a6@ zP}Tm%WBskBoEFEjyh1)L?!G=wHi}DhPDt~1)&Xp=sZ|D&a&In9G>wer{bb6Qzh`5Y z5L)Wn&CcGcXLFae=ek@W7mJi~!v7qfYUKN8^s9(~IY*YaD3V#FRAK!JWSg};&w-vp zmg|WMdo*w)l@NP00?d?JIG`M1CC+sQ+3Ef#U~(`swCZuvYX!v9viW$6Whu`G8zH}3 zN`ZW$w&zU6!{p1qKN>lpXiHxg%i%ZxTT0anJ}TT5a^R-qmUD)s;jz5t96a)bcoaZa zt%XDOmH+wlPYl0(dbD(m2Yl$XJeIr0Y@^PM_+N}HsZNTWy6^`hC6$vP$`+|U)LufTfXoYbJAKR{ylS2V!*}&jx=V- zM~?p=O2COnc~w4ZeM=a~fTa!#T8=OQEC;N(E_|IWI~w;o&W9(R36{e2j)0@*A|{m2 zXUgPYclS*;hV%hqd)=Sll-B&80J@6-Sd$^e=aN>?mC zGrS$6TYdVAq=%scMKHfEW6&-3#u*I>Y7S6vZaFRuUJC=4w42n;eb5Qj`I0WL76PrA zT!1K=z6{@V1PJjyQa4ZpqwjL?efb8khz=yvI`8gvAmOirI_F#$A!+j^>W9PSkKTGh zN*S0R4#u4b9U3`a0v+#M6oTo1y}*O+y;we)4!9%TgLfIdH*4H0c)bw|H%q+~^SKj= zf{zM-s&$C2Le94D&}$oACbwLJA~gp*s#x1xC#w*e0UO_wETY(1#7R&D%&bFsKWN8K zo}{jj0OFJ5XKCEuzzv5IIPq@KLd$+uLJt5B$bq7}*9V31Gh(ECuy)>kJh&a*d0Y52 zvIy@IV%D(n-^&rY_E&b%!jAQ6h#=)!`MHt1FE^^-j8dBcF-z~#Gv-<2Yxg7tX(aMUN}>g4I_bHp|=Nzd>EWT==NP{=kRb)5RP z$w3&6U}6kX6Z2|UAk?C6ng@|NzN4*8HTd^*pfl-L ztAYxl#dm~w8}-0wh*Db$ty<5+%MmG?HXuWKLylb!vq1V_rt7rj26SMv!IivaY4B@> zeb!^>J@y5XF^f66L_NmR&tmZ5#a*<6qBR?#m1kcy_<;ayhJ?2ZVNzRy`H89}qXak{ zJZg|}=B7{V+7iN5(=<{gnv^hPr(lp#e9N;NzeWYF;klGLUE^eZhgXD69t9gM z2aqO~?#pjFVB$R4^SBqG`gKI(fSPPvKK^?Uyl0Mor)fp z@^=5oSl2lN6s~h|_Y~2}ay$N;zFe>GDpfB=?E61B{ZU(KBO%81)ukoxV*poJxMnrb zWA*saqpUVvI1;c3^$fK`{AZ9^-1{H-R|QGa3ZbdlL`&9fV^wO}Ow7W3^}={jVAu;^ zxfJC$-(cZn)Lp2;Vm_C0-kohK3eLrmRq|1ydQud^tDRg3aQtPEtCMA51=5QFA)T1M z2lNwCn$`^&NV(kuOt-}-J8VRKC(?lxdArxTzrg6hom1CyuPZ-ezb5mHL%Ru$iO`i_ zm7V1LsE=0}GS&}F7e4#>-kg~Ar>p&n7qELNDxinio0FB2TXXP3Q` zcPhs)c4?D+!t@MD>w@TNbx-@5pHJJOpn;zUIUI29Cumq;Plx;7OoMHm=yu{K>_-j8 z7Op1$5pun|Vdu;IZn9c#IF4AApK%sc+Q%W-1h1fk(x!7EK((92Z@{C>UsqyUB#Bej z*L%Yoo8#iN){d~!Pwc-CcPqQ0jXvuOI>83R{V+kik`QxD4@P2aU)8Ch!!EC*R|i)g zP-Bt0pXnkP@RP9gLv{YB2E`#tDt(HH`v3* z4K9S?fmU}_X{Y;oR)8y7WL4r*uYJ1BUt)&zK1>~6mYrow)z`@1*l>7_Et|AwFtqe3 z!ujxvOJndUMvqp;$sGe>nr?+BkphFL{x6>E%jb}(Idvj-m#F6;gqLoP&Ao+WH>Iqo z&=8Vzt5;(}L!ML0E!*ekT|bKs$Qp1wYL48ukz5z^j^G*=I*lb*o{}+k0LSIvJveUO zZLUH>+_l}S+sZ_?>a5DO(Gh=SE)r!~oGMH(_Y7Lc?-Y8Y=#JVBuMT;N|p z^2aI6Luc0N&vI1P#8~gMe6H%t=R4V|!ae{;{;6&@%7+rO-_GKfh|=CXfs^!gfwtRP zL`Ef!dy`!R*!QT1tvRuDtJMqsvm#BJGV@Am0Qqbfp(0MJ$oi% z4QzfBcGJC-0EG*4(!R6rHk)7`X?8wu-N9RH1koHZvg4L6zW5A#PZmQIFWL~u9EAOMG{;Kz~&?qV0jURx6)3Uz=4j$;vw$D=?e=C;GF;2!A!}4?~%edsh$MD3Q zUIB0PRrSsFAaixO8j5b>CQ<5JhO+0sxBet9qeR3t(+OQCw?F(QuJO4}I^o85>iQ5U z;eM+ikpFrgiSm~!V6ijJMBG>|Yv#O;BOZHCYvn9{+J=lota&>6nSf@y5tzbco+B`1 z7hx=j)(u4oSz^cw?)l27Rgp$nx3f_?71NykN#T>OG5dNfTd8b_?1hpS0ze!}*ME;w zntDk$>t7-Da+!*q$Sg%uM5azroo?c*p}$yb(a5dgoiG%;bC`&hhQyakPW-P(YAvYv z%Z#Z{A58MOfWh#?B6c|=W@)Cyh_O9B4QiYNrW2>OQ_Ql;+C#w&fN0VA5l=XJM|M&a19TZi z+`X8-Y^Dm^XD%bM3}9asepbMo(x5+@ef0^*2WG)!5m=r(husB6qDiIhyLL&>p+~`P z6&u|aF9G9MO%OyjiT*gTu~+)^Gf0T7QY3z_oC@XdwQZ)I`(%HK zg+1%*>xaItE6tQtNU!TzzHy!#zOP9K9!_<)RAg35o@aEgsKh!g+Ai_Tx8~tTY);Czwg)Hiag^Mc!F3x*tESssvSI2MOi(;l4Qh zM537r>Jug|h`6)6>bn}lj9jhhZNJ4(NEQX>?LHsg9wXBfI!)#&!Wyz0jw%IzK>JWe ziiZcj#c2~0S|mQB@^$6VaFYvxN^@f}3kcp#7HcqoC@WRp;F={>%MBQ-Yan@JqZv>H_ z|M0_31bdvq{b}h41OKZ2Ec4YBz@2e*pGIApKSP)s+C#=uIf0uMyk_)4-Gf%LpU-Co-#gnaTNYE*8qhfzB<`ybIhrS(G%1%>i?D6_=4#}hAOF4~e z+~Y+Vox?r#IQX8s4NLtf(eT2FQ;ih1pOw2Vlmfi}tGH5SK;E{-RlwR#DIT_5?tivE z({nMz{P0@=E_nwAqp95f1%s08i{W=Kf5@Ssz4@V66h=orJRD6%gP~V!xQa<;;A%zq z;!AbOLkCl(58wE>ZTc<2l`wwMoY)xMzrywlP(Sl1{1GrzN<#bF_8x z4z4@US6M}etsf1XBL9xFi8CNS=s|*G^!Z@4h+?^GlQ&{LZ8SoDf?R#L{Sg7(R4XMi#clllrfCu=M~F#R2dQf%lI4HWRoPYNXi;NKKR#94nBQx)D# z`m_E}QQM+&dGdxA`lHVS7PKUR)`};9diOsDl7Zc-p~h`0_egYAvtJE~#gv`%98IsW zbxXt9AfGhou__3!a%PY{tveR~SZ(WzvCUbvc)0DmgXxJW=^Botz<~-_C4OXNUF7{l zMeGbgp3SPJ<8NWB4`>qLNEjZWeJhY5jI4{GfFNua9n8*9s@mG`#?uDA~@dd)o)$V>lcN`MqGF=(2-P`+{kMw zm?~;)$c_ld0Y?3Wkzrr`s&oRYx4FO-zvN`&l0Y8k)P^NbbI3$) zKO`r^sWF_Q=;FR3GQpPUL+&`^7O^TD`4XoI`&+oS%zAM0hYuWYm9oSqmt%f?_o#eg zY48oo9$NY(eHcfhEimt~(~3HNr&MxZo2X}{Cn%BjJ8{N8CoGQkD>Z1hi)75j2#H}7E5#C zEa6>e(K}p$c+S+P3&*73K1L@B(a`QnowO!XM6o zu={paH{>x%E1zHbv3cTzCV^E==|%ACs#0rCjC77E3@N2u{0rUwGh_eH3vU&vMekQ3 zU(XOqGBD<=M%?0+${opMK*ZU?wvcS;eRFJI=4<}L=H6qOP2=o9c0(O!jf%zR8cMrep0C2b& z`c~tj%L?wmFttfD;`1lIS)@RkFGd0hw@S5yuIK4q)JWNS^=LnM<6wy321^Ow z@Ydn{tB8BoMA7;wIJ6WDZ$2O*gZ*ZaodKLKtRL(42(NhS@mzI>VnV1-iI}3&gV(iI zeyCY*_ifyRQQHjF)WNk9wQ11+bNa*G)CGu9R)lNqG#+~cw{Ydl?E9N2G(2p`z{Xio z%*^F$sVKL`S0MkquG}TuQ+MHCsT|p9~^bTfMWrf$O!iNi^j4pfEa;Qz+AeZBZ>}6he!cdn?KANSav=A7NUV_B zU8V9cV93z8@3Lal6sy6W%=?z%OH~r~sd~+1-z%|61%bTT&Z}Roo!Gx_#x+5$pE8$X z)(NZ%qj|v7pWmO=UUd*`wadYtio#3D0_YRR&ilil4*4s!k~xjN(5)N|{=uR;4ycTB z!`aCC4Oa~XTfHjuc0aza!^kx9awSx;#uZVJ$2)P_($99y!{FV$u#O}NkIIpcZ{A6e zk?p*X^EAm0+_)9AEt;uuE}>%L%(hB(7t1g#bDwch_O&mm#tv_A+pxChTES578%NAO zuA;~N=KTBJQ8g6S@^9icUX3YN$g9RkHIV}ZV*1FN0_g<#P*T7%YV;lw|JyUt#==>9 zntA##>akB14SLd>9x;G8Grn;HhoI@rgfq?Z#P_5fS_P@hGQUUuqLtm7~_ZX~zD&2x4 z&u`IqE2gc_FVggWoVAqowiV1E!f)yz9A?CL7{w(2@P$4_&>KlZWuH@6BvT2}7|Ry* z>DQ?2o5T*grlH%CNt&idgQF^ZF#0Ox_(tHSr(GpoKT0~-HZ_p!TfzBJt@=&!_zKJ? zW}U+}rdS$NRet*e!S0JIDyg}J){iqJB)$#fEltFD0h4O0>WTj8BKL@?-SCR3y`CV6 z7?-W}qxyFzw+*b@Nsg&^QogzNohT}tBO3Rr-e1GsatW^!GH@sKI$pUlN>TqJUZUtF z7~x$k540q2(Z~96OKo8M{F#%%$n$9_hn`z|xk?w!Uu`>|SaPMjD2CV0(Tpz|Qfr;c zUu}c~Q|eaM-G0r2l1JlTKe8j!Kw_PyrqAFuoqazt%zpgMjov;zQi>E4H78Gq&0f5z zOnqK~H78^cfA4xw#gl6}kmG87?4l&cSmZNnjVCjy`gBEaOhzrl?rqCA>vt?Rk%6MD#(Q|7 z{@#~zr@Xtq@+x$pc$DOUau`>=#1!!~-;DWkB!BjRXUpVH2S^Cfd0F87F6uB%4t7J*U46CA8E+8k!(jXIWD6Jij+tI&|d99?`ly`W${Vv}pW2uVHz1~Dc0{XZtsE6Y*k zJc|Qw^=JehYT}$ceOdbHn0K?aQKmA(Ssx$+YlDkQ6S}yS)B910r@jL61)}h5o<3yZ zYyT}C9FtABMQZ?e{?8*982!*{{d<#_!5ZtjXJc3>5oG;8&OjUO=aBDDr@tN&gBohy znq4hTnDB2O^XKRN?ZvbJ!U-=s_09d4^~3Mf6E)z3D^XYw|DzK0Z!PJHFz6pwSjh{~ z|FJ;-T&e&4LW#mhW`Wv#X|U)!-0y49$kBl~?kOX?GW1SS94y;8DG3@!kD!yL1A_{0 zv~TiP-1%EmxEHu<1&_Cu5PE>QM31d8*e>aU{ZhEl_4UcdK4rEScRe|;XOkA)5+Q&@ zU#-;h@Ui3GLRKD-C$dbH!vFBT`oC-|c&8#-3R9db-#Nl)J*CA6yb@%QL23BcAjQdp=A#bSv0O(i*N5ml;T9thT4pNHIupD6h((mfpf{WgsbeN# z0RAqCd>L-&OFx({tB3Tu`aga;L4Cn#Wz_Nq9kjz@z&#<$iuPYg=HTO}!Eg}-)w55l z(tttEIz#-@5SgqT)2)~3`~!kPlJ;3>t7}4PTwZR!-bj@Pq&(@47ovJ<@jTMVr2Dc9 zeL>LH$^kzf=uiNh*H`UoZ_45dhfbrVdp@ISCN6aL!*Y_z3h=d&7E5U+CEp1JS$8bm97*pNyAtX>}!yl&_Jt|;m z7Z8qo(8HiydPE?(Ub!Z7=#pBFW^HQy$JO}zo1{|ElB_q45YIe8LieTydad5v#hu^# z^ONrPW=EYBe_WFF1CsdHh<}m}IMYEBUNNVESX8xMp7c91#WJOG=slF+Y`=9L!Rx*N z0MtCtjS1+0u0f~L!O{^}Wi;E8nyRv&M!|iCp9I~`aicinJ7{I&v8a4}Z8Ziz9YYD3 z4Q3J}yHj*L;cg^gV;Xpd{!n%zhW;m#GIzKrnZ|jr0JEqxheUu0PWrNh)t67{a=9z# znLd@J#tWj>8En!S=*|c{j8D)5jTP|V%!~#!QC~e11gsMAZ9D)1;6kOG@cL+ts6S4H z@e?Uo+b4(S2a8_03S5n4zdg$OG8KY|u!Tj;HVCcb1#A|s z16AWEHnSS2Q+nNCKtz85*v8$v2=+(WNbxg!BlkK7|LIwhxa)!SAYK3US^?dV)Wl?V z`m@i056>Zz*xtuc1dfrndTs%AU8lsSZu;eT8ht(k@dE8onMAjiMiou*ZV~H7!Q-AI z7-dOfdA@jAW$$B_F7Z>If+V&D7%{=0;k+{PEm6Sg{&)G@2q*TQs$n%6T0w?FW7-zs z4Im{A!@hVv#LM#X+2=At8c`O}3?saR12CfRp53Jok?_uWrEzvAB>mQdSAMko_Zz)V zmezmhZ+7>SuRC1U^3j@x$E0$wiucqG1rJclRjNkcbRAeB93mL{}-bY^`Jp2RTiq z9kG6Nb}Vjx+6M(HgO40Obnw`P%a9-b_!FqWkQsy8i};e!M(aF!d$0GZTPgV1yna^O zR7&X7FAHQ9#Z3^E#FrcofN5JhvF#Fh#D*X3H)-D&2gtFxb1N$F4=(@%-nR(Z2Qi^@ zdh?3AsR@lZgCI-ds2J;0UN|1{*$z;PZP==@x&D(6FF|A69M`jrr zMUQOv>Mn_36j}Q5%G*pz&Auk0g|?Hh>yNuPHE7g7v@)B`Q*oHj-FDarl>f%B8)Ai%vW%=4`>&PD0H&70PSI)lMR)cd8NNnl zt6l+r8jZ9YJE_epOV^h(`U||;2Y=*&!Xf%PFkwn9S=2=qSgNLsxH`nm&~?_EDdKLA ze|$^w1iGpKNfA{s`I6JqiH&;57OWggp4oomGQJDV$>@@w@6M=WN&Ju}{Vb>}4AaE> zAVR+d-acAC$>qCG$bk#NhQIE79?-#twMAu`KiO||V!u(SfHPEEMq z6?p!vUmL)tZ_d)sWYn5rCC!Ckcq}sL!8ZZ9P{IUz-7NZ1Csib)_|+dNCKN$M81Xrw zG*;F4iF*l`DYr;bwFr+|&A=0JTf*mvCiC9*!KLHjHrfcnd^NAIHipa+MY%gZ8{vEI z{y~RmbVDvi#$T-bULI3+zA-+LSs9`>J#Q&VCP#(U_|_QlJ&bKRavxY@;0`))9DTsv zLFP{7Yf?V1*UkFUtKKLg@BzqZN0fX`J~LU3$Rrv5B)%2Do)#49TG z{^Y(oi#z1^;fFGA$~kE!G0gx^2tZ;F#4P*YBm|dyg4(jpw8gj@~8OL9(0vR{mWtiK6)S)w-f;7jp)?bJX0q)Xh+Tmc6S zf7)eF4q%%NT0io7p)|llE=SSMK_?9E0N8nP?AJa}OV}6>`>UGJ3cdq0fMA`3G-d*v zd&-Llzk(P=dpS3+K&ybaZuuR^XRP&7N*-X4nMP#EByyW<)RWx7k+LN*JAmWp)tYLB zf^XVp6Xn?0;hiO^YAhw7EVY||zQnsX@wF(a)}-F|cHijw?YcUR%R?{+=VHJ&!Yq=z z++_>_azn*trrC|0|CYE!ieS+Jtvh@2`$t->(XqPxlcO)uleJE5>94;^4K9pVIxZIeaN#e^+lNF_@ah^eSr$$0 zn*=%0W2FV}3WA#LB3YUf*h@dcbw1IpibY>D4n2ER1DP~i63+NhkrG4;t1IYpzIoE|#<5!zw5@jEcv% zrtA6FubPB6-J*Msy??Pc=M|WcmhiknjkW?;Zjf&nw1{eRO(>_3sgHifFmB%Jo#A!&^mK=d;_RxSFTz~Wi zU%%+<0-K8r<*Slp4m*%t6q!~-jl$ZG#aGDn9@@BNs&9S$tU5bY4Ng8Voq;@^w+-DaI z@T2y#;l!Gf9z|2~4I);c2pP~G8Fa>#{Lp7(X{g72lIo5n`T>S~O`)7CP=nXWuHEJ4 z;UqkJxrHL*G00W~6i~hoRNPSm=x-A5{_x9z6f=>QgpG{-f9}D5{TMld=Q2w4`hneA z7#LoAZGvT1w%#pQdFg}*lQKjnVI6RHTQIh@pw=aU-YH3O*p}OI4gY*)o{&>pbV8FQ z7ByBHS`w6Kwm!^L%sa(g5M}v;*MQ4>)>#G=C)W{=+k87vs0?{Gw}|ad$25!%GSC+U zB1p|9Ow`DMBH4{{mYwPb+UBM5he)zdY_+|Pl12RV+s^_gre$@1fWk57!Q1!!x>ewV z+5QRtBej$pIwkkk`^r6#V)sIUttwt96=_1YbkxlM#2kOcvk+vwmw5<0D<1VW<`55v z$CNlrLSyM}N+amBK7%YKlI8?CI*iP!sJeLpfw(Ng1>EY%B<_QHF!{%N1?VEER{PhLlP z(5vDeACYgZ9E{p!{)IjLU%fTM4dB0rm+Wt77Vm{rr9xew2ORw-cFmWUC7@#-+T}VR zuQB=}^ChNJKv&|GHg=z)DtCaRA=j1vUOw*0FFH{aA{HG@Mc}bBdkKPluGZ^dPD6B| zdDFZ`DE9o@heO3Fb`^u~-O7i=No27NFM($NYH&N-C|x}fiTZUo#5+Uhaw1P&TDx$k z035qsgL!<+ZTvWGv)0%kk(-4(;6>1`0o;dnew4FRdSt}#pk5#~31a$pf}Z-)gcC<% z9xGbF*B0YvV`YQOM0m)=2#*NEb1bYY+W$$yeena=h1ia{@l(#&Be#OV8R@(@zri;D z8_wh!CKXPD&vz<&Tq&}B-&^afXcyVX9e=7@fy0}ABoY?th9~ zRVm-L)~Ip)kwz_&A{@}&Rp{p?ir9EOnW(lAM0p*7c#+?hE^+|!*!cb1@_$Ry|IZF& z@Hvq8=Eb-B^q6^#+n18L#Re9S{iioVM8E$lC3;NWYJMBry?A>TC|lc^AostQPi3z1 z*IAJu14bIEH#j=~_yRwKFga^~>|p)ef~Q=p=DqsqA@g0_zXwlD6m<*(2En_3E5(rI zAc=7OCExI^{{JlSu>k5N#qhuJ_h0f4uOsOZNSIzXVO#01>;H$phq&X~y^b;gl=VJH z;O;}#kEyM0+z(R993aAEz`Q|hMEr&TXnmy*^iC1@ck=~7-TBqV1!kZ1!ok(U$BO%J z_z09$lCZyT_KB=+u)jBLGg9^y5|C>!u`_(IMmf|o)>y}vhFc-xN?Fr`YM z$RJqVZyF58jw=H!j@4eNyIv|(T za#)P2G6FFqBJ@JZU8Q{>IS7})-{Sf-AD+Y~vhHk>V>pAI&;fMn^X6#Df#mHyKPR%4B#Pp<+L>xUh{9c;C;DQ^D&+>mjVMs%4 z!g$OW*vm-C3EJwA>+QcH9{#ca@R$+vaUXkJKqN_(1g|CVng;x)yMhiNWhe%4)cFZ) zQ0zy5?2C;#E%tYy2w`Y_NrxmP+8ryNOKSl8933ingS$p9SWM&s9-9O68M2`VMja;# zL+gu|N7N?hnj`2R6&JuTl=7Ag!~zQlY3AKslE?1)t|g%etgik-Bq0?98H@%x+FMXw zQ4^~rUcSa-6Nt3qc;ba@(+!I5_*bNYx;(*66s9rsBElC^ZRrd^d2<15v&$){{La~P z1i)E|tLnc;#c4?_-U=F-&$o8wQu)k+fluf-8cRA))w-_K4UXgpvNbrFR@ZoAIU}w~ zC`S`*bK71Rgl2uUW z9iyYud1>nyws0SU-c@?Sq=G)MkEU>pM~q*sWe@stpFxWyvI6N8^IFuQ zZ6RcECf}`#2R^u4$gu0d z&mrB0?>20pT==s0M3fq`u@gX3i;RL$o*Do`6ij)^yAHixD>{mQ40C_Jxf@Y;eEB;^ z^&|FI^56%Pk01!#kkY?J`V&`R7|**l+5lg~RVz2ZBlyS2#dv=6aHJXeNycOx@WC<8 zt)d=!Ukc1@ZQwB4huI=l7wS}XMqS86k~$ykd|S*c5{55W`zZi%WD@bvoKaCm(h?=8*241GDrW!Ag#W)N zi_{TIDrLebFR zb?QTGom0fNvCQx`_92*^J>C_%=-q=tsse5g@GNWG7~&_C6Ji4D)N zK^hXr^efj8M>}v%hD~^F@pW+_o^Jf6)JpET(+~Mw3-B=;-f<9I~-KtgppSzULjwp*=gEyx~=6MgA+Vfr;b6DiR)* zT)x|N<}Av@>C>SfqH)QtNqr!=%Ews1&X7jVazMx_jj8;dK$en4nN;r^rUTU{UlbYU z87Zk~Z^ARul)7g=9S-PKWo>P}7!e;Uf8;#AmNIw7x>0+s+A-(*P2(5#c%%$c-cs+d z4t-JUHiy8$Oy+*;I-8K?{y^fy!59=VSvMsIec>pqT#9C^oC`XQJM!?I+U_L-j8VWW zEql}i)p)t=a5p#@=vNJ1#>7JXc1;-n{bHWl=bG0kajcUdg}pa4 z=T&k#TP^Qx&Ev$&mRc3;bd>{d-;Qm8$LduO>)BVZ`(hwu^+dDhH|`7OWSU}3K{ipH zjHpk0AmzG|-$p@}5op&~TYI?tXl8O=hTT9#?lFXhwl0NZ=zbZL3OzEu$Rq9jKUV?w z3VBCF&ZO55wdyv$e>E5n3$dy{)K8Z@2Ed@i@H93qNv}sIm@@UiEL+`WQ5axH`DjlP z1{?GoxRg47|{fwXhM*14hd2{9s+ZZ?y*Fj=mE7U)(h#pKB!K4~svs zTE1}X=kPZ@@OF`^0qcd#Fo9wAMw;U}iCWlalP)@AYO$=!CymOWCeA zuY?(U)$c|hKBaY1qOnHb7N(W*2ZEX1sOs zLa((0cn>{)_a)fmnT~Fb(Uo}z)YTtp9j=Ab(#{s&TF=KB7T-520{@`Qc^S@|rE5IJ zO#iv9|MT2^h{>sSBTc}|tf9bwFyNdKwpCH%>6x1KNUE}4R?}kkxgAAJn=YaLB3WLR^DjdbqB2J^=05uk-#|*)xb77cS$FqAb ztVAmPMC_jQtvE?=a{6v(2Uo7X>*6|Ql3Kb+-Rg;LWxT5G)n08pIFJcV;eCSARUM%^Nv!sP7Bm+DQc{?CspYd+~BKc!?E;Y5^(7t1%^sR@L_xlU1|G3C7 zv0gBnsQPva>s`J2+pnlJkTM=I@_4Kh4#S@D(CTFv*G~U=(LMMU$~?3|IDfwJ-!IYx zQ7HV!Q(}4N|2ug79yahuTW#3!z15la@AG&=k3hE^TL~<-ht&b614vz zH2Hibjjs^Q752DDA~fNRY{Sf-ouZd6R41LLG2Er(qL6B88OOM#RX@83xKjH!SLfAMdOk+mMOb zgBu`RBo-Y<=B8gPZeeQp+C}`|cjS+&{H$*xQ-pr26gJ>A(G5X`UmV~^OBg!NNuMj2 z`+-PsG*V#HrePy0!kxtk_#-o{KK}3^7RYB$S%tz@_6&DmpEd2z}#9K)rFYdvZ^P?ufRw(M7p1GN>~53Tyy-F zP72nK1J*kWaPjKEChuHxF2O|}n8OpP8cBzq@$fN=YPN14zW@L zr7VHChmuF@5lD1@4yxiG3+hdf(WKP;c=k574Kl;Dg?{IKUj>OrZX+Yzx1Z8Jm)QNJ z@mv6G;MH0sr4$-Wp~zMRO`bySo8$EeuMD`M8Z*Vt?-z~CLc%?1DEaL>uIL>y{ru+} z$%ExnaFV>eWiph%lYP7uNJE=FFj-K~%5%a8HxtHbUg>~CxUbkLA<(25hzikP*TbDd z4WcBriXvWbSI>zrz!|KD5cr4T3n(n>Bg?_TRgo(I3bFTwbeJJyV7OUnb>SB)te+sX zt*)_SLy^7@2taXJZrC0|=hoB2>7*2g;bh-m-s^O(dAD@W9LUy7<<*{no zpBv;}7=bfhsA24AtGxF0yo3ds!+_!=njnf8rvA+P-ACUDUD)!1u4xZK&3Lmai!O0{ z-$ePP{-1WsysHl*4*ngRuLy@q91c=7KlyFGutqPhR;U;0MS_5saFF&DBW;}?8z-9nGF}(^UcsiMcz`gv(?hru?WcG?$9U zYuClDM+~&?1D_+hUhtgBGAIlO%RjLu#k$H#Y#s+o%(t1jEtl%mo&$8KyT*NK&*M&w zi_2F%F>3B@4lInG8JZDFQ;O@Zr;X-gN8GpGrRG1M37V9)ttg;I3ti%r40-yA=w}#Y zXr`6aX!N+JU&qI-^|#bQu7w@Bj$HXAS`{9=Hnyb~;>zclvLC?&Ml1cM!ug#tdfs7(x7y+NnjK=Zr%QUry9r(H_bL%y zS1srG-txPf)K`)H#B+qTDXum4Ct94hM~4ah0ILc`f1=Neam zev)HCGga+Qqut(i?XgGSrbhLcaVp~AR|2amb6z*oCH`g^Vc;^TiL`3)=|-RtwXiTU ze&kfK2*D+V&Sk=|>5#n^oE6N8TJr>W|L?CQoXtZad8|J)Jrh-sU8Iu^v1qOac7 z!bT-zpe@IVb=mdWO?Twl%uYUKS1rj7td!r@hL(@^uuTI|8=rzol!a?_59DnLpf=35 z6KF~c+?4;!ayYLj$$2wo+9&$wmIVGk9W0+8V7-#CSw{$cHTz?$&kG>1ItKgr!7MP% zPDN+oFI`87f$Ix5I#C9?POx7LGaKM5x)w@HI!4|oJDGa8WX@5E4}sCI8;0@R*czc9 zTb2u6v4CjoZzpm@LGsxiu`EtGx4|!I5)n3edjtCA2G$T-+p-|CN}S3k))LF0w+^;W zO7}Wox98H*r-cGbNB2vZ!IM>9pE!y) z4bSOZ*4#SNDR3=Li3}CI5@)wJfh(!+Su3&TLlPSTFwarRMz=~_jq%}ky*4vg^DdR( zc+&$ENaIe$ZMg?;iWIJB+I6nns4IFIiq07DhI3IM3=}dxC4v&%VmNDIKowte$Ir^sy?F z7Z1-dv?R3)j67UO8b7#~Lfda1+Pt>nTpy4Wyh>oW_v;%8exk z%fq$*7hg#$%~-{k+HeO6GsH|^ha)ISEEjPXjUMEecAJm{z(9d0&RR%ZGZQ;0)(gcA zD5qBf@9aX{j?s&I)FAkn`goxBsC0N1s&I`j??0R52q=;I4Ro?Y)KD>d;6G@cwh}aH zwXv@L<&^fT)A%75%k;J7^E~2jfnNLG#ZeBr?~0sFtV+mK_A?lP{lx2sh=MpvRLiPd zwlN;NCqDuQDFpj)bQ*{*u>4apBo%jZ<0Sb3H~^}`@Y!W=9SKM#GH+5nIv_dC;sV8c zo5!T|ay$RFsNu5#z=QSFn&rN-Wiq>H(ntlGZF1~ore4eS7^(guySaDBycXFbb&=$R zLCQ8wNSAILW2JK|2kz4!2QHpX&P+{IEf-bqw~?C_TzcT}ELIz(b@ug3RLI$7^E3ar zU@GO)#?udAumHT}4llu}D8Z&^6HTaS((5YH2>voe{7CdNn*_pSo|j2OHF& zLol)B@Qa{9T%3G}e=<|Hrdw!r^_D%*GT+`ahJ5LMr4!TF`}C`nb8nt;V95)2%#Y44 zE9~*6W1KGPEHP$)BRhe}^_Wn(p%Lb2rajiya z#*qwk$&x!0em#A{bQ{e{!@MRoVsB{GTOZjfrZHCX=RQ(fgT`GZP^MlPKX*;l-+}X8 zyfGeQ6FHUgPB7D59S|uciF%cnK3ucC_%nQW7}Jd&LZd=btkKwI!!PwGUnRXxzN5L| zqy!mi4i@T5qFJiP)`H%fb7I*>`ff+*I`uLqFJ7;zOb&NH|BtEhMzPeC-kY23*Av116(@KZ~j!@^)v(}+b+Dz7$rFZ zIz%)wp>m;27?RYioBazX?>9fTh+~ir6_4y`qIs0eme<8qfKG?CkL02$s$hiVbmavb zGWx+T^#8H<=HXO#-`{vR8A=%ndefGLWa!KX;5ZmXpo2u5lZH{ zJ3~<%38f4fLNd?uZ|&o*yZgrT-}7A0?|Qy}e6G*A^M1eg-fOMB_8MMm?Leua&{b@6 zGV&sBp&znWRS$gTNX`6kEPgB&576_sfw*vMPZ0NArHwvN zM=ez}(P+@%IHEBPpcZ1j>Mg=){h z4;e1i2bzt2MMEAo3&{+%f?x$`v5u6=c(KGXAH!TOp3F+u>K~Kvi`au=5P4D+!na~h zVqDKequ{_N{xiuG_f|C<@hmg}t|7R57L<}u$#8CGv$?9ILRi057YDYDTK8!4E4!Bi zn-BdAi5;3zX5i30dt2cH9H7RNa%|DJb$+tY`ChCCAJe3!;@Sc>=Ae_7=;^<%XF{Wu zi2jbR~_lq}M#ATK-sysnHyXAmTSfOQ(Z_XzO(+)xyhOR+? zHMEc5KKjZAdbQY%o{FB;++O2MC7dSz@o8~?(!(KT={-qz3Sv-HwtDEVo6_TtGkBBJ z-Me|aUEZ`k1_L>DzPM}z=KK7|&H->qE;QX}QbT5iK~*y%bz^-%IM5>dIbq zCbk~e2P{D~RmVu9*AwSbHlB#3A37z+z!g!GV56I`_j`37-3sGSN=6mt-|^VGFfV#8 z8qmTmrvjKYWLRG*Nsr#%Pk(#t>3}}B%y6)~nfvwTFshu?T_U@GxPjgM#CdopPZg?^ zNQ7q68JBk1LU2`6Pt+_lSnu5aQh9+>1Cv?xfsQ*Y7EGmuEkB1fP z$;5AsTFmJ6JhK;i%H~d$IKa4J~chlCGdlmp#Py60LGtvfW=V zqI2ox`vYHeSuPSg6?Bd;th<$=q@%orOO20$+9eSS&HU$v1Z!2}2!5c6KJO0+xpo5F z8>d<5g<|4K*D;4<07);M-q1DoLwC_=f3cXO11Kh1_0lVL&c@llV-45`rAbsY9R%w^ z5$OtsTLhnrryNeb1k2{GKjgWRlT~7xt@I@z2>#TzS@=>C-l;5~b0Y7{Q$v^}PM=A>y>Ca`w4&e84SD2ick;G>Ynq-t zBuPd-AP7OA#U5pvUq)RNN&h&z$&}>nYFR+H2wiyO@|`CY_5U6JM(34#NrArQl@u5x zaf_3#VO;tG@^@uNv|S4W1>(p1O_n6Bp1-2xp>!^W&|THy+@Y4e6~VU#AD{V2fRJk5 z_NI1d6{m*6ule9LRqd<5HBG!qQA;lv-Gal%Y*{Zg|D)_>!aEFgK)iQUfnAQMi388M>Aao?Z6xr#O>urgsMA~2`7 z8h@|DUMWH0 z&w8~(sVUr`!87(NqZ`DhQkqblqIk9;JzS8|6dx-ihMIDHDCoRqy|j#Q%gg@Eaj)rti(Y@&Doph$uYSJ(n;0$I z&Gq}0fB#U0c&aFkx%e8BB=#X*dQyf*uQ7lq5AcfPVasYU7vL{GaU(UO!|XOq&$R}4 z0uv0q?6~LO)A~)4C;|9>pSi}&TCxxd6Z{_n{Er0uFSbDGyC`F_zjpu}YG4Yg@n!Fa zQ^p&=gF5$S=BuL`7!c2Z47`a+8#kNmBuL-13>iPoV(ni{YwWyU9{9WK4~G;!l1B6Q z7QfcqeViM`g(a16Ik?MoeGlyup1_wZ6icrZZxfq?Xc8m5qZn&$LfQ+&>v*ZIw{)%# zKD7w^7I%muKP~;zI+@M1gxQckj!D@{IKWKLVNt&&PWO+8{i4^F!Q( zM=bOly))_S)~$Go;7Cur6SJ%4>VEp(!(_5oTMzYEu1pvaeaQ3n5(xfZhP${K2?AT; zYaO8}mMa$;wI{@Y5yF%9HTUl@_EN$Jtq=PDSV3DHaRd~;!#s~B8Tl@xHg6}YK3=KT z@>PKxnH;^@A}P|CW&>DgQEl*tmAo3ig&(wja}RUa?k}xSd?aLoGT-`Y(5_r;>()2? zG>~VSbBme8ROmxS=~?-%;QuflZ3YU$*E@J8xlNb(*zu+x5&HwRD^@NS<0AkhCZ=9G z>W%M5C$TvX*NRce$W=FX;RtXzZD|Ie87DmV0RM91%H0HJOV^-Jz)_;5-VCt+99Kpz^g>JnN_Y9JBb>yCl(G<3S;P+NWvROs`j{Hystn}2sg|9*Qk*i=;p7}} zvknWui=#7Y?6cO&Ly!=}@J5!LpGNX~7!NlgjUGh6uRe)!B~79PLJD^5=Y*s7Xg3#8 z4;`9Uio+sS%r8b|y`2iV>{WrouaXsFRAKWpkC$=(vTXm^jd&Xx(lUOej-_Q|DnJTM z3v0bQk9D8hWf2$mfafaEVn|@tB6h z3L#NJ0|p#%J3QEUu^R$-V$JWx3GV;Bn=xg6*) zY;xGZD!V@*7H@qtrr_}j`3NyG@_JBB$Cb{Itunb6EWip1mf)hIJ&e8QU~b0Jb3fGn zOAZ|I06FNK$WxDT7}sMkw?ws^s#Un3g1GN`KFlBQgt$L7qjhM73==jpfSQm~3xn>O z`(Z$VLywc?Rt|W7Sxp=oo97WDsKH8mKZ+!NT`40*dzaNjidsq)y@eZmFk41pgYwD` zZUi+k{+FJ%68QiZs0q&=dEb?UbJbW@6R$$kt1uNOKtOhm?0T@0SNN@OS~hJ9#raQj z;7$3Ej2!tayz+C@@9?-B4tkDzWMK`Uk~M*H@elW}VwDjeF7xaA{7(gMygf+z`@GNo ztBk9%K9j?OC-EIMJvJ6LHT~mDiYu0iHx*rP7Xn94oo0kM8TkZ!ZG!##DiR!UZCTlM zdJlzQTy@c|RxeIoxg9ctVRk?>=^nV*cKj;XmVyt@U0E6MwQyV3byi--iMBr5IL%S`#mk9R{6-*yfUtUG#wNi*YL_sagU!stQNkpNeU4Bn!5#NRU z$WebIRCKNn*Sgh1T1n=~9u&*IFxvIDI~$6ak8R|8UK%p_k^v;$^(e5i`NiH>5PLK< zo@>%I3(SNtUhwA&dC)AN9`f$`i;bTk5>fFpce8xVUD$lR@h?-C{RY!8479s_ zJ@4_(KV=I5E`XgeZ3gI9JrsVoo|@3sgUJPC1DA+FaGE=|bgM&H1i>UcCxe#H;0KJ; z)h3H~AV>6K9DMuD7nVwv7KZwum;X^ngI9!P*X{t+AwLR&RKHx1?tGu{ZSk_Nost9x zT6eEI!KrvG>H-Q80Rg&V!d;-)mdeP6Lm^vbs}fQ`FXzvWC+|dR$iW{!|IPi=>6`I;BXrrzuiZ!BoFW)q9c6V<_vVC@ z@6k*1Jxn$(0-3}kC`fV?E(f$gXtEE0D0--N@Z0rqNHtA->47Y~GJ>JOe-(YGSC@$* z<=Fw{Ba#Z204!wB1usnpXQGG!{7>*bL`S+EAzD1?O?GYinmfew_^au=gY4v8*n?5c zhDqyrL~hfwJEw`FLbgkC1nef@N9vwLrrr9yF_cOrd2wf zju^h|biy0H?wl$ES-F=6w}HuuL_$L{i4c!@5{8J8qx$e$&dGyObJ<|7m1)n_Q!?m|N%+f9^o!f#Q%BLh z7NLLB)JizO%i5vS^tFS(rtiQUU@i<((~a^V!*{ouPNFNMxxB%_*b6d3I@M73pgFi@ zDxi7XWNE^rLDHY0j z++pVmG%?e4&V>(rP!Sxc?jIE^nY4%0e;@Bvx`jyzxH5oJO6@0_L*e`;#zWn61_L&M zx(G?3<5D&h0itnW>(tDyll!OX2&Z8eX&AbYb^(r9L$0*zie~;u#g1xrq#*hLk-*dT zY^Ge$^R}N%MRm8yd;>$wp|JXLw)Q^Ay&i+oyvyjiscLag7$tA^*~v^bZdUT}>dt}s zlEsPi?#NX1f7RkQ&Xhw4_;8CS36X?1-ypA&sqWsf<=nTUBd&*L0U83;jU11Z8}nJB_kzf{`KzfQve%q zfbJ)EWeL+19*`bV%V}{m(0c=6W_D(q0nPP`kUzeMlHmz-?(G!a8Gw>5`I(*6-0sDd z4T&};x(Uc!HrgE>nU($Ab?|%#-BR1apwl@WdEpW$3=CIw^WRD#{6(;v^DP3Ae&~@| znz1yh+ZX%J22x186pWyKWH!0$^`UeMzGnlfN74GWr?(JdfDvPWh;yGA=49>YYPZdL zOhSJ4atRqzuvA`~188R&pNdpca2rJ)pD?AW)Vnr-AkBu0osU)dsLZf4h$S-CtxmbF zp%>Jz9wnV8Ks4fe69!|hZQfTPb30b0o^8IJij-54@EXW!N{CgE zl`xu%j&0DN?c$Qr6Y#qmnFgrI47a$#z_#6be{m5WZv@5fz-vG<&k>2+9iCy zc;>y0HrZ7>*^y|clDU=!gCj0_?gAji-Ip-@p3|?{5~wKwS-ZLXi{gk4BtmQbJpUE#b`strN;0!`nV<|3rvqNyCFMkWHxpvn`u7j-$a=~)F5PrFP^|GyC<)PF zx{feE=_%#SR?TGOtLV3ttj;b*x*S(g$1ah-<2^cv--e#M_}%$&lC;9zI0=MVuckYysH40FJc+Cy{P*oI&dvE z6hd+?f%;^bZKsmL;%NreYwFT7T^Z3o6kYU5W@ajLl2x79!-sp;3B@tddD{7T+sBC# zM-{)IKNF0ZvFQ<*ktx?FaHgNZ&(5}yX9;dmxGOVa^PH*k$zkZ!(7*|3I6JYHck%&; z>02IHLoQ>%aq7?$wwv3?bFrIaZX_FS8HDKrN49y>=<}PWy|~VN%>rwY zGc~uvulr7vQ>#P^WPqP$^S$_MC}e5 zJ`N7Fno*N^qAq0Hs_YCAa`SZp_OirDDd#E*|B32STC@QIlu0jZ^6mKyIG2FS`4NaLRg`G!uDc^0qB zP15gtig>5??5xJEajNTnZ z3Q8!q)ENOxXCxYy7Feszh~F$|3?pGaQjhc;cxE9Z-k2tkXr?hYUx3qRs}-$3&O^x; z#Ka%aPw~;VWVX4fSbMS9r87{xYGBk0)U>tlbHKiY&s5~2A_A??uv_(Ex2nT#{hg#V z+c%uPG@IVtZfr{&a_>3R?QNR3F6XPA%4dDtck$0>Lzy~h_y7ptazzqq1?vI(rBzeO z);2=qTx_pF0FUa>Yo3a1A4rIR_v&7=_0YbXOY4i$QX>K`IvAZOV;dIc)wqj4TQYHn;+fCs>x=X4vbyNc83+*=hb3nUYo=iWiTOr!5I*DqZ<0(#)lR-^|Y9qFQfAwK-rT)O8( z3g{Q>tMqrKyFw!-S81xe zL}ainsOW5N~Vavk2z*)^mP?o>f2na%SiJ&X+XgcaV9tAuPjt7Mt1e^2yse z&j3g8x@w_ABtoGz@Z?Bo;#cXryC?be_i4H`e7`>>NKV#ZYvwWXItCdB{r>yA-2HNH z&HBlF9}`$s@AL%sft_bVi*wVy4|Is6HD!&tO$r;R%V_}^+<%F)Qf z<=4W)3a)c6S_oF|decc+=518BpwW7u^*gwXJF0(_w;Ktol|mXn+E3==sb|%yK4Uvn zMikZJm?&5)i}NmA{<)(?yKILXLLb%(dXD(_Ir@`@+NWImgf4eFTFy4jQ*q)JlTDT} z%7e$4soi}{LiG#D5dhO8S{^eYQ9dF00W!S%+au@eEK{>D`WC8>i|sO!mA{y!oVPKc z8IaV@UsXEv*^Kb=Rh>0uS7ZiN>c|BW-P_)dkr>nNg&EDto(!CSk>NX63EfQ}`rRDq z-reb>w8+m;vKtvV5!G?kF%M%4g$F;8QSHvED}|6Ka)Smccsw^KHHsMIqI02m;Ra$Qc>B>1Q962CV0l z-+8(s@-xz^pkFM)@t#5--tixt?Jb1<9Up*O5gp&&gQwE+T(_=V4zmtwGruu;sH#J$ zio&|xiM@2=0E18m^oXIp#p4^J9osxBg2Sg@&{J?g(eHe>cbQ1@68Jy+=7a(V1qRMukD)%~i!(=)VM=4;_42+I(R89xE&qFUA^uDYg!f5!HytAp0|5{W@LOGl@U zIM8kH^n1@;1dd9#r?6TxfXnZlanF((e2<^2@L(t3z@TA##&>U38;zVqBYvhq08V@D z*P?`15DlQ5da)eL%{0WxaKPC^9R2G}2qKfDV(CJhnOgW&FeYOz5CHta6$Jq6bNy{g zQ%j2`^)sJt!(*=*h%Lm+nU_e_H%N8=6UT)B4(7TNjdnJ`LH6O4g}8&m|NQ_d-c+Gz zDpkpWjodD|0iYTvK^|nTaQ|N)B0c8{6(cb{YIz&BSZqWQ#)F$StgK2S_Cu`Z$Apdd z>=rB=JT+qLq=^{*$E?uD7Eqw6@-#%-g^|It$KvMhf2K_u4PJqWeFWxOpRSU3sRha_ zMLcs~C4NUM2SL8mrk}&s5hCEJ%z%@ME62k;fQ*erYt17_7YV`&3!@IN@~O<@kfY#_ z3xmknYY50=DI-)@c`6_RrWLoB7jkWsTi~hVm6EHh(2N5z8CcmvV0A1&pljCl-fAn9 zMtS<+f;h(BD?lvcCCVfj(*F39TzCU&i=)J?iL$$?#~(u2u{O$%`8TTP_k$KnkO6ES zdB(kkFo?2Ki}ufaR?=Y?4i-1mq4(HFeJ& z^Dd;pPte^28#1~wBQ$;;_T*vP2U>UV zUyu@L;W>d@u_+10Ot2IO@sIxICQ&p2(ZKlW&xiJ}7nt`pL~mLZz_Za)`325IHZWhAV?zqKr31aZzmT$FV-=xB@+ z5ZQI=Ys$*x9Dc`g4$sQrB-0H%9jf~)J*us+l6;dakng#0l(^V)jE2S`6a-p4O7+T0 zwbrW(+gWn*BhNuX5K3+L)+Y|HR7EZ9kh21DH>gQ+rSGK$;?*2fKSm0b{_A04H%fvH z`sB~cBmDpx*W%@t*n|IihO`@tcw+X-+B|Z~;uLBH;&pmZ?py_0gx?*rmyiyE-nkpp z1M82Vl_LU8A!`zFRD;Sa0(KipFlrg!Uzri2$3E~L^zr$A79a}xyr7)))$>-0CcOoc zCZWr=r`#O@A$JrO%K7c*a>A-v)-*B7@z_ZAiTOiNIQHeSausPQMw~*>hiX*%v&O0oBT9 zfA4@*GqrsN3Fh@q*|bof@#A7dQq-dpE~y|qhcM>{gDjKQ|4Yg;Pn!Pt__Pno5s$$Y z9+tc>!y(TKCImYKQz!*kF>m+5dLdCSTYdE0a*k0^sU0GhYS5q6$`yRR^UmH-uq1{q zY3zO-waxkx1xc7R_6R`*x@fJ`*b~TKaP9(MOYGut6e%mU*chPTBGnZ+j5>;ee`tdn0__&K z;I}A%N2k6tlAL~eta3ZFok$zpO<`q5+5iDTkR}q+r(l^g5|->yO~XhUnI5sN>+2ss z#=U$3_i_;C9f_B%U!hocGt@anCZ8YQyGwSxFVbd`1~K>NltjdWaQ2%;D;H7L4ORK; z15CLdyvw@d5tC?N5O!~v2OmQP`4aU|OI^%VpQ`4mlc}%iiOENH%izIaOOg>~Brps< z^#QHd5Klj(&?L8f9D!r^^-zb2T2{TweRV`b>@Gr`_0e{x^4^Eyd5padWM=@~X5pw$Oe$m-C8&P^Trl;bzQ32Ko0zFN0E_tTJ{ z+L8~q451F$lfAiB;Uuk1%T4qfWGB@neK^J|CRG7_S?-`-3O@a$Vi!UUvqkwr-2G;+ zJ{6N=byuPWeIC@kq=WDKa9svYC4k>7g6hp%Ad>p}OP+7)LYf8ndjU+o1}tAd>S;0w zEZo9B40)?~LHBPPDYQrZP3F&7W^WtuzOVm>g;|=kF~CvfYV(F^qZ28oAK+~uyFNZS zqvM7M(~BoS=K>B?F{@X6wexMp>`lR~P` z1@a<(01328FIkfEubsG%rQxCe{vDHb(2n>)CX^hGe?jfakKOJWtrl#vnSp%TgGQ*2 z@T`7^G%iHN1G*N4@96hiTX48eLWyqaFlKT1rpyy99V4++xYhwBNVc`sy#CZYc!tlsqVv?Cq>6wtPKPR<#BqbE(CGOmZH0g4j++f|RM(XX z_7d8d2Nn)%NRpfJgBok>2vQ;)N{YD4Pyi4Qa`61!ZhfYo09@Cy257KKGvMZ{XHfgB zT~KD$(hnFd^ain~F9QL&h2?-8VK=fn9VY%`6tyG&>2{Jx_UaP|SJyF!CeiJ5;J@nkk2dYyPuNM% zIxy(7KeCM(#rIpc!VGPqy|Vsc@{7LZ#YCXcgQQLWs?yAw1r?%M1&cMI8k+r zB-2ks;kL|pXv`#xN?26aZ)876Kc~og`z~o~742?ctlQC}#}Dt(H_btPyAZ&_Pj9-m zK5wsV!1{V_h0CUKfd`I3(T`eOLj;gKh6lc$@aZS%bqwX!gAik_mTA7LcmDovs*QG+ zag)9>(|hPhiqKUBeAJwpoMuKGv49+8L49V*bAG^tjSri&_Z8B6`ws$=keX?_h*;3Z zCdMVS9o8QAcppif^th>+ zPpa^1WpmuRxsU}U!84Us2E5RMk4> zy1T{W@uF~SWkMxE0!nnx4rmm##05+5Q`Xpc=D|7w1Hwk$)1V{?M9d3(A%pAdP2!@) z5~Uw36zJ)0Ekg&4$fkl@4^LUDfiTg?U-U+Ig6oC{X=7&M<4zA)n1Nu?vV$6uz5Hz1 zd)UKZkq}KhKe_GbwgHlBKfpzNR}^#KqdEQiG2jfLmC@pRbIUvFqWEO+@BamYETzX- z&PA~P^}T`}yWx%%_-;fB@BKz+90NacttFn) zqRj?5X&TxID8S&J)Uel~d&52`tnjheKueMH0C+#JSAirPGr4n^CAUtBg zR_&0H`=P|1$>xq3fS{B~aW^KCF&{c-1(!B&)8us`2N zziQkRk$461kGMd7tz{3TLDRy1OR#JRgNz3u14Z>r1H*vW7?1!igT;@kNYb{OPcOyW zT(eYY=Y@DL8TmDuTrb)Lvt2Oze5KNfVz-+32lT!2FjqCHi&Z2ibQce?H?UT*S~A0K z1Id$&<0SSP*I9f{V#ZgX@r5|a1JecqBLa_}-gzC!0yOGl3PO*} zU%x;)Kmu4AWuF#?2)2jeauJ*FBM$)K`NABP$A2z|gM4^2<~TJ5#)V$KAlW_R_wWOU z;~euVv6^?`H6uX{x4`tM!CAi)99YErgdV3Wcj}WHf1&uXtxvo zs0DN}stvG1N+yfE$gapHRlnzZLc!yj!%oLm0`8U-ts;le*saNIlD|B@h5o`2DQ?6{ z-`gPGZ#3lAUY!b!V8*vxE+YK_7R5_UX_`wr{8;YUy$Fol^^9#Ku?FFU6(dUi`q6s; zm}7k??#D{x-SQ(o5DXKN=Z^g682bG#`a!S;X9U2s$dSsGzDv+r(oc6N0`82n~erTi9dTamDZ9#0W#N zYgY3QPmW%IB2ezcA+V4gpxHxsJ;GhpL(#dUsovt~-I6DeOe-)fK`G)S^CzgghZ-^( zB#K^9?sx*Zr-Fy9y)p<#Fbfch`-|Nsi+io|x+5CSqrP6yo2*5%2Ch$kbOGQ2f{7P{ z4Xg}BUJ#FLj2COvjeBQ<5~zA+cR)Z>nR5Z4SDy~i>eJ@=kZMdo@U2gCo1AWH8wJ-M z>pmB0gCLAo9U(nr2ebb%6>NZ6a+O7cXh&%x8 z|1FJ*=`=T5a*{fTK>2R?()R}!(;kR%B5mSIP|IUofQ9mTU3>;M>jlW4MDD&m_lnl{ z5^~TW9dmR!nEn`V>oMr>b*f2`q%&0e)9=q=uxf5&?Eoo>T z5}k4-tMdKa=J7mmD<_I(f21@Nb4tqLqHAlo2i~ZBzBsWfPj{|scnEmWaAjX~ z*J5KL62%`<>tfz?rZ;{lYj(3yf=Bkd9t*|jPLIR;jHUObKLr%dLdft}I-jz$aVMDG zEU5=}>^|G#1Cc+bHuq&iNU0t92yD>A;?zi`lU`rP>0`}M%wL`J*-W-Dip^#(fP=W> z!A+Nl0t`)e;ZneH+%uGN-WN&&Ar2M{rF}=g5}|s1j}giR0o*4oA`%n|o);6_eX_9I zINCB@F0fG$lA;p@_XII^DTDyj$u69KY;+#F<`}gapi1d&*(a;#0F>*E7a>nmdY_bK z&9<2OGHeTBgb5B^b&pCEJ_bz8twAO`Z&OI+sX%eA-2*V^XTv*D4d)EL6FR0IA8F5b zp5wO4YS3QD78Y?QAp9OOF&7*IZXSb9Hf&XcQS5knqpb>4*b+z~&03kGSl=GzPvGpG znom(zs7`W#MMTgQ**Dowe7P5G+`c7xT3!-Rt#hfj27M6_lc{MA;00Wen6W1{lJHCG zL5+gOmwk8rz3r|a_r3i-`mOC@WD#{{q&HMe3AwKZ|AR}xZnqpr?XRi(3 z5QS=IlADV9kzIiP58Np`30DDan81>p9t0@Odw9dhXz16&WL8egHBlwDU}fWGAhGqx zS8;#q-hHvnZkAa@49rLIgegZ;9CnN8!3)q$yjw-N?wIy08{zh}2;igL5k9)Il zOm|{B-d8+C&4#2t4+9WqR#WV`u2g24$2~Ti5~YpTv7e>^g6gJ^S`*5$#qs)|*?Dao zP_C2JV*vOSq}mYlifvEQbLf{8k9{&_G~}wYjr+}xHt3Of0eX!JN3i-|kjRzxKoQUi&^3^yNL*6xMIoZ@h#G7I%|yefj@z-fB^%xqr6-<}g} z0n@_uvCPfjrr+<#*Nl!;(9iTicC}k>I=U ztDG-8RBSU3v)QNcIaaV%S$J5d(1VGBukCN}bIC)lTtGOU z)|jpHi9G5jP!F)W=-B=kxJxXeY1l9bN~6WpBcd6EYFfT{jQE@IC8FM1I!41~uM>@x zQBNDK_d=n_{xv42Fao&1WrTPv_p^Nyo26qImky=R4uA_kri~tDM|KYebu=W zbBo0=HcK{hKF~wQz$(kGz(Qhc$rj3E!j$^f-8*G(AZ2_murPEE+FP z1Lah|A^@e{U|Z@foa__ldu%eBp&?neoo9oV4u9lErFFYo@%hk` zwz_*_Ne^P0^)_B}UovRyjh*1;yzg%_Ch%R%7XUXa*k%~Wwqqi7Yx1uAOK0Gg!gNa} zy0BOSlBe9cm%gbLU_qJWy1?Y>*fI|e*6j-bu2diKembf80Xx1}(6(Tm*8e(H9c# zSIsz2d%>*3=@vTkQ4k~^_1xk&$oGWYw_uKMi9uZTeQzld`vQd+HDF3gsCHSS{G zY$lWgB*q0vCL8V~bfJ=RN$Z8|mi=vSN(_D^uwwERAX;ZF5&DA^kGr-(zKtl+Ez>nN ze_0yPf58cWInQ>lmZ72^T@+!0@=s$u1qqc~O+?`Yc52F;8b&NJ}6A-h^A z#7f;=JUfpOGDt~o*sirv6{*tz%yy$-6mioO>?kwsm%xYkGtJ50J#yO-Tp}NT#)M(WwIhkWaTN=-jiVd&5(~U=bGEtry2+ zw)0~GHMi&nj$F2n`|fk%O`l;Ddsr5A!&_}hUQ#Lj`mF|+URYKuv3X=ZV7#1$c=n;-k+Q;i;uFQX9Q}vDPJLQTXXHIY6*0sV1Y`yP45F%=!KX^lN7F|=y4Y4h- zVcL@OniswU9?)_oVAL7R#AGWLT~mT(e)tx6(mveC!{6WX2Eq^rJjQ2EO167bBzq4A zY>pZd9&)L5qx@--KPmZe>|(>j!NF}K3H=)69SDr*GOe&xkAo#HJ{pj@L&@_PntdA} zxCvD~as4N(LQoRq;pwMvrC_6=^0462sG!JK^XHo!p?e!sC+=g8oudr)_|U7(z34s9{sC?XuCB#i=X~Z zcqp8_%6Q5ocF{#W=OPm}mVcS(+3ggu zpQ8w{+v99=pDL>^I?QL^a#OXklSyh2Qbn#kguTKuJCQqGn!C{*8iw&*!_1%O z^xWs#&AJKBFS)6xp&yDrGO;2SLcXtig;F!41V=0TcIWm{=!8jo&peJf>l!y*rcK<< zqqlViitB!ye(nHpP@R;!&}G(Aa<(eSREf4`Tg%?^9VbaGVv8L+;FM23-$|yIQV+(3 z&N+!sc~1}Q2i-(Cv2_~yhv>5IW~E(#1}Q@A9PDv?OPXxG~ACODeW>bMWV|wgy z(-@E`rzZ@!Teg@V&^~1xt|AWaq?Fe<4X$3w0bg(H`Qjwi5jR}LBVX-8k_QRB(@v!Z zUHrED=FXEfl@1POEJpOGMMb_Lp544APa73ZwJWPjjmT$R0z3ARb;t{Bbj*pRj}2;@I8hJAj2m*#B)h{- zRlV5!L;Mi*jOu3zAFDI>@)QyAeDd)?Tw2TSstIUBR%pnSx(jMWYA7)fwTsP z!fulcLI3snxSzGsoP<}Kd7OE3? z&kRsJp;m56ghp3!o+rfG{Q7M%+4g>EcShT*04HCOfovOnQC*cx%ed3WrQimPK7g1z zWGT^pqh^oLKkQ89E~n$DsoKQzk^@PzDJBcaj`enuqfpFbU-hDT zbSS9sgjMwoxC3~%pqg#KtTxRc6>~7Cj*4S3>L`2)L0P7zpT*N$Sta<9Y&Dm(Q3+nw z#&NK>_H_oSyp-8P{xj2Q@{epc@wf8vr@u$N!Lrn! zwZUPXyl^I#xv4X@Ki~5l>PZJkOlK1YEccLs!d+(%+w`|>-P{)$hI@5_-t0+FFN!W# zba7$eOHb>uwF-8vID8)9sOj0hR&ed-l&4E%pCQ40@K6rrYhIW11}A69ffrY#mG*;$K*4%@A>k>QW|%G$JdaL@>BY(Ue(_|f_J}EwiRYQ zbtX%!GKX8xo*8v}64hV7)7{v$lv6RA8zf##{>UOQy(A9M7JJF9W23IHmki$!)btAJ zf%wBq3rfSomutnIwTXL%eUvs8Y!yfzU7W6zF&;b+hm)0(+DFNsGU-3>H@JJ&Z;-$0 z+>A(-E*r-!in8F)+0mv5p7cX~PeSd)66W~wpY-Yke@Z;TT5h1~F|zKN^rpSaA=Sd4 z%%$+5k}48=iNV4< z;yNA1DK_@UItz59mE>l2_PT1)j_ z7Bx(sc;rmOok+Nfxotk+!7;ci>+M2}_Um!o4P8r#6{Gip#1{pBqK zg`v)1xK7P=N=Lt*4!9{^zV6H>UafJ#W)`}oi#fr4(-bAWZh7fge6DLQTlF4h3OVgB zGT^C0=Txfwpv4TbjA~>&lh6%r4WrK0nJ4`4vYz&0Ly%<>Ojr`3oQzHRner zkz&@p&?(|MU$#RH(6{;}9;3&F-`HohfioV>GQ~_`u3dd`th)a6uGIY<@9XC;r#63< zSEBB+|IBd1N_MwfYB4|V;v66Q^tK+cG^GiitGR%`9(HJYk;}QYGijXJ=*2`s_JLbe zl7N|+B zDj2kSLJV->z=bfA)&tU=kG9xUw>s3TE=-El&ydeZIeDu3XkRl<86s*nUrd2O9J>a6 zQ<;0sn0XheT#ujJ@*-OaO~;McLaW7qyKbmBs980oWF)TPh=*UlN2_>R^aL=&xNKe* zwsM#5&T8RiCDS8J@dsx}xvl^_j`FTw*BwdnGTTpLlv{aOOYdHrtnfZ7On(`A8uRD( z#)|O0N9fhfCwF@Ir=cRu*<^v%4g0A44KKf1e`>(nLgZcMC)}(mfBscv1tJc4p55&h zGjn2L3vn{_SVIxYcL8PyPm5|lqFr5!SxiQ}^bXljlrh6EUMxFLlzq zinQAv&F-f=`57C^ndUpwY$%hhLi>}oEim`yM>s5E#gZolnE%~MAuJ>Cgd zK7qz?PNjQtI$U>7xM0(SYFWM&An|Y4c?c3)uaM6TU#qG`Rn_+~;=2#i% z(WSL64;#5R%M~}>Y<8cMc#L3NusEUbVK8HK8vrg*{Oz+%pL^0jf7r+<%4;qIhUiD? zT;E31dmMPERdyYiZMrxy@Kn&=f1d%ZW%PGwAiF>3OyPY9)Um{aTafrLcq_-9VSmH_=W z_jo`Uj++^kv}um3N1;d#sfpln4>G3C1`e{TtV-u|xGLLQ z+08s!CLZ8DE`KjEa_Ri|X&0Iz} z1BB^scFbS74N0_Je9JVmq4E-Aj)DgG8*>-4u$gihBAl`}A99x?V8Y+4|JRRHK%7}* zCC&dq(?2pY-uRnXuhNl%M2)z;kOkDw7~Ko7;T$Kf=Z>1^c9z!O*r&{aolMPm6Z zt4Ust^JA|%gLmZKp#O2*cKX<@X7auX3R@Y7`m&hy>zOz#p5Lk}7Cg;B%=F8k(xeYD zuWc{t>;KYxKQG6=W}cHE?i3-?Gv^^b^lGjoZ`FJx!Dk~i&GuGY{aW)}V5DapS82>$ zZIMVvd?P<{)kplz_^Mtynd%FAm0p7;Nor1*bl z`Nu7%=ShNel*U0a>dE(uB!q;9TItlBoplX(fOt#t;J2Y1|eKp?Ct z`ymAHLp1v>Vi^G*5>!egYS?p{al)fmuq&4S`Y<&|R+wi9NN`1(Y0tJK$9o7*+jyt{*O~3rPkNh}}B!iF6 ztIr&dV}MP^9=Kn1jiqViz^1i6(FuO`YSSag!=CpQtrA^J^S6M`$X5tl1{ba*9wP(& z|1AE0IKPVU{r_F;Lw~Rm(WbL_iBGJ*U_WDt45f=0_Yxb`6lN&AIYMqVx7d{J%3_&w z7wt_VBbgIp=99XrwWML=MhBnof*Wnd|8At!8;ze5{4h^F82#cl?7oml{FJ%Uv+CO5 zulXsgKu}tiUeDU81?2Q6da;C4J{m4g=zIj#<8vy8!>KWiXjwvy4MKf6(f`>mSdsHtfbWnYls5G!>B zb*3zQ#77_nK@fkx^T&?>b{q$GeL3fRwN8x#!02Y;IkB}&wG%+7<@D@q9Ksl-p%a%8k3AkheZ^RZhyE2sYP{w)L&cg zt%?3i0am9MQvT-s9|S@yc@Lx(%@IGpT&c5i6|?(@+a8pRPi*-01s`OKbY!u;daYZC zzD1zH%+KFj_r@Az=`4HuoCjy1CMDrI=IhZAjhDxl%Pan2*{{(*^1y+As$O@ERpWL8 zRgS#hueFANY9zv{)KtyZV%>FM4UJf}<{!J@*T|$@5(Pw+6bn@NQz)gWk3+j7y14BK zpSCU?-1`PXa z4u8IeCPF+(s3FeB$7k^_<8%2K2x^I^44Z=6_x?2$3r{F(m(~WKH8Agh-@1HcZ9^>n z)vqARgKJm2x}AR0AEhS$`t(UAdd4T8#O&9ak{Ij;OS~vT0Ifz2gZQ}8HdLy05ScHM9lyAy8d2N9;V%pqWkL~39o3VX(-JHNLNd(V(P`50KO__ zy*|6z41uzx?I0J|UOKLRr3uiM8)gyLe0u*HvoyU7-+!f7K#FCqA`=#2cyo)z4@ukZ zFBfFJF$B%a#5~LJ&?PP$tV_a!_4D&d+df`~?^`5!4^3^d3b?@VMi-8~ZQ?o?)*4j` z^pvyYSi0;n!ox$k}GzC~X(occ*}171Z-dxHCSZETDL zQ1JWsU&q(t5FQpo(d{Vwi{<|jH{wpaQk#>%je>bj~*Go?A;6Y~_+s3@66KFfl9&WL@vE$cNYb}|#ON$%`_i`k7nAI$MGb-7 zn`}b*5T)>s$QR>eYKxQo;JXV$?UW@rh@XGCh|DomY zQT6wMk#M0i{MXmefRg0(iR$X+8RwVpM}=oY!n{LpPaW^CQvOVm;v_I!HKOAYnN}MJ ze-bvuljd`z@WCn%#7M)Y@`zAGIpx*%%~8<0cP#I|UCR)f#UR$r`iT5nFOEZOypQSi ztVynC@AhAwKhYR@5IIx(RyRlp5fDhwU!>Id74!ekj53kA)7qM{hB>5teac9-Rjx}ifTe)x^32V|G`S4JE5;WQQYg!`QLV2$P?hk+wA)*`#>yHF9{}* zWNm?2eGuILhS#ka?*TG1vPz5h7yC-rtw%f|Gp>#Qmr%r92S<;mX0+t;-rr92?h*yU53i9@qQ1y{DZ)We40Hp8ZPPo4Q`@8$0!#`D{e$6E2EodE1r^>JYq13N6;@RL-^e7WsYa3Z)z;1lo zBD}Jx{PGuwO0b#PY&ZR(I)4pKQW_8VKp^a#-mP`B%lL^H5mB$c&S{^2nY@JU7|AF# zVZWstDP;Bkn5&0@A>-W7*5bY+sL199n})SiztTtZ4nrH{@nV5o>Bi#0XFc!kztruyQrQX+mwdVD-^T<#hO7Nm`QZ(` ze`>$plG3AGQB3G&+eMS!B^_OW_P#E38T;!PZ>s3?i~01w28DCy$W;f|a|wUEeHJ$i zWjH=>L%D9E8$K^Vv*y!)BHjQZJDuO|>SQq0k8;7WvplB~0^H`Wni<-?-TN)KGiamm zz32bX3abix?}4AyA77^LjVp!Xi=9D$_k$~Y4_%)gk@e3gdyW$r>Ac0MkFMz(PID^a zMOS6d143+53S8eMpZMvwbpq}eoq+YfkIvFNTc*GENV7CT1Mtgm>+^MlP0Lb03!+(m z4>}x#dB->!QT*c3C}fhl8q^#9nI|s98$YicgJmk~HfWpGP8BJJLa4vgJx4>&yu&i; z{v*f%T%ZipD*?{(&%ccyZAbT5JyNBQ7P}1D@&?E7Z6fEPn!+2`nriw_{}3UN1yiYA zbN{>v#*GpInn@;Li_!{ctl)`pcwBn;`-Y2cAY=P26Hfl|qOwZ+%jktm zx`0N14GkaJ5Fn!}bV%C2T_k$uxb58|-DI17AL=1R$o9SC5x(Ki=p9~ey_(Fz_+{uz z?1LH<@0M0KeHQ=!wRi3DP^WD_ha7TTEt4X2&=I2&GD%t;w^ExT=TxgDk%|~J9;ZUu zYIS0x?I}eLu~Nt>O+~TWTZs)rqLjfFljHlndFD5xM}O|;egDv3^U=)jcOS0%x~}`a zukZJZz@2*^k()r_-BI;dsvpDXT>Xt{ltJtVL7(s7#-U}ckO3lro~cRSTb%_c!jup| zEsXmhra9SLLSJptJk5w%2QON*Ll=6j8U4y7b?P}XGC8N5oWDtZ+-Wfj(Ef zsF$8phO&Q+S`=*4!s}2OW>J-%)VxG+q=-nGCn;zE=5`zl_MO6ekN}&W#{?w6@wMtf z?zFQ@4qiXv^z$<{DzT_k_MEkRTQRwGraCa+nPro?I}{?ti`;KM)aIbX`JCrsg{2=Y zxs9PjXuZ~3TAT5Qh~Os!di5Jb_l*~R$fED+p=K$KDrbubg=wZJQ`L^M>edY=gJ?!i zj1{Baw{oKAtRmOB*}{7SCuwOyOu`{`tOQ3BQ88tb+h-K?sga6}9o>NBZwirdQFjxF zY_T$M{zH$A60#K>Mu>_^s(G6Ew%XQBCPK~a@m%JQ<*Em`)2f07`^SsB%za56PSAhG zIBF~LHv_{#TTI0WbSEW&y&q_`AFmjO5@_A@RMUO6d4zFgM=x;en?oi{m%quMQ|$Ps zNx`>@`15rW=deDGNC#^Zlbd(N+IjpSroANojw^6GZN_Y-V zobl1&+c7I@JR`@b@y%SJc+O&oA4eULgBD@0+4l;>e*b9_>pDDB(%hC2N=~w7gobEB znQpE-uSqY+_(<|?>NLyDR-BQOqZ7Y%h?SEx)od3zS34{#rkFIhKET?l^0SqASXkKg zxHh}tw-E2OnnWi_oUHjv18Q~MRBAtyW%K(F`r=aagO8Y4tB5?*8fvlT zCVX{9wb9cNsR-2_5m77TN>=0Jspv;J_2Can*xHZ%{ENNfe+=&bdg!#R)C))KM_q3g zj;GlvlC`?kX4fwS1-9+{JFw^|LooYzI*`VpU>^GSpVp1>OyH=)3I9wA(9zDQC!Nf# z^aO4@6#Vzg<^vz=3Ew0Zo47Fq!9)21@D9!CO|iCJ z@~UOr>>3Xl0%P@K>*W0T_CPVA#*La-aQ}r0wR(0>Ah&prk@tOd#v`e%vxGNELgro8rK7+GNJB}&_v4WtZJA|NYoNBwP88DKee3KAEc>)k~ z++>UFH@bi>r$cx(9M#&{KJN*-NIYTuUG51c>2A{W zk54x$fY*H|Hz#9jL*DKuajFDdnjxRDR79k1P|5Y=oT1!~b&^yh9+=!)2?iYpX`AghwgGesvVTh+5TtKDAy*3oz$WP=_|quj&*vx zE-F=t%!B+qtuQgDJ0rU5@ zE2IMIXh*WLmYM^h{!AzCo~!XH*?4O^$gVE&tmBMA$v%Pr+nhn0B~SW2EAAO!VojiY zo%LU^Wc=D%(6CCO zG<*uXsYp_z{P*t<@|Vp?94gFsx%iZjTTj@)0$0ltB7*A-?63k!ZoO#BefqGZ@^hCo zxG|b9pV}}tdt>|(112~PTE~lfxyVX4C(mpaX7Nf!7h38hXq76h#!I9sgUC$f?f}o>kTu^({j)HV`XVJ zh>Uks-EE5`wDxh#&WELCzGn)dmY^I9gi>2uLo0~g2NcC309nzVpIN@3q>Bg_a1N&V z+h=?LOiMLek4;NXxw-cEu50{Lm=k%0$=!w8j$xwI+wsA2L%q(v!(~ac?iVm)f<8@M zHr18W1T?dH_8vf@6xQh&bnZ(BWrbS9GOs8k0*n3v#Q=vBuAw_{8+hLE=uO>`p<ILr)PmI=B@pH}r?v=AGzP+hjEV$Qp&~1-xCyS)tKm8PV!>RAc!^f=$}? zfB^g$S2aB%*na`8Ra$Zk5Q&Ng&V#hWkKKw<6#v2`u;>>8BJb`5`0wovy*#C5cam}s zTuiJC$gg*N&;D^*)UElx(Gaup$y>4Rg9(VV{F?*7u+VnHmf9d&cj6pkW}VnVerkw0 z)YNA|E8tVU>c#z!=H!3EzQu@vAD6b?_HORVE+8^Q9hQweW^hKE5)TWu%A^}YQBryZ zefzlweP(*}0!&>Upi1zNwSIOs0iT|gAk5gh=aLW>ZCGpM9@K3S$F6`nOG6V0X=G>9 zmb(4!{csa@v;MuAfis@sPxfUw5>z{rR^iY+=C@5khV6RIj7j%mwwc)x%7-D3)=B_g z9R>q#&r@tTKuhU4uw$fpKzlId5Cns22Yg=?1((6ARrb!lbaCM0RSq_4bK1V+fm6&j zYGP1EP~~#T(3hD%(yo>|wh`R}8Tm~qgg1n{H}Xa9>yzuuyFZI{oRg$E_&P_3tTarC z&2BRz$PsON4)-Q)XItM9Ppb&cF<}I5CuXA9|qw;DK*H|h|WSX(EX-z>8vOI zKwWX~+NGqy@z>|D*^>H%FTfe}X_LB*OsKUbfo*PZ(S=;TtTu^(V&7VW5^`03_2o5b z1CRg5T0ytX!?C@u&9B?dr{3r}QMG9+^K3~BS844yGbj@%5!AOUurIk^C%fvBudf&L zco8;H_G&f#tAB0N>?kTBnoE&?H|l+&IW%PRGQR6b4GGoQo>!ki*wllAeQz!Id0T6& z=*T{yH4r+Owdd)b-0%SVoab#%Qa5&gDt2_CEB@;wfzg*{(jZBDONSZpf?8~HLkGf> z=?Xsx4878qY&y#S2r@UkYZZN=9t@9GeU})fW%cS@-&NL-Sn%^^A_AE+J;{k6Q%2mQQ-5Y>zsh3VzpPho?@zlHudg@cye#bt*>YBfi$sNX zB~)MVVfAL*|L&~$eiQ}8p)<}cG)1K?V?U<`TIj<+K6Gb6OfFP6<$8ux`)w<_PRfS) zd4er=pgU`}hw@Vwq4p6|VRekhiO$`ae8HTrl#-Q`i>}&DPD}QycuHD5c{QANWZC2X zbZ?Mk(kR5lfx~Xt#EgBnCodO`-ah$a}AcY3y+|ZX$is{lc2jm)AJf zJ1pLJVJp9Q1+|pdV0DiDT*x8uy*oVD*wBrc%_sr&A73)3t}8eTmBM@go%@mxbFF`; z7A?w#$=!&%Z8Ck7_K~mA@4_wI@6Hfl8_hO4xw9e5+!h!qL1f%<>{J|Xq>$L7V6e* z Date: Mon, 10 Apr 2023 19:42:15 +0800 Subject: [PATCH 292/311] Refactor PrintHelpCommand: Parser should not know what exact help message to print. Instead it should just parse the user input and call the corresponding commands. Hence, the specific messages to be printed are now handled by the PrintHelpCommand. --- .../java/utils/command/PrintHelpCommand.java | 149 +++++++++++++++++- .../java/utils/parser/CardKeywordParser.java | 35 +--- .../java/utils/parser/DeckKeywordParser.java | 20 +-- src/main/java/utils/parser/KeywordParser.java | 30 ---- src/main/java/utils/parser/Parser.java | 36 +---- .../java/utils/parser/TagKeywordParser.java | 20 +-- 6 files changed, 155 insertions(+), 135 deletions(-) diff --git a/src/main/java/utils/command/PrintHelpCommand.java b/src/main/java/utils/command/PrintHelpCommand.java index e4cfdfdd03..12c86aa922 100644 --- a/src/main/java/utils/command/PrintHelpCommand.java +++ b/src/main/java/utils/command/PrintHelpCommand.java @@ -1,23 +1,162 @@ package utils.command; +import java.io.PrintWriter; +import java.io.StringWriter; import model.CardList; import model.DeckList; import model.TagList; +import org.apache.commons.cli.HelpFormatter; +import org.apache.commons.cli.Options; import utils.UserInterface; import utils.exceptions.InkaException; import utils.storage.IDataStorage; public class PrintHelpCommand extends Command { - private String helpMessage; + public static final String CARD_KEYWORD = "card"; + public static final String TAG_KEYWORD = "tag"; + public static final String DECK_KEYWORD = "deck"; + public static final String GENERAL_KEYWORD = "general"; + public static final String EXIT_KEYWORD = "bye"; + public static final String HELP_KEYWORD = "help"; - public PrintHelpCommand(String helpMessage) { - this.helpMessage = helpMessage; + protected static final int FORMAT_HELP_WIDTH = 200; + protected static final int FORMAT_HELP_LEFT_PAD = 0; + protected static final int FORMAT_HELP_DESC_PAD = 10; + + private String model; + private Options[] helpDetails; + + public PrintHelpCommand(String model, Options[] helpDetails) { + this.model = model; + this.helpDetails = helpDetails; } @Override - public void execute(CardList cardList, TagList tagList, DeckList deckList,UserInterface ui, IDataStorage storage) + public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { - ui.printHelp(helpMessage); + + switch (model) { + case CARD_KEYWORD: + ui.printHelp(buildCardHelpMessage(helpDetails)); + break; + case TAG_KEYWORD: + ui.printHelp(buildTagHelpMessage(helpDetails)); + break; + case DECK_KEYWORD: + ui.printHelp(buildDeckHelpMessage(helpDetails)); + break; + case GENERAL_KEYWORD: + ui.printHelp(buildTopLevelHelpMessage()); + break; + default: + // Should be exhaustive + assert false; + } + } + + private String buildCardHelpMessage(Options[] optionsList) { + String[] syntaxList = { + "card add -q QUESTION -a ANSWER", + "card list", + "card delete {-c CARD_UUID | -i CARD_INDEX}", + "card tag {-c CARD_UUID | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}", + "card untag {-c CARD_UUID | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}", + "card deck {-c CARD_UUID | -i CARD_INDEX} -d DECK_NAME", + "card view {-c CARD_UUID | -i CARD_INDEX}" + }; + String[] headerList = { + "Adding cards", + "List all cards", + "Deleting cards", + "Tagging cards", + "Untagging cards", + "Adding cards to deck", + "View cards" + }; + String helpMessage = formatHelpMessage(syntaxList, headerList, optionsList); + return helpMessage; + } + + private String buildTagHelpMessage(Options[] optionsList) { + String[] syntaxList = { + "tag edit -o OLD_TAG_NAME -n NEW_TAG_NAME", + "tag delete {-t TAG_NAME | -x TAG_INDEX}", + "tag list [-t TAG_NAME | -x TAG_INDEX]", + "tag deck -d DECK_NAME {-t TAG_NAME | -x TAG_INDEX}" + }; + String[] headerList = { + "Edit existing tags", + "Delete tags", + "List tags", + "Adding tag to deck" + }; + String helpMessage = formatHelpMessage(syntaxList, headerList, optionsList); + return helpMessage; + } + + private String buildDeckHelpMessage(Options[] optionsList) { + String[] syntaxList = { + "deck edit -o OLD_DECK_NAME -n NEW_DECK_NAME", + "deck delete -d DECK_NAME [{-c CARD_UUID | -i CARD_INDEX} | {-t TAG_NAME | -x TAG_INDEX}]", + "deck list [-d DECK_NAME]", + "deck run" + }; + String[] headerList = { + "Edit existing decks", + "Delete decks", + "List decks", + "Run a deck" + }; + String helpMessage = formatHelpMessage(syntaxList, headerList, optionsList); + return helpMessage; + } + + protected String formatHelpMessage(String[] syntaxList, String[] headerList, Options[] optionsList) { + assert optionsList.length == headerList.length; + assert optionsList.length == syntaxList.length; + + HelpFormatter formatter = new HelpFormatter(); + + StringWriter stringWriter = new StringWriter(); + PrintWriter printWriter = new PrintWriter(stringWriter); + + for (int i = 0; i < optionsList.length; i++) { + formatter.printHelp(printWriter, FORMAT_HELP_WIDTH, syntaxList[i], headerList[i], optionsList[i], + FORMAT_HELP_LEFT_PAD, FORMAT_HELP_DESC_PAD, "\n", + false); + } + + // Fix for extra newlines at end + return stringWriter.toString().trim() + System.lineSeparator(); + } + + private String buildTopLevelHelpMessage() { + String helpMessage = ""; + + helpMessage += + "Welcome to Inka! Type " + HELP_KEYWORD + " at any time to show this message" + + System.lineSeparator(); + helpMessage += "== Deck Management (run ` help` for more info) ===" + System.lineSeparator(); + helpMessage += formatHelpLine(CARD_KEYWORD, "Card-related functionality"); + helpMessage += formatHelpLine(TAG_KEYWORD, "Tag-related functionality"); + helpMessage += formatHelpLine(DECK_KEYWORD, "Deck-related functionality"); + helpMessage += "================== Miscellaneous Commands =================" + System.lineSeparator(); + helpMessage += formatHelpLine(EXIT_KEYWORD, "Exits Inka"); + + return helpMessage; + } + + private String formatHelpLine(String keyword, String description) { + final int padLength = 12; + + String formatted = keyword; + // Right-pad to PAD_LENGTH + formatted += " ".repeat(padLength - formatted.length()); + formatted += " - "; + formatted += description; + formatted += System.lineSeparator(); + + return formatted; } } diff --git a/src/main/java/utils/parser/CardKeywordParser.java b/src/main/java/utils/parser/CardKeywordParser.java index 050a83e88f..1256660857 100644 --- a/src/main/java/utils/parser/CardKeywordParser.java +++ b/src/main/java/utils/parser/CardKeywordParser.java @@ -89,37 +89,10 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { Options untagOptions = new OptionsBuilder(Parser.CARD_KEYWORD, UNTAG_ACTION).buildOptions(); Options viewOptions = new OptionsBuilder(Parser.CARD_KEYWORD, VIEW_ACTION).buildOptions(); Options deckOptions = new OptionsBuilder(Parser.CARD_KEYWORD, DECK_ACTION).buildOptions(); - // Combine all action - String[] syntaxList = { - "card add -q QUESTION -a ANSWER", - "card list", - "card delete {-c CARD_UUID | -i CARD_INDEX}", - "card tag {-c CARD_UUID | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}", - "card untag {-c CARD_UUID | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}", - "card deck {-c CARD_UUID | -i CARD_INDEX} -d DECK_NAME", - "card view {-c CARD_UUID | -i CARD_INDEX}" - }; - String[] headerList = { - "Adding cards", - "List all cards", - "Deleting cards", - "Tagging cards", - "Untagging cards", - "Adding cards to deck", - "View cards" - }; - Options[] optionsList = { - addOptions, - new Options(), - deleteOptions, - tagOptions, - untagOptions, - deckOptions, - viewOptions - }; - String helpMessage = formatHelpMessage(syntaxList, headerList, optionsList); - - return new PrintHelpCommand(helpMessage); + Options[] helpDetails = {addOptions, new Options(), deleteOptions, tagOptions, + untagOptions, deckOptions, viewOptions}; + + return new PrintHelpCommand(Parser.CARD_KEYWORD, helpDetails); } private Command handleList(List tokens) throws InvalidSyntaxException { diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java index 55bd089041..22f7f44686 100644 --- a/src/main/java/utils/parser/DeckKeywordParser.java +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -93,23 +93,9 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { Options deleteOptions = new OptionsBuilder(Parser.DECK_KEYWORD, DELETE_ACTION).buildOptions(); Options listOptions = new OptionsBuilder(Parser.DECK_KEYWORD, LIST_ACTION).buildOptions(); Options runOptions = new OptionsBuilder(Parser.DECK_KEYWORD, RUN_ACTION).buildOptions(); - // Combine all actions - String[] syntaxList = { - "deck edit -o OLD_DECK_NAME -n NEW_DECK_NAME", - "deck delete -d DECK_NAME [{-c CARD_UUID | -i CARD_INDEX} | {-t TAG_NAME | -x TAG_INDEX}]", - "deck list [-d DECK_NAME]", - "deck run" - }; - String[] headerList = { - "Edit existing decks", - "Delete decks", - "List decks", - "Run a deck" - }; - Options[] optionsList = {editOptions, deleteOptions, listOptions, runOptions}; - - String helpMessage = formatHelpMessage(syntaxList, headerList, optionsList); - return new PrintHelpCommand(helpMessage); + Options[] helpDetails = {editOptions, deleteOptions, listOptions, runOptions}; + + return new PrintHelpCommand(Parser.DECK_KEYWORD, helpDetails); } private Command handleRun(List tokens) throws ParseException, InvalidSyntaxException { diff --git a/src/main/java/utils/parser/KeywordParser.java b/src/main/java/utils/parser/KeywordParser.java index bda0d9ac43..0020ee108c 100644 --- a/src/main/java/utils/parser/KeywordParser.java +++ b/src/main/java/utils/parser/KeywordParser.java @@ -1,7 +1,5 @@ package utils.parser; -import java.io.PrintWriter; -import java.io.StringWriter; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @@ -10,7 +8,6 @@ import org.apache.commons.cli.AlreadySelectedException; import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.DefaultParser; -import org.apache.commons.cli.HelpFormatter; import org.apache.commons.cli.MissingArgumentException; import org.apache.commons.cli.MissingOptionException; import org.apache.commons.cli.Option; @@ -220,31 +217,4 @@ private InkaException convertUnrecognizedOptionException(UnrecognizedOptionExcep */ protected abstract Command handleAction(String action, List tokens) throws ParseException, InkaException; - - /** - * Combines help messages for all actions into a single message - * - * @param syntaxList Command syntaxes - * @param headerList Descriptions of actions - * @param optionsList All action Options for this keyword - * @return Formatted help string - */ - protected String formatHelpMessage(String[] syntaxList, String[] headerList, Options[] optionsList) { - assert optionsList.length == headerList.length; - assert optionsList.length == syntaxList.length; - - HelpFormatter formatter = new HelpFormatter(); - - StringWriter stringWriter = new StringWriter(); - PrintWriter printWriter = new PrintWriter(stringWriter); - - for (int i = 0; i < optionsList.length; i++) { - formatter.printHelp(printWriter, FORMAT_HELP_WIDTH, syntaxList[i], headerList[i], optionsList[i], - FORMAT_HELP_LEFT_PAD, FORMAT_HELP_DESC_PAD, "\n", - false); - } - - // Fix for extra newlines at end - return stringWriter.toString().trim() + System.lineSeparator(); - } } diff --git a/src/main/java/utils/parser/Parser.java b/src/main/java/utils/parser/Parser.java index 7acb135b8f..27bb03e531 100644 --- a/src/main/java/utils/parser/Parser.java +++ b/src/main/java/utils/parser/Parser.java @@ -14,6 +14,7 @@ public class Parser { public static final String CARD_KEYWORD = "card"; public static final String TAG_KEYWORD = "tag"; public static final String DECK_KEYWORD = "deck"; + public static final String GENERAL_KEYWORD = "general"; public static final String EXPORT_KEYWORD = "export"; public static final String EXIT_KEYWORD = "bye"; public static final String HELP_KEYWORD = "help"; @@ -64,7 +65,7 @@ public Command parseCommand(String userInput) throws InkaException { return tagKeywordParser.parseTokens(optionTokens); case HELP_KEYWORD: - return new PrintHelpCommand(getTopLevelHelpMessage()); + return new PrintHelpCommand(Parser.GENERAL_KEYWORD, null); case EXPORT_KEYWORD: return new ExportCommand(); @@ -77,37 +78,4 @@ public Command parseCommand(String userInput) throws InkaException { throw new UnrecognizedCommandException(); } } - - /** - * Gets top-level help message for Inka - * - * @return Formatted help message - */ - private String getTopLevelHelpMessage() { - String helpMessage = ""; - - helpMessage += - "Welcome to Inka! Type " + HELP_KEYWORD + " at any time to show this message" + System.lineSeparator(); - helpMessage += "== Deck Management (run ` help` for more info) ===" + System.lineSeparator(); - helpMessage += formatHelpLine(CARD_KEYWORD, "Card-related functionality"); - helpMessage += formatHelpLine(TAG_KEYWORD, "Tag-related functionality"); - helpMessage += formatHelpLine(DECK_KEYWORD, "Deck-related functionality"); - helpMessage += "================== Miscellaneous Commands =================" + System.lineSeparator(); - helpMessage += formatHelpLine(EXIT_KEYWORD, "Exits Inka"); - - return helpMessage; - } - - private String formatHelpLine(String keyword, String description) { - final int padLength = 12; - - String formatted = keyword; - // Right-pad to PAD_LENGTH - formatted += " ".repeat(padLength - formatted.length()); - formatted += " - "; - formatted += description; - formatted += System.lineSeparator(); - - return formatted; - } } diff --git a/src/main/java/utils/parser/TagKeywordParser.java b/src/main/java/utils/parser/TagKeywordParser.java index 11342b7e6b..71f85f9c47 100644 --- a/src/main/java/utils/parser/TagKeywordParser.java +++ b/src/main/java/utils/parser/TagKeywordParser.java @@ -66,29 +66,13 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { if (tokens.size() != 0) { throw InvalidSyntaxException.buildTooManyTokensMessage(); } - Options deleteOption = new OptionsBuilder(Parser.TAG_KEYWORD, DELETE_ACTION).buildOptions(); Options editOption = new OptionsBuilder(Parser.TAG_KEYWORD, EDIT_ACTION).buildOptions(); Options listOption = new OptionsBuilder(Parser.TAG_KEYWORD, LIST_ACTION).buildOptions(); Options deckOption = new OptionsBuilder(Parser.TAG_KEYWORD, DECK_ACTION).buildOptions(); + Options[] helpDetails = {editOption, deleteOption, listOption, deckOption}; - // Combine all actions - String[] syntaxList = { - "tag edit -o OLD_TAG_NAME -n NEW_TAG_NAME", - "tag delete {-t TAG_NAME | -x TAG_INDEX}", - "tag list [-t TAG_NAME | -x TAG_INDEX]", - "tag deck -d DECK_NAME {-t TAG_NAME | -x TAG_INDEX}" - }; - String[] headerList = { - "Edit existing tags", - "Delete tags", - "List tags", - "Adding tag to deck" - }; - Options[] optionsList = {editOption, deleteOption, listOption, deckOption}; - - String helpMessage = formatHelpMessage(syntaxList, headerList, optionsList); - return new PrintHelpCommand(helpMessage); + return new PrintHelpCommand(Parser.TAG_KEYWORD, helpDetails); } private Command handleList(List tokens) throws ParseException, InvalidSyntaxException { From ffad088251e120e36d7420a4a7c0fe0b5789ec5f Mon Sep 17 00:00:00 2001 From: JangusRoundstone <88696064+JangusRoundstone@users.noreply.github.com> Date: Mon, 10 Apr 2023 19:52:14 +0800 Subject: [PATCH 293/311] Update Card Sequence Diagrams --- docs/img/CardAddSequence.svg | 2 +- docs/img/CardDeleteSequence.svg | 2 +- docs/img/CardListSequence.svg | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/img/CardAddSequence.svg b/docs/img/CardAddSequence.svg index 16bede5306..93e49af65c 100644 --- a/docs/img/CardAddSequence.svg +++ b/docs/img/CardAddSequence.svg @@ -1 +1 @@ -:AddCardCommand:Card:CardList:CardList:UserInterface:UserInterface:CardKeywordParser:CardKeywordParsercreate card to add:CardcardToAddAddCardCommand(cardToAdd):AddCardCommandexecute()addCard(cardToAdd)print success message and number of cards \ No newline at end of file +:Inka:Inka:AddCardCommand:Card:CardList:CardList:UserInterface:UserInterface:CardKeywordParser:CardKeywordParserparseCommand()create card to add:CardcardToAddAddCardCommand(cardToAdd):AddCardCommandAddCardCommandexecute()addCard(cardToAdd)print success message and number of cards \ No newline at end of file diff --git a/docs/img/CardDeleteSequence.svg b/docs/img/CardDeleteSequence.svg index 6ca3e72e04..f8f369c081 100644 --- a/docs/img/CardDeleteSequence.svg +++ b/docs/img/CardDeleteSequence.svg @@ -1 +1 @@ -:DeleteCardCommand:CardList:CardList:CardSelector:TagList:TagList:DeckList:DeckList:Card:Card:UserInterface:UserInterface:CardKeywordParser:CardKeywordParsercreate cardSelector to identify card:CardSelectorcardSelectorDeleteCardCommand(cardSelector):DeleteCardCommandexecute()findCard()alt[index is specified in cardSelector]getIndex()cardIndex[uuid is specified in cardSelector]getUUID()cardUUIDcardToDeletegetTagsUUID()tagsUUIDgetDecksUUID()decksUUIDcardRemovalFromDeck()find deck from decksUUID and delete cardToDelete from itcardRemovalFromTag()find tag from tagsUUID and delete cardToDelete from itdelete cardToDeleteprint success message and number of cards left \ No newline at end of file +:Inka:Inka:DeleteCardCommand:CardList:CardList:CardSelector:TagList:TagList:DeckList:DeckList:Card:Card:UserInterface:UserInterface:CardKeywordParser:CardKeywordParserparseCommand()create cardSelector to identify card:CardSelectorcardSelectorDeleteCardCommand(cardSelector):DeleteCardCommandDeleteCardCommandexecute()findCard()alt[index is specified in cardSelector]getIndex()cardIndex[uuid is specified in cardSelector]getUUID()cardUUIDcardToDeletegetTagsUUID()tagsUUIDgetDecksUUID()decksUUIDcardRemovalFromDeck()find deck from decksUUID and delete cardToDelete from itcardRemovalFromTag()find tag from tagsUUID and delete cardToDelete from itdelete cardToDeleteprint success message and number of cards left \ No newline at end of file diff --git a/docs/img/CardListSequence.svg b/docs/img/CardListSequence.svg index d7fedb405c..bbb3be4214 100644 --- a/docs/img/CardListSequence.svg +++ b/docs/img/CardListSequence.svg @@ -1 +1 @@ -:ListCardCommand:CardList:CardList:UserInterface:UserInterface:CardKeywordParser:CardKeywordParserListCardCommand():ListCardCommandexecute()printCardList()loop[until all cards are printed]print card \ No newline at end of file +:Inka:Inka:ListCardCommand:CardList:CardList:UserInterface:UserInterface:CardKeywordParser:CardKeywordParserparseCommand()ListCardCommand():ListCardCommandListCardCommandexecute()printCardList()print all cards \ No newline at end of file From 7375a36cdce379323f3d089608f4635324e5b010 Mon Sep 17 00:00:00 2001 From: Gujimugger Date: Mon, 10 Apr 2023 20:22:46 +0800 Subject: [PATCH 294/311] Update PPP --- docs/AboutUs.md | 2 +- docs/team/{JangusRoundstone.md => jangusroundstone.md} | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) rename docs/team/{JangusRoundstone.md => jangusroundstone.md} (84%) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 96df87381e..f8ddc7bc3b 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -5,5 +5,5 @@ ![](https://via.placeholder.com/100.png?text=Photo) | Mitch Malvin | [Github](https://github.com/mitchmalvin1) | [Portfolio](team/mitchmalvin1.md) ![](https://via.placeholder.com/100.png?text=Photo) | Muthya Narayanachary Akhil | [Github](https://github.com/lihka1202) | [Portfolio](team/MuthyaNarayanacharyAkhil.md) ![](https://via.placeholder.com/100.png?text=Photo) | Lee Tze Han | [Github](https://github.com/ltzehan) | [Portfolio](team/ltzehan.md) - ![](https://via.placeholder.com/100.png?text=Photo) | Wang Silang | [Github](https://github.com/JangusRoundstone) | [Portfolio](team/JangusRoundstone.md) + ![](https://via.placeholder.com/100.png?text=Photo) | Wang Silang | [Github](https://github.com/JangusRoundstone) | [Portfolio](team/jangusroundstone.md) ![](https://via.placeholder.com/100.png?text=Photo) | Teng Yuan Kai | [Github](https://github.com/iantenkai) | [Portfolio](team/johndoe.md) diff --git a/docs/team/JangusRoundstone.md b/docs/team/jangusroundstone.md similarity index 84% rename from docs/team/JangusRoundstone.md rename to docs/team/jangusroundstone.md index cfbba8dac0..31b05065f6 100644 --- a/docs/team/JangusRoundstone.md +++ b/docs/team/jangusroundstone.md @@ -13,7 +13,8 @@ experience. #### 1. Parser Version 1 - ***What it is :*** - This is the first parser of Inka, which parses user input with long switch cases. + This is the first parser of Inka, which parses user input with long switch cases. Author also contributed to + the writing of several initial commands such as AddCardCommand. - ***Value :*** With this parser, Inka v1.0 is able to run, and we could test all of our initial functionalities. @@ -48,17 +49,20 @@ found [here.](https://nus-cs2113-ay2223s2.github.io/tp-dashboard/?search=Wang&so - Retest the bugs raised during PE dry-run, and flag the possible causes of bugs to facilitate more efficient bug fixing, for example in [#110.](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/110) - Created the skeleton for Developer Guide, and assigned the roles for filling up each part of the Developer Guide. +- Help refactor existing codes to follow software programming principles learnt in class, such as by refactoring + the `PrintHelpCommand()` to follow Single Responsibility Principle.[#233](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/233) - Helped teammates using Mac with `checkstyle` issues. ### Documentation #### User Guide -Add initial documentations for all the `Tag` features [link](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/91/files) : +- Add initial documentations for all the `Tag` features [link](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/91/files) : +- Tidy up the final version of User Guide. #### Developer Guide -- Add in explanation for card feature. +- Add in explanation for card features. - Add Sequence Diagram for `card add -q QN -a ANS`, `card delete [-i CARDINDEX | -c CARDUUID]` and `card list`. From bf07953ab3be95eda235fe49236b300d321b9f85 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 21:02:33 +0800 Subject: [PATCH 295/311] Fix a bug regarding storage exceptions --- src/main/java/Inka.java | 3 +- src/main/java/utils/UserInterface.java | 20 +++++++++++ src/main/java/utils/storage/FakeStorage.java | 7 ++-- src/main/java/utils/storage/Storage.java | 6 +++- .../java/utils/storage/json/JsonStorage.java | 24 ++++++------- src/test/java/model/LogicTest.java | 2 +- .../java/utils/parser/CardParserTest.java | 3 +- .../java/utils/parser/DeckParserTest.java | 2 +- src/test/java/utils/parser/TagParserTest.java | 2 +- .../java/utils/storage/JsonStorageTest.java | 34 +++++++++++++------ 10 files changed, 71 insertions(+), 32 deletions(-) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 92ea9825ee..ad70c6149f 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -22,8 +22,9 @@ public class Inka { private DeckList deckList; public Inka(String filePath) { - storage = new JsonStorage(filePath); + ui = new UserInterface(); + storage = new JsonStorage(filePath, ui); parser = new Parser(); memory = loadSaveFile(); deckList = memory.getDeckList(); diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index f7dccdcf18..ceabc85e5c 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -118,6 +118,7 @@ public void printTagList(TagList tagList) { public void printTags(TagList tagList) { if (tagList.isEmpty()) { System.out.println("\tThere is no tag."); + System.out.println("\tThere is no tag."); } else { System.out.println("\tHere are your tags:"); for (int i = 0; i < tagList.size(); ++i) { @@ -224,4 +225,23 @@ public void printWarning() { System.out.println("There is no need to input any characters!\n" + "Just hitting enter is sufficient to show the answer! Anyway, here is the answer!\n"); } + + public void printLoadBackup() { + System.out.println("The original file seems to be corrupted... loading the backup file!"); + } + public void printLoadBackupSuccess() { + System.out.println("Backup Loaded!"); + } + + public void CorruptedBackup() { + System.out.println("Corrupted backup file! making a new file"); + } + + public void failedSave(String path) { + System.out.println("Failed to save at path: " + path); + } + + public void printPermFail() { + System.out.println("Failed to set file permissions"); + } } diff --git a/src/main/java/utils/storage/FakeStorage.java b/src/main/java/utils/storage/FakeStorage.java index ba372445e5..dab8709002 100644 --- a/src/main/java/utils/storage/FakeStorage.java +++ b/src/main/java/utils/storage/FakeStorage.java @@ -4,14 +4,17 @@ import model.DeckList; import model.Memory; import model.TagList; +import utils.UserInterface; /** * For testing without writing to file system */ public class FakeStorage extends Storage { - public FakeStorage() { - super(""); + public FakeStorage(UserInterface ui) { + super("", ui); + + } @Override diff --git a/src/main/java/utils/storage/Storage.java b/src/main/java/utils/storage/Storage.java index 6f530219e5..7192ca5b22 100644 --- a/src/main/java/utils/storage/Storage.java +++ b/src/main/java/utils/storage/Storage.java @@ -1,13 +1,17 @@ package utils.storage; import java.io.File; +import utils.UserInterface; public abstract class Storage implements IDataStorage { protected File saveFile; - public Storage(String filePath) { + public static UserInterface ui; + + public Storage(String filePath, UserInterface ui) { saveFile = new File(filePath); + this.ui = ui; } public boolean saveFileExists() { diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index f9c858c1f5..c51c468830 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -14,7 +14,6 @@ import java.util.HashSet; import java.util.Set; import java.util.logging.Logger; -import java.util.logging.Level; import com.google.gson.Gson; @@ -29,6 +28,7 @@ import model.DeckList; import model.CardUUID; +import utils.UserInterface; import utils.exceptions.InkaException; import utils.exceptions.StorageCorrupted; import utils.exceptions.StorageLoadFailure; @@ -48,8 +48,8 @@ public class JsonStorage extends Storage { * * @param filePath The file path of the JSON storage file. */ - public JsonStorage(String filePath) { - super(filePath); + public JsonStorage(String filePath, UserInterface ui) { + super(filePath, ui); // Create the backup file String backupFilePath = filePath.replace(".json", "_backup.json"); @@ -79,7 +79,8 @@ public JsonStorage(String filePath) { Files.setPosixFilePermissions(saveFile.toPath(), permissions); } } catch (IOException e) { - logger.log(Level.WARNING, "Failed to set permissions to read-only for " + filePath, e); + JsonStorage.ui.printPermFail(); + } } @@ -98,15 +99,12 @@ public Memory load() throws InkaException { JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject saveDataObject = jsonElement.getAsJsonObject(); Memory savedMemory = JsonToMemory.convert(saveDataObject); - return savedMemory; } catch (IOException e) { String absolutePath = this.saveFile.getAbsolutePath(); - logger.log(Level.WARNING, "Failed to load file from " + absolutePath, e); throw new StorageLoadFailure(absolutePath); - } catch (NullPointerException | JsonSyntaxException e) { - String absolutePath = this.saveFile.getAbsolutePath(); - logger.log(Level.WARNING, "Corrupted save file: " + absolutePath, e); + } catch (NullPointerException | JsonSyntaxException | InkaException e) { + JsonStorage.ui.printLoadBackup(); return loadBackup(); } } @@ -124,11 +122,11 @@ private Memory loadBackup() throws InkaException { JsonElement jsonElement = gsonBuilder.create().fromJson(bufferedReader, JsonElement.class); JsonObject saveDataObject = jsonElement.getAsJsonObject(); Memory savedMemory = JsonToMemory.convert(saveDataObject); - logger.log(Level.INFO, "Loaded backup file successfully"); + JsonStorage.ui.printLoadBackupSuccess(); return savedMemory; - } catch (IOException | NullPointerException | JsonSyntaxException ex) { + } catch (IOException | NullPointerException | JsonSyntaxException | InkaException ex) { String absolutePath = this.backupFile.getAbsolutePath(); - logger.log(Level.WARNING, "Corrupted backup file: " + absolutePath, ex); + JsonStorage.ui.CorruptedBackup(); throw new StorageCorrupted(absolutePath); } } @@ -152,7 +150,7 @@ public void save(CardList cardList, TagList tagList, DeckList deckList) throws S saveDataToFile(backupFile, exportData); } catch (IOException e) { String absolutePath = this.saveFile.getAbsolutePath(); - logger.log(Level.WARNING, "Failed to save data to savedata.json" + absolutePath, e); + JsonStorage.ui.failedSave(absolutePath); throw new StorageSaveFailure(absolutePath); } } diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index b184f99a1b..849b6f28f9 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -50,7 +50,7 @@ void init() { cardList = new CardList(); tagList = new TagList(); ui = new UserInterface(); - storage = new FakeStorage(); + storage = new FakeStorage(ui); parser = new Parser(); deckList = new DeckList(); } diff --git a/src/test/java/utils/parser/CardParserTest.java b/src/test/java/utils/parser/CardParserTest.java index 8ded32b851..525bbb609f 100644 --- a/src/test/java/utils/parser/CardParserTest.java +++ b/src/test/java/utils/parser/CardParserTest.java @@ -41,10 +41,11 @@ public class CardParserTest { */ @BeforeEach void init() { + cardList = new CardList(); tagList = new TagList(); ui = new UserInterface(); - storage = new FakeStorage(); + storage = new FakeStorage(ui); parser = new Parser(); deckList = new DeckList(); } diff --git a/src/test/java/utils/parser/DeckParserTest.java b/src/test/java/utils/parser/DeckParserTest.java index 2f6d4be731..0e8d12ac14 100644 --- a/src/test/java/utils/parser/DeckParserTest.java +++ b/src/test/java/utils/parser/DeckParserTest.java @@ -33,7 +33,7 @@ void init() { cardList = new CardList(); tagList = new TagList(); ui = new UserInterface(); - storage = new FakeStorage(); + storage = new FakeStorage(ui); parser = new Parser(); deckList = new DeckList(); } diff --git a/src/test/java/utils/parser/TagParserTest.java b/src/test/java/utils/parser/TagParserTest.java index 7e17c6481f..230fbe1de6 100644 --- a/src/test/java/utils/parser/TagParserTest.java +++ b/src/test/java/utils/parser/TagParserTest.java @@ -40,7 +40,7 @@ void init() { cardList = new CardList(); tagList = new TagList(); ui = new UserInterface(); - storage = new FakeStorage(); + storage = new FakeStorage(ui); parser = new Parser(); deckList = new DeckList(); } diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index 9a174a4178..497fd9870d 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -14,6 +14,7 @@ import model.Memory; import model.TagUUID; import org.junit.jupiter.api.Test; +import utils.UserInterface; import utils.exceptions.InkaException; import utils.exceptions.StorageCorrupted; import utils.storage.json.JsonStorage; @@ -55,19 +56,22 @@ public class JsonStorageTest { @Test public void load_emptyFile() { - Storage storage = new JsonStorage(EMPTY_FILE.toString()); + UserInterface ui = new UserInterface(); + Storage storage = new JsonStorage(EMPTY_FILE.toString(), ui); assertThrows(StorageCorrupted.class, storage::load, "Expected a StorageCorrupted exception"); } @Test public void load_malformedFile() { - Storage storage = new JsonStorage(MALFORMED_FILE.toString()); + UserInterface ui = new UserInterface(); + Storage storage = new JsonStorage(MALFORMED_FILE.toString(), ui); assertThrows(StorageCorrupted.class, storage::load, "Expected a StorageCorrupted exception"); } @Test public void load_validFile() throws InkaException { - Storage storage = new JsonStorage(VALID_FILE.toString()); + UserInterface ui = new UserInterface(); + Storage storage = new JsonStorage(VALID_FILE.toString(), ui); Memory memory = storage.load(); @@ -78,7 +82,8 @@ public void load_validFile() throws InkaException { @Test public void load_validFile_cardList() throws InkaException { //check if it is loading 2 cards - Storage storage = new JsonStorage(VALID_FILE.toString()); + UserInterface ui = new UserInterface(); + Storage storage = new JsonStorage(VALID_FILE.toString(), ui); Memory memory = storage.load(); CardList cardList = memory.getCardList(); int cardListSize = cardList.size(); @@ -90,7 +95,8 @@ public void load_validFile_cardList() throws InkaException { @Test public void load_validFile_cardUuid() throws InkaException { - Storage storage = new JsonStorage(VALID_FILE.toString()); + UserInterface ui = new UserInterface(); + Storage storage = new JsonStorage(VALID_FILE.toString(), ui); Memory memory = storage.load(); CardList cardList = memory.getCardList(); @@ -108,7 +114,8 @@ public void load_validFile_cardUuid() throws InkaException { @Test public void load_validFile_cardTags() throws InkaException { //check if it is loading 2 cards - Storage storage = new JsonStorage(VALID_FILE.toString()); + UserInterface ui = new UserInterface(); + Storage storage = new JsonStorage(VALID_FILE.toString(), ui); Memory memory = storage.load(); CardList cardList = memory.getCardList(); @@ -125,7 +132,8 @@ public void load_validFile_cardTags() throws InkaException { @Test public void load_validFile_cardTagUuid() throws InkaException { //check if it is loading tag's Uuids - Storage storage = new JsonStorage(VALID_FILE.toString()); + UserInterface ui = new UserInterface(); + Storage storage = new JsonStorage(VALID_FILE.toString(), ui); Memory memory = storage.load(); CardList cardList = memory.getCardList(); @@ -144,7 +152,8 @@ public void load_validFile_cardTagUuid() throws InkaException { @Test public void load_validFile_cardDecks() throws InkaException { //check if it is loading 2 cards - Storage storage = new JsonStorage(VALID_FILE.toString()); + UserInterface ui = new UserInterface(); + Storage storage = new JsonStorage(VALID_FILE.toString(), ui); Memory memory = storage.load(); CardList cardList = memory.getCardList(); @@ -160,7 +169,8 @@ public void load_validFile_cardDecks() throws InkaException { @Test public void load_validFile_cardDeckUuid() throws InkaException { //check if it is loading deck's Uuids - Storage storage = new JsonStorage(VALID_FILE.toString()); + UserInterface ui = new UserInterface(); + Storage storage = new JsonStorage(VALID_FILE.toString(), ui); Memory memory = storage.load(); CardList cardList = memory.getCardList(); @@ -178,7 +188,8 @@ public void load_validFile_cardDeckUuid() throws InkaException { @Test public void load_validFile_deckList() throws InkaException { //check if it is loading deckList - Storage storage = new JsonStorage(VALID_FILE.toString()); + UserInterface ui = new UserInterface(); + Storage storage = new JsonStorage(VALID_FILE.toString(), ui); Memory memory = storage.load(); DeckList deckList = memory.getDeckList(); int testDeckSize = deckList.getDecks().size(); @@ -193,7 +204,8 @@ public void load_validFile_deckList() throws InkaException { @Test public void load_hashFile_deckcardsSet() throws InkaException { //check if it is loading cardsSet - Storage storage = new JsonStorage(VALID_HASH.toString()); + UserInterface ui = new UserInterface(); + Storage storage = new JsonStorage(VALID_HASH.toString(), ui); Memory memory = storage.load(); DeckList deckList = memory.getDeckList(); DeckUUID deck1Uuidobj = new DeckUUID(UUID.fromString(hashDeckUuid)); From e3c6b1cd65387cd0c2c37a6b3489bddf1fa04bd6 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 21:15:25 +0800 Subject: [PATCH 296/311] add ian PPP --- docs/DeveloperGuide.md | 3 +- docs/img/StorageClass.png | Bin 0 -> 59551 bytes docs/team/iantenkai.md | 83 ++++++++++++++++++ src/main/java/utils/UserInterface.java | 2 +- src/main/java/utils/storage/Storage.java | 3 +- .../java/utils/storage/json/JsonStorage.java | 2 +- 6 files changed, 89 insertions(+), 4 deletions(-) create mode 100644 docs/img/StorageClass.png create mode 100644 docs/team/iantenkai.md diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 6c991e72eb..ff716713bf 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -114,7 +114,8 @@ It uses a `Memory` object as an intermediary to contain app data during serializ It uses methods contained within the classes `JsonToMemory` and `MemoryToJson` to deserialize and serialize app save data respectively. -![Storage Class Diagram](img/StorageClass.svg) +The class diagram is as seen below: +![Storage Class Diagram](img/StorageClass.png) ### CardList Component diff --git a/docs/img/StorageClass.png b/docs/img/StorageClass.png new file mode 100644 index 0000000000000000000000000000000000000000..31568da8664556b1bc2c7e50037d0d3c4ba4b544 GIT binary patch literal 59551 zcmeFZ2|ShC{y#2Jq(PF35`~h?Q>MsR88e0u8TQ6Twpo&-3`K)^o7G05VpE1_(r6~K zO{EaRF-L~~=h@rVaJt`fzu(`v-|xBqdtUe4wr4%-Suv&w4_1wA9wDVqHZ= zMYZP8L1kSkDryY;{~+B8Xc4tjlwX-J{{?yWk ze}sjgSyU1Jf*TTID?xJ6aCg$}?& z$bX_ri$sJA^di}m#B~+1VxrE1=J|2m@PtkslHk6BQ#5WbI9Ek(2^DAq%i`rM#UqD7iro?X&ng*g0}HceJ$) zc5yUvlbf@%qZ``g$Ho)RPEIx_7I$`WL`zp!WIIXIUu?2xUjlgWd^C zAl&!QA+1JeYc~|Rb)SeNc`iu%K^wFkit=V*2`Ta&j3uS>;!3b6OW-c@^Q5NlcZEzx z3N>AwongH1HtqY{luj5gB^yVC*c3V%9r8AE)NqhcJA4Ft($YXtU0=(PfAQtOVSmzq zOLTKx5~M%<#RpUmd%L*U?X%y9)lfPiuECFXI!RfHhoz(Y;@;@FIlCg;M`9GLn>S_8 zu%2j)qoot{QnYn;a?@M9g9x*wBiarTniDX28&_xmIdVh8b{|;0;pXfDttU`uM{5mB zZ)bO8U$JhMCmbkOiYRASv=0nx=?J%kp)=febz9_I5eaDc)>(o&Ev7)w_>w3DKA&)Gv73spw z)!AW*QIY2ry=H?1oLum1F@kP#ClzXv#i`Smt zq)1p|u?_W|1W7HnSuP5$-O|Ya+-$zhNf-2ir4va7QYIxV`s1ub|Jhl=zLL0%GAm0* zU>_$-HycG{Gr(jZD(#Pjj50as2^y2Kvj3XMqM-4iH%Zw4sORr=!Y?I>vf1Axi63j} zVWSGR7tAFrg!I?XQU#0w!muPkjyAT)<*(%j>tcBV?PRAx>Z2@%uqnAkcTrU$P0sMF zts_Y#qR`gXHXxUZuFh_jZkA;BM;O}08SUgo;skL;ZgE8*v62v2I&p9al;9dxLb-+} zq`Rw|lCu-m&D9c~19`Cl+48hOGRU7H35%>x;hjI?d`dqGkA2Vi{|s~e z`HUh;=IifNF1g`5UF(P@=~(si+m*d zt%brzNYl?e<7jDR%8%w9(ans*AX30+{n~LB6i^N7tmP15nQO8g$=^ru8Ur)y@ zvhfdGBjHF^*yLZ(SYN!;E*zyjlZBj2wu?N{vauk68q8f z5|LcI{+?s^Evk_3{Xt=&pIoo+&EkLU4}C8@h}it?5Q>QW(&wQB+dl{)VuSuR^h@C< zMNj<+5z?a0rbI}8BmsXpLofXM0D@bDWa+`a|A&SR{{r?{9P*FY10gsftA8CwP;3$N z`$3&3IyzfgQ~W6Y;j-Y7vYR2E<75yU5h_2jI-c3+;9kc?R$V zcnYqJDI>t&$_R`_8V8VdO6Z??AK6ty-l~HjKA_GPVMJl%4#E!7#|G_I45t^m&?Z2kXpO5DVFJ>*i6E+nuHxQUb0P{O{?-w%nonRp-H(Y)vb^ln* z5JC8ti_9O2!Xg*_TZ_U^;I#zBf&AYS1<9YK@84GxC`R}j2!0sr?DQ9e5Wr^t4Iz+h z9EIN(_3{$`|H?Z32q7#=KSfafh7kVzoYG?2`#aOZZw1LucbC7@N=Wuvn4)j~Jp6#- z%>NPlQ#`0&asNN#F8%p_2qk3wo>}Zb`zpFa+8s&DBS}cL?;8F?1I2#<(}*p`TmObk zv#7+sW18Oq2>*|Fp(ZgiC;1i2w9}m{R!uok0EVuKrZgy`*&h_k-fU zoVzOe%knum)__!^{^$Ct{{j}FNai0YNeaI5D<%1VW{R{f4l9XuekJRwr zzUogx|L5cJV!wjQ5LNMALBM}Hv?@wbI)D4B{9?cxKlve00Q$GD`scIAzpt+<_WO9| zZz$=nd|Y?YJEVZAl=B*YWS*B$Sc+TuHd?G>vPSlZ8<@$>kNW@A$ z4`mHso%nWNnR4~5!wE}Q>u(*DC|BP){LYL14=K)G(p&%gb{@Vl@fA2GEs9NYMdsX38<`e*<^rhi^oY&alA8YRKnIphZ|nic&i84-T7< zdh6J@qT!1yNHHDhOSvr(ujPSXDkklX5(NIo(kxpz;&U`JF-~89dzW(1N>JQI!Q4(E$EP9K9 z^}n^~A+`cRkQU`Y;%AWe&oA8(|6R4vPu|nNuju_Ajr&)M9!Lptoa?_OK>t1K^T)FC z|A&kqMc^qSKsj|t!BPGNA|UjW)KO9}lvn0cE z&g06iN;hLXLq)@Jc>}e~<`adO)ILMHf1K zodOk%rockSLCia@LOhdkX+Mkujd8oqpk9}TpgEExW?(ws5AOBDKs$Jn#L!p!YEuLI znr~awY5g`kR)ZV)@EjK>Y8NkoAu12;9WEUU-?IPI{Wv+_!nl1W)3%7(YJ4Qf9+g@q zi-{85NlO}DZ2K~0(=`%Vh6GGYUd2UrIig0AY|)OpMoI?QMCQ6^hp`4P(!@9~%hd6# zBR;#tRyE$&pqXu$W3st^!I4NnH#IbscsdVkbZ9Ni*&^d{%g?;y?xVn!rh;v0Dq$M8 z%^y^jdXH%gH03a`i^<(PHSOAvV=9?%Rj~?Z+kn^X0Sf1L%YS(nh{yI;+deu=Ydid4 zO5kJnsAq>H{gX1kukmlPjc^A7S8VLhkuC8Yb{hCFG|-uwdtf+mY$$7+_t>UPH1f8u(^yYc zkiX~Ww{H&XUx8rLQcPHb?BZ!UYZF4$s6f=1EUgM|gF)H5Q5D=ge;xNDp5ge{3!n3A3LhMr ze#w?m;Cz~$>BM}uKhIrByXu6&(zCDZTJmi8OPwrhid@sZSOU$T@Aac)#2DxCU;+?s zw4jb-!E~3RXJl_?Xm+Vv-AX_;xMlfQCCW4toIA^czN`wBC|`Sc0I!+s)fK|hRoTr~ z*HrGmz|wu6*Ca$y7QY_so!W~BoA7VCj4O3B))vy%McWM2OCW@uM)sfO4dGE=ookvVyMVtYu2n(E zp=qzFwSFCsAh9t^kHMj*ZARiAUei1AV*bNDJ$%#6(-DjC5IJFbmx8B}|DQbB9(EoDj=%Bq6!BzM(A@lt5Onv-@b(}L zNoq7zK}xMxq)LwfdsWm#Zbb%F;6N@{E0mVqwf=0F7XF=PFthBwGBM zcqRkMFzJJ!8}dul-#8B(BaTl?BNbM|iNDeBjT|sw_3DsHlz>1<#V$9u=WTrESW5SeD#gr3FO)%#wCm z9Ekqr;^oz3B}fnA5&w`*KeY@dJ<+W`MD|8jFXJO#VRSv*g;$8)KBJ%vn-`qowf6xG(^s%f`~r!n3p>xC(j~2vV3Wpp@Bzr! zt_OgE45GaySAq*qwI(+yA)B-cXlS_ikW46(0-;WdOhpD{lkV)m>^=mWv=T9R-!^Gk z9fh)$uo|0=r(%ptlwI1iZ(Ae_!}n-vEFW3gBFf+om$v9v1Eut-w2sxtJ3AHk@rb&9 zJSb}OidodS)f33f~b2pr3$4cg?b!fwbsOgN-b6({;Ul+Uc14e!5>O`@_gR``jQ zWi?K+X0K^s<^Fpv?-lc%+NJp(a?yb9w?}k+Ly6cRu^_)I7aZV8Df*HW1%?f-RhMFk z;_+an>R3`vkwi8)P~k`&%XnDD99p1+7xb)=n^sD7{(Sp7WCdfd>+&WPinnGMsW7%q^MmrAxRRWP%C!R<4SR#{*9^T8nk`mRO4M=!Xr7Za3Vskspo;$h?S^q zW$e}NPcGAl3`Ox7#nUpd#D;H^VM#J7oBKK?2?2&U$WnGune}A>&~o)Qg7%0-qoRIK z6R%4+^mJOWivB+Mz#9wFH(;DgN6t%iN9wKW(wKUFiOtUNwmD|S>dipe_ma!%qLtDc ztdU2zaQ!IiMek@Ce283m#Sp5DtY#H^p^?15onZgw)$SZw(=ZnPykyOUeRtmp>#>8H zFR(g16?H+@3fR4Hhr_#v0kqC>Ne}w)xJuA0mFL&6DLy!*MR4z{uefDa(zHKY`aWS# zIV_`a|4>UyzFn&izeQQwLB?W_ZQdWR^mK&@7S`0ni@)|+_U63R#4rR-kJK|gJ{4)= zB;p`|ALcYTf?mh6FY_V%C=eABj>7CX}Ipo&o+96``g0^+| z+}lID60Lh`lAVJR@dvqS++l6iZl7vXb&`hAuME1^ZV`E^mDR6nD)3;u{xMemYfH_l zBNxhFp=Bg$=#M#9wNiKnP0H~cF-Zvx~@;l;=-Lm>xghO{}`>b28-lgUwZCOX}4-#D?Yc!L-Zd1lC_bR zBp)}qb@DR?=f4h1zK-VS3ocBd!ZzSsD=$(0a-%-y1i|W)OnXlMYE2t=^Z; zvG(?ZNg@llmo3F2XRY+v_I|uE_P|<;KszwZpzGHYcC=G{_xsGMjW?Ql3>*&DZ-g)< z-IJ_FSm+w}5<|U-xkWv!*!Mx3SY%BO`4FYu`>mVbzcig}GIef|J~%F=joV-`zgBOH z=zYW6u_%Ty=9wf33qqf9_ZZRPcFXKsL4ffm1vF}T8vh!@v~ZH;*9liJu49P~5OfO7 zL9@wvxrCt)(#K@!WteE2mUs-B-0}>=YU1!}?L=vemK><}!>E{C zzjiCj28^Y{=&U&AKwZzPPYoH`Ew$X;tDp5ofvGmAzQ{~^Pwgp$q2g8d7Wy_;sOjZ% zrx5V!X|Dzw-AdGM7x&*hyXj_Ad%A#s6#vLatMchI{`=6+IjkRj?Lu|u9BZ2#D>G)k zSPHLtZGnk{c-2lTgfuLpe85d*)7dwuxD(my0EFqc%Pg{GS`=(~0DjBTnkt zf5u7m_|%f$TX;h~#`cCBn4s46aGhbCXH9QSayY1{vv}@2LC~lh#k9QHvyx>aYtr?& z+^%mz6g$}&3B~qiJUdv_ zo1~uU7E1EckRb*a>t$%!HfA0veEK0mz9Ru!Ers`An5TbphU_%~nGTAA zdq&-4TI6~|YHqwCCuZ=$u-|R|kxk`ag5qSo^SnRbea@7*OohbyV9PIifUilj*NceG zXc2eZWbS1dR*!_XWAIo_f=_=IedF036atV2Pt2KmxO`n~m_YGvw>e^45w?o|UYiyB zsox$+H=q4XvX00+WMCeN{JYoTn)1pH=Von!;stfy`HXDdn@knz;{Z(_|*mZSxaoQ znJ1!ho9;?julb(5{nig~&Sfoar@sz1g&7XbJX&}9`224d8zli1Wt2e2Bn-S&Q~fsG-c`1t%!f|C z*8BP~%IXzTm|(LHquzY^+*5_CdM-bIa%^Vcc6028mz0NJu)%0&S^T@Bj4IcwZMBqe zYKuLd^-XLL9G8jEH8U|#wMMe-IP>us29m`QM4Y8&=OrBP@@ zicilPp8E3sLe>3~A1do_sQ=>j?8I$_CUr)E8y<|Ry*bjdFrB<0%x9D< zHiP?_EIF*nU?Cl7icR z6=UWRhcHBoTs#Lh^emaq)@PUGcYP_4OaQXJc#l@TvmBP;qymv_}7&yau$ZdAp7znR$6b2D)e9q#(Y3d%;jp!n-c%#6SpXAKh|eIPY-|3jr6cwoOMtm3Kb5I?+U@gO;hz_VATY})D_si7DGdll!;MlIWS?ug zS7rk)X7VqlhHT1My}DpryJx4|&*KB(AT<$JK0k3=)gMdQQL2E$AftOy4L;-(<)lx~ zdW|Jbm1aCkIJl&4JK+AP?MV{CMbcM$5F8jSv1dtpBR!b%zOXr$S|XTe*}~lLF8v)9 zOGb+unC9HAX~gmRkPRuANSzSoMZ^Yy-jRoU5JoR{AF!2he0%v9w;2RWk2@80v!qj% ze5apu5&aZ0B1_?WMidon;qnwcuBDbta6oc&tqk@rw06!n?KL3;x2GG7?%YD|z%h&n z@x+;pe1@^Zr>9D6r$@W#qYer$Nka$-3#WsCao$rW#iONOCl$GMS5w9|26d(WB0ioq zD&|sqI{mVY&5H{C87xV}RwsUGjS@hyJhYL?k~@L)U=sN>c(2pR{M3kwsL%MPbBC`l zJ`aL~cKmCBlD(-+ zyepPC38G$`m+=I$?+*T6CHQkTO$4#k-}m6QuA<+-6T8i`?Fy`I1W#F86KT6L75xBa zXRV87bf!2y)_~XZbB3MnmFX1z`Z+(M2t1?>d#)_GIxm=DYZRLj0K;$bn`*C8*<|)R zKFG7yBvMn%qAd_j#KDAh1*Kt;QxHuKHup#aq;q~jmamh84gdz7sNVPC;xBHOk4D{& z1yAgGf(H@(i>=;se+V&TWnU@;d4A^My~fuHmzdfZc&{=(`aDIDE|a-j3PcE7e`r@+ zdbsqSpUDnHMSv`vQ}N5Kr@y@a#p~H!UvMI+zMgBzv(~?0HlmzQld)aP|5yrcx2Ge) zs_$TdQIyo>r5%?AN1xkzuHB=x3UQHz!K-ul#oLE{JHJ+flZHmTryq&Sk%yA$i9LbX z*!)Hh;?*70a=w#d>d|`-9l4aXXHnYBsjsNCu9f+G96Wax=f00C0)lBi`L91PvYFJu zIvQ9gA75qogb{MCyK>0D=PTfYJ$9<0D?kH^Q%S2J(DoSxJp>bvlFHN&hA?=BoNoRI z?i&BF90&KH8sWxM9sLa?hVBOh&`^?Ky>%BbV1n37vZ<{<2qLDM-F>GzxNs|LA`dyl zVSvG;mG=OT>ss>cAt%<{!MgHMdqQZ7wV{l18L+}G zzS_;B-LEz8IkjJWtv1Ca&GiL<#uEUvnD2fgH*n5!VSWx%wkyHqY#rwqpsT`=0oOv! zS2ZX08|_p!oqKy#l(YfYktEbpt+IooDp9^-`{bn2^<4QUKd6fO&A8H!=A80bR z>?w7cS$Ov-Fy~BzpS-`3`CPFow)-N=LBLmsjWpZCfW^?#+GBybu@#u3g+@&3b|N5Ed~E4DOKNd=tS* z)Wz)IgQQBRsD**!f)pZGI*xQz(B6(=KgllUeIJkpeMSr^&81hyeHz8GP1%ti11r*dmDavr*F?~ZpdVr7#Z4YnhMu76}vl>6e$>SI}ksPj5WW! zk>6@y?x1YiU3rlFYztTxKC7DJ2@?18^mkNww;SdjGxnIu6eP~BS^LWQ@i}^1a65zg z^t|5@eD#IjkN4)>>sZw;7k@A7NE}^VbWXs9CNc+hBfh3+w(lx`(ZH|`MpKHoQYvNB zYiz;&WX5X;4($)$XR_>3;!S|w9q-}=Oaxl|R@FtDwbqM}h#S0!po_Ay;|8V8-w3Ccio# zkzkxkruJ?m>x96}R5YUi8$?gBU%ooIlc;O8`{tqq?qoD3Y;&tUU<(+fdp6w`r4;6X z$-!3KCW}++50YL?70|{MyqEZ!+sDEPF_kBM{+gC6_K=CW2ISX)<5Xz)A|yf9A7qo< zTv-511-O@kw5ZI>utdes|UE}d4uap&tT#qW)+O*{xILe4Rz)_HfSFyZZk#yC##f(SJo`zipS_VIC=n3_84@m*2ZJXH zzQ$Moh0y$jQqMvYVgxEXh#gIyAOnrnCXANQp<{ill1>R*_PM0YP2I74Qh9NUs0L(7 zbB>!7I>v3ZWY{Di28A&BT~459Z2=QCRGvl?3moh!%vuXEgV?ChEUiRoo3w+*qq> zdYSI-3`A*rfaDcj<6sygWU=R7bnPfe$>6{5k;~qFJvCn}FFd$VwLZgX>t4wm@46_Yawfpy|FCnAHfxb-kA15>T7&njKn zzm=h!QD8;}>@~wdaTI^2X2i^tIKPzTV;WKa`Ps+enxq_!)y*O#N8=eWBeS1xf`HD! zmHRd(v*z>;)$P{1b7XbYlpQ0+dw3aPJ4vd612}>dfdS>3NLp zSqseUK{K{xGsrK1CTxBj1~i+;9YieKS99S>71a7FKo*yMGa zRnN>LzmW7)-F|T6vK4d0O4@R$gDIAv9!Gvz5r;+LCY{iyW?O+TZ=OXo7OYQMKzof|cbuGMSEc!JME{{J)RicJ_%BY_%h79XN_v1|TyU|Y? z4m?LQBR5|>xh-+}dhR8vIph~g1upHsyoY-AOhFtU|7@XSixprpcF!(uIRQbJp=tVq z#_x*aCOy2@eoN2XtgsWPdKJZ2b(WR^5m|=h8i;PkhdVnfK^B@~7__CJLf{bNaUU`I zSCL0V0|>$4@oXj;tLq=%HczX1K7$nCE!KHCaQGAEz@NuZ=joXSRs&8$)Q}qV8%{o#=n_`o)ts zculqq;|WNz$ESzu1(K@u==7U9YgFae^Wt2HMETZU?}o9_YD%I=BUb2<&xgo)JkBYv z#eJx)CA83WLTdEI&Z>${7LLiu;ttVq5dRw!P*;%3z==Kmx=?5b*{E9Q?0$SNs1EC5 zk3sunxv4fRL(;)+cK~Rg^~c@Hxra%X=ARQB^0>C0rVH#`7;g9Un;@#d)0m?Tk83tz z5~bZmlrF3-*rB0!jmfc?>nfK%fMuu*aibg)oAax;SY-&gANq34r|(9qTrXZeFs&+t zJA{{BjJ^Q8iumO1^&gSO+{wKcbspT=5jr`NV{kvej-@K8c^f>cAOV0k!_KAUhcSMBY))~kKi zz#ZFBO!PT4r<-wO;Y|dUloAJGW4-oWRZpY`xmdA}fA(xc`g~+6t`KzWfCp|PmpxYs z7xC1{1{K1g)%>P~w>UnxF%LlTz^XLOaqe&=+EbiwHuuFa)ZzQI7V3F|j{Aj%6s8Dm zSh?%dc$}bYd%X0ntvEk>eU1A11^chjAcqr>R?3z?aX2^t*(XL^T(aP;$24&cMH^(D zhF?XZKGEVxbOD+2(i+bZjJlmm2$|)H~9Lv|f zw1Wr={35oEvH4joq#Pp_Gp_JkE4_dCXx z=0p7Wh_Ap`40dy1CjP-X3Eu?=kJF9ozGH?rafdQuQPLwfvvWlfP`cZm*lKKK4y-!* zoJCI>!nV`XuPx#QPmhFEnH%)448ZeTrmw?Gc0fr;Aytmo!BxxNv5X)!4M@_%W7pBF zg9G!exyh;9C3!2;ES<+6_0CF;xjuMYVP20t;&~zHWTv>4Z=^?*gZkFwoy0vEnL(p^ zcn#r&*VKN8^|+c`Jn z+4IK8LWLmSw6{pWOwjDYHjmh%=^or*C*Vs8?le{#FcoKIXF9ga&)h3NuWZn4nr`}e z!1u|i)D4A0%F9Fptt!;sE34Hu7&^`!;xRHt*zo<{EBm@c_# zJ5K3{*z&~AME6h6ZHRX)mBNCmPMZd94Xwy`?G>DH?myDhkh!>Oc@263>9{48Y2XSNMJgr*4>y) z&sJxSl8&j}l)+>*Y6}Xl;_=OhCdQ3nT|+xESKga1$?S=*Hqg=bv<@e3cJGht`I^kVyEh`GL)e}; zyZBb;^7cjgmLZj)@thZUf zqODJ@LuJ7{-&T|J!PA88R1MlYh1VZz=qXjOOw)9yQ{C*@rJD9KaiObm4%%uZgz&9ATqFg#7&diCbvT8~*$N`hDX5_-N&JLWfxs!Jz(wmxLDe(AR7| zF0tH|&jr#+GjZhe*E#;BuG%c+u&2hwQmfPZb2aWsDKO;njX>U6 z(ywpSwZUV?pH~~Vf1T;}UWScxI@0fZFYwakqQ|!EJ87WNsJs!gf8~N#^1CB4TK5kt zA3pYVhlC^1$VxMfe{X+Dm|pj~r@8G+@5@}&2ygZ$lz!<7GrZOA-J95ykH<=cnGsJl zfIrGtxE@oGzw1Ij-M%{frZs~cQAV)_7Id@-u>=9R^f;L&qc~zVjwpz(KFgYT?QP}egsOOv?OI~)fNK^8F=(j{_%_2^I47FV356+FZ)+H+}>= zJMx^(TXg?ST?8?L`!_L*oA8N2TA%JKr5BhVwt8YVKO-gYWO5@(BIo6(r}~TxYgh%kLDZxX zsT1BLv1Q-gF8t=iDXoFwHmxHTUd6oTIfAYYQBK8m7QQ_aj{5n&V)qT7T7((x4J{=e zsTw-s|2(_ZfR&I@E^y>*LSNm?B}wUh$2#M%HFEcKUTDb-TGzZfweYnwA|vPYr7f>8p=yfx;{MgM)4be8bt7oE2ry~4k)6L|s+pPF4J7GI-*G|T!g^$xw zE5m_D$Vq#HG;Krd4#l*M8ux{i)lR;1E}tuGfvjVpufoaJ-12!J-&2gUOhb2=o6jm7 zU1(q~pW%7r(YJRgF71j7vqgEC)mMPYoRJ{WZ6)EH*7g9b`Tow%1W&5??MUj4lIP6tJpGlE*xw@c zvSjbFvT~dCBUCgyAb?PL{8Z@@58~|8E;{=u`U^O48ofKecBtKHCo*1>-UR`Nl&~8S z7xL+gJcGIGOYWYDW(!FuFEF*ve=I1nhyB*_0Npw5M;`8##0}cAM=o4_$wZAnKCh$Y zL|a*vpD)Bu=9UbJK#7r%w%kPI^uv|=8CyDj3%eM)azG*F*n&(~@XpV+tQ8wSLQXFf zXjUhqdmyDPB{@{}sm`H9UShtTHiAJLM6%89d0g>Cc*E}I1wyK-%pp&}ZDZAWWazBJ zz}YsPtaNmEwPq#`K<~yd7&`M( z`?OWrWWnvYlOLXO>+Ddm4tltK;ftCmKo;o@>+FjdF$J|dF*!78ljTqm#+Dc-<2lr3 z62>J*BLbDThIaX{UVA)Tw({+EGjH{I@Jc>lvPH3Z>rQ43-wC8=f14S4{qhU5W0SjYU)iY^&#Q-z4OqUCWxu-V*Suq$nQ8p5SEJZyx;P**2(${3{b+Md zrv##)D#`L`O}=-(6~5Wxvm(#`!zD>azR9;IB959|3))_lg7O7S=d&Dx~0aM08)I=OVR;2{Y%+RFor&MyVeEf!>xc1IWdYbq%0K$c<{`SBz zcXKJmohIqZt=ph=__R)s;X0o-rMb$-gZWR|8^TK~7e#mVI8>r0wli{aW_+D7RYZSy zcFFK^j!D5Q)Q5BDVmwOsJa`&i|3wccAV@E8qxpuv`uG|svs)!+#&lj9r`x?!4r58J z*%zoNAQ5b>FCO4JCm4GdUkVOpGR|VQYm-6DAw@cCs58jXGF;=+a!eTLN+YY(GC!Un zFOF0oC&OPS91QMm*9_Sja_ilVpm%Uqir?$WsbSnOH`ZLz`zc^^mU8w?deu97pT>oE zTs=dAy4y=U53Kg+Z+y8*o?e1p)MEG0gQvPmS6RFecnGeUxF9fi`5cv|ylUd^G-!-1hsr>u!T}OpT<+p(WVhBJ?OFK-08HcZcoI& zvrF=R=F|Mx;~Wd$N^Mg)A5{_W=mGzijc0W^E}sUqEd5r;Tq0+r=>2)N(4J~yq4XK; zlhG!h{HvvU-v-T11h25Diomy?dxsa`ei+SfYFiQQ;mBf2I`@&KjoIgdTVpMP9Ibkn z;_f(#pYFOWj_DhG_hwwanP@TBZ`2cJF>B?+rd`F!h?L)46pAvCLg*43V8>B%uk&>4 zR*$!q64ghO_xttNr`h|9g$*+C7x)rlQF>3fX2*+6$MC*ou?-92;x~C4QZj1fGTPrd zsqHCI8>lz4sv!{PGh$+|X-U5<9eu@jw>e}r=Vet`RBR4Q#p|BXr>!iav&?qAk1>te z^l#=-P1*ZTepF8=+_#(Oni~JyFqB#3r^<_&yMi_a-6T9o<=w*E@$T+(_WYAAugpGk z@v8;beAuD$I>Pptd#2j{gkYU@H%EGn)fY;J%f41FUnhH9>6HuR;WLMkow1@xuD`{# z57Onw!{z6{6yHmU-d>k+kWHj)CL3tOFp z-<)@>S5UATgpgef%4QC=XTyuz*Xt?JQ;*9-MQIl&D5(qSyc=V3j;+6i;Zxh~o2;F% zuP%w*1qz{d)$cnkw&9TmrwZNEx&=4gXW)RU-7)hq&IP>2O31&!T%r^s{7@UsB3Sk% ztp%Nt=-4>Ll?xAD%iLvSeNAEO+;HA&0a3y7S=aX$iH=v(3>bF#fPG5L1KQmxk zJ~x@KerQ~B6U``O_E@gHu>dILs#Jk*U5SBgG#g73ZHV)j$2_cr4IxjR6NbkiN~M71M)6#}F;J zb&01gaEB*Q%OP}IzDTzdEyp$!UhQ}_z8t}`GuS^JOaiQZSBK$@Mb``7JK<@A(WXwq z77H`Yma7BWz{+x4y8=O}+n-jTGBVRjB)ifU#Lr6GNK>DjEdM%O-ua2<%C6*7Ob;1f zAa!JlJQ3L1!TAE(#~?&JOmJ_;%l%fWnbVvj~{XO+Aej0J(}Bf66QwFdt*};m8D@RDZD* z84w?<1A8E?x|66hCI;?!0Kh@Q@vF-!0y;H$tjs zb3UX&yhOPr>6E!@!F$TLet9)m+j-$AOIe_SWYRgt-$0m{`q#pA6q-{vpBCz;irUMm zvus&e;KqktbsD7fxjE1wWk5%xX#2%AY!b1Q1G?3TGPuQZ`}p2u|1y_yqub{EvhMDg zJjRL~`7~eF+CuTgEk)2Ls{#zZ?n}!talNE%G_>*r93e(fJ|yjI7~7X{WYC@s9HTAr zr%N}w49&+1pJ46eu%`-$T>nlcRwVF9docoWui@Wf7o-4lfaSF)y$kbh*}Ae6W8Al% zuoF#vYUMQ^E$=F*jBUCVoocSBq|lHs8e5ehmH$zd#=8MIZL(qwtF^%Wchqp;Cz1sn zk3XPKL(RMMp{J0|iu7W4NN)257&?27rqJ9*&gH<7fFS%u2UbT&+wkL?`++Rr3D1p+&-|81KFqlAjMIIz@~I+oQFI@R$$=0-UVF_3XRxa(_Cd6okAYh2G`zx&%G!Ed>{ zp3^vA$0VHYw{4YI?xO9F01fx3-~_8bn$<~NLqMJ?W4lBfY@}o^l;SqMW||d_k<>De znHXqpt>J+pG?k>Wca=$Ut)XYj=LVfUOtg&N4k^!wladjTK%E9n$hVUSP^8mcZzut; zgxZr^2TP!mcu+sqgI-!#(&{OlOc1_L*q^A;5eErt;=@}^&eHPEZ|_)6&X(><@_HO9 zC6`_?$aHqqcBsVjbi5~X*HGL1bn!m^#VSW@$hqen*2Y~eLJQw>Iy42x241Y}wZW?F zd(<124@U&R71*iv{P~syN-aRR7?jW^_5n((*{dCK_${sHF5C34b*o7ED#%WzAqJcS z5XCSklw)qX12#IMp?lK@yju5>upIybHgpebX}lgebVSC=B*_KSiu#EW#F9BaP8YiJaCiLNX| zGfi{gBVnz;{q>emJFvFBRzXrL`V9V7D^%Ayrba^TkG_h+u4|>>D&rw-V{l{FdYX8| z9ov$lm>3^^hI+tWFIXZJ2_mbskB@$Q*>fYtTtu?XMQO|^npKfw2XK6AH3IMW znfgOnq2pEw0XP{wO^;gMjD#Qv4nGO_RL^Z8@pB3^z(aJGy|_AQnA5reA}qM@5Gj`H z<4n18==pa4QmH{gL%kl_epLWc4^QtNvCZS{BS-iwLTdf)r5dYSB)txxtzycFy*(Yi z!{VUAT`x*q-AHDw6d!m?e~UpRQ=Q@Z-1G9cc0Pr&7$Gdc12{cxxq|l-sX#w~A>H)f zO_fc_`Mz4ciKZS&j$fu-kD(6;&)S^mnp*K1xcU;WS{@{MSykR;ribS(s~t&@d_^6} zwh0z~jO+DBs4}5*)2O%z<(?V|`-JgrFJO`=t^lOe8c7<6nv6cA4G<$KFgawtq(U(T zx&Z&V0SnuVM31v;Xmr6mM_-jr1V2_zz-3`>%DHKet{`0`lD^9f1f5E4W+Oa$ClM;L zR5P|S$~`z7%oV6`ZG+C8b}%>3Ki#qupu3Kg`Eq7+k~_0WI0_*k9a1l!T^V2vWXj** z1qG3V^z_p2&oNM=k+EOcBdS^tsnvshf;!XVh+czK!irsV*CF}A&v}hBo~5un0K!!< zW#inwcf=MC52VC_E5nqx7JAigWF7-Rpf1Vh4x~M>P+)9y`KlTxRRCc_t#K`DOcBRr z9@xrrx1gkl&W*Mr!R0Z%s=w;R%|{OGVFwAX*Lnx${%*-r`a+zCde7~7=<66x?%M|N z4Uz@R;-H1|s?^4uDYe@@+udWPA+|`2;;9SY3Z)g?*4E#4g@!uD;&hR5`RNCUAH74i zY9}LVE%N%$uw**7IIH>T8vl5{+okmg8sr?l>IefcIw#HiOmlfW)DvfO+UV`3xd|sV zvZId$^)X^LQfD`OK#WogcyU#gaiRnI)Gee^1}d6<$Y2_7&u#4vMaB-XLQ0q5XrHaN z-0|k49|jMs;iz3rL)h{jN)VmS-_%)27YXC?h3!sS$%q+oxg{P0sy&Wf&ZjYcO&<{K zBIBp_l6$~9F>CI>rVX%#+>81P#c#W`ica>ohs$k0zPMrwVeZE3T}SA|kQ2_FLr9+s z%-D*JMzKokQf_0W}qp6UtQ zK6|{*V;h`)uTq?$31kr-wu)Vj^kUMag~UZrK|36g&@_F5|Q1a zU9ZiPjvUi2g~I|pj~N6B%iPxOdw1r39`|-AIsZU&9?qkJTX2F$BbJe<`)uT*=NTSn zb|~mxK4PQ2b}}m?$sWm1LSpyYvD8S&m0wSK2!*XO*cY4^A`{pV^xby;u_AUv;o%& zC|&&A7jRcOE=y5E5+Yv;lA-q;VxElv7_ff-ZY+zoS|BnqeO)w%BdP9OXL&%)sUFcD zs2@z49*rq)+p+1=2LK`VY+<>6-s;e*0OVvPy$7SRsh_3)*Vax6-_Lh1fTMHDk70)= zEPRZ{>A{2{Qt>vHZ82vrQ-_@MiZk*In#9S^XrscB-7M`oVYnsJ9Nv!N(5Y$eAn*7eC9|k zA8Hi&Itx_JRY7@}X8Gy4yzsOvqR|!9P9`_K76H$wBV3=j)uSDoooH+3;0OX5O5kj@ z_PsyXb~5!5aMA?L=`T;VvxZ!5bt=jEn0qAZw;r4`(JbAY>H7neR`AV=leUn|wuJ*j zU=vEr4S4yOFkYcItu)eN!Q-`}J|qF7F;M5*R^=u6&`Sm}tTMk{IvP4%dttxz_}R?z zF)m`UTc1@^u9?G!rk8BfNWL8@G2PMMR+PUHQ_Uv{6@$M1P}+$92EdtO$T$0mG#-wJ;@!q;4*|(=P zED4Vfbakh1pF`y;w^B|-R>Z)GNW2?*B?eAh-$Gq;slRbQmdP0TiiY0JVy>s(ABjYJ zSOb3}AHyk39yo=H>4XE4$ftLzZW?5-nl2hOD11fCvkBXR9EpK5R2#j#??W}p9amN2 zW@ZfXsR}KSY9|_U6z8)n8rDvJDmgQ8`$EHr0Fxklrmts@*1+9|qO~6)W$j_mD z<3n>h7v`r_)dSrwmzF9(s_R?@rUg8 zE>CFI?BjZtAjGiYn6%$x%+`iZD}fR2+c0&QTN!?m+`Q9ogx z_ualP6HpARMDI??<3#PkCyLQNO*vWE$HLlr>3MK4vh{=>-lR9I5I~657gf1}qNGF9 z_H-|>Ji;lwdi0WWCrfIeAjBbqmb;C)L+R{bz)JQzdfDD44LlLXkOTTGcD>YQmFJF{ z=u(U7h8~*e@+bO}E)K+ml{vAfhWs1Ir$QR?U#TT&cPD2cDQ@vj*Ltyw3bhURu?3`z z%xF9EFSuX$GPkr4o|g7 z;27$GllKM;@gj!+5%msIEp;rAF_d6NJqf_8rF#)y<)9f(N0@ENQ%SqvGb{u4&rQgbAb;j z`t$7ziP!X+QJLjMYz5x}(GVG$vB+K9hQUPyn2G?n(ZS&;sK3K!;?%%!Z)_9(0fYmN zeem=6>Gyd))26=IMG&rX{ta1#uoodtLa#%u%Yx4^aBad+4l7e%khx;Gy&>r|R`3yH zNWu>xDq7X#OniVw>ajHy*=NA>eKmZ&eC2_c07${8)$8Y-dk$}B5S2HVXr0-w;lv-y z%YMrtdm(*Jo~I`_cL+p3EQM{CWSdFUozQiVQG6I3s5u%Vj0n3)l_zKzl|K6Vn0KE6 zkkD;JNF~( zccL|d^AwGOoo<92?A9rM=|Joc^!#Ej-rbw+xdCHcl=@{S(LPE>WjX_DCCh~i0Op^+ zn6dEEObqt6c*A#9-XYcA{i4H8g}i=%-+iH9X+*BIjIB>g~nC53>bh9hXIE zfD@T5_$7`uM~#gtyL|S3$XOM30}!jmGbgj*p1Qoaj=JneH{Gs<7iPvA%RL)e=08I; zEzeJZeqJfadaX9hTHmLm?tt$4s;aIVwUjMz^h-NWd}=A%Z|@7oTSUX0cW!1Iu%xIy z=xRt>SIY>0ze9brAOtIn5s|fxYoSV78Qr*uxUqQupzGb)(S;yIUSjp6sn50>FNv>t zU-QYu;V^&eDf!bcJ$1dtr~K{f=@h5JCcE7&nHQrj?lV_-d~F4NS2WMtdY7a@E!J#d zCM9;CyZhDKlu%c1>!|K9YiX^HFi^#5ZL4E=yl9L=dUJ**VEpN}V>>%-W;8qPIf&s$ zfESGy(MRd>YB!eX;tj|u=2yEz-}~Ieu_QZr+<>5@@pL2ea5z(REF{L{_php7yWMss zXQymZ-quUHH{G8T_FDnttuN&6*ks7w?9tn7DrCrwtLdEOs_H2lk9s^Lo)Z5U0Mh$- z>)0og#7e&5m%kYLa*!oB=hq<|%;auEJ^Z6D`QmkZeswH&T>N6p(&CS>NQA(i5@@9iW|S~L z+C8#~cKo3_;hl?g=3@2#P>Vd1=Bdr)Brb@u8%vSeyD^tmIpnEuZKWBwD>3O+n{SKF zQuYq-iCe_`*N5dEvLA?Xx?i?u^93AQ_+wCxeu)=bG_K}2rJFoe*0<)PC-Xj%m&v!_ zm|oY+HhHpD5Owbs>!wi4Fkabpl+&>GvQtYIGwPZqZ7zkMbm7hF^>UFiAq~%1%7MiW zOlph#ND+<|Q4YqES2~-MYa{c~hHM+5JyO}^+%*e$8w;+>EISjJm})f~Cz4241t*NB z!m8v#iaVckO3RvCctyLND#9`0)8C<8P%F7mq4@Z6rEr;AMfj7kX-(Y@%{$+oZoW6L z+iVfRW|7EFybBJ@;CC$!BRLcAPz6+om-YL1+zfw$lo9*epdwJIIp>6>Lk+ zKA78{i|z6`ju@hp(*5@zgoeTc9L{O$<|Q%DVQ6e zBq&89EaF;L5XDDYXUuB1%}+MG3x}=ml;%02a7&x*dWFEzysxu-RN{CQ9^I|uwL$hz zF-C0sq2TuP4ky1z8~6{3`!A{dl+~D}tr5_&*U6dVwd$}>KhQ!`qL}dL84l?))gU4L z26Y#Q=3%3?Qr~vxiG*ooXOT8!7XXQM6ILJKeAbeA^4qH+XmXF5RF<-4E}pBEdm^R6 z==o{+yaz=tJ$`M~Z@=OWAK}^sy-wwj@y)sc-B4;7p#rB~1gQr~lFRr8i0kP)f`s;f zQy2Jvp%Z4zzI#Kt-HmT56A-LF!N_?yeq0gyn2b$kcL}XcoR@yGhj_KP9#h8aw^#_J z&c)L2`Az`DUiz41Pjn(Rt=fPDn-2j4p{=dp?D81`P!=#P3C7*Nf5!#ey~-PV%A$aA*Pf>ZP-{! z9eWKvN<;awH6E@w^$4v%k}Yy*R_#-Oe+=j3x&o?A*mC4QN?`@Ig61I-S9Er@7`$n1 z_P9!4$y+?KQ-}b1)%YZy$yrPSJ3a&TmQSD{q}*};KMIxcjOXj0BkkwPO1}8jyV+HQhs(oiw0$!ah+%nKPef) z3AY(_(3*7NNtFpA3|&RIZy2=FAVT1u+hCw(1M1J4UmuU&*DUo=@en6>U+lS@aJy`( z=6-1IAr*BSl_}*ik^>qB+&U`x0ms%7@oz)*dhrodYpb4{jeZgy4*xhmv2PgJWw$w`^()SR2~)(y;Mo z%nue^pk0(W7NY55$`P{K@Mz?0!&AJoj-y7$(R`T28L)nem0Vwv#_P;=I?^UMTnjzl z^P(SoCm)MyY6lVSWG$#XppFVHyTyqI9m89BQLTjkSYQd?j!;uDCpF0C0?_tD)`B}5 z09v@^1t=kk6tKXtQ}1S%nQ!+Qq!x~W(Pskta@EG?Tm>~i;P~m)QJ4Uc+)Wmn>_Pke zU;)-|%1nBy-c^ytD3&Cwm((X%kX^8huBoyp89!sztUEY>b=(&ySmwj~5+XR#$~-Cf ztt>?Og8*-NUbCjOexB9HUcub1{9(Bf##BNJ;O!gvt)V<}>b=5Qn5%*%;_V`ebL0rqwo3uh% z%t~UI^w}5fui9bf`e;`Qtf?G306_5&$8n)9AL=wOYvM@(pPRdNnF_`wg_=uTVbl|Q z&uR=2F)+Qc$vw2ttW~E_!`_$+wVpQ*D0Q}#Z6G6VxdwU{TNXKTYoNa%A5%e6VNAtA zrVJ9}d(Nlop100d3D%&2rh*5!mw@>ogf8)opt(mgk>s6)ageZk267x)+VDfKZ2khY zifrPzT>37T;Dc;{f{&cyoHHBpPiUkV{ec0`gZ{)a8kGXG@jrkpht|2n!G1aFWV80q z-pc9@L?$`04571IJV-rb;X+Lem9l2eUuH9ihmldF;v_JS8Ynm$k6x-W4t+8j2DH8z zvMO_zft(gpchEnkoZ_ z3rNqPeQ!!-FFBIoV5ho&C4E(KP#11}KQz}5iS zfE`ajV?N|wl;m_!WejAG)_HtvV34a`slBG`oqmQhCRFtz~5Fs96OcX1knsBCH4UXT~G@(QY@etH!_T11=IJGm-#3cS-wDiDr%sf+vMp} zGw{Qs&#y{(@i5iVQUU&w%ecHy$)&-T*EmCEEOWiCga3@f#pmyf@3P6mzS2=n^> zHPCyJuUVO^wwt;6!-bB=egf#r$1DOiGB-gArTzHc4p6@f#mUsH=^V7aL%qUDcMTmw zmz`Kmv4_sBG1|#swgb_aPZTm(MAdu>%iUO-vtE@YTkP6AG(y8PovJ=<68~h&U`geG z5^9SHk9C3??HbV}lMXMMl?O_)NQ>a#eK9rP_*SeN%7>k!>$XZZ7caYdC}bSF&%7>s z7sWtk++BaD9{+Gzek%x-@fJQh)3a!bb(Uiqk+p7mBnXE&fYL58Cd!P=$ z#VPVJ|YxQKL{7Pg7knuT}|RsIQeD=xq^I zlH4i|0NbPJiJTX` zk7}}tmWZ6RFhrL8ix!zoRS)*c!H;87u7;CgHf-s-CYRB?uAA>c@Uq^rdLx&-1Z7g~ z+UhcO)qftKU@FB*U-HeQCOU{ZKS>dBm$2@H^4Nt%ZuX7q^Ug-b7)48h1jyCR9frT* zVkeXO@SF6Xj*tz^z<>A23dQL)Yt_BdV0@j7wD~F`IQFKh+ezOF zeGu&(I5u6@ZUmt|+I204-CV_(_;1iYG~I4&@JB@oSPU2vN!{H&Dtb7K-{m^@h^C&O z%4hBuQSAh$L=+xZIX4>Ip;=^doK4em#&A5V;_&A6| zIr4hiEt3>R!n1!`0BBe9SH6mt!!>IKg&HYpU)vN#p(Z)H-1Sj9scp(IL%jmCe)D^@WW5QJ4XF0s27OoU{x<16&l4brD zoH@Z}%^E3O3>+x6nv*|{pD#sgy7~M87v^66M`s22GJC1AdN2d>u;@Ya)9LFej#yUQ z$_AMmMeAj|cf`l>Uz+;69aE#hM2T;m6f6kv1D&1RctM(EM?xfc4v%XZ;k zhp#i|;|fe4wTgXwYo&x>LUCP_ykdNSaY6OywZkW3r?>pNGoYMsg2a1C@KpaSq6csuC%TtCU` zd_JFO)m4B?WbAwD*OCOrwcL+uN$81TRk<4xm;kvwM)M1JnecmEoy?R)VrPP|HJwAp zmDW?PN;!p|4IG8tW#-WgEm@{6UlM9Id|lcmcl2n8BVGDeO(pit#UrWb+;~gznekoWp19v|;SA6TRkO_g=dFy|@J}!S^ z8^2h@WZAI<7_VW8DuBwbN>qkr`9Chev2*|mEQ&IVgW@zI;Kl^Q5(OmG5db9``%Ju| zimj}r#eJ+@z{e#0NIMA&5`8PmUcMgG03XS(0DP?Dq?Ehfx0!NHr+Hn45*tL}v}9jc zh%ri&I(+%IY(8y!|LjMC5#AV~)K7-p5+crhE{fJ~{1eNnyJa;kR#5d= zCv|wAr^PZDDdQ&kY)%0PpjfH)1XHRN#sIC?OLEt;x1oU}Nh+SS3CyTMp>mS((nsVD zpYoh^c3xL-+IKn@#_YvTiw)WtmEgvM?nW&;?+~W8L&03##EsD)0h;7@ov==pz{m^_G zc;MIgTIPr_VHw1^iB#^DJs4LV`eX(of_n2Cx?aDRj&lz^PCpS869%F#i`p_m0XPx! zXX?oBaaOWknTFmT6mQoiGa*iIe>N}B;m3Q` zrVAuH*B>dnZM3A$o*nJEg>`1Jr&55e{dKrPzoy9IGi{0ZH7-BqNX)`-XWq)ZXsi5w zO3v%o4B4vd8QCRgj0={V=0?Bdqr z@0`*t1W3U3bW=T%bW0%=WXYKd-~JHZo`(1iOvQf`7~kv>hK{*g-*0C7snJ?cHZsNk zmwn5m&1vyli>;fDY>H(DzZ#3;Ji0=A1WL{y{@CJEqxEM}xMVc3g<7&$1J*b0J~xk( z%C2vUs?jmMTb}a{h5aV0e{BW7R+K$f7#zSsz#)DnW_w&*BjwzV>u*az5obadu4v{y zQl(tXuRLh}U|HkiH=ZL!<@$-}cyiFy;PJ#z*8>Dd_wH#=jnbLyDnKiet$q?&-3*ie zOznLC{_$^sXKN~Dg4aW)MroV=FQ{Jb;0Fo0Z~5vA6}`?rvH)-*UJ<#F2rYA1T1 z$ZFX}3vuR{b++3Kc+o?nzq~^OyLt`I?e8U%^`2wStXJqeU&+4S71>HU>he8|KKuCf z$FI*5J5yD7Q@=-HRR)L})27lGN4_@5*qmz2nak?OrAjV3Rk$Le>)<2a=1LS{E#h1P zc!02K$ShBwm20#NwR+}stioFG!1+9Xe`Y;}{fP9F^0 z!Vw?F2cn__^aj^jR2?F;%M+W?FU%!?&8ODy&g6B>RZzR55vQYO2c`m)%NHBkCf(eH`kiQ5k{4?CSxw6QE)dv;$p+YK}f==rm7qjB=;j>1~#!Kr@0nM7^J z4%fvE&``9_8tx2{!GXA8$^y`KAkwWGTy58jSAU?!?inh?4FCv!RF&w&ecG}@v5mb9 zP-ti(7b;=T0k^gW7*Di2E|6JQh};R;oKD&vCTsc4__cc<@4`d z$UIXSFh+z3He$tjeK2=GBGG!c;s?6*j4&UiyFkDCYk%GImHlzO!V&9<%^u6G<^38) zlN7LD`Py}~J-UX=x}TQ!`0{N*xqk%U)!O6r!+$S7yF78+$7gYkb$U3yiCXI!|Ley2 zJkT75e2dQg%boB%50){b^p`^~^Er1P4u$YO;29=f^#Z}@5++sbj^^u2b>eck(-B^c z5FZtLlnm8vEcJ8HYiG;}3AJ zyT!qK^Lk&0HxJG_li{}>8iva_|8GRjFBKJcl?v>}jaqY31u>b4;{5%UqjR}}Sb1dJ zXO%E1LDj*HYybwZ7f2kteqrYCO(+f~E|?F|xYDvKYea&gc~Phk4Q_lR{GUm$5DW7; zSOISoJi$HSc5f0y|CZG2o=mmZIoVSk-JvMuW?^hY=i3q9L{3@1Y*+@~d7C7dO}_%n z$$alGPmC~<=y}v*8h_tmZz5(gYI^km^B!i-_b0Pk9&!7rZeU`;^U{Vjj`bRu?d3c` z4HfRe`N~04vxo>*AxKVcUtf%F)C81pqLWT|>z%<0=G}X5E2kfulnz-KP++`a{UDm5 z+EiMq8`m=VIw7GHRv!#PlaY9ie5d@7Kc-$Q5!iMz0B>@@0DO?#vxOg0j#gn;C$GKu z@-0#Q?>>Lf(P0J%b-Yb!swhseM?Kn;(W6ss%|?cvDEz|>F_oZQG+J8lmE71OjVenh zSw6n^T|oz6F;3A5-u^^E74yx(?i^Q%Z5Pe@5*QD&!QPr&iC$t-@3@W z_=OA#dsx_I`ZchYDS0764oF-r9I1aiaNwnIK*w7AGitF;yELv}y{{b|4`dY4A^!1gtlxYaN zVX4N2sDXWx>NG2unWi01rEWg>es#?hU>uH z4|zDGN3?T7VW=C=U|6|Jo z>ts#!He`9Z!-Qge6!K09CvK-F+?1LJz2QE#`4GNin+gcNPB^!dHZ?jBMJ-u5%9wn0VJ$P*AesQuB)Hp?|$E4AgR6>`V@eQ zEYy4px-yid*5&Um_w?|NN)OKCz6ZtvsL?Eb>*r{G6FOJ}!9oC9zqJs!TeI1*Tg$y* zZ25m%H0=EPAF9SXl!}ASE`Z&TjjTZ>ugIeJE3`WWVIG6fj9U%122qcen zyZ|c|J{tO`DXHdu39x}9CmtLUHP9^zXoKQ>-hpxhZwBwpYSX5B7!_cWzP2r&^?<5W z0}#SqMkkRz{m1j2gQ=uvqk@YKb=hsVYB{U~!a^5q88;zzTz=5$N91yOmzf|Z; z;s_B&faGVK7T92I;#vQd`^1%5;!$o(^svntqah9gJjQ08?Ju;Ky3Ev0lL`YvrlOeH zZb}}`N(+>Lb{10I|17_=UKrMW%BRu?9_G^%N@_O~qw+qRI`HE>cAooDPay;A;UnPWAT zQX=7Tet1DckSjXT#PIh6_E$84QJS9vmCI>(6+He2NR-Il2Xy-o!3<9fKiQbli2y|^ z9_BG~$haaUC{YEJz8kTnb>_TYpv*6K;@*UIf=(D;V<@dmh;%anK2^xenG>8wH8sIb zm|JR}N9DCT8nAh}ZGOVoLvZZ~y1871+WXW815)_c@39Q@{5+mfGW|GPL5069)?h4k z)yeWn&(!9|aX)jRJ|^J9zum8e;stiI)}k90QSg}90B-(_U6*;gFzg!0)aO94pz5Ud zix)c~yr+8vw+1kA8~a||X_cz=`?b_UU>5dcx~BcSV#I917f@|bm!=aGT}OuJ&y28# zLGP4Nv^vX|jujl=V+)v#;snAXKF&XISh-L_AtoT|>KWFbcmr}fuAkG#ekoP}jq)`! zd}8ov8gceS;fk&zVYyW1rMS}ImFT&CnQf=?CkQPkd+yEwFvV`2mFxf&gn6imv=(ir z^4e7)dfG=LB74vEYTiiztK791rRPM0w<6G5xt~Cvr8%AsX0LfWTP=f4$8X%I1?yp0 zfyIH%Dx%MEg@-T;jrEAFgx~quPlqPcvqcbwY{@Gr8*guvjvHqUyi;l_xjY0L-Nu8= zV30NF+i5A36CZ}XdTi4FDa``Snof9i29nvy1+aiLbz%MQN(JPfb4NH0*KAMB97x>H z0@AnIc2IGB`OOHebAFk`RUn`V2yb6#j9JV-dzY6fkkVr^4YR0gOi- zz=@)f1S{vnJd|T3T+^{~ebWzmfdK!t+-WiXs0{!%&^3WvIVhMKeWNWf4<8W-Q~Efs zfnw?wUIkNXS??hrYC?dJ_PMjGydo2kNQALfK%WFK2|^blUq0E*IaK$gJxsCp&iuo| zyOqz(@K<)V3YyEnrLOxR^0#)TqrhOWiCF087_=%_c_Cn)MLAgr@J^u~6n^a;SlZ^u zhwArg42L%g)i{HVK@2T-XOH`4MQqd7{(Qi8TCYqE$qX!c`!M_2FcMtxdwOA=r2ZeZPAkYv$i^wyMnMa$7hRqh&q2hiRK}dy zVNk{-|6{Iy`RZN7rNiAKTQBH_PQ%EqO5gE##&ZYI4y25bx$y`|1T$(A=8&>euTYL@Xl zVPdCsq_yl&eYJ9M!uPA-z-!PbfL)h=DExyjX5gQnQ15G-d_K*f`&0rS2!t$%2J!wu z=@z^vG-GaUj!f#%q3*ZnJ zv_--EVliN0yVK`r(4YzKz`$tboO=c*;LAU)gv7ozZ7QTlIA1@Q>;8dmFbULQH_J=S zF|NAJdnaLJ8O3zuC6KSUU zSGRj&Qz4T4s^*h*Trn&dBa8=N5w!t1Oyip`V%)^#4FwSC}cJ7Z?+MyWTtp1dLu7vKEn0%CBuPM=VC#Cf65ri@J zQt7WAQ%z8;nXA5ulZnPbd&E2k6y1G*#=O)KPf)WGl+teCeC z+)eo`+QuRz{x&MtT;SL0TfY4|4IRD^X~P%9#-SU`XhF!*n{2VNcmiGe+_G`4g&0?r z!St<1MYE?s5z_dZ^^KgxE9R(F*rSXWBN_hm#>uncj~203Ik6;5n#7q#T@x;e(1f5-Ul|1Sh?ea$6ZpZ$ zinyF80+?Ap^LWtEk<4X~DeprT0i?wr(W`0PnL!POkW1e-F@6(Q`hm7s%Uu7_fE0Mz zesU|E#f8h=GQw%YKvvgc~^s6c!q8bBRpxq!K);<^tZq^%$5cD6U&+@?Kgke>SM7jJ?6nY z{Ik3qcC!b3l`_8~u~sQA41WX_?;_^fL|0h*ypGHy$!*`v1TfaI)An;uyy>0MH!w4^ zy${#T;V9d8<2t>cQ}Kr5#-yg{Ft9j5ql4XQ%Z#ih^YV$RxoNRK192SD?c$rFKFy^Q zK%IMblCj@&b6u@_JUFNlZKhMq$Cx^FU8PT`j&jYuWjp3fKvu~05Nbv0r+v$NA$Xzu$WgKCC#r8!5F&4$kL14ERPhF)@>?MN}d~|ePCesOjRFgu{7;AY#zh_ zrK$2OPu1F{;(8{KTx$i0!+R z#UmX`8{LoikjzMSBLO0%dHEC2%0x0TCsk3?bDaEkmLM+wb~a*LaGM@Bva2o|FGGvN z_?l*}*geV$fMb&H2pFV(f}19B3e;xlh`t7cyv&d3c|bcN?t&Ywu?4YY%7QF%Oemv1 z=W&Y0!L`kMz?fe07LT+%BSGR|u&yg@5}z`uG$9%=&K}C6Y+#Wt`ewG}BtL57qm|Q#s}YgqHqe_YDjp}T+K{sEAdQap+SM&UnBBNSa$~WkIb2ALrnE%!75C?L)!>{gMe|A5AGo_(FNVpU zRr5eeEo$Hp!i&mN2xvdRGW0u6<{1u}Z$dD#30gjJrMC=Dm#VLlrRBBQ5Em+=PlK*> z))?l~@)7!}eT9ZX*g{*w3>Dop-)FaYAA*zLpyk>g5ow}&9QHy5<0H==D;g%rb5oNa zJ8{saxuPr!IjmGs)yA>8mPoX!FGxX~LpJ;t>ZirHxeDhs-)EzN4Z+eHUN`;?Rt$Wm zTdla=)gd$BOipjl1zi@he!l%3X0oyp8Q;7fd--Uo)$J_+n&1<29;?Yj#tQPOr=`sg z0?qOtNwN(z+6mRn3;dXQ<_J>VeNg5015Cqj0%f#AvrNUBJkstPy&u?jnD? zi{H`v74j@4fm@HPX)eLnZO5-a+aB7a3=7WnX=bJ&&o*iGeo?h_VYV;Zq@2xb4soV~ zfHn>kydJU4+1>oSgL-g1i5ZWCd=xzOovkq-|1^K*!#vLeWd90fN z#mNt_>jqv6Z@;+T>G!w6f-B%K6(QyalC=)d7xv3Lb>;b59c1ar@!i>0{MgWS{F;gB zQCiFP?BW`3ZcWKo^0(|I@RO5}O zg}cD|0NWd@faY>mDQr=6ZZUV|j{iM8x=$wT-H$2XkKZFNWa4b+J^&Vk--)y3+zONd zdK9uaukm;Oasnzht3BX4TCMj@P=og zOK>VRmf@B>(&%miZ4@9i-5LrGf8V=^dFTu3^p42ji@nx;00w!32IAkG1w+8i8GqH{ zQrq4STkH^iMaicZ|4NoN9`n8ncTDnj#5Z?037|0QGSg*jac^Bs_a~2^kqu$5c*rKG z;BLxmhA970IMqAVU04wiBPB~AE8{c5I|s5aNWkH`Ztog|Z;&HfTidd{xwl4ib5hQ? zz8k=P*`23LK~Kq>Gw5r`^5t6TZ>P6R^D~h%Vtk{M3>0E{J}P|^th8{jjCSR@Pi?Y5 zq<#e2g(zsFWQxbKbyk&&{YyS)02zOfK{%pDvE)uX@Aq^@7n{PW5A&`ec-Ss zfBN}JoQw<6UqGjNbok;KCQ&O|Eg=coKD{~F0dXtzF7(bUqjIW2TA(m&`ziUwrYSHTF?E6d zBT>YWCh3+cjUOiPG{2n+Nfj|!(b>KP{fkFe5q8=N;U)Nd@~qk)B)JSxG4sz_u{^S&-Kz#<0lIffDkT1{ycy`V)`AbeP3Ww$ZD!D7 zs7(*$PJlKQYi@>5A&q?aX(mc*UUblt9oJ9GUbZkzvno7^eO`%ih@6@EWbddBEg;ZI#Mg}V?KGtAuuw1KQ@36Xvo zpP&Ngx4rA>G)(d+!{;!Lf6Zh@rs-tbmDr>!*1P5rlj8@vAiTYw2WdK`{g8fK_UnY5=w5fqF%-m?gq7$pVQ31fejTba2+nODZeu_=hmy}0l!EAcgx zuxgyIQrYj5$0spWZXOh4b;YM?TE0MhXCW+!`m9)20|ga7QlW>iqNlPx?|#0oDcqQR zcdMm~EWg!sfisyRGj6Njqwsr_ zlOi>h3jVjb%J`$fAM1Sj06{Zky`{N3?AJKx*p|GL%y_y3F$yRisVyYpnol$UtYnbP zrLe=Mg}F{Mp*VHF`rg9+-VQC@P$KnTEHfO|?MIfX!l%nL85~$)C)Z1>t_lT$n0jJD zGcJBmM-Y+viCvtHQ^$o^#r`H{ zhlx+R?VQN%1p$rS$k47d_nY*m_9;6W>TLp)JSHo?`wL=~?2HR=faChS1-kU|pStG7 z)cbN4c6Xy+ra!D)EMopu->B>Z;ZeJhAyAD=4U3ZatL-ed{RRBabE&_Ns^bCi1kO)18t#`W^7>TKTSXa+k-~|P{ zttU^6-dtSl#pyU`1f^)|jGfHO^}DP+W`)5lgoiXhM{zVOiB4}RfEXk-uYu3(1>n)a zUw0tI04SY(jX+Z$zvmU7{-n%PEAq%8I4!Ya0imkHh}*b_1S7nL|JMRj(rE#YIUzRcH$^L-=_H7`gV+*~4aQV0-yOk;#4>OUUpIhr#)k z=9@=sE*dG+PJ_=BBT1@V?0I3`=P=+nwz#%f+t>wJW;{F7J}l_!x;>kPhxE!1{0(E`t)88ck+3m*pEWvP0f z*AhNRbNNFFN3G%71!WSig6G- z-2w}&^mdx4eJuJ3*x0sR8+it`^^t2Q-G1bL_=V%tXpw{$CN@!%DTm@wCDdbr*_DvC zR(ey7g%L8r0`XjsMvB@}`6V~Aykh}RDHBfd+eie4^vC>%8^vl-!!;y}>`0$KI9^w{@xnP9Uv=S!ha zQDdp0Kh0IEy%E+#$rMHxt5&3fhXISY6+jmb*d|DaWmU_Wny>!v z9fiQ?7l;)KSio_1z>Oc=mp*Dlk++8v+g?u zwOPl}_`A1H3v?m1fHW=Q5_kpNkCLd5fLLu`_+x)adJTnh#MYp1x#dXVm2sy`1S!RK z+9|!QHJ^D451f3jOqs$@IZVy@^TFH ze;)+WCJ6VMf&GEEPS~+bm zSHxgMgf;4K2~U>D{2k&e(jO!6nTw&f5&@n{m+LY}1>)G8mx)vmO_aO9m+u_EVX1H+ z(r>jVo{QIazIiA1=#l4w^ve@^(1Cn>{wdk$mS10beJI!zCAk#FXNYfq91eOxSOrLx zrzpMe%jaw`>ibnu{4bLDkOzxeNQz{-x2za7as^vsUz>=w32uIsZc2OyUbRv6KPW`aa^iTN6Vk zele-c1NU2q+H8YGl^p6I9MM2Bi^yt95L6! z#=Zm|7;36e6)xciDtw)F-RE3QwP%my?wULy7l{Ile>gS3=Lh|NVm*qFJ$v2l^`DIH=+ayVQykw941<6~Zu)Lzx9* zoEe0%e=)OJF+D7Ym?C;u*g5!1c~cPEN>d#c5mKz)Mzqz?a{*fobHsd=PJQZ?v8dA> zk?5^=(iYzRO-ayCA^v^`VKg)js_+r|%woFF2qp`efdQsa{A}>gbsM16c|K99*`;xU{A_Nd;-dFr6EZBa{F(vpW$-jS2%p^dJYI(q_;g;VAn; zyC2~~77OyAFJM*dc>w@pm;mCC0_gx|YxEsAYT7yzNlbz3du|t@@h%3dBEJb%(tqmG z$k~9V5`IBq%cQKvtXLIQ+4ri5IKqio<)l7MK7x+8a4`_HibaPn zV(Z9q`|Us@D~VlBJFx5UVF5k}^%Oql zs42if7`IxC{OR)u$CzX{W!=Ubi}AZON_Z)r(0@Kk04QV=MMgBveR6c}Q2xs6;2S!6 z8lLzxb7{$A0330S|4>cgFOSnHbkh6KaBtJ(!P{<{x9=*f*sh{W2YLlm^lOutJl`pq~(KaC>h$-{a; ziF*Mk&sMy9bT8k7YE@zR07YvRI}DqE_8?uizZw6y^5vO;>ij|d#-IWt7iIzhyga%@ z;LE@8IXak$RAU$eIG5x_+WrLGaeSx=VXAJKnFV>HKe)Qum-v{Z;tOka1OfybmH#i; z0P9wWor+^069YVkM3RV1_0!>IL0B6hE5Qx_8vRtUCJA=^8yhH%P$@nx)+=_+AreAR zR2t=0LsE>I>5woB7+}f~z~9~b-1{U3q;&iWgblUZ8XBog7UDq$7Dben-n#tTw@$-9 z_a53mMIE>K`}QS}KL>uO=-_AWYBgOEi|hJdc)52vL|$q4^6V&x&-5$zgX+IcZOV#R zX^C@1C*A!Zg;@5IE0tQ&d`c6uX@6Wt?+4z;{V$Z zXb9m-x7XG)(GRanB0c1b?97WQZ`&Ie+|RFpW8O)Bo1vt2_5cfX_i#u5REudW>r<(I zA`+OR{j;{-)nsQ>vcgn(IWn0r&d}k^{{L?{1I(Sj1MBMvt~U=|#c?#=N-gd!b#!MZcLSf)fll(e8mbH>Rq& zV|ISRf79#%(>qC|`c+2)zJzOh-Q>TapaUsYez)VHG=yT00$J+6)3lQX)6B};Dy3zG zEn4_FYySI{x4}j3hW9IT$%hx$JmM51`gerDyHC}8hnu!FlojStM_9u0??~d%BXJTG z=e(zCj!l`z_1{RSz&F~q{jP8ZFIQnHCxaRw`WDj3fNS1Kq-{uGg%R@;DE@bmHuObY zBs5Bl>HH#DD+Btn+x|7?a`?XKVRCjx;Z+r!Ne&pAL$ zKJ4DGB=?6zF&iY9!GX%t!{B-QfItxgvY341e^#CL)dtJl=A2*v0#8>zmvv4FO#qdw BMnnJr literal 0 HcmV?d00001 diff --git a/docs/team/iantenkai.md b/docs/team/iantenkai.md new file mode 100644 index 0000000000..597cbd5b10 --- /dev/null +++ b/docs/team/iantenkai.md @@ -0,0 +1,83 @@ +# Ian Teng Yuan Kai - Project Portfolio Page + +## Overview + +Inka is a CLI-based software that allows users to add Cards containing questions and answers, attach tags into each Card +and put groups of cards into a deck. Inka aims to help students revise for their exam by providing a flashcard-like +experience. + +## Summary of Contributions + +### Code Contribution +[Reposense Report](https://nus-cs2113-ay2223s2.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2023-02-17&tabOpen=true&zFR=false&tabType=authorship&tabAuthor=iantenkai&tabRepo=AY2223S2-CS2113-F10-1%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code~other&authorshipIsBinaryFileTypeChecked=false&authorshipIsIgnoredFilesChecked=false) + + +### Features Implemented + +#### 1. Storage - Save/Export + +- ***What it is :*** + Stores all of Inka's saved data in a `JsonObject` and writes it to 2 read-only files in the filesystem: `savedata.json` and a hidden `savedata_backup.json` + +- ***Value :*** + - Enables app data to persist after the app has been closed, allowing users to pick up from where they have left off. + - Storing the data in the `Json` format allows the save file to be readable, having the added effect of making debugging easier. + - Storing the data as`Json` also lets the function easily adapt to changes to various Classes used in Inka such as `Card` and `DeckList`, allowing new class members to be added during development without disrupting testing. + - Allows users to transfer their saved data into another computer + - The hidden backup file introduces redundancy and lets the programme function properly if the original savefile becomes corrupted or is altered. + +#### 2. Storage - Load + +- ***What it is :*** + Reads a `savedata.json` file in the same directory as Inka to extract the app data stored within it. + +- ***Value :*** + - Inka can now extract the relevant fields within the json to reconstruct the `CardList`, `TagList` and `DeckList` objects that store user data. + - If `savedata.json` is found to be corrupted, the hidden `savedata_backup.json` is loaded instead, letting the programme be more reliable. + - +#### 3. Abstracted conversion with `MemoryToJson` and `JsonToMemory` + +- ***What it is :*** + Operations for converting app data into Json Objects and vice versa are abstracted to be contained within 2 classes + +- ***Value :*** + - Storage functions can now more easily adapt to suit changes in Data types required for the app's logic. + + + + + +### Documentation + +#### DG contribution + +- Add in explanation for Storage feature +- Add Sequence Diagram for `load()` +- Add Sequence Diagram for `save()` +- Add Class Diagram for `storage` + +The Sequence Diagram for `load()` is shown here: +![load sequence diagram](../img/LoadSequence.png) + +The Sequence Diagram for `save()` is shown here: +![load sequence diagram](../img/SaveSequence.png) + +The class diagram for storage is shown here: +![Storage Class Diagram](img/StorageClass.png) + +#### UG contribution + +Composed the "Faq" section of the UG. + +### Team-based Contributions : +- Reproduced and fixed bugs raised during the PE dry-run, including interpreting possible user as in [#118](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/118) +- Conducted the final submission for the project +- Helped clarify intended functionality between members + + + + + + + + diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index ceabc85e5c..a071db5d80 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -233,7 +233,7 @@ public void printLoadBackupSuccess() { System.out.println("Backup Loaded!"); } - public void CorruptedBackup() { + public void corruptedBackup() { System.out.println("Corrupted backup file! making a new file"); } diff --git a/src/main/java/utils/storage/Storage.java b/src/main/java/utils/storage/Storage.java index 7192ca5b22..d4a842ae99 100644 --- a/src/main/java/utils/storage/Storage.java +++ b/src/main/java/utils/storage/Storage.java @@ -5,9 +5,10 @@ public abstract class Storage implements IDataStorage { + public static UserInterface ui; protected File saveFile; - public static UserInterface ui; + public Storage(String filePath, UserInterface ui) { saveFile = new File(filePath); diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index c51c468830..26f7af2a44 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -126,7 +126,7 @@ private Memory loadBackup() throws InkaException { return savedMemory; } catch (IOException | NullPointerException | JsonSyntaxException | InkaException ex) { String absolutePath = this.backupFile.getAbsolutePath(); - JsonStorage.ui.CorruptedBackup(); + JsonStorage.ui.corruptedBackup(); throw new StorageCorrupted(absolutePath); } } From 42e297ff98c488ee140a7a49ab54f7ee37832bc2 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 21:23:41 +0800 Subject: [PATCH 297/311] fixed link to iantenkai in aboutus --- docs/AboutUs.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index f8ddc7bc3b..e46d4749c3 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -6,4 +6,4 @@ ![](https://via.placeholder.com/100.png?text=Photo) | Muthya Narayanachary Akhil | [Github](https://github.com/lihka1202) | [Portfolio](team/MuthyaNarayanacharyAkhil.md) ![](https://via.placeholder.com/100.png?text=Photo) | Lee Tze Han | [Github](https://github.com/ltzehan) | [Portfolio](team/ltzehan.md) ![](https://via.placeholder.com/100.png?text=Photo) | Wang Silang | [Github](https://github.com/JangusRoundstone) | [Portfolio](team/jangusroundstone.md) - ![](https://via.placeholder.com/100.png?text=Photo) | Teng Yuan Kai | [Github](https://github.com/iantenkai) | [Portfolio](team/johndoe.md) + ![](https://via.placeholder.com/100.png?text=Photo) | Teng Yuan Kai | [Github](https://github.com/iantenkai) | [Portfolio](team/iantenkai.md) From 64357277824354f593dd6550cb2be4b2b7870a45 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 22:04:55 +0800 Subject: [PATCH 298/311] fix ppp formatting and Devguide image --- docs/DeveloperGuide.md | 2 +- docs/team/iantenkai.md | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ad0e7da914..e4c9cb5342 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -470,7 +470,7 @@ is corrupted, `load()` is called to read a file `backup.json` instead. 3. The memory object is returned to be read from by Inka. The sequence diagram below illustrates this feature: -![export feature](img/LoadSequence.PNG) +![export feature](img/LoadSequence.png) Reference Frames : ![Add Cards to foundCardList](img/AddCardsToFoundCardListRef.png) diff --git a/docs/team/iantenkai.md b/docs/team/iantenkai.md index 597cbd5b10..fee71d8c23 100644 --- a/docs/team/iantenkai.md +++ b/docs/team/iantenkai.md @@ -34,7 +34,6 @@ experience. - ***Value :*** - Inka can now extract the relevant fields within the json to reconstruct the `CardList`, `TagList` and `DeckList` objects that store user data. - If `savedata.json` is found to be corrupted, the hidden `savedata_backup.json` is loaded instead, letting the programme be more reliable. - - #### 3. Abstracted conversion with `MemoryToJson` and `JsonToMemory` - ***What it is :*** @@ -60,7 +59,7 @@ The Sequence Diagram for `load()` is shown here: ![load sequence diagram](../img/LoadSequence.png) The Sequence Diagram for `save()` is shown here: -![load sequence diagram](../img/SaveSequence.png) +![save sequence diagram](../img/SaveSequence.png) The class diagram for storage is shown here: ![Storage Class Diagram](img/StorageClass.png) From fbddfba8c2d7f947a0272f504cd5819e0f8acf98 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 10 Apr 2023 22:07:32 +0800 Subject: [PATCH 299/311] docs: update --- docs/UserGuide.md | 70 ++++++++++-------- docs/img/quick-start.png | Bin 13163 -> 12650 bytes .../java/utils/command/PrintHelpCommand.java | 2 + 3 files changed, 42 insertions(+), 30 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index ed922635d4..1653d3c5f5 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -37,9 +37,9 @@ Use the hyperlinks for ease of access! ## Quick Start 1. Ensure that you have Java 11 or above installed. -2. Download the latest version of `Inka.jar` from [here](https://github.com/AY2223S2-CS2113-F10-1/tp/releases). +2. Download the latest `.jar` file from [here](https://github.com/AY2223S2-CS2113-F10-1/tp/releases). 3. Copy the JAR file to the folder you wish to use as the Inka home folder -- your data will be saved here! -4. Open the JAR file, either by clicking or running `java -jar Inka.jar`. A command line interface should appear: +4. Open the JAR file, either by clicking or running `java -jar .jar`. A command line interface should appear: ![Inka interface](img/quick-start.png) @@ -105,14 +105,16 @@ Users can run `help` command to see the list of commands available for each feat ***Sample output :*** ``` +____________________________________________________________________________________________________ Welcome to Inka! Type help at any time to show this message == Deck Management (run ` help` for more info) === card - Card-related functionality tag - Tag-related functionality deck - Deck-related functionality ================== Miscellaneous Commands ================= -export - Saves your deck +export - Manually exports to save file bye - Exits Inka +____________________________________________________________________________________________________ ``` Users can then run : @@ -124,18 +126,28 @@ Users can then run : ***Sample output for `tag help` :*** ``` -usage: `tag edit` +____________________________________________________________________________________________________ +usage: tag edit -o OLD_TAG_NAME -n NEW_TAG_NAME Edit existing tags -n,--new New tag name -o,--old Old tag name -usage: `tag delete` +usage: tag delete {-t TAG_NAME | -x TAG_INDEX} Delete tags --t,--tag tag name +-t,--tag tag name +-x,--tagindex tag index -usage: `tag list` +usage: tag list [-t TAG_NAME | -x TAG_INDEX] List tags --t,--tag tag name (optional) +-t,--tag tag name (optional) +-x,--tagindex tag index (optional) + +usage: tag deck -d DECK_NAME {-t TAG_NAME | -x TAG_INDEX} +Adding tag to deck +-d,--deck deck name +-t,--tag tag name +-x,--tagindex tag index +____________________________________________________________________________________________________ ``` ### Adding a card @@ -174,9 +186,7 @@ card add -q What is the flag for question? -a -q card add -q What is the flag for question? -a "-q" ``` -### Editing a card : - -### Listing all cards : +### Listing all cards `card list` @@ -186,7 +196,7 @@ List all existing cards in Inka. - ***NONE*** -***Sample output :*** +***Sample output:*** ``` Here is a list of your cards : @@ -353,14 +363,14 @@ Users can refer to this [section](#usage-of-flags) to recap on how the flag work ***Sample output :*** ``` -[19d859b1-cede-467e-b384-7d6e690cdae6] -Qn: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum -Ans: ans + [19d859b1-cede-467e-b384-7d6e690cdae6] + Qn: asdf sdaf + Ans: asdfs -Here are your tags: -1.Tag name : longText, tag uuid : 8a6f3263-5d54-4267-9e8c-751074688e5a + Here are your tags: + 1. Tag name : tag -There is no deck. + There is no deck. ``` Similar to before `[19d859b1-cede-467e-b384-7d6e690cdae6]` refers to the UUID of the card that the user is currently @@ -390,7 +400,7 @@ Example of usage : Sample output : ``` -Tag 7a130cd5-8154-4aa7-870f-45d7d92970f9 name has been changed from CS2113 to CS2113T +Tag name has been changed from CS2113 to CS2113T ``` ### Deleting a tag @@ -447,10 +457,10 @@ Users can refer to this [section](#usage-of-flags) to recap on how the flag work ``` Here is your current list of tags: -1.Tag name : physics, tag uuid : c8259fee-125d-4700-829c-0da79eba1e91 -2.Tag name : chem, tag uuid : f0721ed3-f357-4a6d-9d35-cd436ec5d280 -3.Tag name : math, tag uuid : 1631221a-1b21-4481-8113-76b0b6ce6499 -4.Tag name : bio, tag uuid : 6e5dc558-43e4-4039-bb0f-8eca965052f0 +1. Tag name : physics +2. Tag name : chem +3. Tag name : math +4. Tag name : bio ``` ``` @@ -520,7 +530,7 @@ deck edit -o old-deck-name -n new-deck-name ***Sample output:*** ``` -Deck 9dc5ab5f-75af-4b0d-b554-341f59ac829bdeck name has been changed from old-deck-name to new-deck-name +Deck name has been changed from old-deck-name to new-deck-name ``` ### Delete a card/tag from deck @@ -606,8 +616,8 @@ To list all decks that have been created : ``` Here is your current list of decks: -1.Deck name : test-deck, deck uuid : 9dc5ab5f-75af-4b0d-b554-341f59ac829b -2.Deck name : another-deck, deck uuid : b7fa870a-e92c-4a74-90de-cfeafd6ec141``` +1. Deck name : test-deck +2. Deck name : another-deck ``` To list all the Cards and Tags under the deck: @@ -623,12 +633,12 @@ deck list -d physicsdeck ``` Here is a list of your cards : - 1. [924119c1-a807-4df2-b311-080be9ee8522] - Qn: What is the formula of GPE? - Ans: E = mgh + 1. [924119c1-a807-4df2-b311-080be9ee8522] + Qn: What is the formula of GPE? + Ans: E = mgh Here is your current list of tags: -1.Tag name : physics, tag uuid : c8259fee-125d-4700-829c-0da79eba1e91 +1. Tag name : physics ``` ### Run the Deck diff --git a/docs/img/quick-start.png b/docs/img/quick-start.png index e248eb90465bfcea50c0a6880daa0a486c7de358..f8595a061750977b1580f72340360aefeb7cc80b 100644 GIT binary patch literal 12650 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 K6#Dq(yZ;5u@OE_o literal 13163 zcmd6OcUY6#vN!5hR0Qlu-&>F(AWD_4q97n3B?Jh)_s~NNv4MpqT}nWtmxSH|Ap+7n zp-AsU2t`T=BqV&nbM`%Zf8V{&bDw+9AKxE&R`N2l)~uQN&CGh&@cy}$D&u*!^K^7{ zjA~CG>(bGk+NPsBA%6BG?Fpw)F_1Q#@X}R%M2GC&iFsepq*dC$yI>rq`^c5r{}MJ`&{C z&;RB^TE6U*OrE@#l^fg#n@q-d5(_4P!o6@gs4o6}@^XfN;;rDhrX=_+xh^*0sQ#yO z8r8vG&CKu90bs8=+t#QM5Bn95D49`UP<`*tg#z0`i(c zNkWQEf|YwG9nwdVSHqldb(!hmpa&WBqf>w=CY_uJIl>{EekG*U>5&t$fS65f{PT=C)gdKsKWU+$>DIs^YOm}{u zjr2m(?&_!tACPz;yzOni;6Uh3WLesG5Qh45JAd$6no@N3$CQz2F*I~WsS3!5I{aKO z>$%dLP)Ty{!cX`D{rIL1+DT6yDm&kLGJV*i>K2w56|~=4n4%=i{SLI%4+Nj*bRwks zkVi)r9YE)+!NFb-&F?V>dh`g!>wDFs)C%PQQUE|f;UpD)?4BE)!_srz?LA2&Fbg~b zh#Kd^$!(I;V0f1H7~!zIQ~J`C*!b{tyy*;5fX`tiK7{SyFPDGBwn#!KK5d zbyg(BWgH#gnR+;=N^T6u3+($k+VFvdHRbJ;m3-rDXzCSczCg+LEZTU zCfyM(ss#dqz~r{mVZ8Qkf`0-!~KYO+uBx*Xk#g3d=al}X8~BD zbZ)edGLGtHw(%1Zv0Da|7};avss<*hd*kW8Pa)b-1*5yi(ZnLo1X@Jg{;AJs78DgG zDBo3?jy@!7q`|17b$tQ|mCON-H}Qkl+M(AbG_fw@dO~f&s9Tm5(<%N3p0}`e$@phB zW8k@Q^7Rm@HBws`tOU8Wmq|%TFB2<%bx_xMp0+3+3=3S>cD|(suY-}lYn)D~JoXQj z=HZqAql7Qkxq-|Ql8k8421KTEHtSkmL0&~(9)A0$Zilk@RaZw>z0<1CQnIcpEKgTk zE?lWr9kYSdmLtD>`Ld4yLekEel=#{<^+(CJ9pYQE>wYFmR96(dYPuQ9q-6tH}j%8$^$rXMHXXY*g zEy>7$crJ!#rA`2+?q+tC_-Gi#4tN4lXjk3s`IdaFe8gbfM^;pd0RohSl&!(Jhb^h4 z?5r!QFiWuUPV=XF#0c+=YW~t-Sdj^B)7{!BcZ$XL*!_H>7 z=@)N8lGFxXmJJB~?rE?Z10v`IQ(I%niip*UBCm7oh6d>b0ERlFxz^7IWPd zi@ehJTEXP7@1Md2Zg*AOf2Ru5tcx z;CB$Dc_8Q?px#@5K#DV(TOEJp3WMRE=6WibZ4}9Pe^HY7LqQyr&UR%;Z)b(Qcs-Ac zRF=06!riJZM~yo$?VaG?=}butYRfKN`DO(0UOha`;90(#l(eE_8VUvE6uFpfbTs~y zVI7kpE#?VwszMq_t^9-p;)sUsQGP)=SM)hYQc-tpsj>A^puef0;LF@lD|G3SpHJ>l zca}F4<(AyG1z{kG#RiF@tEV?;-aVpzUfW1Ybh`M+X3HMH`7PkssAp(dRFM1F@7}Gf zrXh}ZJsbLtKpS5C{QrL7g=^&o)n7K+`#I?6fBP2uDX79J72|6a<6nlaBdQ!KpA?E1 zyAC*o8Gw!-C1ell6cLSn{s#q>q4~I@4v76cRD??(NMIDD@_qN?>POv z)cM-L}sXxqNU~TYy3y|0%KtSd{)5DoNv@dEcz; zg3B+h%~ttwu+rEra+PxZ`-ZggQnQ3BqYC9)@8bv5{p;`7nr!aU!z#Br>a1>M%U`lF zf(OlrN-6qi*BcuYAZ^z67VobKO*q0Qr#+U_j`eVN1Q|keqoR&(^=&tSPB}OI0=`$g ztjtUCzWce0eEx!fjkb8G&sfDqE&9)$wsPZS@WE`=#CKmgCo4oC>⫬sm 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 diff --git a/src/main/java/utils/command/PrintHelpCommand.java b/src/main/java/utils/command/PrintHelpCommand.java index 12c86aa922..1576c880a6 100644 --- a/src/main/java/utils/command/PrintHelpCommand.java +++ b/src/main/java/utils/command/PrintHelpCommand.java @@ -16,6 +16,7 @@ public class PrintHelpCommand extends Command { public static final String CARD_KEYWORD = "card"; public static final String TAG_KEYWORD = "tag"; public static final String DECK_KEYWORD = "deck"; + public static final String EXPORT_KEYWORD = "export"; public static final String GENERAL_KEYWORD = "general"; public static final String EXIT_KEYWORD = "bye"; public static final String HELP_KEYWORD = "help"; @@ -142,6 +143,7 @@ private String buildTopLevelHelpMessage() { helpMessage += formatHelpLine(TAG_KEYWORD, "Tag-related functionality"); helpMessage += formatHelpLine(DECK_KEYWORD, "Deck-related functionality"); helpMessage += "================== Miscellaneous Commands =================" + System.lineSeparator(); + helpMessage += formatHelpLine(EXPORT_KEYWORD, "Manually exports to save file"); helpMessage += formatHelpLine(EXIT_KEYWORD, "Exits Inka"); return helpMessage; From 980b86a8fd3184a9f046750d5ccaf302e920dcff Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 10 Apr 2023 22:08:45 +0800 Subject: [PATCH 300/311] fix --- src/main/java/utils/UserInterface.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index e2f0627ced..3bc88d77e8 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -118,14 +118,13 @@ public void printTagList(TagList tagList) { public void printTags(TagList tagList) { if (tagList.isEmpty()) { System.out.println("\tThere is no tag."); - System.out.println("\tThere is no tag."); } else { System.out.println("\tHere are your tags:"); for (int i = 0; i < tagList.size(); ++i) { System.out.println("\t" + (i + 1) + ".\t" + tagList.get(i)); } } - System.out.println(""); + System.out.println(); } public void printDeckList(DeckList deckList) { From 1b7676b1f1a3533fbf970859521f98b51624ad97 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 22:10:50 +0800 Subject: [PATCH 301/311] fix extension image --- docs/team/iantenkai.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/team/iantenkai.md b/docs/team/iantenkai.md index fee71d8c23..86926191ab 100644 --- a/docs/team/iantenkai.md +++ b/docs/team/iantenkai.md @@ -62,7 +62,7 @@ The Sequence Diagram for `save()` is shown here: ![save sequence diagram](../img/SaveSequence.png) The class diagram for storage is shown here: -![Storage Class Diagram](img/StorageClass.png) +![Storage Class Diagram](../img/StorageClass.png) #### UG contribution From 68315efc13997080a641f49c247678aa3fe40d4e Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 10 Apr 2023 22:11:24 +0800 Subject: [PATCH 302/311] doc: UI --- docs/DeveloperGuide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ad0e7da914..a576dc12a9 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -67,6 +67,8 @@ The following diagram describes the architecture of Inka: API: `UserInterface.java` +The `UserInterface` is a simple class that handles interactions with the user, such as getting input to be passed to the parser, or formatting output (e.g., custom messages and conversion of custom objects like `CardList` to string representations). + ### Parser Component API: `Parser.java` From 62a81c1d6ea51ba5a77c9bf77e3c49725f22c439 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 22:18:40 +0800 Subject: [PATCH 303/311] fixed images --- docs/DeveloperGuide.md | 2 +- docs/img/SaveSequence.PNG | Bin 45287 -> 46221 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index e4c9cb5342..2f787a11bf 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -456,7 +456,7 @@ file. 3. The Json is written into the filesystem. The sequence diagram below illustrates this feature: -![export feature](img/SaveSequence.PNG) +![export feature](img/SaveSequence.png) ### Load diff --git a/docs/img/SaveSequence.PNG b/docs/img/SaveSequence.PNG index 0d6a35e68ad2e8fab4788e8be515695f46bfc528..da1e5a76f3e92b963097820fdba80174802d221f 100644 GIT binary patch literal 46221 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 f72Fmmp}dkbK87j literal 45287 zcmbTecT`hb)b1U7L(m`!B1H)xARr(hT|`Rgy_X{pdJ#geHozz%QbQLI2rVd8T2PE4 zfzTmz6qH^>dP2D?sOLTR8}I$+a|{QAuy?ZeT5HcWpWl3DP}-Wxr%zry34uUP!&UC+ zLLi5PAdrJ<$B%+nNXCq@;Ku=^uJUaNw(Zgk_~o#@yoNjk^7h54?Yl?7??k# z+K<%#2b$b5wh+jhAov}5eLu^Ev=hVn-Fr<7r3os7zNWTXDLJLeh!dP@oV-^|bQ8{- z7Au-ufnF&s#9*Gl;JV*PxBD7`$0YWqkjWw=NsD?S-Wm3b^(!F_mSZFl-?YG`R*|W? zrHxdixCr=U@bBzF)B)I4>SAFxB{WF*(e)+7lNwoye@!q+q zkdY``6~x6O43SKL*UTwPd_}0*y_`Jaxdb~F*bSU;>Q%PJmvDL z_a33%k>?R8J@J+`lwIf(n+gr}oQp87+7Nsb0C*&t{0 z?a>QWW1}vW19o;pu4-tT7cw7O(0s0aO*-dwtX?%Jb zuR&S2rwF(YuHLKNUZ|2=wO~zP6kikyObt`qSd%A*aBmaz$7);2>!aJ@0LEVVYP}0WOo-|@WO|brM<)9N^VC)uAJTd3mDYI+l?}pV= zH|w59u!RsKF?(Yvk87Tgv-#u8>^ zWr3FdjA)S+IdwiLx^(-wctZb=SnhUJR^_{YX1e)~wO95#)p#en)oF@u!rJ`6(4_!} z6>pdlzpZ||PMQk8Q{4~-yWXihmc%47`ljWA;O>_;qk6UO0=fW_?+`{d(Xzp`)V9KZ zDvhDia(#0`uQf}Nk67ogrdQb;=tzm@Yk;?PFVCQt8umKlye+PoZ^}_ZY98RMKN;cX zu6A+S5&at++HH2XH}v`pru)m)*R*^&EHfo@M)j7~zQ+poBe%x(aOwkMGGGCwToEFB zmOFTq=WA!iI1X<{KisNK%6{RNv>h|^sG}}mZFY#uL2B`x&4ai|twrY+{;F%6&~lL< zg!rl!PHyqBAZ5=j%fMbCFk_E*4%YaOc0^dz2WXUiq?PL5NbGU2Ksc?^`F?$HdST>I zi(rFfH4&^`=P2o4#*`zYj(KSd7jleBWREme#*Rb?%bB@WR4|D;xp=0q$_SKEbk3_x zjlOQa>tj*1-K9nuNhVs~;u%Nc1g&rnixp z3e9|%Uf(;-EY>w&*1l`kF5^5@^QKMD8;*D}ygmb#cmFw*|6~$VW#f`=Bzb)LQIbsH zgZM|n2*Th=+>lTIo3puhP|)UU;W!tvu$01L*N=mGwLT-?$$EJ>rvk%bw+0t-V}{3P z3A_1zPj%64{PcNajqO=}!@r>cX+gg~Swd7aVz+yS7VA zVM8c%$1t+ID3wdLtXb778*-~nk$>b?+6@*Eb*MWNeNtR2E7-7T@cR+nSvG`iPnPQ!}4XKxlAg zeCG0^f)#AXX1W3wNiOwIltP)twgt77y9^8tmQUuFC6;Q8u2s~>qLFP9?Tg(Nh5BAg zAn-Igf-g$l*>7BTxaDV`yR$7Qjal0;m>J(^25rK{EV zjwhOX<_sVbyVm_Uxiyk6nf}z$9upwRMJLx)uQ8ChkHc%lxD<->#2(>8o#JyfHDz6L7YInv!}}UHF)Hpkm}Rzbh_+G z)0$JSNcl-SZ!N5`a7lIVn*p0-cEWR!5ScJqWnuWk{mVdO@3}`(C=+C2#-8! z>Dki9E#xGY5JGSA=oBWjq6Pmh*M3xcj_E|=o%bU@*Ol%?KtU|LH1jV6`B_nwdv$}EQytwbfA(VO_(`*|Rd@9}nBg^t) z@s@+BMzz)@KrOE&NJ4v zyw1vGL-B*&^S;)4XuN~I*&0db)a8b@OPzaEw)JF)$dK9bNB?KN@_tr&`TQ03Mx; ztoF98j-e^$pd|9E>G$BY9c79IIeg~w)FNLivaDIy2k#&Y_9EL16oi~vPDCcB6!tZ)dAc2Ych31}78p{-l~*;I4y}gJVZ9Z!J-stMfjwHJpveP)M>y>F0{n7^MyHK!Mm@n0}&IeL{J z+~=K|A4v*Jn5~E7)SdROW_Dg^s#Vv()~)n>)@e6e#%AB67)1m(Y>@7KhO#cQSr&j{Igf;(qkVIp>pvDd9jDj?bFe^Sp` z=vS6fV{za5wHqkZteV>$<1ov)Z{G{(w`91Ly!ph74P{5Y_2pJ@8Motu7t}b$0;cA; z0?8s2^Xc%_`VGyW7P*lxqdtycH0jdHj>dUrcLgX6u=j=;aQB7Owdil?v1m8V`kL1` zViANkzp27}3$g@XcWlT)9S8Y}l1W{*J8+<~BZG?&e;R1ow)oqLhqKwXnUlA0VWz?GTqrRvz zm7C(GTKDkX{?I^fU6Z#SKea!mkhh0XD8YT{2EjvNT(~=y*1H=Gdjr(dAU}n@XM6B` zPncgOQnegVbAtP#4gz^{?)N#6J16%e2Ly6O@jGWY_xd3h$(F>D>mMV=9KvasSd%)I zXWxNKKlzAzy(#gF8jZrWLoOGeU1+e!*1BO#DrU{f0@mnWo?t17GHarPK)xPRxYl$5 zc9gxHN!kyywK=gAtay1obE0n<$iB@7c>LeLp-b5BaC&WnYYJf(T0Vk0@C8Y|v?qKj z>OrVF{7-zyeGTficmG`@J!L}eJLge|*zdd{3&i{Asr}`CMl_o7zVxwujfr`HKX*2C zXDv};>w7Fwuwgp}t#`vbc&*p&!^0!%YfsK{v`)N`bF<15K@iR%DGOEHxhJQp#zI8+ zjIiqJ#TiziJH17w6}&(>YI`ro!!+T|u6(aEZ)Bbx9i zdg9K;SO$9V=I0k|?yUabU*h$7fzEm>Lno*7{30S9tQT-j(DJ7XlSA$e6(t!VWJeLt z?i>_^Qd)xS)&mJF+ zTtEZCc|#~(6|8O|P?Jgf#|{9|+$yzHXJfTTS!&3Ye{|FizzUxLJ$azy*|9(IyPHsd zRI}HUA4@n&8+OWQnX*e+A{LpHxrCYcu71*z+p(41+eT6bGyQ8g7B{~|u(h@(i4dFE zLQ~OYM~m~G&b^S^MWf5Y!9}I`uS_OogzicR*`Fqaw5CasSTjnQX;~7jKRsm-yJQuz zm1D8dF1OceZ0&W;DtOJn+KITz>|S>_LBJvzZ8M*?`}sL@N~S`@;9P|)$Ud3PUiNi_ zNh(DMi_~z1n4GmJF|zdkgsWO#sx-^MPX_=sYmdqoC8=g~gCTbX7cM8IMR6u!(`H8N z0|^pXI>Z+s;JpJ`L!j9cp=-THda`s8Z8mMG5|eW!4VtYcM%Jq`9-j5GsLo}lP}&9L z`uxBo7&~~Y(0brIpz(~)dN(1#M4*xFG9=un{_hn_^Y)U}uiMt2BbjXYVu;D2B0y}3 zxeiro7~ZF>&Dk$`I-9J`_G$oJ;G(D-{~hGrLOBw~O;IeaVMfE=B#T`Ad|e+Y*AmsD zp{X?AQOB^x%v?lXnoly16|PQV{>?{qAXtFj=$;oA-5U(v7+KifSs!X&)XU<)*39xE zdvuhOTq_4Yv$g$5N@hFk%wA_c4wv1&P%37)*v7~>%{WwEv$TQbpS&u*ft zck`_*%6}Zi-6~6&x3Oy2noL4gy%59`I!OYE(R&tu1Z|HVRIT();4g&Kb zYE1Mv0wSXSWvc9bt{urO3-^t^&5kvm_(og zc#_;)N9+7Q6PwG~NU1Jeui?2m*-GmdPa^8XhFnAfpL=f?+?(?Yo1CdDjc0`0j^TnA zoIOVUr#KPXB_fWRxw*#iyavK_(m(H~8H%Zl|9~k$y}n$I=%2d+yABm@E|PU`{tobj zL*mTV9Wv|HlnIzpQ{hq^#qEhY=f03$SWSz2uSy#>N)qKps<3ASE>?q(@d$v;TjpS2 zQL|KuR+fMU3zw*xDokHc z$LBo$Mc*3c45G3(L1Io)3MKLN{vq`US{7YdGZX>rxGtf`<6VC#KskhZalOrBYCvMP zYNtthw*t)C&~^&~o_w25U#~y$4(vRfzo41R0az-^PHyz~G9?mQTEzszj+ z{DURA8j@lLjYH**u~&o^E20@OOA(3Z`Au#4g=RN6c=V10faknY18siv9~(|3Cf>BF zWdAfElGlScg=WpN=5i-(EN@tY)RY4zXrJbtz;H-3IPhE8h52oDPNm=%UTv0cb<3Y$ z5>P+7jy*yr-j)hOc}ebHw5-KoO-ZGf zQAtu8GTntnY-RVpc}mqg^;X$+yh>?>bEny9%I&lsd|6Zbb#I39oxC#DV0Dir;6hO1 z(D@*&{W>9R73WxO8o{ezE0LcCR8 zQ3fkDzc_bPYyO2G*yv7Y?p`f;UDMWG6IdcOSP=IN9v@`K5rn_7rULF2S7~;m} z^t5~`JuuhStEWoQgf(+g1zVk<&1oF(6Onu}KdY!HjF&w6;b`2E=)+IEP&(aW@C1dW zl3bku)kq~CBuf*gAM^(5arC)-Ivp+*>){T(eMYd4>Jh6L3^H(UXT$Yaz=?F5~H4_jpLD>I0bY)685Yc_7~A50HPcrprkHHpsB+iq$Ou~nCI*DxYDjWPh`_8=w))G$4xq!x2n^HE zk3=gszBZYF)$4#^8a&0TynCse8cg<*;?MLjN%r#6Bt-GlUK!BO8GuKIOZC}vN_1~1HWhGLI)&uU zVO*X?nPp@rbI-15H!!$2g}COaKUK1(k3n~9$;tc}9`*&S#1=l5-y%@kYN-H!8})I` zK(|soqn0^Gv-I@?=&EH3AsogfLo11SIWxGH^}Sq}hfZ!gE?CBUmhZ?OUz)D4NM2gs z2Rp>7=|F06)#ztz-i%|nWmWf5U0I`@Ga-)0xlG#44E_@PW8#GtyiILiq_FROIfc?u z_8f5~VYCYT0@;q|Uwb}Txb$q%sqj&audToclhF~9!7K~G)@xy~*R8O2dDd(kM33<~ z#bC>xZRI&Wv+-o+8QPsrWj0q4_D4rgmoj*XA54z=l+t;YFn)C|bH^dr;C?+_trsz) zE;BQ>z8%&1^D|UzL4i0^M{Me8P$Avk33;qU9|%&Vg*h*MxY2oK;x*AFUQ`e} z%;)Qn%?CZ|WUGV!J|vbZ>H^@2U?5_$X&xm%c0CCdL_8RNVnuMmNTmDzeDq2u_oKn) z#1nkYo4aq;Xi~OTrnqy()Bz|!i_R4v9KiM6aO&w1Yj+;1tWT4(`OKW_HDhrKxA(mG zm5N=D?`J+CQ1HR<0DLz@LcEY63^)=)XL7`g@EFJBrBu=M+{yCu{A2So1>^|dvjS!9bSd*NiG|w)M zaGXc2QnoZ6ttL?2rJhE1@-$6bs~U82rqlqY=PGx;O1-ma;AJkNrLTDglu_R9*xfL` zpZvnnbVUx7kIEJ*Ia^13<B-9ZdoK;3+~>DID#oNXC5H16o>ivx&Y3hj;Bh00nBDj2PNgd^9f*w#_zN9*&_N?e}%?o#RO z07x2Hg+=V!s&<@J;|D+0?W{-e%=zz&!Nz}{{MdYmhv3g}3tudkH(@&Q+>(N@2lcku zps{z$m+cmZKlubKkH2VTviG{yZ$&&PUtl*_A;rhT)RMTD!9YhGb1sn-8xnRKzJpxt zpLe`ED+$|nJ+e)eY7vsifqAQ+#|z%HQhr{ z`v-kP?NIZTLy-KN4|Mu+fX?JGx$wJ8`{beu&8^lB5nEn;%-0m}<=?~@XkrLHl7Y|g zT=IWk`Yy3A{_i~hqNZ+~(NA}V;V2#JBHuBc6D)F|TFdrl{(C0nVtw`?U)uo+q3-IG zleha7nu;fm0kH7sa>4{45YbaXznZy0U9qtB;SuNb8n$>UFYx}4tcR?Cs#4PO1lx^| z;UjP0omrpGPCns?Qb*-#&{^20_pJ=cru=0Lhkm1s!{Mw&5^lrqPKWn_bpEPSG@2?( z!OcUyUDlJJD%Dpvzy2MHZwL0(|2PD7;Qssldi1NC;0OEleU*Kc7W_C)vyV8QJ_7hc zYyQ}AI_lj&K9SzfW(6P%&0Cr?tki>#(^G}qzsENo1~d4-{>GlXy)hPQ*MsS_dw>6f z-PiY*@8A_OvSqb`v0Jp@B=DxvZ`s(T!KU14+xS?yb#Rh(g&+BaZ+iLIXJrpvM`FXtW>r>2dVWy=I+& z(zoBTW^V%ztDm*pEkAJMe_r#m4ow9ZFYreTrs zT_CVi@IASY@OY7EMi|%cvO-d6xb!~t!` zY)xf^LXl6y%i1LQ{L{ke*xYC(zMr8;0x|2~>P`TJ6>%@>dPV0F>cGDBKv< z57}8Wq9oyfbVEtxUkcg$2I_Zj!I9Mql|!vScEzCyQIg)XXz=E;LKPn8d{P&;&tEf+ zM#ny_tObyaUN3APQJGozsqF;VTMKC$&}+wUHWc zVwBV(V*pBGB2uK4UQ7BVnpaXd9t|+Wr@CJRKI$jWVQX7oDzhemYXtlK8^``PcL8o0 zh{l6beFv50fP)6?Qe0cRa@6Sc241S6I=A2f;&;ef70#qK>9rm`R6d|qD0_Ax6?N+P zQ!&=hGq3Tfo&+ASO?25c$8e&mKVLH~|8nWx`vX+b%>&JjN=dW~$d_2EThZn9&ItO2 zViK{7OcHlbum1Y*RBNx1m21k^)(p8Z&5ea2QV`%4sEX%XKta2n&$4NX0tvkQKEJpo zG}$J#R6gXrG&*898bQNkow9lpb|MBPx4ZeV$h^8Mjz{nFHV{In9Ou&W3K6uTU}$mm zbBh-1-($4~CuVx`W2=GMCxXnz#`*eRhCFlxB z0MF|?9Ocf91gNS8AgIKdzTy;6#PN74*G69sr#OLQkQ2BLE7I$}3 zd=w+LGLiI>a){K$>M7R1?EtN`JiqD8i2eP;V|E8- zLimXpFCdg+J87lnqhI3vQeyMFEP)23gcNMg$-wSFshYBhwVjGRN&GYhSOXMEH0k=? zhiSfpj(G!5>)Lck7%F>exNY((hEr{j&~O+&7DRhPyor@StG~t%`;GI0`T82GBfF_%Ke~9h|m71nCTt;>JkVD968S5PB!RrIw zZCX>AMYd!RlPv6xCS$K>o|Zwr`~dLK?<+!RL>R^>Lx3~2h9~N zr(U-{R2awu9Ap5?U)kT-nk?GVMk+6rSrqwFE-^r*%fO41G^{xmpXM{z9Fj{`hg~0y z9DNOso%hvJxgP((^O_ZI*xY9Tv0f3Smth5@Kr4fh`Q0g$I_Kx5?Nu48u`R&AuJSxh zX$*%=78GL3GDz6k1ffF1;FMCA4-e^F5>%!(CsSH<6V6rxu0Bo!9)JgD%kh|`sANQb zH9Gk*Pxh5MXc=&t4b{%ZFkL8c$+s3j=_Gv4bX=?Oz{sUZogdLKvitDt=-Hb<7cV%2 zx~+d4?*ieUy6s;r>x*@ZPxgL(r1MEyOy?7s&<<}*(fO5i5{s8-2tkFtR{RBn2`y^Y z`H^SxsALqX=iFgI0Rz&+ClNOf$0@yFbq%2`h}XIRLZX80xum5rtpCy|L4}y{82`^? zYZAb2#&&!{Sy~ygm5tX<=#zBVpgb8*BZV}sW7#3~vA_9I8++F;ps*Q2md#wP6 zFV(7NF36InYvcT@ZwmfrfRCfX4&P#sG^hkd4j4}jrTAp2c+aY8*Oe2V4gpmoK5FVY z0NyxZw4Po-oFDd3vF?(ZEtD`x6tHli7Z+Xe#8jgTy-s<*@59wi)8b$n@d)^{WZQZW zx9z@vc?outAGB)^w2>l$F^^q1KZ5|~Zmgr%Es$u@Z;a9rQ%K?wfAyeEYsWPeua7k! zP*0a0z@48JFBgJx^vr7zi(zP}P<0pFh@ef=Oes}MbX9tP*!Zq1 z0_+uH-Px|R(r+?NfJw|Ebf!y-3abq7?G6nhz^2Q;8D#mUMSrWr_-(0cTkbW(GCSpD z^4bR9X7Rgr0pCuHjvjJjgzkLMRAT?y$ofd_M)^`PvID1-DH|8Tbq;aZNr0I~#INdEU><(<&Rbe-#qJmgM|HYv_ifC&qto zr+tA8{EG#*o@$lOIhs&if`DKR2$+>SqDdXVu3{qDwUYxX zk>vXrD3L>yx*{6&pRr5(n2$F60;(4CkETr;GGrv2m_J^ zrm@7C>*ZO(4fv$~%mrvScr3@Wxk493x^P}QR({`(NEKguvSE5YoUAhw_zK5&dwhI> zo+BUGc+D%F3fqH=WqBf4e2jlducqnhm4kFbMzOLSM?a*_Y1dm|u)YoZ+9>LZWQpBr z(;^uYN5ta69~vL$ow{RFWxH;>IJ_~x+LK?>kBq}#Jq74Ee|M#8;L3+%R%qZwgP*kt62Ctg%9RN^R1D80yHDy2O%*_;Y&mj<=kdPKaPBM(@nNm(-WGTx9 zJj^q2ezAYmlJHvP8q6brzd0t7C2;qlnWbE(EMs+*k0LGZ~4r(BU5Xspr}(RW4K}YlvAR?^-1j-8$P_1Q1Jqh_Dqj*`!sWNBHf>YOzQ|U_Pj~b5Rvvn|jtiOgBl;cB3 z+7hTtwyaO|gN?da{oU@>5D?OsMsY&7gKc0&w4%LT0WmCypmN-t2**r^FzN~Uxe9x# z_G`6BMp36YnPVf%iMM(%Ivk4DFbSxvJ4Wvv2ubozm0bB9qTR0!&3+ZMYenB(+N_-* z-8wo8S&9&rfL=gE=`Z&M=2yobR%E)Emco2fUOeT-Klg7>y|y7$HX8i$zBD@FGjO@& z67Yd_sTL&1&zR;{r%@tdwI|nd0#=CP3$mw}Ym80AgZpZt29<)dftw`|g@WBlx^-In z>mB)nIZNSf8W}ms=SDr6SbUN;ZgOG@917hvxTdCrg_2S;V#QcmK%SA(y6JKfaPIGl z1JLHkloHh);K&;SOU5Bd_-xFDs-5|PQ}dqi7cixa`W6+H0R1gCsr8rN$;y{Jiipt; zuOO)VEvfG?IyPDoq`trCF0~M@a%|B1U&0&`ftF};#opk z_i!r`KXjEOX*YSENNKZL%6U0>Qh}spaxE<*yrfT-E$FBGP}QCIxoYIp;F=eWsd6{r z-Ly#07mwQqr+tS7L?!^p!#?9(mRtm}PXK{&D$dR|uK`(-8m7?(WZTx5IqSh;t-FP^@ z#-lS8+$&0U#+RG&zy@~oLv1LE@EWcc+wCNqV`nZ{cfHAN3ShOw3}l->u*~N+*4DX= z)N3?^C=_X5)r%W_(G&(#$}XsO6ea0)3ySlgLZiB%M-s?1@SAF9@)lW_UTG2Zk*EHBQ!f6@*riqZ*ah-2@Z znpns?ryO^>%eRA0^g_=+421WH+hR}=kMR{l8p{y>bRHvY-NO6Dc=TD0Mc(Mm5z;`! zDR^YEf&UZ(mrx0=rel#Ly62f08O}@5w2nKwEWmdCAM}8G!=Y2QKZW#gL1EsK1GUlk ztJ&XjN!&sgEo(e~6f`4dK$;y`Jp(+vz*1+ISP#%zGvXvm8TrFaFt#nVbySD=#OH{9 zJ2$7&DT~Pq|0Ab^Vi=z{=GYm9F+>v%W8m@3pKlgi6*+VG;#m!iT`yu!tLjd89o#PGv=^ia{rmje*)SXhwian4Q7IXN_xMQOKI+DL%_~Wn)+pcDLmaiV+iKSz(=W zts1dWbOR|tSq!6SX6!Ui?L>lO2SoH^EbKg&&}>Tf14z%|MFJls=h_M|$e~cw$eIp# z7wa#$HKZ}>POfQ%)B2u9a9$5x-kW)KG2jK0qcfD z;ghEYUUibX%BWyO8@>|DEJ5f$# zw-Z<1L=Ud6Df4VodGXO>_g2g?)k(gq6>CTSYO*g%)~j{&580o}_7s7Ni+E3uI-OQ8 z5TS2qJ*IH?rXvQZZRN58JtCaL=?S{)W`7?^lvmyn# zwlm{dcT?A*)k%Upn$Yg-CWOzbhXC%!bVW!U=OCm3-PiL$56J4@X;_Kd`iN z1;XwNIN7&b2RR&dCOKv1#+6fH;l|AWZqMPyN2wU`*3EaD$}zVLT?(`GnM~enpoa>NZ6>vk|pIT zu#|w_hsL7{b6c)#y&Y4>&-ng@oQ;n|ob@xuw11`?J_BarH#coO+yIAAsq;sA%7Mm1 z3`YSc-R3&*yRHjv7>t8HBZOTYob)d~<)wj~;o8(V2<&M4wDIo&z}f}qE&FxMb;vFB zS8?Fp`xop!IC%&l*^t=#e{5!u$H)G@%M+@-?eNjRpGSl zy%X4} zjBSr2o)=$#SENQ+U(f(13w4mIYJ{C+P+uCYr+0=xZ0Vqf{@!Dx3m?sBks460^FfM0 zBc5f1^xKy1XgvJmaRbXQ<>bdC`*cS_qM&=3K(dccwI>1;-UX#9L)+73Vr{lXh&Q^` z?WKyx;(*3(FL&xC+;Hf4zuW5-;2`sa`|nr@7aw=1U!G`60bZz~qGz^BE9aav`-)6N zMBGQE!FGYS4Yb=qBs=CNwb_|I%qqg}rUTa4?AUPM?;)sI{6*eCKG<|-DdsA_U=`!g z%T{`R?j@BV(mMlhpY4m5Hu-H(iGtkn>t{rH0QoM+GeGt5To#6$xjCG4?8!0e6nxHA ziM)`Qrn83@u&9Ae9)!3^f=57lpSC}YVT>php_<&RPeT6b2Gcx#;15v%y?mzuyr%mP z7C++?joxm2ZhUN+11zjFEs%YRfB*V}^3VITyIbg zk4yb~)!)sH5$+o$t>O$1l(;X3Fl5}elsw2)|!53Kssf_ z8qlK7hStTcegFp(8^cb~>unL;8+H=>D#C&3uq*PCgs>2U#%Kt|6%;LBaOS?cDR2Gj z)PIW&;4`Rh18O51aNkFP&ybi(Mb4LkUM`prxAd@Q3;#Nr0pOeKfeRHzo&l@Vou~@o z2~2jBFz}tIsQ(b8lUa=hyw%Lw=``?}i2{Ftsx@yi)u5Pr_hYynSdSzVCK4w@D9}kC!`q9Y13b(tnVO2X{-mNJD8W0{4pEztW*{9wGG{>fD%&D-r6Gy%TCJbhTCvIwE*E#Mii^;0(#qf1(d=$6R;9k zsq0h9d#@zVt>7pi-(RyvJpegj0YJALAA1dCk)znR@s;npaq5jd6r zp0?%YQi-~pFu}%ipf*JSw(Yr1~Ma9os=RO?*epes~UIp zZovAyBbQdX3$GE@B`**T(v|2(AGnzSv^@3LUk0BG*A|$ zD3-vF8J{K#IR1P!E%)yTrgGT_&*7 zq|Wbcv3Ve0MM2OgFsJ|@=O&zLEp^S=2DOIDZpmW?(Q=z#4@oV2;u8W6xw=olvgsCf zr>Tfk@Kx$;42?sm(;@81ipTTdF%XyAS&j9lT6}yY!@X{3k;b2kkG|>Np=?wgeC=F7 z2nG?o_#YKbFPUR>tS+S3)djFD);HH!V;Bv-hGEO_Uor{X!0PMp!WlTV#Hh8PG{O9y zsjOW&u*=jk96Ip~`%;$MolB`Pf5rPDCrl>dlIIgpKy#m$P^|>Shmr4SazdSeNhy9k zt%stb{6KUHkgjYrrIRPqnjZZfz7Nv5BPf3($pacGu?m6jfeS#2nR9a`CJG9 zs-6*}F(cpo3g;V_L5qY_v?++~iCm!%xR+WS$U-n-bFFd#f7(6hqbM*%Y zR0CS5u`)^AXSrL+eMSgNjAxPRJm^Mo&0_()iQr1E1J6J*sHq4DRh%!uPuFY8ZrQGM zsR`!XDA7yE1kex6oI`yfwuV4>`1n>R3ls%5FYesFt_o)(WT)Z<&fLiQ&!Cqqw>U`6 z&Ad`|dU#_PsYNj*wWmmQRJf1SQ~-K(3yAc`!8_m?H1nV~NH36~unm76&@gug`H8^@ z#%Z^^z2zeX+75%+V0NPuFY(jpO9cJu)+lWyCDH82TtevuRpEKuSZ`9u;NM z)w_HdIo3de#` z(pk`bICoQ^`a5(evKbzU|8N=Ay_K6i={M8F*)vSAI26&6dYt<~6!1Xyre|yG@ieDJ zDKG>Xy-X~cUeVfXjT`ZRPQ*h>@G3=sl1NboFQb;ln)UQ#5;@Njtl`$c&2E}<1RiRI zNP7(XobnBxkdYLvaI3R1&HujN zeUKykb1n=|!z|V+#?w9G=BrGENAf+_(-CQyg*uq%oxuF>DdoJiNkGj-3ydF0#Yhh>Zi>qn%G3pkJ2I zJE+Ib>xD>9Qg3FvT1HANqv$CwK+lK+KqRX^gehrMT>@7od~fE^!K(_Z1NIpMq?q#> zQYV4YI9Kz_B|->12G~8B(k~#ayhdP|l3IdLq=oZUS&)+dd;8P=*K1;nqlU0dFJl=E zuxqBijcbEzE%$y!gEmpQu+mdDpCjL{^t!0TTZu1l3qem2N!727Ov5tp7|-Gj4`N)d zdXhCI9|J9kjFS9Vn6(Yo;^4J#-l>{LB_Rx&vOO*u8n0oDv)S2prn7GZZb0r=>Sd&# zhDVNmL?n7$BIv$TtxfKlsZr%!wGHq{j@#}$mo~%%@)U1t>fZ5R7`0Rd@wQEwF>PpElkGa z_==7#%W7)_sW{o8VuTegR;^z|7seFLKT?YJ%vR+Y8o%>F4Zt?_ z63cq1UjEgx%t#f<*_6x`62;*$pD(NAq?qeqzxpHIEhnEJ+DBF6S3o;Gk(TDw{9`FG zxGCsdSlBI(nxo6=Y}S9UVVB>t-I}%pc8m0`NI3MzdWo!}=D8cu58A9KMtWkdQ@k?- zvL7YmH62qCj`O15<(&_47v(jk1SI0$UzOs3xk%c%SKik6;#Ge``+i4YKt?sk*&KyAXf*up+JW+P}fR$UvS%D^D{a2HyT4&uCmLuRD?j5))8z&Q^uXv(4 z+Lky(qv_D^2(MDe&Kdy-6vcCuHySzmapbAxD}S=)%T_R@0Xl?6*RezQ z$K^>fybTmW(R9+y8K(2_H>GM$S(6<|r?|8O_eC-78Of2B0W&$w{2VIIzh&4jMeClD zJH#);3MVuDboS00Y-Zn=+%6n24WJi6{4}>>g#1))x6_T)S+k05#Z+U$_1n3mfS}z^ z(K)QBrkbb6xP=3b#t~@O6k7iCH)a(0qKmxa5801fKg!fOA}XB4d{#G;G&8^?Gc7K& zdh2e()|p^x?L%wcRgVTz4WxSK7vsb7XAZxFJKX$rl7Sb-sgyY%sdTa@di$ch?uw+( zJQ^C%W=xhYKGwii?-#&IY~w^Nz=*fK+U55_XvG$g~3z55;3c?Um^UTz>`lJ4}-#etqE} zf;2GE_~P%&0E0pu5365qX$C=W2KcUp6{y~4uem;AB#V@o5JDYf`b3cZpwUkO|J%17 zQ56(QP|@P3Mv55GYrem;9Qa*8o780>C4d#Do!S7A3({X;hI%jwF0gzByoWQ81^%Ff z$B68Lb0>k#p`U65ouu|$?fd6(muAO;=ZdQaNz_)LYT&^E@9s)f+Y9A>ARi}EdoxH< zRJ#tiO#8~QkU%6gCvu5QjsmGX@7C^kPNJnSWxhfJjhpbuC}}aiV9CP zz1T^l17)h0qso8;@0${K>OwNLu1;tH(^~9Db>dJH*wWIsKp`17`vFTE@dS73KkH+m zp|uUb>1|r=VeZ+?Dfa9aXnR0A^%f*yEozfzy7SDI^DXOZwt#K{MpkJXs?Gsy_$HFt ze+AkB`l(5Hu2n;b9q4$P1SNf;Ce}a~>len(c)J1VO7g8eL1=N@)K`O3w4ekoMNo)wi zue-|~^^m|+!IAjZm|S&=Q^qyI@s)BqLbo?pH2`v~g#eK8OxIIQ zVpf4VJ}QSGcxqeUZ;@}V6NiWf#cZk_3oPTEb+a#ku0&DsQRa~uCTyV_}k@ldH zj(vm%Mi^3^1y(2U`3$vf6G~Oosf>v7ZW}0<$!G;yAyC(@%ue7D5q9WcuLWOaqtx!M zgB0@K^mVYz(@ZP+a#auH*(|kmG8>#41o6xYtNhBm{7ls4*M4tgt&;R;(252hQ=w6bW~->-r8)4n_9aB7mYU!}nag;ST7NVRYQ-7za4^(#5w_Ij^SvX+P8gQbP@- zASANe03hksovlnqF$I?TW23ewibIE{4!_x3v+`;&ZwnwlNRp+7Xi_ z7#QWZs?SrODGm&EJ7PE6CL~bFTv|r}=*HZVd>gRlBm$Ne_!bpczH6rKivNebw+xHA z-TH>PEEEet6hu^XKtkz|5Ksh(p`@f07?f60+Ex&hZbWJb3F!s{>F(wdrAwrwpLNcN z+w0!%-tTdLeU9gw!Z0)cI?uI!wY-k;)`EV{c}YF|i~Y-GGPDNxjJ;wN{YXMW&f|)E zF$@neD}%p=QYMGx?Tbqt>{)Uvu2zST7I3ik)UO-+k?SZoeaixTC$7(FW>t9Y6>!Mb zJ>ElEi=Y#bH5egF)d(xkMW~L;y2*FJwS(R&gZUh6nSaIjeLh;6fitLyBkU(osi^6; z`eSPX5-%ANF2jTL^d~z>#O@+g5MHQU!(eGAIRU9NCw%toL6^21f8+=Wi3AwI_27U{ z)i4A_i~-K8f8ZO%uLXv1Zw5sNQtv*xh4(R?BkmSE;f~n4m*8i_dw{r2-vo&CUv~`I zUbKfxVSm*J*U?HTrvKx`7SMVazJoU_z?)DKfTZxj$8B)aqJzUQmJ*QCKR=Q9IP4`M zJPrsZL|^m~;ZNWwh;Kq%G~m#;ZaZ{W(FXz+4?ly9uRN(*)VgZsT0}Va!KM$gTi9WH z(58lDw}9o=!L^;7K=r>$ie?)>0630?@_4j#5|%>MwXGYQ_-?R9njGV~eM3(n{6dpT zg5rk~`4KR|asp&0uAg)VY+^Rt_rBj)b%Y+=2$niNBxP@jlMVVd|6{0TN-)Fl;&~^RV$*xRu_2;A~ z?!5=;7O7o7Y?l@t5nMQrK0QW?IS@25a-Y+OR3`B4&w_GfkDc2fd~L3}F#g<(46`mS zp@t@q0mk;;BkYUcs{E#A!GFxpX|L1FFbsm)>>goQ&4$5zjIGsqRIgEk#Dh-e$3u}V zIxIfYwOjX~y9WM`6EheX4BxF|62zVm?<3ENq_fNba3Ps)z? z>Z#$VQk$}4kn!h$gLqT-Sn4$9G=pp)4|F?R0M~JWzp_e7A43fYT$sx`T%<6_I|@cM z5~{8yi{|Q4EvI$>JvLzxeNYbA={$=pld49R*OqrT#nIB*Q#;vf-5_^P4j?h`-l9tA z)mTq%+C|HV$ka!VhmhzNAmpIF0VGi!P#-)EkTY%J23W^UP?>^atCG)XJ=t1ek(B*>*`u$tt;-Np!|vU_15VytN~yU}Uj-d8X8#05$R z*loTeM56PiO~%h_yLMLRccpSksUt{F zJO{yCUB*$v*Fg)lL;7-K-dzLM)72CL89u>qCpkuJ`hY~dX&*JmDFVH+8{ES@tC|&SfNOSk40>|ce|KRQ-KsDMo0f-`K86u+FC%@E z^T2c)8JV2mwHa0HIT#B(i(M=yKt;Y$$)6#X%V(1IOluINmK;LRU)`wG6%-q14cKAl zGT&;uiQG$Apl>@wY^dh&IjU{maiBj;=1TzUj`JedwOL$z>p<_J-CdRa|wJJrpb zUVbc#eM(tMzi3Z+t(%`YL80BlBMY4Xn*`r+KnF#5*@s z$a*G%552D7HeJ=TrF^e(!L4-tj!fTRm+6 z?&#sFvyoYHbr{BDY|HOH9mou!@hV{ekL8c3b*U?mP@zxy*LNAuP~*hR5`O=-S-6-o z;5J^JT7;v{_H&Wde&#q;13(i*J5(j=#Taza%eSRyJH@= zl6KL;>^Z7^=YdPRhxjLqsY)7aYTn0lIt8sV&z>qAsrHEN(BW-P<)S;*Co9*A(gH@_ zK1`EwaYXKe3E{JnT(Msj=Tg8+3@X;ns7MCZezRBJDz`<)oIxbZ7Z&?fo$<35hOyN_ zZ~Ja3L!SE i*U?vr~MXT9j*&ZR`ba=vAA0Ho!9*Yzj2^XY8TM7dt+pU4y0+SlNM z!`7AWOx z9!v3+XS8W{6VG(jGb?7jnpR>I3Gr7Xr^0^*oL^RC8!`>?K;`2% zakOcFDT6YE@M;x8HFOf~-Mi2J`?nzxyD-bDy`>^G{IybmEIe*p$o&dQ4>>*1lSa5Rd{%%1fwF>R_dy9&I9EG%5=$C}N~X;>o5j^)$q)eyg1C2aa{;7LFyh2l#7w+uGbw`#m7!eD|0!6NG?t$z;|8mFa(Wpz$fqm zjyT(wbKxsEXyw8+e%It5(%yYPgKEBqpsqpJ89%r7JvF{y7{#riHHe!>6TiU$m22cO zEdP|Im+pd<>*jOZ{qOHMcS0j1Mh;glq<-#`W%1_5Y6B9&qh1bN37`2`#SN_pReU-# zdg*(-cjCJps%rU@kPEs%pd+oL@(4B6Ll(HTNirCeZ|*5bzGgQJ8@LSi5|oN?FYM6a zKxMKF{^Mm0s^28EBK%M+wNm9e)7!yI#8MwV<1wA&*%#~~WP5R{L|U5(qzwp6fOn2c z_8_p}y9lp?4#1G*oWCj&3Vm~fgjic*pFGK6`3>;>`;Q5I{-2*sAjvO%fNz+8`k$Wx z#TfD32t~+Y;JCe6xu}j*C*338YKR`f9cd-;`@o=>CVXGi?o|0l%BHkbP$e|-8 z$Apl*7|w=_2nL`~j9y+CeD2@qm}HQuTik6CUwSjVzJrSj;c}Jp&v^9Q?)*jaX7oF& z*4i+Xcb3q^fagZ*Z1nvM&Sj}z3j}Jg(3zn4N;-6Hp4j=mc?Z`7foBYQ42*hO82UfE zw{LIDzWupYH2u1LVVRnTBB=Aq*5+8H?p~$-#}Y{B^<+zA_POYvCPR{uUmvX`Qwwdi zK3I89R^JSo%f?C|q02)SXeCH8V1MXpwKD#tzrdpnKLS7n?sSZB<5|XNxWHd-D({8G z>An|wY4CquFvxci&Nbn1KjURQYYI?F5BU72dSxlYkLNg+H4nc0g(iB-p%sf915YL6 zP#sXIQ;r_+(F}U5h*Sp0C*cx>nUAIIZpqphK0{o)Rz5U5#&&E6`U^b@#J`0S{Z;-7vg%{Wz#{B@6G{mB>fB|x+ zKpepjKtQR>R6sD|G$1g=F@^!R-Y!4p-}{9s=>`>+tJlg{rI?5C4G*l zS0y7QD!zlki`w~>TtRsDaTjc*&XEtk22kt71nIeUmFTAHKj~Y73u=k-r81%W3EjE( zNGDD<@Lc-CCFqHO&Z*5Gd2PzgTfH$#AMN{Ejv&los)oJ%)NW$Ua~PNJ-ye>xE8AF^ zVApbY185b(nt5wM-V{f)Ibg)j*v?rgC2 zHn+Z2Z$Qy?b{e3fodSzR6JUi%2~jv>Q$!JCri_A&93ZC3Xc$VL%yn&l9EvfU6gpv~wFQkqT_t3~i^6B;KgW=;?SWw=}`qFV{*YZP>3DvU)-jyr>C1`9NA zD=B#|XU97Spk-}IH@GSk;Z-JeUAu+vD!ir+Ssx)2&AA2X{j?3n+fz)zo2eTn(VU(j z9eh3CDh}=?4;@B&>63qph0sLAi0P9(01y5jke!x3@?UCIsVgS}-c@dAraq)gLs?aW zlt~E1?zjkTw>ftz$c%zfZ@5SgO-KfLgr1i#X! z_jOC0^Dmw(eznMd^W%=53WN|Wu6qYxzJcl~XoL}HZ{e;~N{&-R_2x-Fl&+-tm$$bz zpa3~@1uW~AL-z5eo3tl~jCE(fMXuec1a=77y(A=h5un3>AK}z}SwSQTdY-#><$(+^ zg~J_TAqP(U9a~QC5Gw3o1>NhhJ2zlG$XpeKoV}FiyXoRzD$KP_)~=GvyQ8{zG6R%e z@xqUl8zOyTjYBdngLWPZ)?~=zz|vG}G!OU9loR#|*!B?Jp{1Yk<>6j7DPsYfc8yya zdmea!SdVDsKc)UyL%((3B*>F;>Js4jGlZhHP`-s7X*;(lgF{B{N|6*7UxE0dgmGMG zTbSfOi-KT=T@Q(j;cqN1NG^cdi|NScV17&8!E;2^Z40`F-$DBO(<@vMq~Lww1+iS- z>QHgY42((tsc?Y)M)H^1wDK7|*U`U_NN1*?AK6&1UuJy5uSh<+|9kI4LM{)uCGpjS z>fuM!J17b6{BDO>2qn}()V4jQEX`mzSsnLBgYvJQhxw(|80b{Efqam|Qi&437l_Ia zUxk9;9WyEqQM;3*y@E(1puh;U8^lteb(lhy(Dop9(K8yAFAuj7EBnSF-wZain;}Fg z5n|*B>2yQ>%C!J0hg^^OS@o-G+g$)(dpFDxK%4(1e_4>pA|WlHbyF+wkDC1V&*5tm zKHwB|WcQ;{f+c{=14TY(uBK9I&cK?b;EvE2ZBUk}sfFj|B>)x#X8b6KN7C9tsl~RM zL#&(B+yd!Q5-TKzf;0GWcs~snhN1O}8AK~GM=jKgteUZ&1Hv$)g^i~VaGpZll@bpj zqx$d=Xot3#+e@O8A>Lz-P_Bi*2{#mMIGEdy;`Bh}W{Aw)sCk21;zrO|HU_q=jr562 zv&3>o3-uQ}p1=hi6Bb=-UxmAs5Sp+P4`TWp1JTodv}i%|lw(Fs3f~j#6Ncv*)nO4$ zju)L4vF9EP5=w{N(Kq0?oz!pu*pX$QF~{oqbJyRU;@tUpi$!?$W-nB^_p!v%{{J;C zgx%`jyAuM(_U}Lb?@h~}4IiK&(AstRtD3luj)$z!4v#sb#o>J=9$lf`zSt)cbCNHQ z=YME)yd)#3BsXFja%?M}q~&C@^ZJLKa8rLuGn)~uwjlTSZ3~}SkO#tSW9r*(3 z9a{}Xf%X1bjI#UeBP(W5(gR?-?lP{W2GTOv};0z1=>qAv(Qd-7lT5VP@M~Vx$M8V{LyiOFXYgxsc^C+uB-Ghl z%;&D)C;lSY;l<)gt^kjpS#=yzM`J^Is(38>dsWhO`w$CK-(l)r3w5L4b=r?4#AX(j zQ}4aR;?2w~KX&q;k3A*ZR^Ny&ExM`{v1J#Ex@b~bGH*4MQB?9m$CbUac4YBB$xZ!# zoyI*G+Slw*XstUl3}5-BzW~NKfnnFjKNzXg9TYLs`@=#LHK6zeEAkSha$*q_48s7h z%RsjQM06i#6DXsh2Ef>HNRG*>MZvKDWJ+UWGYl070nA?C zs(Qk?+6tIK5?xH81&Nb}vDXo`6j5CG!! z5a?_g>nWc|*P_N3B@v)F8|%LxkcJ{%>l*M~?s18rJ{TEv*+g!E`lE9r4Y_lR{Z5wF zkgO4B=xoyux)%-<*$cxq*6TnZV3~IJCgBk$93E_r&?U~#3=EKYuuQQReSg^Z%#Wa? zL3BE}ZaLMckq$qSpODB3w_VF*c84yaS9nlx4`^mzA@*rXc@Q%ULX&r^1*6d~CO57y z)>X|P4@3HI#HY!)V`O`zcY*GUft6L^;(~u)X$*&ZQ;wjK`4SvO&rQ67;8-m5TH$3s zi``H#)#`-cXee?Z*v004ctqMWXJ?gL$JY}KPk(4v<}CtIgFDt=fZ9_i5YC|j;TOcK z6e#Pvz3RnRkY~sO3@>r8V*c7&wev`>5)2t1oEqu&!fW3@4Fk#b4urB2pPueVO8fBZ z1y8XU$%k3c2Zwz5^h}G{R|SPzr24@~2)eJpK==i7A+Ug-pmTv97SsrX7|9tZLVH$A zN>7|fI_DXLgdNBkP!d>%$i$K(a9d^6l^-U+PFozk>|Ghp6Au$TN+l_+6ShrbhJy`W zrq{H5g^UCqh$@OlS-X>tV^aEAx*#KHPyBxCH0R|Brbih-%LGFq5R7ydh=bvh3?11~ zmJS?eH&$A(f7r14_0QtcZ<8(heiE}HfzHL=@{vaMEp*Rf*tU1eA#YW@0rf@7^+ah&UMP<1tb+|no%f;ZM=*JO7OCor7k30yACg1P4JQ8JOU=^d7G(=n0^i9kR`NolM^2+gyyPpcayY{UJV9;~Sx zK|rS3;>aa2VS1Q%Mr_CBiZpt^mI3j@iyMPbo#%Fx@uu}$M-Lkz#LP+}6|>7q ze5=FxEk+Mg7nwM>8ZMX)&%t-AlC3j$IIggN3w zwun079O^PYtFo z#4rK&dLN~S0r_(6@K7@{A9bYa5Ile&GL{3L4`%L3H5`1t=BxJZE9-1ba2XvGT9Q>0yQvd>Fka=*?eD-O(GG4;1 zMO-5o+VHf@NbM`gy?85-cwtv=6470f%EQn=wm7)vEg&4TUU1@E4=Hj(+m&2St9W(N zvg5%Zp$)IhAr!r2#8=0rEdlNpj4Vbd{u-5dY-uWq6sP^p5cUJF^Mn?Miumee%ZuO^ z9H8bsFK*}&xrHuXLR1C`tvLQ8g`vh!26xQWSMs$F28nVR`pSoZ_A}i8KHoR-oub<3 z?Woaz1V1F)tVI5UU_t;Ag^0xy=?}s^4HN`{(f-{bp?L<6N&o%F1o;f~2>+R5+4_v% zB++jwfRrR}g|ncsY6!@m9X5Z@z@MmN<@^(%{rTGI0gqZdq!L>YFhs%k0{*$;pgxC~clbx=1L6zrS(e{2X@cYfcuSyRutd(4U_(Z{GLgxJ zWhGhxdj-mSf^rP57@~j()jm<%b@*A?8ezTo@<4?15J0iSOvrB@(Z19d54k}OA@Wfo z^`?71>U0p>Oh}Hrgt{ma+DCd_8O;A>o%pof1$2abhv4QVh`)kPVajnj2Sk3}PzKK; z%IQ{4)fP~O7<)xBtO!sNVmG#W1X!u90SD_!e(_DBg$#EC!|~!MJ0H>}_@0^PKi5K} zr+$g%h^rg6It;+a&V{whA;C~1bpdBlPOuVF-3-MG(2%@mj6S)B{gdwXmCNV3RUdB1 zM|k946CU}<>y#faZ(%BCXr0YzctM8F29>4!c7N~J$MsBiYO5X{FlOxfDNGS#|k*L+J8I~=w7=I*9O`a zn8yYywi!p3E}&pgp&LxvtqJP}AjG0qO!!oSlJ(olMa+ zm4NpX`Jr#(G(2G3hPf=im^%0n_(Nn9fae;qxMILM6Ik45TnRAnz+IiN9Bthqz6WvS zLnE47rHcH$H4@0W%*W<{)Rp0ZEY&D^=F~T`V# zt*S#Sw1LLIz9<5A#QApahI8d@cr6F6z!~QAV^LT{1(_i^4H7MGdT_|Kgqxiwl9?fcVg#o$WCB>|xejfG%n~#KAVEDv*xziwUp4#)7I%Vhp13K2Cby=ZFhYj(yBe{g~(BR|noYhR8<Q4Xhu)O}fqrsJ@1f?~SuMiwERh&}$4&kAAKCR^wMYPHgOfR6KCj17%#U%Jnqc25x z&|lx}qY!`0 z3`C;Ges^r+&Pu4G>%i?85DZT!({X}c$!Z^Z2}DDBEVyIIcUD3Yh6NHFAU#1xA@E8R zvan8*ks_UU@Nr5bcY*c!uXTUZ2d%Qrl?QDu;c1)(?hN3RyxJm*j7~U@9vQ&VdML{a zwC|&J9TJ?|T(`_Gmfu`zTeA%`XMzywu3D!#<^kNL@@Jb)UHeWrKgplPzwMxfE`uMu z_=+UQ7(X*cXNSa+4Zfti9JsN+}J7Y3H{cPw2sg6m|#l@dY za}A}N+yk56U*@~@dV%3Z6q~v>4-K>Fl-TDubya1yQFyP!5+*=IZIpmHF9sJCtsw*Lphr%~<$4$L&_rw{IfN zUn?T}dF}goD^uSZsN{S+@8mGNL&)vtewSL0fK1;xy?b}VH5Qs!tCsGJEH3cxofMuC zQA-Uqf9<$pvAQzjCW3uEFe;SFExKNGA^&x1SH@C&4^DF=*6$@Bj7q%m+G#_#P`kru z&>**GC`R&NR>f3Ko9kI&u4cBdm5=LBWIWq_%6gq^+J@)Y``^v=YyF6(;hHDo{$8Lv zypaFI?I46&I)6TA{mIK^a`oceWU&8So4`K0_8wPxYh5Q{0k@_?<=U{hNIvdcDfxK8 z%}6&5r;RR2a*D4RY`muJSuJcyDvA0#2`XZ`JAJF8>@8SAl*duN6fQ&XKj9&N77yyJ z#hLqmZJ!hd!TfU(7=e)x<5u($V>Fgw46($rU1X35Ma4RO)1t7rRL5@Ox#?aOCn__X zUE|+1knmak4;s6E6k;4KHH@$wO&i!KWyCjGG_5k1Ia1Fn#c(TJJtvCswwwGC}03!(k>Iwg z_c=@hd)Xwady^t&Qfz(2DMZgrOFv%E$>kasZH!DBzONuj`|ZP|4hj<7)p^ZpnH48+ zlLeW24y|fWb%wO)yBbR{XMDZbOTvSCQ|+dX0m3rqF;_ddq$_0+?@{7(&=QhkmoCf{ z*{L!07LXoSZ0NP$++SsUH0cJvx#JBh&8|SZDfxFHF)2CS%`)Lyc6|#$AhkBXp(m?f zU}qkw%~;jqFq*w1N;arvYC?3wdBEdC&)&$)E?U)%;w~6TbL=eZvhR!8gZ<&!!{+jf z%{2#m*6(GiL5O2;-MymC5Bp$BKo4d$f3!gQ9hb2@<80wbe^k|wZyKFlXaCxd38yLt zw(v6H)!vJ0x;l(fBg0&BE2&Jf-*TF6=|-33EY7u$BrN$EnuI)7tm!R4PtloH?MXoW zvYMm!p?sYwF5dGkMF`(aB_$z0oHV&jZ2pqIRqYDQ05a&C9dH<-GiMY#{RXe8i67QC zDTyom3CNx&OjqEy{`qD9RK`IO=c;}mb!&Rwy?&mzOSpC>RkB+D{SkMvwG10_WT~I5 z>bW0v@r?Mv0h5^@69-B%_E$^Y)^LoZww+fux}rfv=f_f0eLHW64YLOZsWxH!dbi+bRmL zV-czA?vp&a;+Px2k!9`_ZtjThun>}nmpA8U;`AjiR+B70A9O?N`Ecn1w%U&DET`|g z^`$gZ+|`b?Y0gJe!Vxn_Q2>hh+?FM=kI@ZE1C;!F1BZ%B?fcA5Gr7s^!GQeg~YoZ5>0PDh%7o| zZVB?$Dd$L5__$896~>YkOAcGDLhZ1U3;;>VgxOnbWl@?c?;iOmY$G_^2BSLqOGFCl z(f+UD6<@JlYSa~1yfS%h-kJ{y>$>ov2CrbLq`zJv^23R=u z98hUC$e9nCNcTC))wXbK$U*)T`K~1YBn>~7H+u&hMDi!Yt>yV3phMA0Q+zq8$}i)> zxbsX-N0#9G!UeYcSU;+5U|zT8QcqMV&bBs<=atT9@C8?EhT2$99871sj+Waf4p6tab*eq>yn>uw)wU$+@zUNg~Kabfr z-kECloTU`9`Q*QtNaB}F`&Oh@U8`$v3-R_eJ0)%}$=Gco!no`k%k(Jf>ovwQr{iS2 ziOmAi&uv^a8*oOLL*ub&#=H%_yYr3IAO~)yMDO;iOLE_Pg>ei(Co!#_SYOdGWSy@z zlkU$F*3rj2pdc+S&1qX1SB^Gsv%K0N>0+Oix^hZ2MYBm)6!$5sRzd%;;MuB9t-Y_a zn@=}g%M{XK=LNmfB*(y1c-iQ^wws&DnerJO*zHt#o<3Z5zNc`Ft+%9Cm6e6gzes|< zi^PnK;D;wHIZ+-Np`M8jEm>n<{pJFw6x+oET=r+5gABOxo+#ajuHuMUorE9BWbatU zlfF9zjZGIXCN4F5m!=x~39e1Bm9l*D-GjTJef6H|kG6d6x(c3@eLn3iE7jZJ6qDt^ za?UjI#_ajat275^xQa`6(Rs&?uJ<`d1Z9X@XlBGaSZGGkziC;0HhO^;5{u!qo)l7YY({BNAJ zzSIxB-lPUgCP3u6_{#VDJ{{Ay)ASsv5E>b?u4bi#| z#4^c!CXU}DM}rd{m60nU+&Y@fe)uoKdIep92clzCwidAe{sT}sFpeuscD&i~h;)hl zrxG2O+-Hx=t@T~42rvL;_VUhONpyYt7YonqBl!#&Z6qW&w;6j8Q{#yL1Az$wg$YFG zO@zPx^M9y16NQN#@`QtCgxMKr1SuHs2_JIj)`?Rmw%S@C;~~M}zx@wD+UN}!`*0yW zog!xQ%ZEp+M^)H%QSMNZ+DCmSfQEaxzRYdE**SPRKM)6-63l#`%4Iw^o{bdoRju7p zBZn7{y2TpAx7326k8)FhiSrg_=}rBRsQ~)6ou{|IbN%ypcSnzYgh%Q* z*6!C~3k-r6jhjx$4lB7d-B*X`xa$Qs!A~YM2P$t2ehtZDul1j~C<2XsS?ETu^ITm? z&qYM^fpCBy2A#X>Ac&jSzW44kmxw)Rp4~FcK$u+acbrIZ&nG7(d>1Ax`p{uGv7o50 zI)r90qF$;Nj2Ox1kon60oJKR!1G)3IH~d9<{04+!g$Mr_0YW=xRUJC*Zqzmzf#Rpi z0k|iezMLC!xU~Rm|80d0l;c6CIgxk?Xy*c#V)_$6QlW_w-5rQwHg0_LSKVI*I|yeB zR>+;F{eZ?n$#%^@fhMhkw6?*pIK|H{fR$Gvjb)?;1S%~<0M%rc;%DtSFuI=sNMI1S9AZ;Qb=(i9nA*3+#b}D-s zj>KZbL1|c$z|_E`6%@kOPbo6a>;1r(cwx8BU zK@W_>sRHHD|8`G|BAu)pIK?TH$!!T|7bdhbk%#ODps@^w;9$KKCQE_4G#g3+s1^^< z#&E2kdh&eJ0RK(S8`VyOw4qEOYQuny2m^<_Mq+aYL`!s@ zxCPGoc4NG1a2ZorCVZJtlyA6n8$@2_PZ^=AK}n8i5Jp-t#T@W)q3|9JC&CsJ=UgF? zYm&=0wZ)mede@ky)Z(d?!$D=>sIDu@yqz(VF@Mi~R%KvWf{OA4jdA(KJIYqws~f1V zcK%r!mYC!!FuTAGumiY4rZRY`aG3 zg~7s^qoIHj3>Tg=o9&%jf*=CY6}G*CP{w(}_>M3l5C95qWRa0xv%iG)-Cs|(WWY%Y za;Y7?2TRN1Adn$v=4q%Roo%a<8n!H2;sqhwj#&_ z8?ne2J_isI1O8MsoZ883b=$eMZ|Nm9Md?;;W~d|h$;O)WU8eTY!9GMDhHFDVRuOjS z%qm0tBeJUU<&oSuot&r(BjJ8^vlaaO>favH#d)X8p?NLymfT0tPbP zN!*pe;-fa>-c(E6Pk4mVAIl%H3|1eXhe0=L%{uK@)?g9I$!`PmvJqS1Bp2%r3h0)8 zel!yCr}sIG(lv~b3mCA#9N(EK+30gM$lJQ49$W@q(N7@rVC2Ll?~_(*wUk^{9ykJl zVf50DU%mK|$!p3<>VDBr$W$tY`MRK^2i?F$frc~%!kFlwWob{0!bn@8{mi$O>fK{5 zwh=bEpjgQ4xhJsLX^=80HqR{M-W0K{t{ZWC==>f$}|$ycl~)+$!bHE zUDOO&O>yoC{Cor}De5IHWI6&gEB)0mxt`vOK@=Z9c8^ zJZGe9j*;eSJ7=B4)Lo&?o|%3=J-5vFYa10@-1jPn@X~(UC(}(!9^>6MUnuu4y(soqI$$L=$=@yOn{+;^uC91Mle(3OiyVHI9YPI*P$n}1T9{OKXsJH1`^7%PF1Tt zM;;C2i9zmN1`G{i@)yUyZ^C*VYVcB^Tt*eL7wW!$`DD(0Uep~%cVA7um%!YGQXf;n zi|L6OhMOqEMWraArKDcRuqS*HD6)4m^oL|cXCNk~`#6Z(q42gy@445sa6-`Lwmw-j zRteJ1UcsZmHvIh)Z73uxgk<3CWo2q#w47k-)T4n6ll|CFPgkkdECV={@%@%TycR{J zb)kHw?Ts?-EZI~n{@MCXSz`}iM6Wpn-wcHQ&?V!I>&6B7R*`*wKjGMAtGcIczAjf= z=X-=`e@XksE1~H-$P%D=DSy7%T5f5Yt~S~}{(4ultN(-iuk{mkFz$urXXIOb3%a{0 zeTxMX?Aar2MGj}2w%Cl?h{$7#sGvBVk<_jT+d()Y0d7qg`eqOc*G`Gay17k)nqhH zS_-?(HZ+JSuY_hikIlGAc)_d5yYfJGnhH)wuC5G(I~s})1Y6abPu~0cFQFOtv#*($ zf>{}be!f8Jc_YEckoz`QGJQ-o6lv`X*O3S3dV!?2Md`ZTs;1mKl#{fo86C4Be4xso zav%8ok@X0LoDRbZuTaa$_vl-wn>jX;y2`JneK+og&HjL@YogJBbP1*#o(ExO_K)37 z@k|&=4NBEYou^{<`3wi-^}&6?Vck$H?l+-l)6`WZGlY=TP3Bx|fSP5TCPfrka+qBd z;El2wH zar++OZTaT@UgjGO-#xOrGx9>(yShi0wwZ8pYAt&V~vKQZWP^h|`SSOv&YN=*3?$$A| zWIA(twt1l`tKJ+urY-pW7oH zd_$J_GrmRcwk(X~06T7oXZ>evlbY*-qXG0Z*O7<>h`CE5>3Vcu+fH7gYiheH-sJ@w zZq?#fMG37KlfL6SGLCt$w$Dp9 z35W>agb5fpCY4#+mVSVHxJ0UX9D-P_eMA~07{OIFb(incmy7KXBh$^OSFo6Lf1+Tb zw@B_2W;Ym$9%=lnpUW9c^?X4ozVNBZDUmrWbWefN4Kf%59}@oU{c1n2iHf|D0fuu$ zxGyKvZd<&fk-P>cf5eGnpry+bMII3@)|22;B;gz~im~$r0aT}~A77Q2? z-+gtKFb%HGUt3u*U%iF30^~RbtYf-7KLWpr_avU)goGZ(z~t3;vJ06$)c2G!dA-aS zLlmF6(!Fv@h?Tt5;_T&_0}8f>m*-VhMI7sEQ98=I&;3e0t-^9MUo);AkPea*vK~n$ zRTsoys+pG4OP=YBU$-?oHe?Pof^@oaOA%0CJ?DbHf_P5v7Wua4Y-k`%`Pa~6`HD|q z@-f%G0@L$%$NE;Ctrxq_Qn7I6_Vo{>I<+c2yWXW({)WTdVKLvy?6Y2gaUZ98oJ!rJ z6Hd_Q?45x-ta!8`)Q_?4rwb7aH zuQnU&U0Y#rfLS+uv*|rk%Wtb9GT144kLs$}6`57r9m|%NBhU82luwCAo%6F0bm(Yc z^bTJ5gpx_U)hS@c4fl;x_9&17CuLF<9{TQ*FcTRRY4!_y?zWgT#~7*m2B(#{)~JQ{ z^|?r-=|=3utlU}EwEBXPtaEDZc(3}BDoI!d)0@SwQU#`dx~Wkelhd(y{Ui<;qtwLL z^QFB8#=y8yFYHnJ+<9JkRC^$NGs`6+rHsiswnIVKAwE$hQM+2lP5N;Lvqd*;2#jnB z9u>?pKP>3Vd$uK?^~~4dw^pfSdAt5<%rX>TZ52`Z(jm;-(QMkGcZG(QcgjjGy>(`6 z>{ffY)2kD=(yU?QWBZy3FhX)SEHC~=@`6WPL|ZFl2HxKMl!i@x`(X#>0)-ZT156UL zS(`3ea4~HemRi-hUZNkk{<>gTpUgdO7e}Kh27eEsEte)4B-byt>RnmaQn@=0Df#+) zzC8pUvGZ0_LYg-hx8sz{b*3v}(caX3>uN0wIE_}U6wNajX;&@dNx2_)QpG_fayw45 zRY0>RN#QZeqk@`Lp$U`vShCXgHahDnZ}7(VD*-&Q5IexIA4~tm^+#f% znNc~fySTo`Q3M8+spAUE!X4M(Ao8OS-2TmL)?$@h0 z^Py?f*g`Z(%xP6W!RoxyotAz@Yc_MY4?Ayl8`Hhob)nHU;6c-=ZDT!oifZC@5%Zec zR69ShFe#7~T(1=?sG zfkGgx`|6@!%0Ceu^{8!DJAh$-faiOX!xtqOIIq}jg zv*n%JNk1diwQB-z@?DsqH<@r9IHyc1%+c!iFvPo38=Mh4E*-u*>XwQ|cQ$gre$=OnY19#=8WaUOrfwkp&|ruG2J`ZxCI|)cmwFdAb;wM;zMs9 z9pHjA|Ljl40qe7gIy7ArMPCDhRSd)S$Q^_VQdm63YwTvU#f9;_C!uc=Px_h`PzU~M zanNAtrHbyJqvbdlDc^9piQ^NAVv*rBP#*0#qz%V!isWvSnDQ@ECu5$8vIsq@BsnZ9 zweQkl%dKA$hesEJ@~U<;A48((jDW%-^mU&QM`~dCn1l#Aox>!DA;^O8rxVYF=HT3> z0YvK&iG7;u3~8LTRK@IE{QW%Mr=H90TW240BU>Y4wScRVIDpWJ{2(ZgAnO5KZ3NzB zRwVr-{Qri_A84$tZtV6m@I#VVLQ@ZKfB0$c4v>_g^fvTqhqr_;gb4+wpKK{r5b$dF zqs*10lJ4*+q`JD@d>j>DB;*!I?}SE=lp#$h;r(D>1Rz@Iza%6-cKrfo;g9%#-7&~( z1lmkx2vU2#N7%*b*@lbHujB?Pr)_goxP*PA&a`Oucu?N7aU}lLo zIqGZM-R)u=S7z<+e}Cn*?BY2wGLUV`Kd`KHpt_VdR?3sD7KW|Bxbp$7x#9El9!xd> z5!e?0WmSi4;6ON6Z_9r@yy~*wbo8EWub?YQCr|W>kl4?wIi;_hH=4-cO)w0|x&gub zy@qOO8xNT9jSKCzq?HW(eKs#Nawe4rW^NPbZQqwWQ(e0Kv76!CYURku;x}t^QneuT zGX_h-pi|WI=sh}?I`;Rqx$b@E7?`=Ga=GFlNtk4-8|m)N%K0Uq2GLNTnIXMv`npb2 zymPI}0Gv@M@kC9eOdRl*jn=(4wEF6T7`dXm*Db>p^!{~~OFs^}SAkoFeAoYVzh=Ki zF*jZKwid7e(<5wakuyIMKqh$e)c6zilFjGacl;I5c~25gxI~`L?3;X=`cL=ef1WHb zr2+L%#oF>r7{I(A5!PIF;qUvq(1iFZTg-(HU7-uO!gnw!{$FqP;i)Sr=q3cU7ISXj z^_=-((q_^*1W~QE_5wa(aA7$0L^cbj9p9h0b+ak8PotzKgX<8T$& zDJTFps6zv}g7dA9_83do!N5!&$mHQ+RddFT?5A^l3(0A^)pj=zVs?Fe|CB84-BrS2 zTw)C91d9Fx8m2j1yd)y8!RPSf95j?Y-7=>rC{urZ{6UeQA9F^PYC{(SFAmdMEy*-^4q(_fT+Ivi5Se!}kwoYr)}f44AnzEFihe6YST&KY(Car#g57y4XGJVSJh# zUro?vBn+V#nOtlT73Id|ZwO2mm^xP%fkA2j4DMY3ARk|igV>Y3psR1IEpu-;JFp7F zHFJB6BbDPzLNkgt#`+y@J%N~nXLZ{T3R?is=_KUVoz*e5;z7gRFV!VE+p5gojqBDO z@h=%*RyOJxTIv^~XTJUfUBMgTPda=V-cD@>xUTgTL2^am-)_qm);;D+!47kQ_~bN5 z^*uVd`JjDvqjX~P%=)Gt|5?1e3xhzh%~<@RMM#c1{a2k1_8;q4kDuDjl~^_|`Q^1! zJDSvd6-F%UuyesI;9kLiPX7Mu`fl4*7M;Q#yscHEDKP801-W#qK-3saZ59Ut@u9rv zw%MkBl(9p7)V^|^t!TcvJ7YQKRY_*4LelkD#|6rT=W6!}6~hE$=AO5yZw5j)*Jo<{ zhrlM!9=!QFgnNXp(6UXBXMis3BVE|usjId$bh)|BZ>?1##43`k+jCa>RMtPXy=r#b zZ1wmCB!}L}lDsX8y>7u%aKQOS=oZZT`A;qMBu-35jCf()PQDnN>&PEF*6TQ-v(q+0 zqH4L|gy7M()n41XH49xPnhTe6O8}>MZ4s2{8fV_;?BWVjP>s``RAZ*j6pOrF3GP>p zgh)h}(O?kSHTm1>z<6KbRaas|4#6HJiBW-Gg-<1+iX<666Fp5tJjz36R`wL4R@ z3A%3u6GW_Ca_8xqONx5%S4)E29!Pm^bS?JGh=DuW?a&r6l5pg*Fh;$&lS8@cu(353sx--djeSLB@f2g}eB~fS6ir4-v%!iCg_R)HMLTcaR z2m7gXA^+pydXzmCsp{eRO`AdYcmyf-`!gw>*7!cL>mgS>D8F(y*;h6@(LkG@vwo9S zRCaPrWR|TxU`BX5zQm&y&N*>R>GLu%F(H_b1 z#kg>CzNLYO^ki=*3vdo-FXigIJs&?+{ zZRJw!G;K}5iLb(3nxd4wbZ%?zc%>M8&WRX<4!Kh)X&wcsHT2JTxGU&7s;8HJ)THIq zV6IFT+3ZWI7`1QH;`hC6?3UD9=rHCpHe=8jS(@se>fp!tEL1H;J_q+SH6k#vB+gd# z2ou}U@4DxBXiN{ z%__mHJjk0V;nh=<_H1tweYO!bkLy^jeO-JizixR1pw=IJS!uTRQoi4&qem;m?J?nH zo^-3v*FQSVWQ@wDu&0N~|62Ch*CWTAQZ^~&-YQPD#JgGLlkHP~#}cL)bve$zP>sdg z#y~8M;qr=`z18Mo&q>Xyrh}#UiME~!o5_2wR$6@;Ek71;hQDt>7V9WR2{yl|u;)ql zq%UYQ*nRmpv^e~fYoCQv+g~a-Tf7da9?MRh{%9KFs>hSU)sd1$_WEt(Tam`Nnw?cR z7>qIS1js;N|KR$F!YZkbsri}7Ln zp>`GcK$>d7iQWpYuwWPtg*&ga##wK$A9CQJ{ucl0@1>Qu3Ft-I{|0gGSa>Hf@HGv5}gAKn(i z(SpLL0UI^fI8$o+;k3JAu|ir~uW5&ledf>;`~uCmWM=gdIaz&efv6?5+j{EScfE8{ z8w;j23xJ}wk?)S=f6<(%oa;a1&kwOS4ay68xmf<67+uHnKG!ZbwYk`a7mS_vX#pVd z$B^dFQO!{|qxbheiiSZkvCW5iJ##AWt9-i}u6~;B(Pev)dE9sW_rnDS(d>BLx7WT- zx3bJXiaANeKXv&b=j}$h#g|W9PvO4GsGEeS>(4jDv3~?SH$0=b_Gh?teP-H%_}{Ll zis=QEK1&-5_t7;SOdOsdRWX{>QQy2EuU~&5CMMw6dP3fXub$SEqOa{~p;;i`#iw#F z?wM%yLsqw|~QPc}$xJI2dtuXb(n_PN{C*v!4hsjn=ZG>Ko(d=f_H|AMVR zcxY2S&oRE!3HMxUZ`l zv~Ni=Xiq83bxCQsx&V-P6m9d$x%p*~a^~89cn23rnyucM#Yq{R@Xa>ByJ?y z+A8-6=|Sh(7u#_wHgJbY_waZES;QkQ84FGNFKsJHPB6r`x}va1+V4|sT+pIi$cPuZ z>=TqR>{DnGsIi1gWA%;7(6-@*RfVa`dKc`M)F@(vSS&(HcF53p)~&0xNP=0oSnYFl919hflgo$sPX!&iwq|5XiH2u6yW6|6_VV(=Kq7Xd zt_-J6V@sxh@xF2xR7u#Z#-g@KU5gq%l*A-;8^fxJ&na3dZQAtNuvfXHi2I}^-ME>w zT6*n4ig9uK?MJ4rLI-q5Hl@sy`WCmYvK)h2K>2Xps|*b)-X1lLiIlP=*Eh6YW1AIZ zeK@r^B{_?tRdtDa9LM1mI-jxx_r%4p{x6zv?GM>g`1Omb_WYmTuKu6twU6s{QXwj* z$9p*n5z51a`^7;_%cRUa6H1iGoJ8xUp~CSz5i&8v*f58CTIONrL=V;jWh}#XdX;RZ z?Nr9`UEA)9dYyCM|G<6y`2D`V57+g%uFrK{@9X{fyu~M2oo>`$Qxa$?2$l~&07l*2 z(oLueSag?HXUb$>QebjZq@0fyT z^`z+@(Ic=8rHS|mKOG7|mdu?lzTp415JVqDlBIytxY(53M{3jpI!ttz=?fJb#WtAf zAc0}ojg$}5;~Jz86Yz63Q#~h1jJTrrJC?(h(Fd%VIegFFweBLfzVev+oEA4+$O7R& zD#xY2(}1tPN8^T>b1Z@aWOfU9Z7EfxD+tx*>7Izl2%zd75j(A(7#|+?q%~|Z6?CrG z*h&YH=Yj)OWqBaYv-!omYXhoM>#VhK2go&>FY}qKg8kV{crBv@Ey#o_Z31V zW)p>7k{?WuQOM=QalHdw$xB7ycO5bO9`D$Db(%%%#zrEz1qjv_s15z*-MD}A^!-#9 z){`auiy3>Kkab%;TLure8FN&=pL@%KqHX+YQp|-V+Fj4k51nDTH#7h2Y8~m=f5zuF zFeoGBD$rMWV0TSs@i}|#Bga+=VCLe+lc%Ty_h%pl#wNr+2cX}$e~(4`pNz>ch;G&b zXfB*%j}$jscHk-_z@BpFyIITAoH#CbAPa8E&Wkd)jxB0+cEwh@+27;%yS6KgkadYo zsY^BYBu!FR=o7Ha#6cX*BB?bbP!^_fhoRhm`l9R%zD8m*w&Wg+iZ`jmRQr%vfI}*+ zqBRnW_F7Mrb_@!&8g-DdZz=3-NjWnwH_Eka%d|C6@wK8pX%VH19}yp|cw#mr%}Q#Dykg19bT=demBB?H1yj+1|kc>iy{0j83Ab4r+T0{@18lnDnar`2>EHv$=ZIqMmPP} zieGfMlrl=eVub0zI0qR^m_5KjSFlH@y0tJhs4md)Tw6OkW3ox| zo-KyWgR>r=W>m@CKSal0elZvoJg#*~&%Hf|Vk)8Dq~pnW`hn0~ACGb)LnabxnJ*~i zf&NiKk>)!LH(C0ExFgLmgsg9D5#pojWlkKpEFEL#HEDLM^5WzAs(FX)@pqwLoI?}1 z>Ka|njwXT3HD6t zp9j4+*+wiC37P!>=jdp5PRC*S##dml61xviCxg@Qbz;-t5$zb(3``S0ypWbv79H|_ z(Aa4TH|BjP%;_RxIAh4@Q{R_KVUc2aJ5yfYGvMhx_q2({JT^}x#Cxr*qVlMJn9;s^ z)Er2fVSmUYhgfeGT3=8saPZk^I}w<#JLdG|hkD_TN~QB7(dWSZlkG~YSf^6TZlpDM zHzKlgLm`q(KI^G&_FROF;=Km?(;MCU{$Q_q=^WpE0gCTAt)Yl7t18tKw}{o01ezd` zwSwH7AhFz@FK`+rCZi4(0c=lSw{+lt9}nGE9`rr<@~7paHmhGt1i~em*P3^PFDngo zHm~)Ie7o!abQ^GBz`-X_kliE?H>!_uv%5_P4yz)@v_2N!*f@5JT7f?q|xYOKDUH=ai C+p$yt From 9ff31c21ea98cce24ba50f04dc13f06547c4c6e4 Mon Sep 17 00:00:00 2001 From: Ian Teng <66109826+iantenkai@users.noreply.github.com> Date: Mon, 10 Apr 2023 22:25:17 +0800 Subject: [PATCH 304/311] Update DeveloperGuide.md --- docs/DeveloperGuide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 2f787a11bf..ad0e7da914 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -456,7 +456,7 @@ file. 3. The Json is written into the filesystem. The sequence diagram below illustrates this feature: -![export feature](img/SaveSequence.png) +![export feature](img/SaveSequence.PNG) ### Load @@ -470,7 +470,7 @@ is corrupted, `load()` is called to read a file `backup.json` instead. 3. The memory object is returned to be read from by Inka. The sequence diagram below illustrates this feature: -![export feature](img/LoadSequence.png) +![export feature](img/LoadSequence.PNG) Reference Frames : ![Add Cards to foundCardList](img/AddCardsToFoundCardListRef.png) From c2fc88d370b00027096bdc6479cfe45b0765b27a Mon Sep 17 00:00:00 2001 From: Ian Teng <66109826+iantenkai@users.noreply.github.com> Date: Mon, 10 Apr 2023 22:27:46 +0800 Subject: [PATCH 305/311] Update iantenkai.md fix PNG capitalization --- docs/team/iantenkai.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/team/iantenkai.md b/docs/team/iantenkai.md index 86926191ab..2cf094120b 100644 --- a/docs/team/iantenkai.md +++ b/docs/team/iantenkai.md @@ -56,10 +56,10 @@ experience. - Add Class Diagram for `storage` The Sequence Diagram for `load()` is shown here: -![load sequence diagram](../img/LoadSequence.png) +![load sequence diagram](../img/LoadSequence.PNG) The Sequence Diagram for `save()` is shown here: -![save sequence diagram](../img/SaveSequence.png) +![save sequence diagram](../img/SaveSequence.PNG) The class diagram for storage is shown here: ![Storage Class Diagram](../img/StorageClass.png) From 8071d1690c4a3df0c3f9e4e03c29e75a4bdfe970 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 22:44:48 +0800 Subject: [PATCH 306/311] ref: fix UI display --- docs/UserGuide.md | 115 +++++++++++++------------ src/main/java/model/Card.java | 8 +- src/main/java/utils/UserInterface.java | 4 +- 3 files changed, 69 insertions(+), 58 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 1653d3c5f5..fd692e8ee1 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -47,7 +47,8 @@ Enjoy your revision! ### Use Case -Cards that you add to Inka can be organized using tags, and decks can be flexibly constructed either by adding **individual cards** and/or multiple cards with the **same tag**. +Cards that you add to Inka can be organized using tags, and decks can be flexibly constructed either by adding * +*individual cards** and/or multiple cards with the **same tag**. For example, suppose you had the following cards: @@ -73,28 +74,33 @@ This allows you to create the following decks easily: ## Usage of flags -Inka's commands makes substantial use of flags to indicate certain parameters that users enter. In this guide, we will adopt the following syntax similar to many Unix CLI tools: +Inka's commands makes substantial use of flags to indicate certain parameters that users enter. In this guide, we will +adopt the following syntax similar to many Unix CLI tools: - Required arguments are indicated by `-f ARG` - Optional arguments are indicated by `[-f ARG]` - Mutually exclusive required arguments are `{-a ARG | -b ARG}` - Mutually exclusive optional arguments are `[-a ARG | -b ARG]` -There will be many instances where users have to identify a card, tag or deck in a command. For ease of use, there are multiple ways to select a card or tag: +There will be many instances where users have to identify a card, tag or deck in a command. For ease of use, there are +multiple ways to select a card or tag: + - Selecting a card - - By UUID: `-c CARD_UUID` - - By index: `-i CARD_INDEX`: + - By UUID: `-c CARD_UUID` + - By index: `-i CARD_INDEX`: - Selecting a tag - - By tag name: `-t TAG_NAME` - - By index: `-x TAG_INDEX` + - By tag name: `-t TAG_NAME` + - By index: `-x TAG_INDEX` - Selecting a deck - - Only by deck name: `-d DECK_NAME` + - Only by deck name: `-d DECK_NAME` -For instance, in `card untag` command, since users are required to specify a card and a tag, the format of syntax in the documentation below will be written as: +For instance, in `card untag` command, since users are required to specify a card and a tag, the format of syntax in the +documentation below will be written as: `card untag {-c CARD_UUID | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}` -The user can then specify the card of their choice **either** via the card's UUID or index, and similarly for the tag. For more information, refer to `card list`, `tag list` or `deck list`. +The user can then specify the card of their choice **either** via the card's UUID or index, and similarly for the tag. +For more information, refer to `card list`, `tag list` or `deck list`. ## Features @@ -163,7 +169,9 @@ Adds a new Card with its question and answer. Users can refer to this [section](#usage-of-flags) to recap on how the flag works. -While there is no restriction on then length of the question/answer that the user can enter, these will be truncated in the display of `card list` command if longer than 50 characters. The full version can be viewed using the `card view` command below. +While there is no restriction on then length of the question/answer that the user can enter, these will be truncated in +the display of `card list` command if longer than 50 characters. The full version can be viewed using the `card view` +command below. ***Example of usage:*** @@ -177,7 +185,9 @@ You now have 4 questions in the bank. ``` --- -**Note:** To avoid confusion, `card add` does not support the question/answer being "-q" or "-a". If the user so wishes to use such characters in their question/answer, it is recommended that they provide it as such: +**Note:** To avoid confusion, `card add` does not support the question/answer being "-q" or "-a". If the user so wishes +to use such characters in their question/answer, it is recommended that they provide it as such: + ``` # Do not do this! card add -q What is the flag for question? -a -q @@ -201,7 +211,7 @@ List all existing cards in Inka. ``` Here is a list of your cards : - 1. [1ddd9a67-f56c-4914-99c0-2f90c580f0e9] + 1. [1ddd9a67-f56c-4914-99c0-2f90c580f0e9] Qn: What is the formula of force? Ans: F = ma @@ -209,11 +219,7 @@ Here is a list of your cards : Qn: How efficient is binary search? Ans: O(log n) - 3. [29bea83e-d864-48c4-bb9a-7fa817114fe1] - Qn: how do i use this command? - Ans: by referring to this user guide - - 4. [19d859b1-cede-467e-b384-7d6e690cdae6] + 3. [19d859b1-cede-467e-b384-7d6e690cdae6] Qn: Lorem ipsum dolor sit amet, consectetur adipiscing Ans: ans Note: Actual question or answer is too long, string truncated @@ -363,12 +369,12 @@ Users can refer to this [section](#usage-of-flags) to recap on how the flag work ***Sample output :*** ``` - [19d859b1-cede-467e-b384-7d6e690cdae6] - Qn: asdf sdaf - Ans: asdfs + [19d859b1-cede-467e-b384-7d6e690cdae6] + Qn: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore + Ans: ans Here are your tags: - 1. Tag name : tag + 1. Tag name : physics There is no deck. ``` @@ -534,6 +540,7 @@ Deck name has been changed from old-deck-name to new-deck-name ``` ### Delete a card/tag from deck + `deck delete -d DECK_NAME [{-c CARD_UUID | -i CARD_INDEX} | {-t TAG_NAME | -x TAG_INDEX}]` ***Lists of flags (in any order)*** : @@ -748,7 +755,8 @@ Sample output : **A**: You do so by following these steps: -1. Export the deck as a Json file using the command "export". It may take a moment for the file to be written, so please wait, or try refreshing your file explorer! +1. Export the deck as a Json file using the command "export". It may take a moment for the file to be written, so please + wait, or try refreshing your file explorer! 2. Navigate to the directory of your Inka installation. 3. The file will be named savedata.json. Copy this file. 4. Paste this file in the Inka's directory in the new computer @@ -756,35 +764,36 @@ Sample output : Your file will be loaded the next time you run Inka! ## Command Summary + **Note:** Flags can be given in any order! -| **Command** | **Format** | -|----------------------------------|----------------------------------------------------------------------------| -| Create a card | `card add -q QUESTION -a ANSWER` | -| Create a tag | `card tag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | -| Create a deck (using card) | `card deck {-c CARD_UUID \| -i CARD_INDEX} -d DECK_NAME` | -| Create a deck (using tag) | `card deck {-t TAG_NAME \| -x TAG_INDEX} -d DECK_NAME` | -| Add a tag to a card | `card tag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | -| Untag a card | `card untag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | -| Add a card to a deck | `card deck {-c CARD_UUID \| -i CARD_INDEX} -d DECK_NAME` | -| Add a tag to a deck | `tag deck -d DECK_NAME {-t TAG_NAME \| -x TAG_INDEX}` | -| Delete a card | `card delete {-c CARD_UUID \| -i CARD_INDEX}` | -| Delete a tag | `tag delete {-t TAG_NAME \| -x TAG_INDEX}` | -| Delete a deck | `deck delete -d DECK_NAME` | -| Delete a card from a deck | `deck delete -d DECK_NAME {-c CARD_UUID \| -i CARD_INDEX}` | -| Delete a tag from a deck | `deck delete -d DECK_NAME {-t TAG_NAME \| -x TAG_INDEX}` | -| List cards | `card list` | -| List tags | `tag list` | -| List cards under a tag | `tag list {-t TAG_NAME \| -x TAG_INDEX}` | -| List decks | `deck list` | -| List cards and tags under a deck | `deck list -d DECK_NAME` | -| View a card | `card view {-c CARD_UUID \| -i CARD_INDEX}` | -| Run the `deck` | `deck run -d DECK_NAME` | -| Edit a card | `card edit -n NEW_CARD_NAME -o OLD_CARD_NAME` | -| Edit a tag | `tag edit -n NEW_TAG_NAME -o OLD_TAG_NAME` | -| Edit a deck | `deck edit -n NEW_DECK_NAME -o OLD_DECK_NAME` | -| Exits the program | `bye` | -| Help about deck | `deck help` | -| Help about tag | `tag help` | -| Help about card | `card help` | -| Help in general | `help` | +| **Command** | **Format** | +|----------------------------------|-----------------------------------------------| +| Create a card | `card add -q QUESTION -a ANSWER` | +| Create a tag | `card tag {-c CARD_UUID \ | -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | +| Create a deck (using card) | `card deck {-c CARD_UUID \ | -i CARD_INDEX} -d DECK_NAME` | +| Create a deck (using tag) | `card deck {-t TAG_NAME \ | -x TAG_INDEX} -d DECK_NAME` | +| Add a tag to a card | `card tag {-c CARD_UUID \ | -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | +| Untag a card | `card untag {-c CARD_UUID \ | -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | +| Add a card to a deck | `card deck {-c CARD_UUID \ | -i CARD_INDEX} -d DECK_NAME` | +| Add a tag to a deck | `tag deck -d DECK_NAME {-t TAG_NAME \ | -x TAG_INDEX}` | +| Delete a card | `card delete {-c CARD_UUID \ | -i CARD_INDEX}` | +| Delete a tag | `tag delete {-t TAG_NAME \ | -x TAG_INDEX}` | +| Delete a deck | `deck delete -d DECK_NAME` | +| Delete a card from a deck | `deck delete -d DECK_NAME {-c CARD_UUID \ | -i CARD_INDEX}` | +| Delete a tag from a deck | `deck delete -d DECK_NAME {-t TAG_NAME \ | -x TAG_INDEX}` | +| List cards | `card list` | +| List tags | `tag list` | +| List cards under a tag | `tag list {-t TAG_NAME \ | -x TAG_INDEX}` | +| List decks | `deck list` | +| List cards and tags under a deck | `deck list -d DECK_NAME` | +| View a card | `card view {-c CARD_UUID \ | -i CARD_INDEX}` | +| Run the `deck` | `deck run -d DECK_NAME` | +| Edit a card | `card edit -n NEW_CARD_NAME -o OLD_CARD_NAME` | +| Edit a tag | `tag edit -n NEW_TAG_NAME -o OLD_TAG_NAME` | +| Edit a deck | `deck edit -n NEW_DECK_NAME -o OLD_DECK_NAME` | +| Exits the program | `bye` | +| Help about deck | `deck help` | +| Help about tag | `tag help` | +| Help about card | `card help` | +| Help in general | `help` | diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 65dc0801e3..af92e53f3e 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -91,15 +91,15 @@ public void removeDecks(DeckUUID deckUUID) { @Override public String toString() { return "\t[" + this.uuid + "]\n" + - "\tQn: " + this.question + - "\n\tAns: " + this.answer + "\n"; + "\tQn:\t\t\t" + this.question + + "\n\tAns:\t\t" + this.answer + "\n"; } public String toTruncatedString() { boolean isQnTooLong = this.question.length() > 50; boolean isAnsTooLong = this.answer.length() > 50; - String uuidStr = "\t\t[" + this.uuid + "]"; + String uuidStr = "\t[" + this.uuid + "]"; String warningStr = (isQnTooLong || isAnsTooLong) ? "\n\tNote:\tActual question or answer is too long, string truncated" : ""; @@ -107,6 +107,6 @@ public String toTruncatedString() { String questionStr = isQnTooLong ? this.question.substring(0, 50) : this.question; String answerStr = isAnsTooLong ? this.answer.substring(0, 50) : this.answer; - return uuidStr + "\n\tQn:\t\t" + questionStr + "\n\tAns:\t" + answerStr + warningStr + "\n"; + return uuidStr + "\n\tQn:\t\t\t" + questionStr + "\n\tAns:\t\t" + answerStr + warningStr + "\n"; } } diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 3bc88d77e8..2dcae3e757 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -99,7 +99,8 @@ public void printCardList(CardList cardList) { } else { System.out.println("Here is a list of your cards :\n"); for (int i = 0; i < cardList.size(); ++i) { - System.out.println("\t" + (i + 1) + ".\t" + cardList.get(i).toTruncatedString()); // 1. question answer + System.out.println( + "\t" + (i + 1) + ".\t\t" + cardList.get(i).toTruncatedString()); // 1. question answer } } } @@ -228,6 +229,7 @@ public void printWarning() { public void printLoadBackup() { System.out.println("The original file seems to be corrupted... loading the backup file!"); } + public void printLoadBackupSuccess() { System.out.println("Backup Loaded!"); } From 26bfa2b8704aecee0b0b334d6893fd987bf6cba0 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 22:53:37 +0800 Subject: [PATCH 307/311] add new diagrams --- docs/DeveloperGuide.md | 14 +++++++------- ...adSequence.PNG => LoadSequenceDiagram.PNG} | Bin ...geClass.png => NewStorageClassDiagram.PNG} | Bin 59551 -> 59551 bytes ...veSequence.PNG => SaveSequenceDiagram.PNG} | Bin docs/img/StorageClass.svg | 4 ---- docs/team/iantenkai.md | 9 ++++++--- 6 files changed, 13 insertions(+), 14 deletions(-) rename docs/img/{LoadSequence.PNG => LoadSequenceDiagram.PNG} (100%) rename docs/img/{StorageClass.png => NewStorageClassDiagram.PNG} (99%) rename docs/img/{SaveSequence.PNG => SaveSequenceDiagram.PNG} (100%) delete mode 100644 docs/img/StorageClass.svg diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 2f787a11bf..48bb52e8a1 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -141,7 +141,8 @@ It uses methods contained within the classes `JsonToMemory` and `MemoryToJson` t data respectively. The class diagram is as seen below: -![Storage Class Diagram](img/StorageClass.png) + +![Storage Class Diagram](img/NewStorageClassDiagram.PNG) ### CardList Component @@ -456,7 +457,8 @@ file. 3. The Json is written into the filesystem. The sequence diagram below illustrates this feature: -![export feature](img/SaveSequence.png) + +![export feature](img/SaveSequenceDiagram.PNG) ### Load @@ -470,10 +472,9 @@ is corrupted, `load()` is called to read a file `backup.json` instead. 3. The memory object is returned to be read from by Inka. The sequence diagram below illustrates this feature: -![export feature](img/LoadSequence.png) -Reference Frames : -![Add Cards to foundCardList](img/AddCardsToFoundCardListRef.png) +![export feature](img/LoadSequenceDiagram.PNG) + ### Deck Feature @@ -544,8 +545,7 @@ elucidate what happens internally when this command is run: The sequence diagram is as such: ![Add Cards to Deck](img/AddCardToDeck.png) -Here is the reference frame that has been abstracted out: -![Add Cards to Deck Reference Frame](img/AddCardToDeckRef.png) + #### List Cards and Tags under a Deck diff --git a/docs/img/LoadSequence.PNG b/docs/img/LoadSequenceDiagram.PNG similarity index 100% rename from docs/img/LoadSequence.PNG rename to docs/img/LoadSequenceDiagram.PNG diff --git a/docs/img/StorageClass.png b/docs/img/NewStorageClassDiagram.PNG similarity index 99% rename from docs/img/StorageClass.png rename to docs/img/NewStorageClassDiagram.PNG index 31568da8664556b1bc2c7e50037d0d3c4ba4b544..433a3f5c5eddbb827555074d912f32b3ebb686e8 100644 GIT binary patch delta 70 zcmbP#k$L__<_XRGCaT7cCLqGVK+nL~a^j?|A}Prk{#hPDh89`=nUzs)CEk(oUX!C4 Y_cIw=ZkAzc4q} - - -StoragesaveFile: File+saveFileExists(): Boolean<<interface>>IDataStorage+save()+load(): Memory
Extends
Extends
JsonStoragebackupFile: FilegsonBuilder: GsonBuilder+loadBackup()
Use
Use
JsonToMemory+convert()
Use
Use
MemoryToJson+convert()MemorytagList: TagListdeckList: DeckListcardList: CardList+getCardList(): CardList+getDeckList(): DeckList+getTagList(): TagList+setCardList()+setDeckList()+setTagList()
Use
Use
Use
Use
Use
Use
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/team/iantenkai.md b/docs/team/iantenkai.md index 86926191ab..40e97f57f0 100644 --- a/docs/team/iantenkai.md +++ b/docs/team/iantenkai.md @@ -56,13 +56,16 @@ experience. - Add Class Diagram for `storage` The Sequence Diagram for `load()` is shown here: -![load sequence diagram](../img/LoadSequence.png) + +![load sequence diagram](../img/LoadSequenceDiagram.PNG) The Sequence Diagram for `save()` is shown here: -![save sequence diagram](../img/SaveSequence.png) + +![save sequence diagram](../img/SaveSequenceDiagram.PNG) The class diagram for storage is shown here: -![Storage Class Diagram](../img/StorageClass.png) + +![Storage Class Diagram](../img/NewStorageClassDiagram.PNG) #### UG contribution From e7246fa91db3792b53969a007378d08a45984556 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 22:55:06 +0800 Subject: [PATCH 308/311] docs : fix ref frames placement --- docs/DeveloperGuide.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index a576dc12a9..c05aefc8fb 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -67,7 +67,9 @@ The following diagram describes the architecture of Inka: API: `UserInterface.java` -The `UserInterface` is a simple class that handles interactions with the user, such as getting input to be passed to the parser, or formatting output (e.g., custom messages and conversion of custom objects like `CardList` to string representations). +The `UserInterface` is a simple class that handles interactions with the user, such as getting input to be passed to the +parser, or formatting output (e.g., custom messages and conversion of custom objects like `CardList` to string +representations). ### Parser Component @@ -441,6 +443,10 @@ The implementation of the `tag list {-t TAG_NAME | -x TAG_INDEX}` The sequence diagram below shows how this feature works: ![List Cards under Tag](img/ListCardsUnderTagSequence.png) +Reference Frames : + +![Add Cards to foundCardList](img/AddCardsToFoundCardListRef.png) + ### Export Feature The implementation of the Export feature is split into [saving](#save) and [loading](#load) @@ -474,9 +480,6 @@ is corrupted, `load()` is called to read a file `backup.json` instead. The sequence diagram below illustrates this feature: ![export feature](img/LoadSequence.PNG) -Reference Frames : -![Add Cards to foundCardList](img/AddCardsToFoundCardListRef.png) - ### Deck Feature The Deck Feature currently supports the following functionalities : From 9ba6aefd06f6d697da4bb114270f3a3e41cbc1b6 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 23:12:01 +0800 Subject: [PATCH 309/311] add akhil's image --- docs/DeveloperGuide.md | 4 ++++ docs/img/AddCardToDeckRef.PNG | Bin 0 -> 126930 bytes 2 files changed, 4 insertions(+) create mode 100644 docs/img/AddCardToDeckRef.PNG diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 8e0203fc76..a42e7db52b 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -553,8 +553,12 @@ elucidate what happens internally when this command is run: algorithms. The sequence diagram is as such: + ![Add Cards to Deck](img/AddCardToDeck.png) +Here is the reference frame that has been extracted + +![Add Cards to Deck](img/AddCardToDeckRef.PNG) #### List Cards and Tags under a Deck diff --git a/docs/img/AddCardToDeckRef.PNG b/docs/img/AddCardToDeckRef.PNG new file mode 100644 index 0000000000000000000000000000000000000000..a11de6bb0f10a2450653a308c1fd4522b7861782 GIT binary patch literal 126930 zcmZs?V{m0{xGfqx9ox2Tt=P70cC1c1X2-VEv2ELS(y{HczP(S~y0_~7T~%w&7Z1i5 z&zKQP3X+I$xNsmKAc)dZ02L4r2u~0Y&#k>7f+7#(T9Qc8g1oXk>aORU`0a+Vr>zG&_!Di+_`2DR29p&L3=XNl8gmLT`q=go3^=hmzJKWHd~%mb`>Q zuYFMmL$~{$gd>GJ1&cep2A`^DuaYBCoi`o=2IScR_aq;T8;L~S+y?keu|3bXCm!iL z)3;$*o!mJK`LmPopO#0rR0v;&KR;@ko`-Jnf9Rr(lQXWpe+>N@8i8N=Y9VU=e3t{9 z_XR^M`a_Tee7tzT9E5bn)2EEYsoDwFalt(tdVCWkWMzGri50W0=Pvuy|HisIKGcqt z-1oFnU4$P4To5#Ce(?=%8~Ysf=;ru;d^!y+#Pt{od>4K69C$bxesED7{hE4YIuuG0 z;Zvw?5{qlY~ z!xYDZEfd7^qhq3VkW26C%;ip-2G`~Ly(;<)4@a;PaaXQK1pI`d^ ze6Oi8|3WeEm?Khjv z@1LTum_~+&zqY}0wYW={Y&5HNzSZg&UUMm~8Fgb){T}v8v6%E?A|qe@Di`9|Q=jf0 zM(FJS+k;F>wYTLJ>0gJf^{S2S_nXZ%SrinMW@d^5n8lNx&#T$U z?Jk>vSJzbYsLLN8-vmxWLd7}m=BF9Y&Hhf0FDO+0?vVr9wfO8bnvuM*+XHek37$?|DLV z%ERZ+_h+Hc2h}Rhk8%^;J0V%p{sbrX(hkDoX#>HB1C*t!ol->}QJNnv-y!!a|8r&% za-mjToTRM$Ydb54|Mmm+K9&wf;x>Adc4CnPUp_9@&cD7S5@{&e+5ez|fmf~X!fYgb zbBWi)`Bva_JMGTqiz(vW%JWGvw))l%S0KW%o#oO$Inw>#^O}Q5o5|`%C{Bv`>f-z| zXx-0MQS?DIk#_3Ba@v1c3x*D;wGMi_SC)|(uT~U%et;n!SWmeT{VKvnP!3-;Ge)_mti&#F8EU(mXKv@1Q z5h^qb@f-VLj_EMOtW7KWS&TuteK&mYMNJc{=Gnvdqe!5HX##YR-mrVK`FB8A9%v2}vayX&z6UfSJ8o&P8F zmw!s@s+u8@YCI(=JGpjE)SNYN_W>Hwp=qU&1~og)_L-!Fifgk+EMw+fEtXCIt$GnW zQ%>^rl#gfhjg+sBjq@@PI_rO7L>CED{&2ruGj}5cWCSiF1i3kRS%(I;h-e?*Z7T1h ze+J89)&!cT$JG5#aUcU;1E4f!aAc~4JCQ}BCTc%129Jx9oV-ZzD1tu!DFi;nI=H`I zj1b~21ovm1#zN2X&iBe-&W-^1+}ovAvt88~L`8UGmtknyykFV`v&bV=sFjcT@S~nJ z%ZRJ9lT+Fn{)A%`g#sEjE@sAH0M8y5R+%X9`t`e^@RyhSXJeOVv~ z`lV5fCMY8Gk!t&*lznfkak|$-VY8Wsw?_W6p=g|1i{u?_Pje_WOZE*ni>?;cMUh_9%x zLgpbVmc^y3#r;sxrxniKiq*Zy@)M2riu5Rt#xl$pWiaZ0)g`QpSJ-SAltWY%NIaCQ z6?M|1@lC#@UeK?xThG(d(y|TvpO`FdHB*=|_IB8BbkBnoS&nCmU?R$gI(QgyS z{CXF4XnRDv#laiMPPX6JW^v7@R?oAkaS;e^q+61&r{gKLT$oR+SNQ_qVOyFFie-PQ zomlx?!k)s?v6d)iJ13+#*j0asDW|0G+0ruKwb^v2K+3D`$>KEN0(Kz;!UO3=i%s2w zejtX1Pw6&KIDhTreLF_JxVHAY)APui?Ud`359ZsL0Iw)P{n2;Zv-fG7ohAH-D2Z;f z;L;hySE2R9wtiKAs(|uUNqs^jbHxuBL2Q(--jNL{Ck>LJr}O{%Q}4s>t8U~+qPw~7 zU(^Iv{k+ZJOcLTHdF?_E_1}8U4qIq9niq#=+9#Bss3J{bR zbA>R^C&ZW!#bJDQ373h9REtDp$$Qf zDpCL-AB{HQAigZ6^^0AuWt|2vUjYgzKyF^uE z%xEz^8MyRnN>*DurJtXicf`yCm`A9RbX1;e0TyT;%u^MJ31u%#Xdyr7&q_6b&iJ9X zPtd_02yHLTC5}YjT1TAv$p9*Y>t2r6kvWlWjl8NvXgzPiD zJ)~l2ge99_&ah1HRiRH4byT!YmBX}#8UTf8`B9O`XzpqGQ^-5FS~HEZ@N;!6YX4$y zIJWo~Io}*$P)8P1SDBqw)a2$9HAGs`$g++8Arn+iC#3lOI~)aq#f_FLWL=fyA*L|o^R$=fH5HF{wq~rj2RE(d&!T6S*w7T2Sh}6NH|(O7KZw0 z!HGjB-z_@h>U!_>i6WPtas#P{Y1)x&2Uqu?lZNM}8w8^Ndwc-_wy?3Z1tdbGe_@a%x_` zcm%Xfh31sw%8Kk^)1&G!8_bl(&sc*J#DK9_pKw!ahQa>VWmMR!@kyI!FBeNPB1M|g zuUJJc6|;PqCR4eO3fxx)&HFAk9X_-ItWZ35sMMIDq4iYtAm_{$Luv^D`Z(a%_Cxy;)ZxP9$G%q-L66TBK$hvC=}iA9{$qNOWio*r+ss1U zps0Y#Pucr^LjI0 zRA~t17m1MmXh(C5x%sg+K8)rhYwHEJIr(4O;*F!m zkxDd*YR(DM;%xme#WCe|TtnS373M|%@Ej&FFE|X<~j!vTcZO+il z6PqFxb_YCt+}* zBEamg)7q$Y)hVdO3S!355a;RCUn`d2`fQKFN!FE0rh8bWLt>j(a>{N6ll55dqUr_0 ze*cTt3p!GQ=TcvArX{2mE^N=VO|rxxU*;;JqD-h!h;_xoZ~QMJE8^^ih%bLtRBWr& zogg*Y&}pmB^gto;i(i0rKOD@UG6W-RZEBK1qszHC^(A#*jLxiN<-11Vzczh(|0|eB zmPjzx$6=l!>8NMWjz}#f)K_NVh@R#tsl0e<8*e~icr5Lwt-zm)NH8=O4}^Qf*x2~Y zhnRrmlj#b5So^V5su<&QrpJn-OeEG034|ys;RaxwkdY_yZ*ys!5wsF4=-+BTImciu zbo&j-|F;~*m}$^X;ZbxJ-jDui)}&RgV3(Rg{ak{H*DH%JvFe&^#nF=C`F3>HV61!@ zST&{tISRi)_jiToWhLXS+$=;;4oMJ-Ua$D->3P9HP)m&^6fPJfRzlB%a}$45dwA_y zXGj>ahyVtnNmG$XZ*&d^{J5WCTjHw_r4C%ZrJK0~5lwOV4^#siRD}dstX*NOT zSs6=X@eE;OPFjWXO<}9v7YxCtd$zTdJaSWE5sFL%!%^CT5Sb%xH(ZD@nC?guWq&6n zv-r>eakvn^ZUCqN9!01sLFu}Klp*S0R($!1T@v2{l@fyz_4+)pzw2)OC8DMC!OV7< ze6%cMLkixopvmX?PELWB$?38hC=5-z+K(B^!vewhxRWrD6)`q_x|D3nPk=*H_S2>9wJsv=NvY|`9Oe{QG@3h4()CE1dX%FdHLDj(#TsN0X? zv&}GmiD)WfG~k!18Ub22W@&lYIIZT8SVOJZinxS?yBOScbhVDawyUtn3ly0AQH^S*_~tN4 zco?IH&J*8G$`bue$unIRiYq3HIvRQcjs5?MMs#$%L>nnfJrNfSCCboh(s1c&kY!oX zVyGLiBT`T4uKAq7+2X03s9&TZ@KdPyxVhGC%%Lz)k9Uiv_R4=~g04}Tjuvgg@%#JM zk(Z{%K`$cer7&3CP8ar@Q_UG^lW~tKv;zWM)fUCr!G*a#9e(JGlm0CH-!{!TeoRh( zA!rhBs_eo|WgDK-Z&`88dLc=tGQd;d;DsGQ^f^TR5l2x^0XeRaO}kg{iSf-<#)dorim)@mo23b zfQ6F%E?p&A(wYzP`LS-ayq~;KPa_s4xGucdYDP)1DQ%5Zq)2Cni13Ly(UNs(6W5EH zpFaW)8bS+w1PFK{=5zLY;o2%BXoU6+ZFHnxODMIR~Rxr8i08Sg}*ryyZQjTmp6ozbTQPoLLdWoN!S_ z8|GR4VorIi-&;`g|I@iKd9sTqg~>GW%Y@}upeKGgn&X}A%fZA6C^w5(S7=pbSy1vXsV*c;HH4>?Mp=N`)FrQqM&eU3Z&3CiP&n zuN?Y<0WpOytXYvFsmC3B!@I_QmXd6Xd!00MMNP--S zk?@7Y_$OKG4m@VEtsqBBIhSC#%4Ac!&;KW>!fzfBWE2#pJRxR@yC9!$9yv&Hf>Uu4 zk>GyO1SC4~AU<%D+nj37`}M(YZ3V-a@e%-d00k<W_Gv zO%n%95W9xLt>M1b<|Vu$^c(Jo6j;Am;XlFT)|x#$!du*H$QO{WJ4`72^%TFl7UbF`RfRt`>DK2;j*LqdcTCadjo^B(v?>WYIdQain6BVCC z7)}5JPj9x-$tu)j?bwEOgY-5tj5$&bVISYlsd=};MWe(Fm$|Vy5e^>Y-MHz2oW1mz zUE;pWkS95lz6z;RY7~8LF^G4Ax$Y6X&BUTEPkJTL=y!Tc43h@t<-Xdjx7>%aUxR^v8ao%vhMF?ZwOM0cop}F@Qu-enI@f=+fe|fah(m1 zLgD<)P`NIoHJ0wZ4nQ~P76yOp$_jna&#By}kDsdfHkT-}Q&1MUfbkxSRV&MK+R47K znV_Fv4(*cJtF_JS=IO7cq%)cvvP)H8t4my6T!?iyw9!WmDHjx{&Qz7{;RWN{sXK|6 zi+UG$BEY`)t$q3uP(~W(BT=7yeJ4AgE-QE^lFR~Vt4hys|kscd$@jv47Se50K z*pCIoApb?*jSH80x@Gb7gn(}^LlZL^7bNRfU2H(2g#-$RSP}n=UA^FYU}p)hbimwP zRBZA-FO{GXuvu&t$+=oUKqZbaA;&8}Kjea;VlsJuf(nBoj9kyo0?_SQ`^*`>zJ_~+ z8?fEbrA6&x&2(MZBIDv-@9(1#GJ0zUDc|BlW?x=bK}!w~!LB~2 zNz2GUDtLLFq9-XU%9-C?{1*5#D*Zy(Qqst%|2Cc7F*!n|#gwX4v0IP`&ySo%Qu%PR zgNh%T^7e8v9FrO9M0(=3EKo>6Tu#mqWK_f?i!2u1jvO=myDlVzBHUQ?HrjEKja<}C z;SRXw?ZJo!7SuYKzM0<`H0MVxV1tZ|{)Li?1UxSLiH3?;LD`j2p`8U*5hQ-?LY3hu z>eEcHh*}5M^$J*+=w{72Lm<${HjUBVP-Atka%igyAu!y={aMn9+rMm$KRjc02~C_e zJ%s~B3hSIyKURp3LBw6>iKi=$ca)8(weY{kRO)y{3Gja*nwr=p`(S!$4=H?!aGbP@LOK>BR_;nY0a%yGd z@HAi5N|EeeIV!h@>jDBcv(4e?*r6v6BiXEPtuJNfxib2&ggN@DcLg_);RT76{{$SO zbCjYW8!5|z;G;&5kb77SDoT4Tlro_%kg+UXoYBAozW%k$BHy(ehaAF8=@1J`he9936EsZLJ`QYBKSGmFo7Pk>dFtw?>KS z06}o%QsGF%_=%AI!**wmn1eF?HMC?tfD6me!zEv*(_X#T9lGGpGa%8>ri(>ofJ{I< z{iV>98gIghwraeB(#kWsKuoj1W*3^DigW{B>HUby?s0`$AEz^I#B?=x`kVz`hS#dU zBx$Y%)LC(r&%q-!L82qjj$`q8)aBcMhf($8J>GdasuiWi?V0y8<#epxb{s1-Mw=`y z%UrzQhN-?9GAtB1LpOc&KFLsY`5+N;+GX`2heC zkIM4=HuIrS+y+CVRCs)Xt^I6A{o-)=I7~Ghn;PPAJ)%>pwc2neSoymJ6czs!BwEc7 zvys|6&KGSRjx~r_!wu6EYO-97o2RC;rC8(>e$j~*k`E%`Fgs!QN2oijrK$sf-O&%G z4Q@)WYoFKjE#dCSW=>K(GUZ~iZKPV?2UctsyVzY)oN^AiK&!?;j2P8L&q(h6-=+FE z*Z3vkl*Nt1!+f!Av*Y(*GX%w8xL}uLERFyg7s;&|J@pK2LGfxhxmsN+<5oKFPlwmL zB}0E6!?}W^x{s}n=L16<-W)zbaA8>3i1Tef;U0f7E1Kh#nhs$>*_6Loe2QQF;xcZh zZ%^A@J0eJnw11=J%2Us~VbC?&lB(@9a|S{cBrwQ9FxWBd=GP79rKLnn$^8>luMNl~ zV$(3wz9u97OG80Nq*JQ}WRvJCGvs7-n;d!`yPiM6FTfr6Op@TmoWx=%i{vw}oT%)Q;ZEjD zb)6-27OO8eY{)auF_uYMr*eC27E0nwO^Kq?{^kA0LdH&>sm#U?A#Ea($jA1(3+`gk z0{>PV-w%T~YnDV1^rrfMXcvet4(;kTU2x`oukJp4;wfLmUK)ZNpO~msEoTY@Cm`r4%S4fMTTk&yW(rfVm3S0+-oHE?1Cj@FanxLigDq1P)7+rb+LW z79NukyglqUe-w>H3^0x9$#itu;#{qySV16nz&-Yb;vEx7h6k47GZNO@On1Dl=|#yj z8Mm6S(FSG1PJbK`FPMJsx0w6V~|l{H*DIjN(g+LUXDZ8*i{GPtV@clz|)zb3a9s2pFG)5Rbp{U3+t#E!XJ|coQUZon-P};^pH3%TRZK2 zJVqT~KCf7!5kjie-{H?Y+NO3}^h_ zFBQ{tF4qwS1l&v{;N2Xe6DmMzB!$&pQics1S3r(x2UYCtl|1u$Fz|)zaKB*`z&_>w z>^++n68ZR~DQ9HL8kqsI=BT|Rk%c!B69%!Vgb{g*5aD1OC~Z0B*f;awOU(j^Y~{>o zbz&ktk$3S-W`}P}ffFC!%>fW0Hhtmi^B^(hAO$ocd~7j}R+1iZz1nqu=b|EeX-G!MO{yVlw?t>5*>XI#H}@4H*50?p^$K|j!of^ zKVdjzlW%vq8KecG`SK1Sroy>vB%yl)D8nQJxV|aAP2AN&_Tg zu~%AVh`TshN$K0<&wn)8E^T$*4m6b3e7<~+LEdZl-h5FR5c2BH&uB)aDCyKvPL53U zN}IJZW9vHsRv3X5KCO2}KRdXUto=yFmvb=#WE2LyLs?Qnvben+Nk@tVs%qn{%yJ!w)m^(|reIQT!N6w50k- zt9;DGaE>5C2fb%r_lLW5wv`ga+*GRT%B)<$pHXE;|0*az<{vjRj6|6VjsHgNih1@e zSTiXHCCP2P;wLUZ{04*oZ)uprarv$3tVwXK?fA?*6?_L@yVL5Z`B`uoG7K7ePz8pH zoo$v0-BtWow}C~Xh|%W{$DafOHln@=xxWjXs`PG3mUGgN3i5V|>$qdW(NUa&S2k1~IVe!1Ne5J@wKpelasI-_L`e@BcL_wtsREds482oY z_by{7hEQj%EXsUA0!;|02u)NEKwf{~SNYm8^$I=Ai>I<#I%EkQvzwL(lmE6t_xbv` z#9I;gTQVpdut}A3HW#NB=Z0*e5F07w;(-_*CB5g$Ke3^jip><1+>tpGOs>2q0v?vH z>*g>!>=dJnC0mkb%{bj{g^-GM-M|_CJ&)zPe^6YCqRF)5({UU~lV~XcAouZ#xW#4J zA}2CtEw_)vw{vt-B41N&;<7Ij$3i1~a@y_fBgc9Jd(XejyJRhyEZ9tviR;o^$PWzL>96!9d9GEHtV?2;&EQTO8M1+g?6w+OJXh zw^ihG@LpS!eN&{kz?T;_Bo78o98AK4{e3KgM;OJ%ic;y|C3mt#HrlQnMWHY9FRyA( zkfA%+LvpF=STrcIoj5ZjpzNlI%HaCe5U|{s>K4&tWAd{l4W*vbem+6N=n|j+x(z1U z?D)ReP7ts z3vM)4mC0zfDiR#Z?zo*0{(K^GRvg6@v7{l3z9pG)b4P4OB_YoL;I`s+x@o$;xc24G zi;8SPc^8r!l4(+h?!YlJ2oP}jxqR?X(4bW;OKRVxso8+2`(jI7KC_85BZ2`$j)mmk zJ3y#j-Oa3?vKJrkb97?Mh-Dk8Nf7f;ayl05C(N`(19k{3T=Wn*wfvbRzju6E+S!4< zM*{_LigH+K!s8|?O8W*~IZFl(jaZ{u18U)VHCZ(vl#?cSnO&h?sad8J;ciUAtoTAD z&z4Chy=>CvKS&nYf3~^hHaADJssfbj!nL)yrODw`0pe~)n>_GR&^Zp?f$0|=O7rJ= zzsPpV^pVKOPcK%R-;eNX=(X!J;?J)v!lON<;FRK=6OIN3hC&Tq$VjGl4CCmGE6wcH z;3U8pY0ZQ7+GwoddxeF-P}%|&oLz5^yPs|v)cIwo_=Emlo}xI-j2#=Jwr(NB4rRT- zQ6QWMxsC3k_=+O^AmD8^*pk4S+3E5gv!AM{f`miI<~1XSGOY<98&J9JC>sTU=?C`Y z#3uv%ANqWV{+PjJW9+9l#+S6pR)}@KtZX+hMyx;zsIvx z*3A}Jx~`A5qA`Ld!AyiAf#q^+|3&l5#Erz|>!L~q!|?lP^w!ywN09cGa-wa^gg8}ai-`m1*v1NIuFn8OVX!t316-U(04XLd7s zwq#?_vHw?s-YI8vbTA6bab(D4A^!6{Zn0V)4N9ffXip)#JxjfU0&>pm43zx*}$P)&F&8t2}2#UYDK@@qWVRw0`g zDKAt|xA}tEc3E^XyE~J`&)_m6MsT%mWI-V9=K0OGsYbtxL4$JikJR7qn|!v}h}v0n zq&Ood^;egr`ktgx>qL!Qzc&m!xL`^_U}8c=W${}}oT?;`CslV^JPv1aUCF1j*8u7w z9Ty#>h+s?5zeYzE0Bq0?MDr~>d8FdwYE?QuTW<^=*_*?0xds(##R0}aM`VT4nOcDKuDPI0FkciTM8g@8#zv@;E+Udrnj|KZ8o&S zN2zpLz@X-Kc&$OR%H|kD6|1e4Nr*mvFfp@UX3x zt>nbQVi>h6d~^6iET^>CoqCm4{|y|fmGTL)n|*Z-sbNa?-sB;p7)MYq%xr-5X0y49 z*O?3fk=bmKbJS4O_TwD_1Z4u!ddqoa4iAZQf`;W(hH8VwWq(MNMw!wNGvQg7`S78& zxjCeN-3?_DG2UzSM_z>*ra=QWlG8mc=2-v2lITVn;)KY@-k&}U$3x2&!U^4Jx(WsPJ&Fv%Nv437|5UCQC!r2huUtU#sRr*HQ z$Y*d94E4KaUB4w@$RyME0PT81!?)=5g;K?D?_jO}$ z94Ut)+yrdi1(gk$%~0&xO(w2&s6#+n_%4zCCYw^-%O5TpE4xEe_Wwd zxBl^ZZP0aA@BL^|tX060!S8nmr_bhh_OVj2lAjt;e7@ok79Z?fzL%z~+Tn32RQsI< z1}Os+TR!fNI%ajyLpT!1a(;PYAJS6RLv>vr9%d$xF6TmzVKoK&aN7AYDRy_}k&3eC zhBMAe_%=O*@Ng?$iF)0mUo80aR%K3ujoOH^@S{pzw}c_zoG&`e7y9({1xrljwhTTR z5Vv7c1d9*O#*q*f_i2uG0CY^y?FJ{r!YHmk?{u{s>I#bCFsaw`{1d_716CVv1xP!w z{ijoEBw{3>kqF5owH7>lQ6L8To^%cy-T_GKKKCWiH?jg1KgjJ@^U`$^@yWNdEVjO< zo+)IL^t^`-G)vM@{# zgWIgvV8d63rLywZnob1#kaSF`jz({=%jZihG&-H%oU(V?ELzC-q6Y#lp`JEG9ogU*wdJUk$`n}#^ROz)nC6zb4 zJrDpjE!Kj9pf>MU*3buUUg5@zz1-s%Xw>V{zzkeYyU#vopP(Z)NZRK$aG=#95iqeb zQpC+rF+4Gv{6Y_9iXNN{^~r1v=ek6ItP(}zgn~{17l(ZSI8a8sCP=7&F7yMB-G3`?-3alE`L*+9}*p+z-snp3mM!%XbHyHF9AzVT{$hQ=a%+?z{Y?kf9q2MqW1wEcrT9M~! zR7Z01_^@H>yeCTH;5v2g8uX!G(2gPNkmoJsbcKyJyAQ~akPs*3tCVwjT!E43_-|VO zuXG}3gC&!SSRx*mzfyr24;7VTomQ$7I`(|Ee2cSbNuu%jvbFm`1|AOnp)k|)H6K{J zXlMqr|68~*+MXv68r8Hof3#YgC2BCVFaA|_9L=j^oCaO2@TdV@s#s>!tDQWQZrI&e zD4inVKr7g}T1)jGqz6qDp4}UeSn+FsrL?ID$k!#4j6Pp0bj;ljrc?j>qu}0c$C)FY-^;b(b=+#d41r5-^Vi!%1lQB=>=yDY z0^HuUR!4SrcfSexK`&SCcNc4M?H}=1DMtyNE)AZmXd-uaZTEyuGQlo zB{0x1T@x zT(N$Yh9TmKocD$dLP|zx)NW1y4K|fbh7Wg(0Z*qbukh%vr=@5Kb`V%JIxh2vr+@xP zQ<{=WM0uYoeETR&sS{Bz_DOW zj{&t_>%+MExxSunETKS;@jw`GOyJw~^MPr1bw*Ng7F5`@(PG4dpmF>d?cr`rCu;Rx zEpRTY%|P8}%iG7+^_T`kM@A04JSb1vYB^HhZ_;Fumib}BG45jPouKyLO&nF=zb0Fb zR`((Cya0RbT6&M_AR^z^iLI@jEdgZyxh~1vvzn!Sv|}Gave3AI*CYHFn$h_wirN8P z{dSLQuhV^bUUV5`qW94SeKZTda95FHm=oxp_t%l@IQ#7vW1u_(ROA5kp?es1&k}Yj-3UAplmtw@yu$!>wB5_bS~hKB2d}u3z1;hS+%rS;vFDJI(}_vaT3^FDNj5$UNmdcX~I36)ZUF^>Ml0C+I}1pEfBAY zL}!4E!zi3~iD3F^(B|S=z3F96iMdhl%H+|qo9oZ}xb2gh#pm-ls#r=TpSD#m-jTVY zFU^y`44ABOJ}Ak(S{GZem`;P|#^d+2vYYfHV)~p|bB!b7dd+FTTGO2F4%Lo^eIq{6 zAde4!XfW-7$;{-kcU*3K41L@H@pUsC`LQ(|or8>%(mzxvDPN{vx%~?~O!^X!vva4* zrw4tA}qKMY14v(He5VAH~P}wn3$%|UsUQ{dn{ls-BIu0@cMlQbh z7MIJ_Yj^jGR2DNClH>sERVtVSH;^sy+$0d)fp-vIi2J8YUX+DV`0boNipW&`7Wey8 zRjlyJoeRFh{fmH^F=!($=Y6v)#+-xtNG$A^F~5048_JQsC%6EvsF9iF>MbbKHs=8h z$h)yX(BSY&?BooNVyptvgi!#%PRk>-C*CQ-$ftYNamKKF?Ri0x=;{X?OqkM=SK(LW zk?l#7{k5N5brB^*R$5sSkY&a*vM@gw#TRla|A{*t{6XLyjVl1!Ky?u4Egh6Y2zorD z@8dYZ=%`qbQmxxUm=+HdCr8OxNRkB$cqrR8w}7V0>b$**-w1m7Im^fj6;Xj!M?OvQ zA`YJNlT`UHo;clKXE&v}zOMfk)#u-eBG~AXYAT*&@>g>lpKa&rFOPErTrXC6>g}iX zUV-C0z@EuJc~OIPid1oKiT{gxQt16!Y+G71t2a;f_rnwxW6}5175M_0K0OnxK+Bg1 zPbBJK?Xiuk+)l?^u3G`WDNHqg?%1*0omky5k)S-H7IO_a8Zrp0_4sT+M>aWJF1uPf z7<9Qn+j-x9=p%F5K)0gdhi@2O2;SIqi{f$FLBbXM#;xg5t}tsO*boHLkxrK}oZrCN zYOA|FpUKY`;%D0U9%?}BgY(TsVcsQ2WwWSc7k`kq+qJyZU=)iK@pT?(As!d%z(|W@ zTeWrhA-jXJl(6 zB3_AwUdOy~r6|wzzBCq9T8)ZO86X97zS;c~C%6u7JS+g)RRGX~KA1s z761Q;MA}s*E3Ac{X=h(K0y|u`Ps^7Z2CV|fSyuA}UK_xZDq9j+s#pYl!#m1|3h(z6z5^RxM*j)N628jm`3k5CqsXH6j=SCx*m-qfrNUrv!Sue`dzw@nOiw zZ(cmQe_P1wMzqZ;qC=PV0Lk;P6H= z$NYfDU}Q1wN9gI^s!$QwJ!>&xIoiEyoByyOWe*z zt;W&Gb(8e1twF0ax+DI;l%a6kcCuNleLakD4g8@NOdZ!2DEfj`qS~qy;h^sW8W3S< z^;c_deibuEy1n>1gTr?3;t&ZF39decM)$VrhraL`>}^30kdb{XrS6E8BCcbv$0m$z z{+`g~$~LStI4>O-IfaR$X&1le-0FCQLyAJHoEE)qaai)d$=f3qI_~Hehf7_p_kuQ~ zC%Ix-YnMs3d0<_Khi_BF1G?GZ#>$PT?%P*`U&5{xIc+vY?Q2DbMXiahKM*Wy(+JC; zQx*-Jc7?b@$>&X0@m45iHL0K9B1}`keZ_?15zn~tNo+z86yP<(v{90KE!9Brk*Xm5 zL{U!NeqG~n4H2Lpk-eg{oygq1rPU>#5SMoN7t3mXUNrb&Mro;Ipk?FYqZ6Q{NX>^} z6jDbH!GM2E)+w8`g^K|u@}98%Ai--7#R@1Rms(7%i}bv%w7IU_E1p*>;NaZ|CgZx4_Kdin{GJf750(P@-#Q9q<)eA^14v=X@m%V0yLgc}b zGPUe>S2GF@MWtqO8&}-Onc)MCLA)}sm_puyUBnDvR9E-Ke|iq__yzi zT*Us-Ol}tn+GDtXX`DvQrl`9dhAiopL8Sp6m8cMTg`c6HZt$FLzr|w7d`HP>{+PKqc}>j~VUd)e{`ZGdXkDN|e9VJ6ez&U8 z`RbxL1P(JQwjF5<6hA&qDr1utEg&M5uCFkJu8%zQ4&m;{|Kk1fVx_kocmMYj_B(03SI zN!UxVpP5LTSp~+D`4aGXH=9Mclqwn?dp~Hj%ZaZ-M$q%{EG@8=`G(K}eRTWoMi|OL z%8l&V$p4Q7Q=wK>=f3rCc2-MIebT9Qc=;5j_vV$wFNAK_xDS@TenqOdrj9r@JTwID5UupGdvG6bd$$x9M?Lt(>}Px z|Dt8GdJV^u3{>m2)1ioG0;LkrmwgdE1j>um{PWD8xOq6gu_5`DMt>7t%(tzSp(OSp zm<4omdlzXfKy0`AEmYbZac%F^!52q}Tk%fxf)2br;fVIQO0uG31z%0N94Mi~Fjc7( zW9rB&$o%wxhl*_7hVPx0egN^F9ohvqmaWP$D3d%+X1Oh9WQQiM6NxM8w_15jt3TdxVmJj7r~xTs6!E-eu}oQZDtW2mari&f`%Dr%R9_Apd;-5g{Q&{V^!YYn zz1t%2fp7%A&uP1kI{|7GIA2F`xBFyIgz`ILRd`T`V`mU|4i+Y$H&BEdOWU9Zp66vN zAJ~8T``q>sSro4g7q@|a3%kh?K5CXd5=@`tlodLr<1hDbCbiHEaE01xw$kbr>n-Dh z;VE*+z_8RXOwQFNS3@O;(;Dl<6k=#c8DfPuY`MEV^_>3%lznok&Ibv8uvi#x zs+5o6-(mdRclTpwONK%~ZLM}VvJC;3yWZovo4dKkaP;;d)zF_}=7^4~Ja?ii57}1b zSV3U>Dx##nM&CWmYRmPBl>hY|jyU8AsDJ}3doz?ikV>L^?aXUk!lnHHa_xT2w%e06?}&!Jr2S?(SbUjAmWFizGuM^`pH?mKzX^m<+3mr+IYeE{cg_&DWrVh7M6Q)XK3sF9j<#Ut>A`T6)- zf~c%WfVnFOr*E|>PO<`D;^tf$XCgr76@PavDUzB?jwu!gYXV5=>6e}d$_paKdmgc>MVAS~E$a0C?!7Cy5R z-rU%V#zwwTlhYyX(6eQlt&zc>4&Q6z!NMJ*o${@X- z{AN8r+d?}-#qNHU?UXW4JM8YaQnwO)A+v9@Q@gmztOA2Y8LM~jXH~O6Sd8UQjB2ee zI-7nw$o91B%bo2z>eCpQUiQeoeG>oGW$uS~TxQ6k(eE+^Juhk|fIJ-(%4!QY+07=M%lVqCz38igoF^wi^#cGEpelr{tN&b4tg9 zcm!U2cKZ|Rx`SvMSE|A*n|%FmC{HFso!jmYX0Cl!W>=;z4(<98ppd@LmpvK2aEcmh zN|Idp-wi`*TIO)zs8(xwzPD2|MVd$`sK_Ufi0My?2X^%DSR%-aVcgx#&9fc+{OAAF z%8{l*B8p9@L)fpeXAq8(5)5)dLfj&qM_Tur$!FideWuo`*@-_3EO|o^z{e;#J4nfdPQO$`{bGloB(iRv7dv0{?6NrqGr72>Au3(m z(B#70vAa_bqiYqg1!5;N+uLA{ClG61#V!h)z0&4h8}q- z)?le_#dM*VT9Y&YS6MV^S+#Xg8OZXbe||DVg1w&}whFq0@D-{xOHyaP1M0}hwAFGY z2A!rNca)z0?LBj#Hq5i8*lcbOFuCfs%9i*V;1i_{{E?(WEkJ&I!qsgO$7h=_lkxsl znXUz9fJDfgnh%O(J(sVvOv7fV4m3?r5G?R3xXZ;|^_0z~%ec>}G(&clG!v`seV^ZV z``Ijkl>PFGV@8FZHU7(^JSxEaU?wS#CFU*$!;1It+;`{UiY?y|G+F?E-qb-Ne%~g(IkY?8-e#GdBL`;|=Zy#w05(>Td^RegOKtg|B`Sw@$^flOT$hpfMS!)B*(Yp`+;Lb<6R&eswiBW z4LO-y8R@xFx3PcZij4BZBNzkZXh8IE`xO?TbM4j|gR`vTyRxqKf|nM{6p(Q^Wv|>) zi}ZV-mN0pxCM06By{Wxxn~oWx_J})X5nq>}#_;$k_O12`#fX@Estk!yHLCj5X@j-+ zh=HJ*U`I!-zFoHs25xl}Xa%4rtdna0TREI^hwP;{Xi(fM%myAnoS}Y^INvJg*JQ@| zvh_-Kd0$!h>cDD#%r7|qgG=o9$BmvSOnU8NhhO*`0%3}QV*w{FRHuI*R;<~}cMbpv zf-$=<=tCl;?AaqLj*t?vPuOkziAIlFHu;FdZu9jI{VWik>-+R#kcfRpapF`9y;Cby z$dYR&Gw!d#WwXIF?ltJvJpDU1v*gh;ljaR*RaJG&PDBHTQSKLe$L;B30aRWYG`}PY zz^aK>bvy1Hu!-R};9DpH1aIsH@u9$f78~r^FVWcN2H9@3Ld&AnT>$?m`$E9%PIiz& z381l*$>mUfY_!?;nNBoDVb#uynR4`M_WFpyg@=8kBVt8x4|q@t1f+TbHY>DfBGIdu zVmwO4-uvnQT?gRM>T0`?=fe4KEgHYelGlrih%_LqYt^ho)5q!R%QvppyNZBPKFd39MKh*x(BIT4eMj1Lsr{XG_^KThG0uHa${ z=YxeJB3y!XYnq6Xk#3w;r}+lJ*Elg^l-si8;`4Uf|MJ0iPxghl8Gr0SIc)aYx)Zhc zlz;(e4$+*Tli$mWEbs)7317v~Er-|2ZEb8KaWwdSzFW+=o-WXHVWFl`u~TCPAnyRm zpzD1qz14CpkJ~@lOhT+An!HE$!b(<3<=a^^3q>GW&ml_@#^>VaQhO- z4wLG9uimkrZ@92IE9lYVC6DZPfp6_$(Ax?qc=&h0k&42AScOx!Y|v_ouO92oVKwKq z7i4Bt6mfGi92S!)m&LzfjH)xLG^^cWMX%SL8usS#vr4T7RtNkY@+X2_?Y5b;#^%Q< zM>}+A{IBB~t&2TOQL~5|5h(b2_{`+E+kY9?gE0oRncRtwIh{=|#Hasp?Z<#<9I7kt>{4TOXiW!FCJ9#J~J(x`aG^#o398kKK z03$>(Epo-{WnJ_)Y&whQq-;awFh){*yw`5OQ9XY|9)|bxjU!!?ob~E@`m-kU&#;et zK6${!4&u>T@~#R!V?wZ@W+lrwndk@)hw2w%OH3M(g**zU8Mdw)et!dJWYimxUZzyY z^}Rb#ll_<5)M_X8+Lx7TtgiUI>HroC1S60#iJe}y%CN4+)Lt%MwIR>IYqr9nT9 z3@v7L3ve6)$|J}c+4$upiYDZ9yrT(zBt%HfD8hpPOe*BhLdj!Lrw!vAAFS48oG$Ze z%zY>&`3F+>z^|3^7xTQ{U?1Ngy(`b{u4C;^mo@OW5sZNh6%8Qm0R0n6homo&m??U` zh+gzfgWG65(P0biv~^ ztXa=yL~O7f1Z+x~9s(m9I_G<+`LHYy5a0Lf&;DXLAN+nhufr1cDusB#M3hYfc~%dX zcRr>givzHm{Ug;lGPoxqQSji`e*|+CCJHhB5Js(6S%_)$denaor!v%Pd?4e4>bW~& z(u;;knTY6Ulx@ImnBt6artdFQ)Jwk zD*<8zi&lOAe#@W${j`-UzoI#)U-HIgy&eBCEEjcE>|FhF#F(qbP{Md_IC&hF({L$b z!nm51RSMUpV6VJz2KNCTt8leWqZ|zvMDLR;Nj;__fyG70V1F7jhoi@jNYnFtl28yMCLD0S!c>*(e>|+W;KZZeh&GfZ z5GUO506Y=SH%zCUu|+cTPx7IHL?CuU$Z6Rw#5<6Ofr;b#JXhCbK0|t#LZjulvn}G2 zb5ATHVYK%hc}Mw&ws8~;;Pe&mZHAVA+hx=j%XfgBREibXQLkG||DnO(qi=Ig;vxAA zzT)jyOyG6=-eFA@C=1cJ*=mc`>ihX_8?-!;ltw+aF@i=;XG;M*)la$*9B+a4G)HhjT!)p2T%;?$? zYl>1J=j&`)cfbYn+Io<*u;}W`>0oI;v}&h%u^y12$b2vA6$gxY+^-g(vS9dO9pmUr zE!{Z;exW1O==88zJd!B3x0Ml$3qjy=3RYho;R%P<_Md0(dVzEUg9@AVI;J5A8Bu*4 zHXpO5NePaGAGcmR3iiE4l^Bt?Frh<)rf4?6)N|PXk!RSJ^6sN=us&a#i;6DRtGi~CqpqC@aLNXkLFoR6vp@AsSA4i=%^81`J>5?GmEai=vb+L58oJ{ zVPRti6VcIC`rfXnTyDn*En4y=dx?LQtRtVk8ote|MSJA<%|s(|8vb0)4L&Jo`D`hgw8o&pz!y43oe6pGujoz zuTGa+b6L~MzPN|g`6dAIBMBAq8x%n=mCpc&Pv>zb$mV5v=f~O@nzduV>ChV+ERTRT z#_i58x7N_zg$JOrLv_qJ=HODfbwemkQYdiPv9ntJ4(HRLq_ptVdSrzA+ve4CgE-NDeLEOX;%|moa8^)W~MH-QLWEnH!)x>S;Owd=j+hnVb%!CYy!!kwkLq zf!LMW4&i||`!6z0{$a2KdV|`#6D6>z?Vd}$9_?wpJRjJp!sBkqR1#{{>mwRBh--c5ky$4;4!ENb3iioqKOGW(ZY{$tqg(WBJ0eW3;a;XD0E=;vz&Xp|>qJZ-#i2aMddXBQDnpo#l`l}~ZgaUo8R z}+}4!+lMg7q7`~vmSA$5DDbAU(k8cyatorFD*&%#rzw~zeF)> zNn(z=F5vioE)%i18Y{D6YXEd{PimdmC-;jWbhJ+#c1vd92Do%}XqV4|PAN;eD0u&j z+3v8T0euR;4^tcTIU&2LP0R7&oNW24Mbqh0BHl+Rg!m&RYX8A_zaQ_CB*=7b68lk!&o|+51hjlHHW(g zv7I9eO)^IPc2u7kMW(+}r|pHT0ff(d_@-g^XHd{4p>lvge|(W>6qp){25|sfL`;3R ziy%iwppGu!?*Rs-+uu>X7VNOKXn2XOj=$4=3>5&p2MxXFKL(dd+(@rp$9gC_-d;p0`Y3)cZ?hKu7w)CCe$jB z?F8f72mlZB>d1=j6s@BE^)-2HfhGyX=lxH~8k{K(?yxGVVx>NLb$p43gH@En)tW^1 zSK=WigIC(yf*>9uJoJ7rd_fl+N0G=l?z{hO;USTp9Y8-D)J;4)s=y?qiw1{HoB#Hq zBoRg+l%^-Q021>55~|wa1Lui29`;Q~A`wHQFwnhQAOnR)-l*zyJJR|D6X3DxUOdB% z?8p50zMLMrd0H=#m?^=58GAAmx?mx_9D42(Fp=kryzLvPEj1%ID=8mm=)@JW7n>=X0^;!nq;k6%1ZN5}Ku*7FtH0pb0^k%eRcGR0wa;3Nk6 z3%^6Pqv|Z5j@;SsAF#+1X_JO43|5Y`d*>$@PYeJYfoSVUlzL(=AV;%U9f&@s1jwBh z`JpvVJymk8>L-iS4)ezp{JN_^yB#c)WgjBaH9>B(^GK#wF?(%x-;IZ5u3&I~czh2H za0B=V5t7!WstwDJ&S^kZQm(dK>u5>?>)S8+Q3%I|he`8CIzlcF)Rq;ckj-hy!-tS8 zQuvvX-Ql=Z=C627shpM|o7WQ#tKXpNJ`I^G=m!2hS7C@772m}r z#c6eVH~WQ#Fd|WwlxDhtzQD$C|6C3NDy_!-rHXr)3m@kG9U9LHkFjRH|I-Nai_tO_ z%v~H|Q5M6(JPJ>KV_&P*sl%tG1@pjygnfQM_r4ru4O879d#-J$jHTq40`!;R#O~5c z<#G<22|%CvUt9*llB4AP65~__vNxkKIn_?(nLFo;-h#oea-5X*lYFxWji`a8bRtl3 z7i&dzB)EEA{|MM!=sqKS^?OfrnQ&%o;47feEi3BTL;YJ1y0DzWsyZdZH5$!ujAjaDqT%tD9d_T z?<^xj^D=q8O6?k`BjR3bDdw~5C=HcKjtjkxebu6)tSBKDV%QKD_a~yLRnL@X%vfr> z&Gwh79_UK78bmPFcR~>G<)5qhrvT8oI-h0FYP(%{*|tLvs1_7)cRXf zVwS*6D4LMxb_Jw3WK`QeKyYONq`P@3GA1LB_0~sF=>CqLwt#QzKmYLOp+Eu<8W-{s{w9@kAVdE-{6k zvWqB9O?*|tU#Z5+4cAPTLwr>2!{Bz~eeG^}ZutvG+p+)RDX6!H&J)a{{U2}sR$HC$ zJu)0VP1j{MYj?ZxrZ`?0l%N7VKP<5E1bf!I-LD6xGh0Xlq=_0~V_E&)MG5U2YMcR` z?W7D4o_=nhsqGsKg~t$&fiD5K7`1i>B^$HzKXHC9hws2$_jpE6xnR(m$@>e$wtys5 zqZWlXkN|Q{B;v{Ufj%c>w#e+H+Jkj7IYMqu%@mR-C|n06tQ}xCMf(SW!@@O}Z%J~M@%df>^+w>+;d=VKwn#i?B8%g?Bx>c5X>YO3*><}c z5e7C9+?=EmlTjVYPq_a1^ya0-+TG`7fM6*lIhosIJYvC&#%BHBUW>In0E@pIB-Nep zb{|f2Wc|))O84XQyTB8~yhEHla+3!tkf$}uol4GhT77)>hsjA8Z=W7;Ty^z6jB-uJ zu2r!=N@tnJ+ZYrBUmvoHtWu7j^}5u1mT7m;X*&>&Jns(Pc0UvZLzDmeH5Ij*#%DoyEsRE*BAce%m$YQYh3V<8FBAo!?Vkg_iGp256z7+UK@Fx-) z{ZdJi2)ud+ZirYdF7NZ!EhhbjmxtxJ;0>HRvH^GVOco*lMfn_zcN9s?1_wl8)xqR1 zoeD={()O61c7>4P1hp8tLO*^HL2pz8RCOksGr?|FGLgm-*~2+cv)O&DB3)*;?Rl9h zfeYAOf6Pxv(es0eDgk_c@6XK~6Nx&sYN^W{o~IzoK;iLHl`;lSzxT$dsGZ)rK3c8H z-<^o(zbZdoktocKcv0we!*m3OqEo@FtSADn_j3*WUTm{k@egH?P2@(OyX5VFAVZKt zt#(T&_xs({=}44D3YF5tkRC2U?z41kcNTjOa(t)bbdJL>wBA);kPVm{L?BGT!PKm7 zgUPr}NJ#kAuG7|QyY7-Yi#$xP*N8JlhBjaY@2Ngz5Rs_NJT8_B zB%-eMY~5iD!M{Fyo-vSmJ^zMNWjqr-+I(mGwhw1^Y zTKzizXF7)!ol@h)dW#NVNR7<9`M1uV#;*E6GDY$kaJr)l223LmQb3szMFQDNTs|u_ z*xk{Gu9J{nyRFh8fFPgf9h|B*rnXT>t@(IEZn4{%*xJhbT$rMl0-3h{(;ZIH0W{U1 zCP+gitpf24-997QhV8Y99zZ)Z&R85M^4m_0s4p%M2~VR_x;kMz24Mi~s*z5^`eN~S ztUjGKw;wON?`s>^3|pEl(lM#@>!>aJe+kfffs_;zU=RZ4`)^kwPCY|3+*`5U<=*?` ziLbG3*8nLcn=Ri&XL%B-WK$?52%+e51^=c(WF;loBT92646W5u7SjspniDf4Z=a-M`sSxNo^?#1ZfvkR_JInKAgWd{W zgB-73ZhyTTHv#X0-D0WUrYGH?0H??Jcw&i6NvU~-5Cj*+z~v;3TBGilU+~i<7aWbN zbr}zFkAi>@V?B^OOLBM+)F}03fe%A8m(_j3zIuCAFL1Jy|2{6Bv;Gi2L>~2L5AKhC zZ^pxYJG08y>REs{=-6S0#a9$wP;4rrM$OZdz0F!SMBekZ_ce4Hl>N)k?MT92gIMdo zVG!f*e{`<>o)gC6dk&}ApL{J=$5hONvZk|d5py@5at4SHP^hcVUmrG7kmHNxoBHbx zY*9RO=fO6P*)@3WUjNyzw{&@KuxtKoA!C!90VkT@f3NSvdqYE4rd6-z^te&vDUzST?KO<>q`G-jxcFb@xMYPK6?u{NucXY^a_< z66QV6=Lyp25=QB?V^MTovf-Or=s~?7ef9ps z;f2$kE0O4O5&3(#L7nS$r?r}w(pPQJbN2-P7WZ)RB6~QQvRC)jXmh^F6(te->~ON{ zc*F5%N|0Iu$G7|k`4&%+x~})}@f&?zYsCrzo@$l$WHJti8(J<5JQ2e_*DljZ%O0Qm z^{pYMQrQ%dr z432^8LyH6TKuf;f?!A5Yyg~=_eJU~`KS7Uvrx(^ZfAh3}8(A_9;AEdB-hAwCQ&L`l zB0_C+9PFo(OJm@&cr^dkF$YfNPSpw)foUBmOo$z#^snf=V7Nm2LB3Ap@Jkds0^fi0 z=5mZpGP_RsCB_U{t{ zZZ1h2n0P^MftD3)cE$~hn-Zqe^*Hi~f38TxoAK~kQpEW^=E75Ga@)L?|L~oOaewum ze|6ey*5j(Clls(S%q_8)RSE)o1y7@i#GU`=z3DHsZ!-dYBcyRIT^~E{0$=Y{eV?6| z9Y7GGzAz<2`P|6Jy zWmgZxY}YO1H1K!>d9HnSUycoS>Wz*+FZyinf|lHOu+_`l(BC0yp*}P?;T$vp9xeUWkd@PMh;SsCx7s|Zf0kFUtCmRPz zZU=q@_*y{Ruz`;fBALx*JHAV^_Y;@5kdYg&c$bSp}Bi=Iw3UjvN1@CS!U4 zz!C)al29B3@PliG623p9D-=BFaxG zm-(ksjb~{k6ic7QYU!ZUl@X7{6tA6i(f?M=^^vL>Qo+Ca+<7k2<67sK(6e2F>E$@Z zQYx>Y@hp|^1p8E?)n4Yq88?|mtpW&+x^Fsu zHUIpPEx)>Ufh_R;d^fcr_`IU){Gnt25UdS!MiKwG-)*&p-Ib(*l%#_zVNW;53o7Kl z9d1gYtqQ)r?l?A5jLqdU2$BZ+u?%w+`{qC`2f0S1M?R{C>2p3mHcD%dd7oiuAbVJ< zS9_lLl{;leoFh|4XN|`5!RvLIqE-z2aVrt{sJJ!Qye^gX#Bw82RWM}}Z5Q@{g(m!K zUu~dhNeN+{KX2_-$QLZz>BFKi=$L)EO$Pb7=A0|O^3 z$JgcUQMBb>!&sDE+B$JCW(bg5al2f{&qUy;l}RhJ>wTHA$o0&)4h{Kbx&0mq0Fnt32*`n{W$}7?xjo(@;(oS&eb&wjJYiOg%Ezvc zM@ewlEES7RG%i=J^qwAV6qq~o-F(xeEq59Uo8JFaLu(Y)YPFO5tyG1b=62?SY^5$I zU%L^@EzA>y7?@qxSvl1F^J{2vKGproVcY56*Yd4i5(QON%%^%Bg?_c)N(~nXwW%X! zS3ND1|N8Uv8e6VjGw}Mr)7bQ-T8ELgV&`)^;ts4N$Vj)f!t?~j486~j ziR1tms|bDsiB`lW_}BNfB2CHK63h~2oGcpr!Zf9_MX~1QRLGpuef}+lBLNJf-R&~0 zt{320QX!Ub$ktl%%MBehv$UG}Hd=U2Gb{|MbxWX@y3D4mjodEW4(E!XzCNy@3H;x& zO>zgmCTVXCXTb)La5#ItTEx%fw46M+KS^$uHC~r1JwY#Ey|7ytP{oH*kt}f7TXj3E zZlnvsV{q6Af0#Eu&oMc=ttw>haO|9U55?pV_!oLBH?&R$9(Wx{X8{*ms`Bo-NM?|FWCQKdq|k4HkENzS-IFxhEBkVYU8K9cK;?hqx@} ze6*e@ney~!v7{+LV(tuMxfhazES*`-MYsi5sKK)afd2UDuS`>&}dTvw>|!2`#gfxG%wX)N%G!}N-u%Z7t{>L zwtaj_>^f^377I(i&R|awa9}jX&~<^M>N}Nco1k5@{s7d<1WOBe+|(iBwz_&ZQr@YT zSWR!&bwg!EmqP5QnujcXs%dKH!r&zMd^V7N{<7OTMeYw8AUtu{ib4GceKVKmr|aog zG(~W=sTWf*ksjL_#QDE_OID%?`ylZK;Xgu^CUFx>d~NhJ(wX#IJ_MddjTUYCe@ldN zpEytuAE$u%I`5rIYXHf|$@|uOjkMD()gxtgJfn(HDYY17gh!)V4HpL%8l)1wjXsL4 z_kOj7^iRl=^!cqHJWkJ5O+pnf`6gB8D(uuy%YpB6_5Nvd%XLK_>!I>N&6Ze7v*v3$ zGs((5Sew<>&G8n^Y}LU3aZR>8Ig9-=z$e%1j4Pb%YZ1 zBg{GGfymxFX+q2E2vovB(D(;wb{Ef>8T-g1?fOPpQFkDVdaQ*77wqD7#a@V-Mp zbYN`^Ir=q<^cP_TE0^XqO|R=>H}IIl4yvX~>3*{;&+oQBP(X<_qRsm$O}EzO`P=<* z9hE`v(G=qopqm8y{*7^W`UXw|iH8gKtJnK*5)m64dRNTAVPNEB_%`_w-!7ZwP$rE| zSz9)EnPj*z4Ps|95%*?$EEUbH5YfSDt1tRXDF^9Ui^_E4id^>lxS*YmGt6j09T^ ze=nJQ<3SiAfOPf)OrS?WKhP)T_wmq+f{*ddir4sA!qThU?wQhIf`I%gHn~|2CkmoFrHdwYli9h>qAknTve2E}tVVA_N zLV1gt8|Oc4c`eY0)mMs^T$Nqw5iZ3OzJe*Zn4;bFN#?j34cHZ~Fcqa>)e z2w+T58c~>|CV8*x;{{fL!}z0dxoe}1;x=hnK8b(_9G+J?!jh13qRb4Z@-aLWZ0I^+H0IXyO;8;P^4ty)>GD7+fWzoUB3>9zXb z%eE84EC!B9DDU|BAGUQ`7WxZjHiSr}Aw?2=R;c5-CMX!6c58_c4MmE)GKhD_I`2e$ zCukV3ETBn39Z2}9Wgu$@BXm|OqG$S&AS)9|1P+oV$8Hbo><_PLWLT52NMR+T3Zi!~ z4Z-yToRt>j<=`h!__>U!7WN-@Qs2ilSl41gsZ}>gX;Pbh_TtU8ND+M$#=Q&Cb@b&CL*I4e*&8IwFpr; z>5_SEPzgsp%@GzC?#y>efz&&pCPMeDP}^f&o(ckpo%wRbV}e8~KXLQqxNg;~hG6pj4>{ULg5 z4RyMmkQqp}@>B?TDgOGegLSrzTdW63WI@kx2D5m_U`xv7z@!Z#&`0%g%J+1jXJJwB8RWYFw~65XI{@lClm8IBU3g(t>0|BW z_4>Kv_h$0-iQazmEstQ}u96z7fzpGdaqO|gO7~Au;p=eNb@*|!vjrRrdUX$x{WGx@ zdP*p+Xn%It-=~gtzRGn=j&=u%k`DU?3Cso_1QI5Xl^(>4=$f$}6aPUIxvAf-y@8L@oAw?) znUa<3voh8#C~IR3@7)i|Hmhpnc9|=ycXA_D>%2k333pJ3OK{;TvX>dV+qFbs=mlu= zq-`V(DqaX3xxepC{^qRZEL$h@0YOS{^H(~~oWl}6>Y%_ROrUd@AXU`5t}asixsG^( zpv{`eG}fL#9zw*T4P-}dC7~aoX~wRyFuzUgQxla-Ld?g<%FOHrM%*}Sf;5+6aOFW+ z1t+Hj#%OHp8CD?^+&CcMP&aY!66B*RIn8k5{H|?mc{Kp^hHSY|9?&<193iP&%W{Zf zM788?m7f*aK}9oKfsr&>_B-Lyf!TXULNit!MciGIm+YcF`3gc~(4=u;7x6h8?LsrQ zcLWx%9#p6}Jp6?g5|WAC?7>drzhym}!0y0dNs*L;JyC<3u)snTLcRLV&aCr13b9_{ z!?SN7um{tLX6r$oiTy&Ih}oLKilb4?w1b~#%TIRLM~jqM4t=!Ss(B?AOKU_3V)4}V zXpE(i%g+*A$Brqg5VL8J2hOmt15`7@O+8)N?!v&7tCE(;zNKwV4hU30D{6+o(5jSz zAMS60WU{+V&=%JBgGe4Bi`sA@j~K#E!(w^r+uY z!8mALAzILj$;}99yhd*Ov^FBUo#>(f6}<DcMRA+;so{Vu#Xkjl5BxXHP9O{x z=r@FAr5yKBBd;Fm=f()IUz~@!>n_+2vT9eZ3Z{z@yJ@W1F((? z7GMU%X1tIF)U!Gl@LO2n>qjmaT*Q0Be;>zpje~4n-7Bza-bdK}RqF0@N8J}lhd}*S z$7J?Y7!39HL_3RW;*(%qzZ5A*%&%r7bGb-D)O$rT%m_g_lwg-D<0HMwVqy*UJAN&zfX_tE+DGUuAflmnS^hcVtP4S z)+v?GX)vF@7WioXPuh@9t7tcVxwf>V$|>-B=IWN>jlJ?t#LEtj9O8qpuFsd{N|RNJ z{YNUTo56**pzI=<${+*n&Z>RvRy3Nj)4}={|l6)5xQ-RaQyiT~0bN3oZy3bM7fh37Wez-Y!Yhv{o{!y(W$sa-*x@D0RT#!;m zMI6tboRKh+dmPhW40TJ3*H{yAHxOK2vJmp6H7fFWnEGIn9Vk&luh;om6xaLu`8KlS z-*=Ou@yhzs>2!ajD*KMcc8$3z6Z`pHa zd-o(D^M!0~Q|jns5fYqB$&eSt>#Tdp6^5;x2dNuc34ABGSp-A#ZcFCg57G)PI&>mo zQ%OC4)BmL?iEk#s{uL%_Mh$cjIN7dm5-}?vlFaxU_j8|5*zV@=2E%gc(H7|-=2dD6 zs$mgX3Y{{kCC)%d@uo?ObP3%H3;Xm89~VzsnES+c4)QN*CF+D`n1|d+Xi7Zzx>`|7 zW^Feb{Wz#<2vUtsYk@FDWNJi#IRDzVSj=)&+pSLRqv;5CkxfKJcbBQz9yR*A+8%bL zl<>F%yJfk`vSuYWq3ak@m-cwPtLj5sVI%`~8uLL0ok?gp%s8U4s9t|z<-DnD=kN8W zZ9>f=^UD&Ml>vBZwe34t%g|Rfr=woqu^UdZ^!WVN(Lj(zcc)6T<-iY%&0W+v+d~b> zk`1S_)}?ugizDUb0+%yG@yEXv3kDlY1$0)3OZr?#9GV}(FxYp(!UrKXgA7Bx&*eDU zuc!^Flc$M}A%82WJt?c^8Cvb6Ml|LG?*tzck+3Zaa$x_rfv?ie85q5VZ=7A4CkqW| z{KjKg%C^A`&5DhE=X45#GD&kzT}3Tyy`hJ!u-9a5`igWb^fb;HzH+RXQ1SYkz6ZVQd56R+CDv$W*jpti>>s+B>NiMK zlghJgdY&nCv%Ywqr)QoNweV<@hLQEd7AARYDW}Q-ST)mRVU{{KkD_lSQ$phHLez?* zte&Uzc@YvDA+n@jOjH$TrazYdF6 zI#*7#Y%-(*abCuiOyWot_31V)&5}Qb8MRhy;yyL>e?cpk_Jz(simlRH+&0N| z9DY+U23H%I*T)u-DO{Eo4I>`h(fWGpP^&tZPOH_fR87gU@4cU5>?^1`13vqwi|$E| zIteC`K@X-Ta*XCrthVWauP8>4efEAE90@rAk~&XSoIw?fRdFZ1QuGIlY5HhUkVkTwv%-@pp;%|IS{oYVI+LMfF;2lm%x+6GQq#JlBld*$?@MYh%P94a(ayd;#pMbA70!@(s zB*SPmcQXj|Lg(bxT9)ZmYegcQOIo02_^gk-cMfl2e+K9@M2tU!GiV9?;xv7`P*7uo zbbRh+LZ^S!{pHlkgeGJVW}}F%Ji;uAPDr8EgCyF4&6=B``)Rnrm|0pKGSA4w?=n;{ zioSe8BW&5I+&x3fxURq6%!>V0NMbgTOwGfBIZa{V%GnK%kG+$@Q&_2=Z;VBVmUc#E zmY#+AT_LTP&V4f0JaW)o3Obp3Oxu)7yIggh{)3c&CRGm69I~kjNnmP}woWvvQ1Z~H z8U-OWDkjrS7K1eH{Ej*re9!qE5|#xiNjgEv^>i}D1AhT;RilxMr+B-`lq8S>au07Y zp%{g0h~8wFiZL8Put9kQU)a6XVf9fjP5uz1IzKDGCqy}}S_2?#(u7zFB6s_8Caal9PDopE)oVGF* zUpT4!2a9q=A@iplwwznkkG#s!6?tKdC5Xx-oosA=K8_ZmO9o?6S`nB4IrDHdQ|y%a zLd_!=$Hp~3pG%%7xiu~`6h1W{jMSJzRdh~Pap9!Z^o;ylk#$ZsOmebih9B1#x+xB3 z1z5d>%gzy9vN=WhFLXsYq_}u`4wAUzsU=@OS$>_y_r`DyXq5YjC5TO4yimonULQoa z^`27D4326Wu?wE8(VT!Enu~-HQ$vS0Q+2sG8N)c0U0dcNcybTFexFDztwJTO^KoJ< z%M=#ke4tapTp=H4MKV$Dmd$oOLn|7!-!jI0p-Xd*-ef@1YLs2?^rfK0rk8sbPvw@R zbbo>Skxd5POufMDT+NXGzwOSB`8F9L>bI^Er<-S9%A6Cq!U+vN-RERE&m@W+^h1WQ zLqv}Bbjhu>zzd8yu2sL5&;b{h)^vgMpM=*WiX4bZ_>YPB0VZ{Zs}!(uP}LN*(os&%Ong@+hXrj6r%>nexMBg zp{H(46g3NzZ=LoQRg1jaO*x1C3Zvjr!zmTf&XCg;#~h}R=fcH*fNPERG~s`t)kP_l zp*YvmpUsUd3)>_+X1^6mD)BxlWHaYi8YNOTN;F2pLx@;pw;{@hD)zflKR2!m74E?SI z8a;lR%wE)oq`+<)mTjB&Y=e=hJ9^B#Tdl1BcDC@1bBK-ZBNDwMkcy3Qa4$Tg`Hq_J zy(|)A?$>UYJ6~xc>aSd;uMAr6^d}&$bi|;j@~b^lCZ-c|>OlLZGrnK!K2HgChiU%Y z-ow_Gv26A>`1u;jLQfQDqA90(W@09+YLOo*O`V2JiU;sMtQuwEda%!L|FPig=PL85wo{{?0 zqkt{+4wn|)>C~UwBbAEqu5>;Zp(zplyV!}ARV631=jUSWfvLOvi~-*66F#BiJ>(+l zB;}&1xu%v|LubMrw9Nun;l+iTO37c9|3Bv^$C1SqfmGZ}Bbz-2f0K?Wj9kc4ZWTVu zvFfj;={!;8Dwa}6BNw}1j7Ex`4*z8JmwAagNEzfD4mRFDZDfraEdEmxFI(BhPX+W} zv$}C42gr=mn@z#7D67w+X=l+)WpP!&ixg0J4ksDy44|T?MZYN1CJV~9R8=E={kLn0 zQ;QwZ+wQ9uFypMt2tv*E@4+@W(he^^b&X6 z^!xnbx=K%zL-WDUmUk|^Hm3B{4#J`*87T6dba9h(BM6Xsr^L1-Q5#L~Un%VvSLBo= zR;#%7TpkifHyaFJ>7$24pV23$$$LQdA*|g|NwsajtL0z0Rk3L78l#aK#kIz4O0*gu zLgi_uM)CP|;YAH-EsDB9KmtIdM1@orDb9_lFAKWG|kyg z!z!69)~)=#(B2a>a9F}Rj=;fKGDXAR)(tvDZB6Pqzha7Pl(vkox(R{JRN7geRglO$ zJ6a-2qZVw+Wi;u)=E#^mcB!{WSbnH_h#eqT8;lZO{Vpx(^G!s3MU9aYuE zh6k5a+xGC?%-9MF2JDD5+_avMaVK?&MQfhM6Vs?C1|_-SCK_#{yGAs*)k&r?S~B@` ziz8Bv^6^=+!>o^yC_kMfIce`9Tmnoyd_M5a3bj*ZmP2LcUF+#u3i;G98&;RKeSl^y zw`2~9*6z|bIz)>cnnM>_DH8e0YJ>t=JeHwT%qbfztZ53eJc6c5$cAq=jvZ+ld5*L4 zNFyPLd-cq0878Zf^4mp z`H2N-I_4A2H7feDW&dc552y76OjO|aJ~QG?>C2?y_YdRGVE*W5?{}2GA`Hx_a~{}w zd%!K037XP~xWY|ZMtP5=j`(2;nA(q*O5^69`IbOj2I$FlM#f8knIP|L)C)LG-7#@n zblAne5mjUQ$^VriCDqTbd==H|sKKP0fT7djeucE+@rKKaFOfV<`a#z0*ZVM%ZgGv= z{{I+z%cv~7rVW_x?oO5NknU1KO1cFJkyNC+8w3OaNfDKj5~Nd*4ke{qkWK-=;l7{u z`QG=(x7K(4ak-XW*Lm(ed*(QfnLQKwSpME*1e4*QO0fgh%AS|y9iwr+2VCzf59uxJaZ~AAReyXX^e%eG#yOcupqRut9EZOsN_kK?`A&h)cFj}% z_>4O*-R#Y%9#IgN|IMAg^9oz+dw-M>UyN$0cG}O|!|qfZSnQ@sl4o@amdS#CO0PBc zi}*veta~UzO}kAjjx3xrQXJA{x7l@0S`O}4+X;*6rrhG-EdCtMmH%inxs=sIRC%Nf zk64dX{kALCP$8iU#=QkQp-hip&K@_f2$F}m_Zh0Yaxb*VJIh3chJ`AS{J|B)B zm|Q5l{zh`!akI9x_NRlFOPS6$lye5EINg0*gVd5Ri|eWp`TC|O%J#+eXK7ZJeff)S zQOvJzkD+m*(i4{WPq9@k?k3^N#?~4OKl?N?l0G(F#nGGi^3>A6Z9+0ySErM{Xg8a^ zT24|@r6Go52aX}hQxT3uC7te-#$EKUlKwgp`;dG?Q3b4{ydhE82!$^XHP?(kBy4|U2It0+r!6V zAHI9dx8K99?Y$7x*stQzos}_)oD7~NvpXI9TTyAszh2#<4-4PBVuJog9OIM?;K?d6%&yti^`*= z8FX>;<(Am3<>*mo*uGHl@4~vDlqQdzxkStN&)ubz^GL1uSb?c!>6H5Vp8mV=oTdX7 zWWHw!ABvmr_sU(3j>uYbQ`$Ul=o0+M)Zo4o*r(e5zFV95h7eLT;QXp2;S?WG`7rFy z{no;wNR5V#HnF?;roK#cQddWv{6)}X0zsl@eNP^a-}cX}6m9o%Qzo0#cwb%5PcGi! zp{!HFzx=#;N~{>uV{s__x?;#yje3b<$bYB6M}y{4Rr~p zu=ZPCt1z7V^4Tn#{8R<%9{eu*3G#ZUNzx*P$dxgSsYQ95I8Bzbxh9(jX7(rdGx+P$ zSbg+o=Yke>DOIelDjm}K3Q9*7A3s<4(5UpbD!?+YkUPcF);cxv2(>P_hWyowY{p;N zr`m#WDd2X1VMc}Y6u(qyN`?=fj&;MMGX9=PP42HRm8()kJ7eo?vQqA+vpwl2`c9SC zNSL0&;E$S_uG%Q}`2}f6r3$}wcN@u8qp8?zsOOQ8LraFvT9QFuvKu#I?wz{EnLEs> z4-6&u6Fib$C=S!-7QO9@M0QVBiYEFu*P*$k>&j&?((hZO_V|m9Bj0B(pLfH=)|(7D zACJcRN(}yxG>oFVN|UG(%16wh;9I$-8z*CteZ6gp6Z4X@z|(&2Iv7oz^Mkgh+hgv} zkH>_KXy^wDaZ2}UU7vr-!06DrVk38ciM(9yaA$6cS}&Bnj(}aCpn+=d8^=gKp7pmM zQvC8p_DSoqseDsccI2;!yo%J)IY>os$2^Onf6C8|Y@bNsqL{9#rVyTpt5;_1dmy-| zN}~Guv;z5q&W9IesopB8AHA8ToJvieQLf3*Y~ZXGSl>R(a>T~l6=613Nb7I7(-+7o zUu+RuPDZN|)v3vwus><1UU(i0z;~3%%Ea@nWPpXM(YdjAd zeY%rms#rp0Bk{J2vR31h2_gAFv%C>srfr1>IbZ(j$(y19#g}y~%Afz7dG%I`MsUUX z-8z1QD{tsxxhKq6S%RRHSZ10!6{%*U-I5%>c<}n&_^h9sL*v)TM}4%#dgfD2rLVjm zy}sWun&M-*qEK(RL}~kt+ZZcbINR${((Q=qyn12o0dY1`i>>AI;m&v(V^r3C@ndiD$I)6RA>Nmo9oSaWj zKR+{S_-tHgn+Y{d0oAf^;xsUl^y^cir$#D1N3kQeWkXaS0g8x`so|i z)x>aRKhpqe~>Ku-Xu~$;FX!EF32)JhOWGo!up~n(g+Y z1QAz5wXZ`=p2deBjgm}%^x11wVyDxoH@;<~==kH57JfE!6Mv*MSgOojc}$f{VtAmy ztlF#dh|+LM)8jj)Js#zvM{oG;qVnzt>xx9WsAs(2IO{}rGD_-K!3100dih1_1X zYDKUa*Vd32b}F8V-MdqrLH}9sqo5`K9AkJ7L8)~{eC~$bQKhw%#DF+{PD8uwLF2h8g?PJtYk{t5-&Jsh`6V+b0e+ZdmYpq zxB7Olis!{Q57`UBae}v7Zrehol+Jbo#XGFIi)m9f-n=8WiqU^>61LvAzJKzGh)%Xi z8Lwa$2=R##Wp zMh9j(+ckUHo(f}q%kV1tB_Bfk{=khhyvy>fxXs?&`Ho=&?vkrO`uMjez_e03GAFr{vN zh=)|Ey(dD{s4%t6Zm3O*-mjXLWuv(IAh{s6ay+lxL06Ze=Jj6T$w6MyHxnE)6MJ{G24lE-dFbx zl^t;0a4wF|$GuYVf;=-p!`e2@KNtO0@6x~iAcnmsiiqiQD81T0bzKjq)7 zHm>ElAWOp?mw7bOPt7p ztX?tEFTJ^&R6#XX__*ksN}0pBob705eg1l@5hObY1MRN7qRkuDJ?}4>`9zQU_=VNc z%vBk_kJKFV`=c@Za8y5%$c}F>7z^WkTx&B@{ts;6@{Auh!X+*8^9K+IobX5x^jLM5!tHf`?%f%-TS4nKg}*c7UJd2YQW?^uERxPmBhnmKo^HYC>xzrtCOoL# z$NU!RCEBF%30mxk`1nFOeZ^1PJNad_-P?LRo4SPVT{V5@HLk{Mrj~NKDuJ+Ps83$l z%2baVVC-I;Qa9ST`zjg5tA@uPkuEJ=@;DK#%2OraTs&Tmn`{c>LVHa&iDxn2(mp`?)GUQO(YK6HL!- zdZWH<9{fg}#8|`%HK7s@kQGdV4AMHqW=tO(CaqZ<}4oTHh%n zdh9ih2#hmQPQ39qIxZS)@0W8duU*P72U%?1aNCwsVlOgHYUIiFOv227$Aej`qBRAA zd(h1q|IFg7maA73UE-RJBpZ9kGy8|W=agJRH`qh8`@!>Q>~-M z?B{iqjkK}m`Lq&}@5%a>QyJ}Ff@>NC7>uyS^Ue>+`~TYS|27qVXF5Q)!Ev;j;-$vj zsHHkVG*+)7Z_dd5>XG?t@Pfxo4dJPGvRn0HUF^TVN&o#|(s?&2C)#0dLe~z2^Ip}Eej}6RwZ?*^^N?0|H84p2>XFjP*6DRCA+wU-)p7sN2IBrMDN<#;90ca$ z2YD_$Fj@;8CRGtE{JBDdYt80fk2-rkUGrg|%Hbt_haM>E=_1EfLoL(w9A+NPs6Xy5 zl)nrJ5Lln#d-PR)ez;pp$)xV|LA^y;{$tz3mx209O5yjCSx~#bHu+SwT%9z)7?EWv z5eBOrj+TFXmhqegxfzv|A0<*g!W((obnIdN*Ur}C*zYq;867w{K0(qbr4e!2$eePQ zzOw#ubMjYTh{uf|uNnKH;Zq7b98KnRC>{N^VEDc6FU=##9J3@uRrf$uzs6-_c#+b4 z=#7ZwR^6wU;rP@7j&{wT8`{5M^$n8zAT9ZsjXT0m$hyel(h+Wcg?zX!hMJpFL=c?4nG?vZ95Ys$naJ4jnTSLZC$F|Oww zBu*NP{l7RvXnLZ;#upOcQ$NuuyfxNKj-j^)ox@j8o>5@{aB+*hu zY8h5|?8zA8h8Ij0&rxtV?MPh3-Io+FF1BLEHel*+>rq8y$^-%qdH*ZX>OEI)4syH$ z^K<5x50EPamb+0!w(fL{lMM5{UqGAge;j)&SkCG!g+Q_&-lr1MqGDRtG7i93%KrEn}l|+)W z^WY*MVL+et3>RNf2I)NS@;vE*IS#GZIL)&kdwuTJ`I^)3l@v4;w$)_Y$A2HFRUD5RPzAU{Q*vvBw+5z(3!8*eO_@jY<5e1iHAIYhDM_ zc*kH^8InH0=E~X#3)@jkA6EECQ1N(x$~{r(nbr3X57!vt#)1Uge*GvF2*@MUvJ)q! zGQ#I_Y|hs@54bwkcTWs=dN+cPJ(Izk7p2G8`ZslvN-J7mu9vuPLFI6hOvWLL3w{u{ z^yc?QiZ4HTsL7=d?+8v?T8b0j5gcK+v-7c}bZK)HJb~XgFwHl`81}e>QcdUG7~a>O zKdjCG|8g~!)?jWh6j{9*i)#A9811#)Dk-1SQ*5H?!O*}T@(*xCWWHc3h;x=?eM0V= z$#BVqCy{AbOAC5KERDSJmH`#{sjZy+ue`7UeL?mXGcgK+FWE}soQ}5bp?8eJ0_|qs zeIz9Cezi_1k1&+Zz80q%RrFCTWPNE0|5${YDD z+e5VqlyK>#W@+vf*dYsv!1Cxa{btd~I-7n{o=11C#Vi;OaKH$mCgK{JQBwyDBnb{u zffa=RkVoi>uxj;fi`-}KryB33;h7E;Q>+KD=}&@nTh5(VnH@<+N;#Gyh(?ZjD#Z6_ zMA^A0@%%olf zQCbQ6TMAo9ODczcxB7dSO`uz>2{ZrPu`qk0T#@&Tc_*6w zf{1!A2&;z(#NE2ss4i*wtWZ`GsNEY4!XD1BnG72{)uZ|geY5eX6Do<(RQUL0qKuS7 z&liTL1B-w=npqhc^*r7#dkeDZ)6k)C;I&YnNd*(a)dxph+_=l|S^+9PjM5V-MKXr( zHhpPv*&%0EPvwndLYa()Bu`CDOlAWSk!7k+e*cVVc`Uq)tRUjCoj$XJ)*st*!0wqr@;@Aqwuq5zrG86BAA?x-69cbQ6=elFumVy0TtXz6h^lXjZlmsgLub;MIi(J zlK$p6o1EC`UcXg+^*Thbu_CrCo=RxT{O^UnTDG2Z#uxEN3bA%cTY+}8V$U#qF_YRV zWrSOEUGTYeTm1bBg>Am2tgNg!{rs}nteij>>3+6nsW4gll$t1L{i(+3GZBW?f_=_4 zf(Hsti{AqN?0ojTpRUmNs+d7vYJLT2b%`>T5d((~OJh}4qLnu;F3_6XA{AO09o%;8 zX>p}T>L;zVyl%&K(HJX|R|>aAy2jd%OI`{m+Di?=h>B_f?Nk+%h7o6|iK2 zQVA|D+&PJSSF$JNHhw{CmD@v zCkk}m^ASs2SS0i$;}1-zn_>YRy*AJ{7E5-<=oY3{>-2N_^TQC#Kxy4_vnH@Ey50}_ zr2Fq$NiYD#|7pkOY22xuNxVJCpBJb?lTf#jAG7z_ajMeQ&E%^+DdAf?=(i4Mwc*9? zAb~bj$Xf>eM4D`Cj+WFg~Wbf2ZcQ-eJuR9)@VCW*R!nT7t7$Q7r zFS|BXtQ%L#Nfj!{^kV$hj zyCRJHMjz+J&1+DU-OVskSpg8|@!CR+1Ys$Vcc=O0Ce>HmH&N(UdCOd>@!dhZI9hSC z>$?)WR6-7cA#oIZ`49qt^!kJEG_JNAsd+M?Z{~%HgFYx`+tI)I25BMl>1pViJdF*_r&WJvjWcSV!RqULz5Q4XiWqI!jrUS1v! zvG%RLGLJ8Z%WZ5LgT4p7EUZFjw=lZL9!O`i$plA+I5QH@LP+zOseKB!83$mru8c7E zmkp+bq48mO@}Hj`DHG`4I)F9`l+H#7EV8c|;&P1>Gx@GiUE}B^smvK!c;#LBbvobr z<+{HzaqES6`)zM+AoGv~je$Fq8R_?qhd4W)>+p4X*I>Rr&l_LIDsJ=bm@v;^t0MtCqZp#QTCOoN5)rGSuLf|TeokY zOEKN&bD9;ovEx7+UUYi}l9zYX`O)pq82<+;nA4xrBBj~C<5Q`=0b2^4k!0%+mX?>> zJQjZK&ek7(`bx)PSh*5{FQr0!YY#Nf)KGS zC(zKw#wKWTL3VFVM_ap<2Cl?PJjydomnoaBecJa2Mmz?p3)u}X*vMv;93g);Z1NV0 zT=F~pi9UMPij2?OesTOOQ_wzGgh7QtbVbfWbAd6}wj%<+T=zYZKhh$D?^uyK1A8v_ zgqct2*M?vA&_cnJW`nhOM3tv0v`}WIM-9Z0sDv}o&X~+!WexE&U!b!Pc?EOm(dJmh z%-o(k262Y$RMNHhZX+^#j7wpbu^f*Hw|*99a_1GyH;Bsr={_XcgY3_5J4mBrt&1Cz zknieLDj$JY>^e^So2U8AN~uFKy;NDFo>i}e;vk%Q*fE_n(Sf-JhGNU`wa;egbt2xZ za%cpE(i?ae{qUn61eHsIK5siq+^Ft+XlF7AjwH-x+8&3f)Xp(BNf8#DDR8dw`r;P@ z<9e1m9{Dt)zUgyPR)RCkQ#(H}LV#8aSxV5NL`LzX*O6k@wJ-pUrDwT*mI&#-!_;<5tBWqe_EM_-w;XPg>v=K|ITv&Y89 zPGN~7$t2v|^DPmwtjn|fKRsBhkvVCtOxytz$GUOv9zdB)?HZvG z(iVh4uUTe465?1p@K4Z%d%orgxeA^kCEb<}t2y8t;Ayh{d&a}*;GKV-Ijr?(EGTA; zFwF)0^}F>4T7he`i6U+!Jr4o5)-72_aP200haI(=;3?^-l7DQI0RW1&fn3=Tm%qOo zcA2t1o@o*+%c6*IIlKcnektNSCsF7H$g30c`wE#5vI+`Yme23{%Se$__J{4b-{Sv3 z09>X!_$s;VGGGlzLc&Z*c~o(cK}yc|)Xv`S=F@p6|HZ3HB{RYh1yyE}k*%pJ77C=x z=R{n;L&U;X&k$~{gBpe675EFEmWtmRqgXL(8wtr>#QTUfA@k4t-|KZ35g0LvH;T#w zx3ryeB)s^2f5YKj=Ap9$#IsPuS?IOYiD_L4ZvNp1U9XcV+kr4lx6V6_Y!O$htdi`*o~RvbTIe&8A?YJrcm$j2G}l-Uv?X$^B_M#e+W+dpYefyC zvjn1iG%1HnV(Tkm$H~@C*vFX8^5zSN-Hz|u4sekjyinr}%BEfDz?Y77kw85?g*^ai zbZsbSNZ=Q>uw&!_6U!G1%N7d|Wb=L4>rf7Q`TtsHmtW?_;DP z`yVA!rqG~hr)HuZ6}+*#ukU4%dM0=M3K0P*FIfe%FUnQxXV_xzl_X`jEv!!v=qM^M zob`JXfo$Eaeqq1ir_&q7{aN>+FwZb2j6kBm>Sx=NNi2gt*0^-6_rWN3>z46mtDSzn z){z7PgC2yU)wwK_R>%CSYDh|6ke7y6Epm`K1*iJ(8%KGkBnFX)8u;Lea`W9J)UOPR z5-c69aMRlRCN{0>e$?9mJgB0se(Y(FIi#@?6bjfF;mH*kY%9+G23QZxe%ooQSF3HE zjO)?H2)Vg0pWO`bo%lWIyDzidJQO^f=(Q3T1D#78!oJ8*I@hm~{jEyy^krf{0#~!p zU*qsyZt9%71Q8jHp#z#{!2Mu4luv=Y%<9Zip{*`X-{eT=pN**}x)%*$XBUurYh1=! zX1rxkB=bJj75R?{@XeX;e<6^(NIi(?swu4d5ViLUqy6SyvLGSh3D%K$MviT&si@>O zIDekO9Zk;4YJ}EV;A7jd*B#L$oPD2EOT*2u=O(1$H#N~rc z-^2Jo1^orq*%$e-c%EUpG7Uj9(XNDCukh4$N4j0yi?5R9&FJr`&GR_3p7HBRFu9Jo zkT+x1)?gwXUD;XplV~u!yhgTX94zLgixz2yD{j>F$Jy`rLj$SFT$a1zvQCi;W&pNk z>@PB*`cZUKcJOCr#&8~yt+@O*)@*k0%C++E2%<&l2?}@jF#UU^qsZ{L*PK`nW0T1v zm))R882>`UOQE;#-tEq}(6=BR-&a?EJA+FWB$APlVIg#eiL_5H*t+Nv$k}Fo7eGA& zs>Ej?G!S`x_PfY44h852ra2L=4sB$M^iMBd5w41b=?11M)rMpJ?#x2r@M)BlA_=n7t_7} z(vpd<4H1F=1Wc|Q;f659t}QA6;v#TAaf?=j#J7Ong9!KIsu2+fkzY}zu<`K`_S=@z zAoskQS&Hy|uWMvPML~{1ak&fL=nw}7g$W6t4&}DM&D+qfQ~`^WC?6tTNp0|wlVM-o ze`G?pDAyCXtGrz9jA6N#1*rv!pm*8d`6QVH)kN|22#}iv*#vO~{GNOhmP$TGRqgEj zdUj}$RDf|2)@6&+*BDsY!?X|>|8HFKPqGta4-j0dZ?(wqpbAmwyAi2SZX312X)yVq z`~EAP&o*$WOuk3m58&dMMO!d^um!{hXa#f#{Avx8jN3%y#qZgvD%${{4jAT@)|f~z zzu4zGTfi32iNF%r^9>eFkiL#QJ6s=9juiblwpiBi8@^i`$W{7!ATcK@!r$K86&L|l zYf0&_SV9qN(rV*9cRLWz4O+iPT@#x$)2p{KUq+d?+GeLcB{Q_ccI*ECOMB!9O97Kh zX$%)@G0%m{^d{dPkacyH*rDZ>^Bfo19THv7Isk2i+jRQu#~Hit_=ktTpwG^Nk?bRG zj!U-Os!-{cgNT4E`>`U*l#VlDZEI%j%}|+EWg2l0&d^DDU()XjqO4T5fv`H`H(DFY ztlbAoInMtGg?~W=8IYwi`@bhTN6K$d@^ltj&pZb9Bz=9hyan^*QNF^s!b+f#LQj5h znnGW0xYnju+CGpBuoN?m$2>k~+1R(nq7A9jyx#5hZ*nf9P?5-9h1g7qpn6=9huVTc zR1jW0JgcJQ++UCOy3h3>sY6*L zRA4&kLH-yea64cs?{(-1sCT6xpSG)&V~b47YAj>3?kku7%K z-0upns^*o==8sOI|j!7Rud>q%X6P|TpE6MOD;SUi}Nw}w&?Fz_zXI9 zCa+~Mp(k(->BD{j<#-xI=c#)4^&40-AT+V^9+3iNEm@WO93ZfS8IfIR0;RwjV7+b~ z|G!r+tPv#gK=_Nb=Zp}j%TIb3;4M$lr5uV!E4GK4f)rWMcKa$ zh>=W;jFtc{F2AKLw1uGiNu!}?BaHAr#`Ci@aKJ$b`hT2mw@^O2V^3w1+*i+o8tgd6s1UCply$v@3_wN!VQ^P`4lB5w%XV zK;wyq=f6DqxIUXa8&L!y2}OUuCng;rRXmKjy8$8$qRU?s0sx!Yy^xWcuC_mf7c+ww zF9pqEx_UE>%NSt!Dd5x2t}Y?R$vw~@0xtKzCbd8P{PX0XkLQn68Jsr29k*>e=B4~D z#(_VY)VuvX9|`~s?VE^j<_>5GUlxL~!JN=)1p=;pQJ_`+B?Olvj1i;&pM@aw)&iIL zFVBDd`Q0$Ij#)2L|GV)}!y4Jk4koGGo%aO@Fz0t_Dp3aV6u#t#(v~)g{vv-H7<+oItMIS=$kx7)saU$LPDgN!Q2No+L*&|t}L7(LR;89 zy7x&eZ#-+Wpz^;_Bjfe+H7ghwCbo$6*pTM*+T_fFJv~4V^xh9T0om z8HgoVRYAcLf3~aU)YxP&5+qO3og-}sN=WS#u#DOvDe`uuL9Nvac9T}rtq>Hc7`u|; zz)0DDeC$6NBN4BILcW-#1fc();i%n`hA%GFD(Hq^b~SJCcsiU8&*IZ4AQ7$=emY-x z?y8--3_^t8+7l_^@ZO;)}uMElc?5oG#( z5zTnm&spYQ`-zK70h7;eHH~y$L@UesvbrTKf>MZ|%q%SE4{_KST_6txY$M+Qbp1Z+TiT7Du6I!5 zqeZgD<*xwABr4m- z7-i-1cj%#GBy7=*;?k`T2mnd6x4&Od4u@f=CjgMc8R67N{qi{&i+IK-Dq4R(l|4)T z(DXs%tjDh(arA9tATe$3msKKj-P)b5bA6P-Zxc%cUsZnAV`|A@n(Kn|qTwe19v0g6 z&%h499F3~B1#C@}OM@$w8h=rQjml$O%lR$%NY=#fHo~ntca|b%9iKXyqdjq$YdnW6 zh=ni8h@v7hKV4}5pZjP?=wV8@MQ`7FHHIOrqr4L48q48(qyz!UPo5Kj{Spp#zqy?P z$sO?m%V1b*XYB-~Rpq}nc%v02;&K14g=1j2Msr|bPE@&Vy$6qCfgK5Rjm00~ePtfw z1jfC3MXGONnWc{Y1+`ZG^a|YZ{?B04rICgg&I$M#h7}fw6nGe@d;y~2#A6et3tu)AN3M3T7giVVH(+*WTA8O7i9N{uK5jJ8cdCWCYE zG~58~R$AN1n!N%R<92Mg@-ItI+mA|YkWWAKR@04bwE|XkXwTLfs-1RB>2J4KRu{-c^bAWqlj6k_JKyHfwHoAhmmnH z%YBfqTNR$DW638pladL^MowgOy~#O1561R^Xo7XC^!cwJ-Gsp{mj~EOAxch@6^JWi z2HKHJ%pW&5H!%ch>2WB3l$+1%FBCSQ_&{hwPPV7$dRt`WTHV1|=OFPAmYJg28V2*H zXqV7ZIz$YXAdIh^-10phmd9@bIiPzatUH#>&Hq>F=it{&?^jl=6&j$gro_RwHIS>v z4ZyUnL_K4*+?kYr_J3nPo;xlO+W_Q}TP z8dyAuoGntP=4H}I3QA=pkiZJ_hNW^zpl5O&7KpTin38LK%M>*JU|(SNnqRyQ*Y03&x*^)Bg?ldm3OtWx-jY2eMkr zr(cq6Y?v!33hm4v2W4`i$$73ji669%1VHX_83m}8<7isv*pG;a=#AG}20#>$p>VBdbgN5`a z^{8;#4wpeiE_h4}O;(;WqJ!=bjzp~vj zTX=hu9tD@(MnQi|e6*CA09WfHPQdK(a%VAHVKf?h1Hcjs%aRKde2HTi-_UYry- zGnY?AW{jn6P1rtY=UGh`zP|mB6MAI5X<=3~_>ULbYWz`md{a!r&?#jqvbtAQRatp9 zLV?B`hkn+)+I#xln9eZJcGev!I)yF0>}8oJ($fHRIs0o$W_r-RG%*_D%vXo*DY3jAz=|A zfzAXcVb1=(T|{?~k8BE?c}^F!Wz11hyfAp1+m2Yb_OR(pEBalV6p8-}LFgMw5?=5) z@P7G8?|%kQi-#|DW>N8~4JFhjlsLq{=6{N+7JSNbdElhGLm9*cHw;dA&AT-yB5TH6 z&Kv({qK9SUHy2H3B^}jTUyDGrheFZ;^`lo%&>?zE-Dd?#19%Rehabiv<0$Qa>Din! zM&B%-|EN25|9p)^fxI9d;xYfN^H?at3JSiWjM9^V@DF+TXkO2=ylzUFq0cKE3r!hw zy+wos|K>C_uZxXcX~h-#n0Z7t!C)ZregJHeuNVWwZSI9@?%%CsDA7!plW^Ng6)o;z zM!VV~pmUCu0R^BHO!D&c)`gP`R^1Pc0*v-k8NxW;w#9H!_ceuV7827lQ0YNCks5~F z)FJ8fZvnumAp(4(aS%Pb5C(Qy0=@UW*0Up8fbYVn9|tg0=#|{5ZC$LR=;)LXGmsFv>82=7i#~l>Dg-@9@tFLWT%U#X93PPco#& z*Gj?QQSugwY0sq9UkkRGt1JWO4b)K>4aY-_f;#D*l~yb#%HsUe+%E?Z1joUS1LpFD~EE zYoT91jGej6n|&kjXq93q+SoXWVS%k@|0HPs8LO}hI{EmB0N5+$S^U7+3<>VPpSTTF zzfAC^ps(O5Jb}2$*q9A_<*DKK74t-8wkJKOs~H67D08p&^Q^Kc{zZ66cGPlyU#k z8F++|^z}xj&LU1?!I4Uw{}w6UdwC}##Jcfoh3wY^`W*2WPHt`o@3jP@X&{|xdsEv9 zs8{IbyAXjJ{U>b+Uv}e@L|Mc0qS9BzYKh*^ebM`{@T05J`Hm!$J_j@4Efci3l zajK}HF$g+^GhQ5#U5gmnP3h~6vJOrfba63OJvfq2z$*a<06caB$#)wM@g^szog0Jf z=zaHY1SKf4z!L~Hs#{4`h4heQ=;^PCa;Ou7a>?+Rgq&)afdsVu$09136qMUQ)sjnR zB;f`T0s3*65jLTDgg~S7d^5S}vk@@x)9on%ps?T%nQkfg()vGMguoF*&JXH9=!10L zJg}WeN+$o3uqTq%BEJ{=}UM>IxS z4rix-&SwVjp_mE~>k{yIfNXEFpMYOF3_k$L5gD^mBmifIPGb_u z26#I+xBaFhVe?r$y)>O4wMo7^D(puy@L9+)`~lOa-uF}X29b)KcUD9|K7!n!jt{HZ zx|e8vWZz={d7ZSHs&(8Sm(h{M#Zbskjuq@E<+_+dh~ze@OT4>h2#hCo&tkveHjM#j z>dtsHA{HoUH=ETAdE<>;xH$F4V*e5QWpV4?$X!U@Qfp|@9T}<+nSwfFL=Q&-_6)?l z?yDP-4xS8nJ7f?zxVeABYngnq3bQZno-EsWk{}_qj8Zh_^USj?lwQ=$8tP@==;*)m z4E{Q?NJno7bg}Ej_cRuje-^%i@yeR1Z}|nUOzYVvva;jhaSSHb}7ZD?@t7NytLmU|EOBUF9gM(5tWdoEMX zO~-mJrEm(K&en~bMV}oGNvm_l$S{R_jV`VY`(occId&UKl5SUHDQfpicp<-lPVZ~s zD@dRrCN@j6MXq6d2XAc-#4|7|A9i$Or<}JNyV|nX`JbYAC`kDsZvl0_0m|!2ug3C0ab3%0!rw`_Xcx4!=^ygB zOgm8^huHN)GU<*HD$4w|V|ys3)O=QDWL8g4Pr9T}?N6t>VNXa9}30sWCkkX3H-Eghf>^vhBaDyHv7N4kQs8P#n| zUmd*!0MsGU3R#gv?PXq^dA?tESqY$lcmwH!THz2_j*xtb(V`?4g$X3rxO6C(rfRdW z>>yQiC`UJVg!^et-x$IOzIwIbe?JH0|3=$~c9Hp7cX8t|D~(7~5M=lL zC$sm-j!063Jcr)0}S1ES8X<2FM5SI;RQ{p;H!<)BXfpLFg`9eO!_2L|Fzfy;m8 zGt{`3EDtnpG7TRHv(qKK+yv=-bxCp)dIrMRR|i9%730mo>Mf{}1_o zc=vWS&Of#45TU-1uH3B-?U3bE?Y$`^|M&HVv`Qpkfc62y^G-8h)FjafHn{6m5pQJ9(jVKIo});uuKLk)xc&h=lT9sdFSLci7cQ2r3wY z12I$pn9re{G`(pG$gs`OF_3f9@HoA`c9p6+9UL6&9~_*U$e1!rF#ha>iS6gU3<-d< zrhvcA6;Dos)6*$thKk2VC9%mki%se)tFaBg`27(ce7?V=cv}=^1^iYS+14&G;B)2v zmM%jQO;l~H)V1GtF+J{xo%v;>7g@yTgwp{t2!JuGLm8a%=cm6-r+*c8SJSH!?(e)I zVOu7t{ly7s08Uoc4LFP#V>YAtHN&bMDI(dg;w!tH&`{utU^>4IR@hr_71Fvxb)D@K zfmkj*r-(Zz+aqV$r_P%M9Cy3kS-t-DDcAhzlD`rQXZ36=1T^cH(MLP&5O&(v@Ax6* znEja~XqWeFoo<4PQiE!{q)FXmp;nOL!Reo0oz7!7c(!2pH;TOa!EH&M2RUV!wG_xp zz`qP};H(s?D4}E*?ieU24TH;rxms)w4tLu?P*O19`1Jd|ra@*TGv>R=ELCgm%CRD0 zT30T*51MCy>8`J@;TNJJBW0e4MMNy$RZZihAP)sDKfgR@D=E%Uetc72 z=Dw!(O$i{V3n{}1L#eAGRN`%~uScX16A|5{PoRD$(i+O8?@~Nf{COyUTo2XpUg$4B zh-}$X1kdC}nQPy*TAr`Af9YtY_9Dk$f>oAH;}$0_3mBgxzHh6Dk|@d zVMfbFkDb>ZCGr?V_N{rK3<*5$Cm=$-r?miHH8wuJsDc1F1w&%DwY3%K>q~JB+aPNq zZ+R5fmsZ3Ymr#zvhBI$Uf?E~$OLVOEsj(f4H9jGPSQaLZ*O!q9gQV~wBGS&2 zL#;Gv@y|v=GI6r2hthWy4=Oe0ymSaTg@w0v%*@Tri9XeFOG!y3Cmx=h0Gdl+gNWFr zZ|;}c&eL?H4T^^hJu{@?u*|hpE8Uzv!%z5t+WGw`iB#` zh^Jgn3lJ+gUfT1ywxXnOOV#|>0!`uyuH`PDjzNNdgX0oV2?@7Qqu1n3QNp_iIbc%j zy)WN^6bq) z+Jqtl=0jXXcz^O|w}qJy1vnB)L;5px%bV0(dpeJ~)FdNO&u@$s+%2T_;1vvf{C7rF zaHKgCC5t7;`vGl|JhXYfF^p&^XVZQSzpxlB2nDuq5)xBHP#o4T&kvbw>{5aBM62K2 z-h8$>imFdw;|%(+`V2E-J(L$nOSjzY$=KLS4dn&7g)a;OJu|RrsBabC$y~y*l-bE0 zyt(Y5Bk$7@uWs+a$|;iAj*3lIi26G8e&-xOX0|P2Y!*4oUZ{mTh8*6@_GtFnOra-f zcb&}?h?kwG(GD*sANHvkEfnWik~l@MkI!V*v7eFgiWNC#=^cJlpC8%?3QPOwI{K$T zQLn^cKl{a;sOwTEBp(ps5a(ZC#lOG)WrL-dnU38Z?xOBq8lB z4U&eY7Nt@|A#HikqG=T>N=lMQ|JR4-ob#OD`Jd}t*Llu$&h_p4{e15GeZStX@xH^U z$I%i(szQ?wK|L)X?M+jgNbFxN^1~ump#7Nbq^MS5itA#IA!(pWGn^T^=4dPXBFb0W zlySrM5O80;A~dg^Sq=_UPHp)04eiLcxiRYX4UR?IhbnBRAXquxIxMJ?CSf6yl$;#> z0gdf$nDMC?cs`@Ov|dGyAYd(U85KuJE6mxZYlM)43^?P!2n@qjxrhYk8KgVpm6U93 z{0*izaWH;ItfV_tM6X~8yAgL3lz^DM3|LZBN$Hh?xXn7Qc(*Q`zxP9akm;`Sfm??Q z^Fo(r@hx6pZ*Quc)_qo3S-3k@DY~#p_-rh*P<462WC;-0rsAEGiNcG3_9U*c8AX@9 zjaf`Ni+1IH#L4pY<4{*jTLXZs7s3sJjl)SUjSh)UYM_^e#V8c@w=z92(9dSM)W`xy zqV3?Vl3pIbR|?k=0NCM*tX^G!#!-bMx;a3nG1WUZTYZ()zT7d|*!y8(kfl@gdeOn0 zoqL*s<@5`9vZJ;~oo^6aGE?H3_j5^jaWX=rQBZ~}ApCz`Du3$1tu#hlOoxH13N*dG zAdr4#f!!;ru~C&Tj+E$U7#OxgsFlkV?lkN@FMUAuBX(XC{~FkXgo@B%dK+c;PKHrL zj|(nd#K`~AT&*)Zw)=WX=F<0N%Db2@qc6}97A7hB2s-NJ%a;M|59Rj;S3*fa>k;E1 z`g&m!x43*JZ6z#?T)HH8ESuRY^2C$^UTb?9)7e+JTfpnlovI_g z73ELB(w0%ANNdVwHyyG{uV?SB&Vh%Ro-N`P2Gc68ZzDM zU#(?N^E9>zyh0UfIkvYkK*Zx*+#QSulR}GAj!L#G{JY7(@iF$j_e)`a#c9mP1CrGS* zADp(rW7eFmuC6Rc`uh5m&-Kaos_il(`_KrniZL+81;yClY~dX*e;hNuU$mX?of_%t znu580B1V1C>gi=o0}2oF5Am%_C0!B;EjSW7Q2u?mVE!snk}}BiiEm0~(&^Cs;PEh> z(v9tF!Y18dXCq^UZUZmhcIjQ^ENAaaKXl=FY+Pb7Se8{}@>*9mVGwPOa{|m(M>+=K2s-z_} z6we^?7kJ=wC~?{P2?dK)K_3cS{`-ynxk@X~hnqoVLa%<^Fz{BXpG{eUYDkFn$z{z= zJBxMXrZZq>)2VHS@+%rg&|Sc+8%+43-;C?Er1rukp&b&UdbcUY);vp5Ctg6R8nxYe z1xG?8-}n1(Ij(>ts!t^Mq5bdfZ$(D^Q?5zxJF)9_-Af{rHOOA?Uz#xqBQ|7{Q zQrwAS>(vb(K5*C5+LYYY=5X9ppHfM0pli`5l6sv(=mNvtM8$TI!OcrsS_${80FrqJ ztPj)|QMm+3sXN=<5nal9P$3dDGYIiX`!wC{lVE{oM{eNa`E(VL^uR)3vkOrl*iHss z^14${w3oY9k&1L{l275L6rTs2(al4K#s=m$oc&kZO|;s)YL93rFVsD1Zf<(0Xz|YB zKln@g+C4c^C35cXFbG=@Qc}TrY^F<}Lr^gNCA8AKUQ{cOdyNAckn17cYH&yrCK#dm zXy&x$d+&nm5wq$?J!KU0=glZ9qMY=YxXq=iulqiPbpO>+(Hox&C^&o5vJHEeV@8?%mj$86B zp)8VDQOR`sG=7_XN@j1f>H*pVtnP=c`FOV+EKv-;3z16PyL#XKmld{U@Zt2XpFx57 z4r8;iJUY}kT)@m4XH630^9r|YQZY`uG~oEuJt=HPY$HjQP|j>g|Ch}i_W{KrKwrs) z!H_bv;rRT^#5e*N5cYJpOotLiwJ zn)t3y1Wed^$gZA6oXj0OuT9%T!zO1P8KxHbU6VKh({}jqS5bz;nQuApNlmGj@>mMxn$JM|TaGr}M~vDL zs@Z25*ZDvBBS`n=YcP`Ls^+KB~p*Mkg`E9oxzjHrV=)%yvcbu2+y2Z z{2^kt_vBmykS$SA$_jMYXsW({nc7s@IgOg;K_xBK_zRX_Nmr6C!4It29`NP|`IL~e zM*gL}S%*?&tAXIjiaodF<+zxK&VcL_5fR}KYD(Q0s9I&Fb4XE?+?uIgLSvA|Cw9VX zz!WqHYXF+-ATXNLcurQN^`rs zTuQ{rIv<*6bSuXr5t$ECToXq6`W$jj9EtR7934i2@M<}SdWc%^IY)kI6DemLZ0k-F zOM6PV%(3(r0T&7+(oAwGH*)%4JB>Y26B4Y&Bxt}6*NON8?HHD%M^sN0y3S&YoPz{#v_S$kKG$ zGPy0#f1$x#Ns2>gnYDm!%Dw4}SBky*w8%D>g7TbrAtyk#QM>Zo;CV61^2e9!)gx8x zC%!n}^zs~+{!r1d@3E+OQn01)=7an~l&twhcY-z>mSKZjX`?sc7+F$L}w`&+O>k~IS)O5%!TD^YHoAcL# z9d$Q;r<(}y+o11|9hPu(ql851%-wb5`g$ZJcE90!9(Cc6wA{V)i(h5B3B3`VwbV~){rhx-L-t5=Bdt2qSACKA~mr>67s^$k38ygB#^Mplqb8I~P z?XIk3#(2GFG+FI4-$e2Y<#MI*!enl0CnM}MM)tamCbf>*B~g^5*xgpE5bD^w@ldTx zIDLcX9tZW9?i;f`lmDor%{pLcPQc{=pEZ)UG`i|5W~M5W^g=S)E__6NRrTV{=Jfi2BISUB;OoVvwu4UnncX%szby9d zvfh77HSw`xUW=W;Xr*A&_n@8T9eZQHcDu`^OpKN0K3A<&muRT@;YlIp`YzaOj5der z_|`B#>K|ymF3Rkd5f&Dfk*P#o2NOP0;~M4VADl0JbM1cdhB0+(1Nd+(Ub>pgf=kQ(x`q+~(Y+vS7_4dwkzTSnul>*XwvNBk*vGQ7~zG!)aZX^PAF?n)<{q7+ae+ zS&12`?mXR-VW6EE6v|`CCO*s6r4|%_K7W1A&P1o~$@M;$V;%H+imQH#HTk;n#JUC* zoTfX2Ed&^a^sYV7(5X|WdNSq4kil zj)bh*tWzzurDl@le4eN~ck=n8bo&){7W7kA79YyD6t@9d6E+Q0N8AWJk5V$Zh z59KQEGE`rwvMwZ(kNa}}DUVodSOcYN;XA7K_=q{-D0-H4=G%+sL<8lgYzK4aPs@Zd zohjWpma^5m_U@@CTV8wk_XK;_J~mH0Q7YrszeSy&xh*SUX<+sYFat>J{`Ep@>t1&p z5a#CQCEKouJQT3VZbUJJm*BuA_fyy2+uzVAtm!>MKk>0Pxeti_tgqWrEx^D?dx^~W z)9D920J{f{pPsz6cJ&az6uREn_8v68_&oHs)^D6xv$l9zS_ECfG92-6H6O5(o3_t+ zKYE1+q}YD+%5@1!5~YqupMU);SIt&Mse`=}-w}T?pYScgw4(r}-C;OSb8nX_el#BED2(ejhEp+%`qD(P_#M1vx|F|F0EV!C+oDdq8SGop93J=0aA1tI zPrHvd2G%8*?8c`@T|m>;q`Knf$NkJ#wf9 zPF27Bdd;QD?w`+tKG3Yscc_hJ_(jLRzjM>OgXZ>lJ>)5NK?fM96NAN?o;;@`OZC6m(i z{%9oeu}`;LebC1dGbMS{_fc^478PHgS{ z{&t=tR6UjvT$SarY|kfIFV&1eaTUQSHCKSZpKj00)-E>+klL zpUF#X+F`K1E4RJ*`26Ky+nirtUQ6Yt%*I9y$yq3sI#zFcvG{W>ne)$5IS}9Z^xqHV zUoSG%>DA8hTmJdJb%>HrgCAnSRyX#P(`FPpQ}O(|^+0$zbo|lp(X0JcHK6+|)GP;@|_8v-vTZVdh8w$q)bD z3Ns^Wp-bg)ab0jtz7@1`yPD?a?v5bV(W(RJZGrK1d@gPATwYqzZ+Y~H{ywrBkplgl z^;ZyQhKHi#tj9^w*5A*%12Je1_TqE+e-o&~J_BJLaCFN}Mzx|XF8DLp_dWqLf0!@y1 zy=+!{%wKK%PG7@p4J={P%B3x(UB4^Ew!i;;{cbG8(%Zq(u`!t^ z1D4b?j)K(NgCF$y^XKU3Xt<+<0q~T+e!^1)JW|+M5`XK~aY+0Ctk=r@U0>Wg-2|Lx zV`Ed(g%Ec+2ZXgczaZWjIYb$F}bBo&Fk65uviSXUsWjHI2NNP!G>^V#xHE%Cu4DRu>HB$zW`AAU0wU-ROyOvOV!U5<1AOLqnD(pI%@F`*zdj>6pjphh;wWyjK;IV?TpV<@M{=9ZB3` z&8NN}QK#t87sYr4u=Gan5ty_BIvOq_`&EVp04O_7nt-5B+5>3BPpt}4M5_tHe#!Mq6Q4m~0LPHZTX2Wl6B&Lhg zMsGh@3sDIV<}hYK^|ytN&zbLX9@`CPTZAE|7ue$X9je-6bh0C_7uz2Kz)lAn_Jyxs zU)(+_>6iYgm6sLNt9}@;o^U?uitD+gB-=smT9zFM&m!9k|K}h3mX*uMAc*?r;BV>je?L z*!YU$sfPGH97wBH0FR|kS?^cO*M z!!Fl%ub7e#Zaji1D9qb?YQaECnFj{(M+F51csqNWLs+HVx%+X|6noVzQn_yVW;A-0gg6+S?dRo;%MyL2ceB5sQTU!+Iz8*j^XR5tkn{9C zkE@Q_lUD2Qw`J>>+_QfS`h+#y{=u6^9EVS|?#6YIbM%4tIQ^!Ta+ITqs9G4}0Q*q` z1U%H??~CuE3~VIXgF)n=hyW*}GQm0p?evMl=Zfgme(IX)km>A5$RIKuAm#3$@TG|w6f}B0J}$oJ`d&>|Bbze5%uV)(;TWQU zKG6)DP3j(KCG&m7Mjjp|4#!vmF>|aJ`HHt%>gw5+e$E)}CyjcndY?XPD(;X2vt9K@ z_T&3v8?O<+F`mAX`rokN5hG^GnW}8O@rPgJlG$bK)UGSLWYnu+?-qKQ;%qHVjKo@P z8K=z?Wayak;@QqG?&tPCxc%<5fi16JVMX%jw=RY*II|A07c)y9C(V!vVEp)?r@>?5 z(<7FP7jW<~1nPX<{~u12bWA2D*2L7b60)$hHH-Sb%l$qaP@%-}g|prZ^#svxv(&`l zHM%3gJW50!i^frU|F>6$s^oPKTeCVHZx!s*44!ou@le9niNHCS@EOG#l@Y?hFT=BZ zloS+bo_-=$>6W0?q?#T2Bv`a+j!YkQAST%M#+NfSc`OPy((FZE+8yV}pKHG{YB0Y5 zUCnzgWn$0cCv(=?84q#dm!F27}onR>X*iub7aAu%m~}! zOVwB3MdNxSkL9rZEzgmXbf;h={LQUR9b+OV)<-SP`^nV@SWC7w6+dec>^OdRt>?lf zoN_zDem1_iFb#wN^3rC+$E5r~_WMIl0F`;?1RO}YoT{mw-b8nSQCFJc;^MHD$jZv9 zs`A{&TIH{b{InHubtP;-0bX9U13kEU=;voW{Q~bEf;EmF!KUsz1!-h%dV2cYj@9_N z>iVws_P=2F1ke#POzyt4WeVshx68As=;j*;2_P(mA@H;y&!=|o>GJszY4a~s)Qo%_ zoSX*pq8j);8n^W7#GDJXBS2H5IC;YN6hgIe<3_ave-5HG7uv942P6X3>G%wk?I4G0 z)a%EWwsZ{)+(2IxKu*UkpR0K?Sm**e((v$bf|8@8bo@!KU+Ua9GvcD3{72BBV!>>bXLP3HT4Gy5Bk>BZ0ckBxX+EX^e7x$9Mm;#Vfw{gLjS$ zz8O7xy+-qrXG2n20Iku2+<~cJDV7%(IUd-Y(i;}E*k&!zZa?l(7E^I}yisJtd+9x% zQThuX)jKAPXP^D_;c}v*m%CLkcl6BaOc~s%(Q$DQsJmXhx{n3WpTn8Rw@>46wdQ!= zIP=Z2JeQ=KKLW7sf@?p%nK6l*dooAny)(CX#qNfg!%aaMrc!scM1TDzF3klO?^_+8 zUcy=OP$Ef()9Y3hA1l^ce|{eq8V9pN`L<>LDKs@_@ZO-afI3LzlDmULY9MIS`-7Ns zP?yjbH|Nq)B0sMB72QnZ;TP)Yi=J1zY|81^gt7CYuUm)`!(>~M>+g=DatY-G>?l%U zC&1a`Tohc}(p4f9@}i$ZPvNGLcbxaV?HQ#6tXv@{N!d_0!)s)brb!xe@%XmQvl6wa zmrm5iV{tp|%4i^Yy#BTJgPvP{I{@x*M~RjBz>lU4nWWx~e~3VdPxq2T97lwXMY1ZC zyMS`}7lzdt*4)fJg2s8(S_QAP3SF7=GytG@i+>}k%A zZ}Ve(d9S4+#hO}dD5S4)%;AuBDn7czJwhAYMK1WxQPT3|Vvw?eBgggwk2oQI+pF+q z00lilE8uqDh;a-soN^lxxO4b<(fUcYB76*ldrCT)F6oN0f29&F?n6 zwQ+Azf5}JDUPrV3r2FyLHkeHL|{Zlw*-H5jgGeJNI>J8ihXy2q!FRV^WYAYY6T3Y3;BBh@d4}*%a z@qoh~k$zpXe>q zh1HetH^OPvI3vTYu(u>UIGW<6%JyS)hYVUVxoCf!RMBJjj*ra__dR{eoLFR>CJN4! zb#g!3&7MS-W%NoER8*M%GX%7wO4;9zE2?-mAL#i#jsvKu%ByqS_)6~^xKzBMP{k)g z+HYOIc!x@<`6x~y_{<5zzV}UM{-Jp9H;(_6Da!hqx0I}A3UfT9k1;+WgAqpPkiykvTE!A(l1{mL{noD7? zxlsgK14(i567yqaf~cbe0UjwKlf%P*ZJfzsvU$|4z0<#adlSQdGdVRHdM$lswE-g? zE9Z)stXp)xEi9Cd9hm85h?II3_A3dk4I)iOg$g;XTm*h3Paj>Aslv2s3q=Z>gYbRizJdB5fNS=8K5=$7Cdc>&eq(kcV8fLwy>d%Xdi76?EhpO|2DKFrL zVDgoB_+f$=2j+Y#eH)7+2LDEXszh!Gvlm>;ZpXl%2yWv0diwL}a`*uVS3+ESXQ!@H zZ*&X#?QQsCXm@C7Y0-B$-}L3B*n=Z4b$<*U=Z>`{TQBl!Hb z+9&N)3TkS-A7AHRX#sblv0;~Xw+GqLQCjq5t*zoqWr6-MM-vjAA3lC;a_dOM7MvYz zFf+N_9j9oSXp0tc3KI`>XS_ZL%d=CI+`oSYAt<0YZXO=v5A@u-?%Wp@6>TrM2#{r> zxeMk%ZwiJ2O<`%)Pa`*`)+eOtswJwg^DyddH6401_cuM6SR5AH=k|xoYcGQD+(t#| z;osz0dydjEf)EvuYa{uAzq7vjQNiHY2zs4w?{ob7t3k;TJzOdaTEK6ZPsX%WH{ra@ zZaOASeQxJ%K?F(nhWy`Qh6n7f%ykW*r%aV9eJ4ip

hCg`P(!6Tu2Sw~0bCEC9i=RO8K5le8? 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%0Dw6==}U;T<}k=e`h;Y-|sLiruJp+`pQQ)`H=a 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 literal 0 HcmV?d00001 From 5912c7ea991d91148031c739d20ef926ebf89e1a Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 23:15:20 +0800 Subject: [PATCH 310/311] change user guide to reflect jar file name --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index fd692e8ee1..e202db80e3 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -39,7 +39,7 @@ Use the hyperlinks for ease of access! 1. Ensure that you have Java 11 or above installed. 2. Download the latest `.jar` file from [here](https://github.com/AY2223S2-CS2113-F10-1/tp/releases). 3. Copy the JAR file to the folder you wish to use as the Inka home folder -- your data will be saved here! -4. Open the JAR file, either by clicking or running `java -jar .jar`. A command line interface should appear: +4. Open the JAR file, either by clicking or running `java -jar Inka.jar`. A command line interface should appear: ![Inka interface](img/quick-start.png) From 2b5580b9a69b5c8c10f234757efad108a56907fd Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 23:37:24 +0800 Subject: [PATCH 311/311] fix dg --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index a42e7db52b..de84c7b904 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -664,5 +664,5 @@ Running the program: the [release page](https://github.com/AY2223S2-CS2113-F10-1/tp/releases). - Move the executable to a folder of your choice. The folder should have write permissions as it will generate save files in this directory. -- Run the executable either by double-clicking on it, or using `java -jar FILENAME.jar` +- Run the executable either by double-clicking on it, or using `java -jar Inka.jar` - An introduction to the supported commands are provided in the User Guide

w?c^amDs^-Qn&AMaXR*E&6NT}{``?&f- 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 literal 55311 zcmb?@1yqz>7xgG&kOrV4sdP$-k}4qGE#1;cH=+X44FUoZLw8CI2nY<_9n#Gp-TZez zzwZs-_xsns{#mZ2PCj$*J?HGR_deq-B_W83hK~k;Krn@c_+=oFOZpJVMcu0x!9Ala zdEwwM8fyV1YaMe72NOMgYlxtpnVzMVwVp1Cwgbs4YikQD4n{@`6D>1q8&eYo9dlFL z_GV)67C44-O4h&bhg<;fWB(~uPFiyMA%<&U@9FpHbf-ISiLRuI@O{9fXh?}MqeUdx zWG)QriiD2+Ky*-xme!)(bn#j3i02&RY(9C}-{f3I!^)L*jnnyUd(g!UJ zzmvuJ4*Qk0FY)WA4OHIA%$Q>4yr9mfu}*(YfS?FI6g%;pK-~9715+oOsF;5@eJ5uC z&Z;K%3gbeI=0WN=`{}EJ^Y*;(pYbTMt5DN*H_Cvc{dkE{U}s z!p|6VUntmrPR6}hRv^BW>1cZtE43iZ8!5Dix(0#Q>GF~aRdrC)h7UhAD!x2_AsmIV zWo~I;-Skp-#8!|yY_}#N75$R-Lzl25X>6|!j}r$ejgwUwD=y;~(+3+--*ao)`R!VU zb$Y&L66RHnjSZa4um5<%nd{qYQWVrc=|z~)-dCAW+g2S+FX~tZ*Tz!mEtb03E}2xg zaA=5=ll9)o*>mA$d+yYNpz~|g%td@v` zlLMD$O*R$?EhtN$(<&#hn(Pz}qA)Oeme$swu~ECHqQ+>p(`Tvc2j#1Y_RGyUT6~?j03PG;Oi2iw3@T%*t7p56zB=&@`_W+({u8 zJp1q=gZP15bnU@1E8dP+PR0Mrmub(51uHJ?Z_XPNDv*{S#vi$YE4<1guwN)}hg~gt z+ojYM8};EOWsDxb2V}P(H%WIy{42tC{fNQU)QU-;nA~U(kJNXW$e!T4fbk5k4y;bl z?R-U}QD~*X(cned>-s($2EGsfbj6q9m)=xwghIP~q(0!!yCp@`GVkej<>tWemoxgBWM*h^tD=&B`Atoaf#YBXwLOM_%Rggp{;! ze_j>mm6SlP#FtUBSu8ZAv<=(r*J7BpsrY1$I zOh@7x{A2bH4-cPQyLvTEts)2ZG9gPYy&IdC%N?px^oo#hOi6Zft)imHWay<^;=F#d zTJs2uQFZU-P=TKEG*t9Tj#`DXhKA|tu#KO0nP@yh=j?*qWmz9T-g~6TFUa1dxKmGe zD4ZNXJ>E6%!STd=yyd_s?qh{y5St6T%ZF`+dZLiNblF^&Ly725T}h3L#`t+3KPpgg zWR|Xuu)K0WOt^iw>Zr=Im}GWAm2G_*Bu?xYJ;@p$Ugxy7Xmhw~ceGnQv0#jsWccWE zt6n)vw_h}qP5=xRh>2X@*JU!sD@lR2k#x#F5eQWDh?TKJa^b5l%c9wQy9VgO(iL9} zf8`fo>y@)#$xjdD+W2_F|4rTb^e^5)oC_e>e`vbhq@fdIX%|mod|-BPeL4FBH<|B;w6T)avFJ}%hzT-t z4Qry=&Aaln9=O07&+64iOPlT8^$Pi!Ps;0KPe~0ywdCY6kCw5rBN=2! z+A|A8Rc&<}vj%r}mn{1}?%^|!I3_dVD6vDF8uexHF_@2(2*PLVGuj8--hNc>x6{|h z%pdm|=aVE0Z6VrlYWEoxrjWc`8@iJ!=HPkJX^KD2i*jl6NjNU8NKhNTqX4t%(1syA z1lr)|ASat3mF=K?)ZYsgd0EILMRdfhcQ_N;)0b*7Y&Y~JQLubUeDn-gK2R%UN2*9A?9AS&@_PUth1td*$UBO*e=q zeggaTGzypIXnAJ@@j3d!1@iq6@8X*7ky3-LwPQqqUdzd{2JRx3;FCaJ9(pRO5BWMJIRr9%0ZajG5r(Cj<4Rg^+pBt~zC~z)6zI6GrLi)|;qS#I%EV@k= zFENSjHG4zI%|{&!L^E0=#g<|*$zK_!h<6|D=jOaDj<8%fxj{HaMwU!7`^BlEW>BrU z5yoyd>W5Wfv+VG_hRJ67-DS)qHf|oC#r(#UaoZ77Z*N8#e_E~Aie3?}Ml6qZPN@{E zQG|pYG>91tA}?OXxN}sCp4(~aT|YV3Rx!G*Vg57VY33|tXU$x@>pzCcG0X_uw5rAskSk8?1*zoi!HO#Nc=W5$&<`5A5xLI z(54gwHh7Em`iyHl&+)r=Er#m+){9LK0=ZtKx}EI1DHDd=DmLm{?8`Kd<=9rjazcMs zMJ#&Jj}^nCYpC@3sOqP1wF!d05N}5z0ao>PS=GZF^U4oalI8$DG@-jeDV(*YwNKLx2a`QS_O$++OYx&o`|<-SG%GNPA>NFcH1^?`r~J7XTL1w zc0J;>L5(!mPRpjUqxQ;m?r68QUUSBdCBnhk8a6gBXyx+?=#gnZNqo`&`I+@{|7uu+ zveIau*8agnnv~b_`s6LSR6B%QVO^47N2i)U4OOJn?gaFQ4!T%E4RyxH7V&WHrG1C> z?@ZgB@lQ5Gw?QdSn_eQxR& zddBG&#NXO6QDCwQaNdCPWV8}ZA0gZfL?f}B4;J^5lRaD|!Z+I3Z#PHKJAty4*F}mc z%znctLyGJd+s5tajix=9OP;Lh~%Nd z&@F-11&KmX@Ls;HuwGo7KT;uVQ8Z^GXs^B~vzVo975?dBbxX3D*2c_TYe$ehdT-4} zeyOTb{^5_nnm6tN3GNyeR*DMxB5Sj9#SRL`Yyf9Q_gje(7hZvR`Jqsz09JX3oq2Vm z&s?Ug@;&aK&+;f{R9)XxQm~i^HQTJ66(8b@4GCHw>;-e#wRGPl-QC^8K949U^rvgp5$U?q_qKVs zStUo4r7iVmOA=dUSS|JL(oH}?av>Cmb8>vAd-19I9xdBY9Jg{2Y}9VzbkP^A-L+z~ zv4BU!*xalAzJ3iddDYsb`zVAarr@V35 ze{XBC;|ZFB)#L<$jvV70^<2B1%XF&`^Uut@u4v@7St3{M`tHpe$Z+Sf=n#9}klSga zdZ@*I_`QPM>XV4AnxXb+5#nM)fIeV&4Yrtj_a65WpIc+bs>}SUDm6jXk zeLxr`sYt(i^|5Z>)uX!FEs}wI%O(sQ!i07y*a>?|?_^@^eVe_LL$AC#okq)aQ9=%D zeXoP2Wq%})N0pHNwslth^lfIFOLtfAwPfU%O46SQTQ6|f&b3Mw38V;D7!Ta`I3{^$ zS7P2l1xi~iM{q0ZF?nxz-xJtwY?LxzR%znyIyf2Oj2h1zq(Wm?KPM!Nm6Qi?n5}uX zPSSiQ5~0|Bij(0|tZR8&Ceq5=3bzWEyh$I^rL|3?HHi~n{KTlQR(SpKmjGnM3)cZy zn_#Pu>l&yRK=7pGxrbZVqOdUfV$fPhR_)rD7okUG*}8cEQw~`u=ft)@t-k%*;yL;% zmC03)%{U^yy+Sw(uvu4aZ1C%uP{|!~a(Zny*`x38Bwu~S=ddR0Lk#BALIwTq)U|i# z@|cd;ejZr@dqz&lhy@Osax=BT>TsJ+mrPDkP^c9(gW1+S^Q^H#O5YrrGE3Z-9@K8b zMF#1?>=UYjEjb6zeePC>?swb0JZ=nh(;g||R#r|OoY;(WG{WQ5t9kRas6Ox>yWxC$ zm7yVLSan_cJv&7&GwfcRvBv}1hZaAk2EdXwCZH=uGK{5*c5v_3_Gd4yh!)W*RAyJd z=R9kZC}qQDp;YEUK~_0H~q*$Stj7yZ~cuj&OSOE zZ|U9VFNLEgF^s+Xv8Z@bd4hjVDx`EkJ3VoyB&HB3y| zac!vY!4oZBWmco!2VoSG$)9A>VtgxNlIr|*r}lCTD;Iv&JKu_M$CW{EkZhVsSLp{& z-#!m|pQgwtvahx>IQZ;>#4FSC`8ajC$^H3xSswZ}CZ_COQ`qUrqa9+Y%U2?uCOs5I zBC+JM{j!y&(HLQ0MU?Auw0JaF5`238uLh;F`Q+D*jX$4O9Y810Gq!`JdrdDF2 z+;1-=ByXg=k9fAw!27E6q0uLwix)*`+@P}TYdP(T8nH=-1ing9%zA@?nMSoXd+Xj3 zvE{*nuI(Ce_B%uT(9(mG^Kc=OkZzoCQYc9uPH4Ag=QW&oTJeb!VIr(@Wq7)qD~ikE zGUvB~cz&o3t4^jodTM&+QBi(U5b>q$t&}Q8wkBAHneu-iqi_}1-ghND0$zi(aNeT| z-V7TXh$m8PwW10>#}RGR)Y% z3On8_1HpZn6Pp#=P<|O@s7Sck=$EMSTAe^~c^aIhxv90e1q<7c4RUHxQJfQO{!-FFFvQ`%oadfVY^B=EzKO?PVxk4amGqVkBKd?=EWIUHWvWqSn@?Ti0eX z0n25r)`BWYugTzV#v!alUNi)Q9#S>V2^5HUw-b$7<6MR|HNtW`naK9>qc{#0@h`B0 zrAk-;WkVqSLyza;(vb?^kDT{sab4SU?=N)N7<@Yvo>5BRx!TbB7Ixd^L)#K5Jq5Ar z-cSHxRP-rc|0EAGgX9@ru2nkxgoMp;s^79mGW~lb^--~^8dNz#!iqlB2Og-n5k=3l z-?n2H48UEe(4K4OMv@5M21QJ7Z#Jl*HJp(a>d}dT+>eSisxKge4CGhE47n#*+=T;c>3Bei``j>ift#VH>6G4XN1E2|Bw6&B_-wm zCF}EymTi9EiK*%7F~WPcB@+3nJj8g(Mey~X`BA_8ZgQjUPb|>Z^i{y|@UIO1SX}Bu zEJj|g82S3HF;y&Tr;*t06?k<9V45Vg!K>d;FTqW2)conyssTu<$ui$|wfy~ivac(B zijnFSw&KefSfqdmb3hVdw(*HX?RXUxe_WrBEwA6}UWC~D`uSm);#r_*qdLEN-y`-g z64j~^^5G3zu$C&4yBmLdn)&Q0=0839+>@=B?mF#v6tYkHZ_DUDa$bIVDa#vU`Xc-i zWF3z=D?#5~=>jpyB0&#_EaTUn>$(drfZ|g9lWQi zoPy7SgC`F^|L*c4wL`@==h{GX@R)$NPE#STw|95K3BkR}iYmb8sX_SL>%xiAjb@{L zR&DC>)u#n^yc1bwHE)zkO@;ptYk>R^76YE#iIQ5)Z?Bl0zq?>OUwZNZcm2Xm36`&_ zc&&seBp3VnJzu-)zWsW_beCtH=Q8Ow!Ee{=tLEuP3}SoY2X(v8+Aii_)zb3lrAw!VZ!$DpOPu+6+A5)PUuIX)T*yg2-7za;}=lEk$kjte4fnR!etkXay zD6c#$|tUP%= zRbNz8q(Y07MQWCwG9$kP6I?D;A~yJepb_&(u`#>NlAL%-w2MSo9e{Tn_wOe@_dvTv zA@Jw1bk3;I-;Pm#1MkswF8kmB)UC3$rSYDunVQJW^^4569_)ceyX z0#kVgiiSpmG!&cdr9Q{)rM4J$^WC*EP**7><9hp%%=H_OU?FBg-jgwqMxAy~5P)9W zf_fAOKWJpoh)e8XA9J=Pm24fob1=U5l~tMOSqGbC*kEJ;tJu11_`MI#v$b5wP8XH?9qY^Lh3p)CTSVs1D^(JKLZ*EH8q z3US-DQ8;t@G1ylOBCf|&R14r4Po6v(E4QJQO%VgM1>hn+uk>z5w$F=D7(L?QIe}Bg zV_dstI9#*{a#-ueSh3sA%Fx zFRzwP>{JG{xZ*vMni100zMmNy7pI=c?~Q;R1`yITt&b^7tq47CyJV&O&<^9xRi#^Z z8@_diP*cq1q@{UAw>A>R8~}b|k(PF6%2$-wWlMN={U<&9$OAO4LlwKC!v`H7nNpPt z?;Lx3FrUoD(A`h89VxLhwj^@4$bwN!pj8HqM=+=zZ?w=hd14U?$CNY@$2VY2I9tWS z3Ml8Gzm5%?QSU;RAThLldwC#JE`4LY4mxy(5vBV$vfqW9O-qhZ1HUV>)Z;w@`D3;t{V_*p2?*hRwT0KMlawXK~%{O3V+Y<;Z9FNP;z!{KJBuQeQQ);B}~_)B_e{xDfjTv zF@y@|FBvXBUbkCCqMdwO3-C$zA0&mAq`(MjS&9jlL#N#}=p||&KR>_TUO5p1J-z%FVK8daK2ZwKVMZe_ zd}WyP6IvODdhd?g8qUuI85QR+xBtRFx}ZoD&T4O= zdU}GQ?0C52H(qrL(EE_vapqJQb%#_tVEdC+g#c5%)aUEtPZ$<%(>yUztyU3mfX<|n zrzxB&G1eSTt5IedE*u)ytvXvauYMIh6YMlu^Zr~6dYE!TZM9kTF;>Ri>ryg9&dU{( zR6@-8JD~ld3LeX(WX|4Lyh1g#@ zQ^6Fl)^-UQWy@vxnoDhiSK=6>u7=~qc`;h zyVYE^iin%NnF}!wZ}<9JkcE!t+AQ}=zw^Q()W!`%e?3)q@cGkoZEvjf*dvvSA0TMi zjr;we6V99Byy3buc>%Ea=v(L*y&%8!?T7JghlYd z($-vL*s;V|{~H>bM)4X3MwSfudz`CI<;;MD9=70JuSp{p9sjb~9wDdvYr~`uzkdCi z?Cgo{mS%@=?Zvm*){h)jf7SU}i|pFebf}Qr=ufse+t9J46{>4FZ)vh}8crqsmf^>+ zvGH(`VXo@HyE`&oC_hQ(pjV_W#SWVc3jBl*hU#$I$L#D9Z1EqN@Y5`$r|P3#iIh#w z_39hl9#wj{4Z=|4vu?B9T8JU9I1kTuuPmJxSq};}S4}slWGJf%6}GDxy^5OHRDXr`*4dm1(joLrVOtgDrW+xKd)B;!x=b>TA2b0d1} zXklVxEZ~|X7g4SRbU^{wfme4X@HGlkaBp?mEA;+ko%?&M_h%DCpL-|aFDycr4 z9&81zcZ=PAF5iWj$LuCtQq7;=n{w`ph%Ol;qj}XMb_htM41Yq-h*&n0!G|H&LGQ2a z_2b8n-qkN(z5qmb1Y(TSZtWA7!-he;OGHG(i+!*UWTu@k7pLx`l{O}SvP|iu%i;RE zxxIVbY=?)#`PUj#sv8ZM22&9rnZ|N+ zF0Ksu(#g_Cjk_Kq2(iPB@TFH~;FTWek>7wg-3_gnn9yjo7k0z-+ML7_p%KIreAlVL8ib^ugZ`_ner4C;Z| z#)oV+wBZenr>8P#unir@r2x~3lU;Us02kV@5EY2i=X`Z&@@;w@Y^hFn#3B_w>)!VO z2_z&kGPRuyK9id0dVH|oPWc3heCv_DOQr(-@Iep5ew@>qv@0b&3rnGXTXgc);4MF} zH=XSj0E}kc5ZPK8+FYNkBNHvRU2V3!dGjXF0Pf-9Le1iTv~walb7C{34Z^%w))>TN zw$-Z~r3t&sx6A>i4bzB{Wv{T9d|pnF>e5Vkp(kHQkRv%$E=%b(P?4fv;IM|kV>ObW zT)`q3Ocd}1=+1erHHsCk>|*yL;l7MWS63HZwP8<6v!ZA37|D}ffJ`D3L{mWAEgNW| zghxle1o$)F^}rj8(|X})MtC36Lh^<_uT&;e3yB?HIcrb(x|-Qe2E-J&<9rB7LgqN2Mki5-N7LdqJ%64NKzw>hv|?n| zieYQ5B1Y*D2$>%NyjGov9^L}i-V(!pdTev!o6EM%K9iWRL%hg*o0Bq}G`FtKIIqa- zWmBlpnq$tBu{zCi)&Sk%Qu7I*U3GtchO*PGs70E+-NIP?ig}1uWgu5WaX#qk{zePq zkU5N6^^1l3&RWm3UFJ8RJb8KCmLRc`M;TBoa3;4d?*P9*;+okV% z755L8%|#>V*eqx2RxD0Wa?{1z=2Uw8fn7l!=Ijwlxv6AmTk=i<5cQwUHL6|3 z6Fs=H=5pqvd$=)DM0-Rjy6=G|vU)kE;yE9maetPf7~_SGyP#TC?T&Mr4i`nxt8|+f z@XnB6z~OMvjOgX=AnijnFO(#hvys$vu1FC!;Ftl!q5lnwkRxX$(8`hlM5^nwe=)Ef z*sKf|Th7uHX`~(*_QXNOH)G6mk_Zdy_V3j1_e+s?W8b|i$g{7jA=7<-=V<;NHcvt{ z(D{;mWzfTjn6xn}iqzj1nU1)Vb)K`?DeBZdwQB5m3`d8%1&&)^>_B3@$G(<)X>}ky z0OqpI5N}0VZ~^6VC>aR1?)F%xo^D&J4#}-5y_85Xf=J<=PErBSOOin2q|QFtBck-w zRV%kn#p2x^MOP_JDJ0fc%AYb-nDNHj$iq*aZ+M%|UVL`S>ackUZrr$miz^SL%BCiv z1#;p%(~*+By*-eN(`8ee*R@%Z$H2sWmaJzm{}u`giZTa9O87)}<=#~H&MK!gtS((1 z$WI-xz^>2Fwwl8cd4)S`#~RjK6Q|y~6*1MmRe;?tHagz)xHWt*ka-*A{C8PYk8Gvh z+zR2|9o^i$%@yb7$^$$I(ksWirDLv#gmR>hzl@?YR?3uHf4(23YWr?y4V&k2#Oy7- z<}m3vpI5^M6-P+++>O+0Gavr>SzTJG96msb4j+>c^o1ViQMyRhcb=KLN;-+C3}6zn zR-rlR4$yTceEQ}+Iax=^VYBoiN)87ouq%b$&B{vwtAoM9xav-;;ESR&{g_(Bm3o>-}=y}d&*)vlA|w0ZN6(^q6o zk)0|i!Scxcf_!H>$bIy|YnA*~E1eT?^nh5kUn{%)BEb2J477Q2l1(E1u)*awVxcA5eq*`AfMsnGAe&b`w z7e97)+a0qTDKe~+>jAYNvriY}ZogFF)4#74I@v9Zoxnxj^=7`*&d$!^Vq-owTs#*c zch284dw?kVgnd+jfN^TpK!i#DlrWgc2LweQabMpnXM9_3cT<{yo*Nt4S@+>d!bP3q(|QF zl_aD_@w=Mf?~W2WS?KDd?|oNlh`PW(lAXFvdx;-3(B3Ep|0Ah6L;6Cfzb5mackB;e7s+*2G%kTW zEh;AV341ipWT?P+AjdFi&T4MNIr{F?KeNRq*cv!LL@%tJpIu~JUqCMry|LsbM+5>(O*~DgfJ6$K|g&Gb&Q3`j+~zCwtBK`k%Svk-FOgM>3E~9}MF(GUp5X1Oere@Dns~n2~_)DI(MT`^PxnsXE zBW#NKomO{`=WHc|#E4$zi&FeEp=P&&jyUT z;dtefRp~*NM6if5<&yC{%`N7@UiJ!f&5N1uu3$@ieE6)a929YdJ#O{>u4*micxyyT8j4>FUf(puybO>XD43Rb-ghccn3X z4g8GlJ^)Lm2vNw;S&|hc(!&7~OVnJ=PdhDXd(sUuTzb`ZSl zfP(zo{d$^W@o+Bhjc&m5yZS3us$Y7e89 zWexFeYHdw!#idoqn->U^ikw@H1NkVg$Ds9NLVK&7NXiu=`!~=iyqAUgn4GG`M!1CC z-utB@6kc`D_JOXnvVOF`X)R>wOL!4d>COq~&qxxDTw5ZD3^Dw(8PpmW;FVngSr+Vg zm-W@4ac(x~eYtVDfkdOw`{gwY$4YUBb*_G!2UA7qJMTFmhb&vG}_y9st+7P%JVT4A7ty)CxM-bC> zUXp1Q)_@^mwDQ|aY|459%w?H% z8-jsEscRpn72sjf<>5;JBvV7>lGEsp2cSs*^B>lxm;5$^D#jTLltw&RIM*%idtO);2TCd8Fvkf`%k=g$Zr2;6z6849PRjr^mazCwoa5KIrE} z#vPg0fU1y*M+fo`U}6Eg4!SY2Q{Hd}A6*WYgU0^s5m0{j6TBKIDPUTBd z3G(t9=u~~HgB&^1lqHEeN2c7mO+ln!NC;76*z>Z)WD$YraJBwAMMg=<2qc;+rK>*Z zXQ?s5zYlE5OVEacZio|6xmi4*ZnfW;P8G5Uh7@XV(m5c#DYV#fY8PugzkB5fB=?mAzfxuK+G; z36M!FX>KPGlw9v{NzeJp97%eN)c#+>y6nNvDx* zFxs~`;YPwHaNl&S92<;dxXd=&QCR_(AN6J%`+&>wcB%CsRCIS^mX_-m_mPR@K90#p z|E;+HYP9HxXa(4AXlZEyom-mM+LAJ=At3h7ojYmm%3p$nQwWz@&n$3LQ!gg0BpEZ- z!4wK%d*kDz7u=TfvGl?-z-+w=5^W5ZgJ<17@iagN{T;$WLVd^<`StxkHi24wpnvq@ z;G$j%lOwuNY(7Cvk%C)|w6-nxr1GkHY_xEZFfLZsu>R2X_4W2x z&c^!sQJ3AZFt}T@9REL)5^XOO{spvve)lW;1Xp8ozP2MZGc&R^L*`yq=`JsD&d`;U!FXI{mGyUmaEcfAN`+ABS0o|FXi z1rWyPs2|6vlhxpG+OO}0QTLqeO=Fv`IQwR&Mlt<$n~-$~2a{p@-@BZ0uukf^Cko?0ZpVK-%LVa&L<4DN=qI@7*&7*9{e?H}d{Ef+6 zn z`*CM|fCG>yV6CqpH?j00XxSmxQBGbqp3xb5$PGAAcymUgoEx)nZy+BGzw$SK*dLy# zCBOCzuDi?>)l6#LSk@#M`Z4eYA$sHM*>ia0PE<_e2>Fj{UYRp`#dcvSa2z& z^9z3pZPp>Di1+|1+AYUx5R#jyIq!$*kUOID>j{8=7Ne$?Y7Ze7o$H8~G~Ds$P7Z#7 zZ>W-*iO0_ao~nr>L@`n~fhK3eqvyB?jl^d&lB;sGDY5ww5YUjz10g2)XAfFQ>Qi`f z^6u)09Y6IjG*0qdt7t9|Z!{kGFS<^bD zB+6eLJ;;tZVkz=aJEh`or4$z1EGt(ndD~_EE#;-azrF*i zsgy(%x6`9*;eh~=0^eG)1%Lu`IUAt34rM79iiFby*B>lp<~}kVwmv?vX~xFHjAb*% zGhU4{hyx8d2YFg?ga19?7IXqS9zewwLnM7aHaAD|v`{!B>u(ZC`WUFPDr!x9fYzZ+Z&+9d`T>y$dP_xr+=iS1iP2 zX;jDIg2MdC=jiyD5bFx~5Mb79IW_O~2G$9^cNKPslvY6I6>^Y`1503NSXe!lyIM_) zblf|oC|`_S^WR0=*=m1{+ssnRe;x`_A=Zszpf%9fmze{Ses9#i z1f137z&e76!#eFHGxvH83f*eKGnrRmQPI)OSl|~aB)!OTdTl^1B0T$<0I^FyD}C5k znD?I=(b<_9DOYD_=WrT%V6z>u8+Y)+K|f>&ZD~GhP0Ra1w*^Z7BlGbi&{N6G0-2%$ z$Y^r&-js2l@o?a*02cz65a^}gYVX1%qd=JHZ-c&6x!iiu_cmhz9|+F}b@5!Fe(hoW z3P=y&g#ZJl!By`R^R>SLP7|7%dgaokAU`c!3W-lbiL)TJGtkP;!9yuQ54ku`Mn~uO z{+6Ch7opwgvpz6!@d&hr0?c|~b~Q^mbQsvJpcR*8Wo3o)fd5PqIA|4t)d;jL_3h`> zeof>rJYuvr8>xZx&z6~4DDQg_yOIPawSzIZXbP`q&zmMK@`(F&7Vdol<5oa80_K;o zOhrZ;@$-b?eEDbUN#7QhkWdF-5cIjls5MyMXQ}>&)PedxBL6=+2J`K^Co_hB_i!T< zM1~Pl(J{*NUs;f#6GKyiks2W$}3H>>J? zal7|-t8!dk{{ridjB$Wu+-y--SUfBXeNp6~s- zfb&J;x_~@+Hdm{A8#pg6`Emwtu+IbIcfR(Kx&hK78E)XC5fK)K zx3u)&eSD_HiL!zPdyDwJyBjbz;KJk!0jHd=)A;CBCkYFStcw24IJ?Uq+>wd~iNf4{ za2_%LZlXW?ux{sh9Vpn>Qj;NOR@NfWZjbkf?h{#GzUuk&)o<;~`D^q32DX>4pOwl6 zzq_|U*}r>NIr}9WP=y_-<45k2ko|id%;nocf{AV+;7>?J+seh>l7VHmL-N1=d&YQW zEhKN8v_=Ddx#k*}0f0a#km?01$9qQ6G*(7Nb3i`>*<40f40v4cu^G+0O9lP=_j`Zb zEi~GwFl!?tBaqfU8W~N%xaE)=3~r7{te^$2mm=cu0Kg(g?Ow*U^GDb~*-ZTqB23E0 zW&@Zs^<%fFHzxlQ0!*UJOn*Xn>)&bjKqCC@e(U7uUaaB&b#nhH7KA7?m47|w_Zge) zRvz8IuKAUaYf5QudSxECf_|o7d5C|(0EP;jKLH16+ewgJuHxhuH#Rhn2 z{O3b0Z~qxMoPE4A>V(yAC1G7BlBhR&=i(=b%e~Ol3%|j^e|*k$$w;9)cz+c;g2ZYH z{=JeGlJx*9V0TXs@Fs5p8q>H14g8RdFPQUyJ}PZG0%q}HI)v56419D{)imce6&}JF zFl^a@>R(n(+dT`p!B6%>V!K&Ea(g?zm5-wc!@l)^r4{{Z|7 z2>=u;d1@85$XVE8G;9H8|2s_Dd7&RZTr~+n57rvm!MndHfgEuD+omW3IYhs_2@?<9WNzis!FLD zu!|UWe*XIA0t&D|_G$wEh6otlOco9WQdU80PpV|$i*vnBoKVwW>OK>bw2PxOerr?H z=QTrovi3Oc5uoJM)I1F_Xy&vu0vb*&_z@mpK~sW?;Fhx%OO~4f*b)Zj7zhYq+x;s0 z?Yj`*q1Whw1CnDG%m)-$QGfh{WXHzMT?P28371_$+VhHwhXforYRpdv0tN>MLB(DJ zTISZ%lk5Wb?h6+#a64`RlDkgLZmh4wbi{f7T_ix=vRwg$oJh}oBJ?So6<`QJjv5#k zAmu@;`Svg?uvH5S3qYeW2ZIuT|L!F*eqVHne8F<5$G4jVcY9?hv>O~OY4!INuct3l zKkZfo6v?NDT5oUO{bm=5dvdhd0n$0(MGe2cMb&WG?gNXukk~tU4o71y+MkPbp&=k| zKDb6NQeR)67fF=<+Rg10ScZTkiwp;{h%`muyjba;a{uS(PF)D`zQbut2Pc}9dhi$1 zyXVd1`>%4VfzYDR2$=Cd>24R23eRM>uooaAsb9}D-PraPFnlPFWCeL{Y(0tMgc9QhT|eRMbyXlkAc~{WtX3s{*Oj*eKZ5G`qupkd|pbZ z&|skbX5KTvfj*lJGl%V`2>9Xwmm3&m0bm&_!@+()0c6z<#r%Qm0rq)EHE*z3UiLyPywpg&705BW`H*l8w-o#YuysCy_*2P zZS&&3fblwDGeL$NiefPUX9E0aO)_9A;yG-5TxbCqXbDs&Mc~D5Zr0{i&DjI%sVDQ9 z$}joDAF;Vsou~9JD7E~C8LAbwrc3g+wvS?wa2fn5&^YZ8N&)FX#(+V+GVQ<1{d+jW zB*4tQ(ewa7b9t{GxZ{%h0*Z*Fnl@3?Q_6Oi-$@e~*KSon0{|vsTXo3<*EWUf77e z`C&K}o%+dy+vzdriPJJH(UV6(O9aiqhCD>iCzn-MR|nHNPFa{pvJNyNaoS;G0tSEA zP98jSKc<8z-;NV$R=%X(u=r=4b+>DmjLR{FFu1acVxsd@mWdW z{KlMyz%|b?nE;@UJqqa0P~ey7(22Id`l0%Lm6HWIH*@^`W~cDqMj%U4^N@JxP0ho7 zxm@)sNuGUvl@vaw(Cb)VU9a;0XEF@QBfVO4I8q@2l&RGpAPuDsxcte<$)b{;YH%zA zyuHf~*D4}`>%dhquzGG&^xM-s$%y|k%NTdU5xRd8*|wF2!8?rZ1Z62_^5GkYtjYM%j@iqJR-2EdNrt2%Ax=5lN)FbqY!xg**5}59Ss>ES3(y3*~hP9 zVZmNcdzRF20q~|>|KY0yaC9vs(uvQ^%)IIV(Zr4f^yh2w-&Z1?JHRj2Js0hBKPv3g zWS!SQrlO=gz&1}O|MVdvA=IR#31E;GnCZa~o0x<|$|nF;whrdTl4lOmCE4}68FN#v>cb@d}5@JS1RG=Xi) z4r!I|h_7}%22R~Jpy7>vVWOu$8#!EwtpaMSa-n{HAsBs&0zzk@HL%A5*Sq7^LO!S@ z6>H_0fanPmuJs&FNCd!a1q_DCNx6p@g6Kh3_4alO)BZ9mgXV;G{y!S05-zj(znMZk z%fYCX7k-|fc)CB%tB*{Z!ukDxQSJXQ_a@L(zJ1iN1{EqqNg9a|(J4vhS)33NDn%+3 z3MoURk|~K~DD$k8A)Lzddn7PFZJ25EDeS8G3FBObGarStk6Hs)G>@D$~TP3%*RE126iH$9FCp11ocIi8S_g$0Pms&jJz1rJH*A^)j1G)3?0aUf~B?8Qj6UBLGm{oMk0Z zimiEQMkJ5qd$RO!YTDU7=-$OEA`-Mc78Mte=M<;`<-+`IH;k}nzZ?VJA-Js`kvXImk#yr>y#dJax%d-xxkdr@@-aw?ruLRCMIU5 z3#vii!%=skGCJ{7;xg$Y8vFF=fQI@@p74sP%m2^yA#i=r&zk>@!)G5w%<`MdeYrg@ zU+%Y(83MI!Fa)yvLBnNHr8H!NnLW8c<6&fq3A!SccuWfY`3p;-6Zbl?9QlRz<{ICz|1%G;eSQDl>x#vGLI3Q(=~f~FC<6#+v^U(4JUm)0ol=67=_ zVQg!k^~*yWb-%gG!dWXsEeHVoW15Mkyr{f_0=mX^JWPTs?%B@@J^Oc7M^k5_Q}ul8 z=?65-DT??RWmA*rzxa*$@Bnug^K9O{nVo&+O`1Tre-dy!kwzL7s1*x*IK;=Df~dF| z{@JZM=x=1W7buI9lT$!IZ4cJ<|3S84Mq{w4em0?iMzH0RMqU6qoh_Q!s4?L9IZcl( zzk&0GH7bDK-d+fc2;*O6>bcCRzzBYlzNz-(s&=bE6w^A9+y(=)t1<}~Ias#NS25OtX3xiLbgDS{IC z_L0*UVs*v;cZLM}gc5q_LGsbBLC*D2JfmS-PZ;XyUEi{snnLsZEl=dbN{jzuUefyq zA-&>YX9uGp2s1ob1<4=b5|vhB;Y7GZ#Ex9cOst9BGE>ofKH_8&w2^YAO^RHk%LPqGpQqnw>{fYJjDxU1=hwu_Vmey-TgN7lLf$CZ`|)b=l1L=1 z+Lqs896Iu5xwdjEj7ICi97xEggn|)$yN!iV&$mu!sh4dw7Ci8X>Yf0!Rdx2R^N;)I%!hY{Xy1D@7egwu%OD z1kt`Vdnsw(e+&Zz3)A)@?v7BC@6SkmzE5NJ?+V+;4VtUBrG$Bp%^KykTwG0Aw8PLo zfB%KdiG?fgSA62q=d&|!EG{lCfO}^>T0WW?;Zx1RzqcL80px|Q9EjlnfB{n^=`<$R zh%_!DoZ(Q6-$Dqnko$`j?AwE{cfj~GiH1GfY*7>JVbfNTa`gR%O4GY%hKP6unwPsW zk_3NnKUe3pe7wJ@Fj@h9HV}hK%%hlI8*XF+(4b+p(s8g3bNq_n;81hehx^N4?20$9 z%{*~_?OdJklkm3ao13bgdEia@^V)Ey=zNe8(e2D<5!YF|;x$s|R3`#c9Sb za}S=_`{c;v`SwQyHgC2DJ=msKB-TSlfuZ|AT_RPp+w+|hFMEnyD=_{^I@%u_^544K z&#fmQPXD`?5elS}EyZF^QME``@Fprb@$`{lS;+CmnQo zg~o7O219qXu*wA&7oQ8OPd@fo>hR*TZ3gbN3XR6XpKVV=B5$HtW#KQ034WoWs_q<$ zmy;b%R^$%W)A2@LZ#$0ZWqlgje8gFFe^j&y+@Cgf_vr*N)F>x(TI418Xe*z(F|)sQ zplVgPI7drW1X9k3lr5$Jq?i77*eCsTavjAB-zOWrSXBAV^}>bnJNx$V2l@3^3#piB z2q9j;x&reT8*8XmJc6eOyBc)2)eaq{MVIABtISDz=(GL8_2p|X+z&UGlNJ!^bp&X+ zyiClxh2d8CUSnMDmxb|9-~7l7nD*tHMZ*kBT%a8(=ciI{qts4K#UPc(oPOtsGG z*-rO@*MGyVj1QWzgzDLW8d=6Fxo90?*Cv>l30FK?hUzjyqf#d;g0BD6J|8}OxJeXS zabGe8{T1D6DBTW&+zA%Da5&pJ>x>^4)`)Bo~4QZS5t)t!B73(Of+cRNdnhSv{TH zH`B~M(b&%`6uvJBVb;dq^}+N~0|E3Y6jn9dq91V!&&>|^pOaATAA zQTz&HwzakqB@fvD-FyOiX>Q+2TFtY-SvIMyfq0;$KN~wKqkh^I%-Mhd#gu56gdz_i ztsyN8&wJt6toHtjl!GWptlz5&e+7fS#qo}p`A6I}m8xA33XOq0+TF0biPye@x${oe zw{3bcM~13990$<9*Re57mb)y~z{|~@2}V8X!IztgD{YO?Sz+FnM__f7o7*fuyFHI< zWA-R5EtRW|uSQpOTOf+%;DrPZv=&n^y4kkWMg4MEe_6KuDdn5bo&wiVm7gzIn|;%b z+>f5YGdJ!f))qU~7=f?ycZ%x+F1Geor312m?!8L*6zk0Pd(qK(9kRw@=(dcZ75?h+ zSw`dW3;nqkwGu~>;x!RBhnF*4Pe{y>w3M^{&~_

m%1Yj@8{s-#EOnZ#CHS*=*mDkdp4W>E42w!HKR^H7!gag)4@hm> zwpTXfoSuk^YlfIvapz{uV+9@yp3m9!D8xFD1s|@p(+HEg3@eU?rlysZ)$KD2X~qsn zX-xhZU0<)t(^T%?ZbC5SbHHu1mnUc*J9bP)M&@lJry9fDS*d0J8s+9)ln--b63xe{OXy#?D}E`E&ySHr;=f*g4Mylf5)4UIv8%1WoX zv#37JlS9Y*I0L4~V1czuRuKJSsz*HA9yWrLG{6%fuG0BwH-G#9G8<6a8-s_ww6qMx zF+$P=9bOUz6V)e2+@yw08ZJIBbjA?81mc5{jZMXC_x>|N8k9Ep*||R3XE-R(N|0!t zxvKhwV57NmeKqrcPxqB!J`S=ztYyQ%JquV#(aPidxYSpU&6YeJzxaal#ke3tS?yz6 zw}j997X9?$YSMP^A|*0+_pb7P89`e1~YU%&`UaCAku zbx>1X@mpwt9;sBt#05EU*V_~85)~CDuY*FpEMqMisraFc_M%lDgZgI~{xRPt|Ac{k zgvRkdR+Xu5b3w`VXuPKS`XjBK{&5Tbd^o1Q;yj;)@73eNwcp5ykCrC${q_j`U%rYl zXZd0=tSQ?bI#z}Mx$HD-A}+B;V9xs)AqYU{iogK~5axoI+~`;~=!kAW(n>e@Ij^_a0Lj-kCp@_W0tpq3 zXCngS#J&lgsF%~LNj5m&#el6+l7pim!WBMKLzfsjs=dS#FoSCKF)Vk_kF1qo?#h;~ z{Cp@86y7HAmZ14iqS}Li10Tc6#&%TBPdP!5RB~6na-%l1c{(8WX|onFF(IaSjXxL` zX+=U!2p3$)O=&g7xeniZO-fYg;Owxgb7A3D#vva^00<*j5VyP6`NtetkmqZF+!Q;6 zo-VzG`V_ruX-CJL5)Ex_n=j=&2Zc`8xs#!nV=2TI1FDfvyaCEWc{&$P+Fk6@=v1_* zIeousOhlVdotc_twB>u$)r;{+$H&L}`T30xg^fd&wd8&yNTQssXKY`~6J(`j9Ci}S z5@K%%yQf(X7+LT+-pnGQj^9nbuFQ^A4XFf&Nu=oX<28%DK)VKRHYtSwEh;Li)fVA# z{Gr=~g!=sVm~Uh+!)*Yir;mO+$~&U}Bj*1?p1eD};B!|jBs7(*ha#k*O7mz0m5bMc z1+J}F%6oybYn&7O%TnCM%A?M`Xrw<>(n*4!|2AkFz?u?tq%n24E$Q;zL4&G?4x#b< z+>349N|iOPq-Q&XtJ7d^CKRB0=^k6gAbGnj+IL;z%y&=&-90^JWo1ZZvnxU3VHG3= zL|2e|8wySF73sw*vGgjwP!2R?cF^V{(o^_z(iGT?jvOiL z#;1!n<^~FbcruM6pFDBIk?5(biTCY7U6#*F9Ss&Lg-jpqnv1kF!?&kR7qPIsPtaUP zdpJ_%fF)yDzG5uqeDPHzg9)!&=eh(}c-R_EK(!lNUZ?TzlKP*^!O#NvIk|+lE+#%1 z7S9yZ&;DpX7R$ieP$>^euE)=t4F7MGnOs)Vhr36Fk*5MWA&tq(Xql)@qRx`-d|-U>uL!?OS*7u$6Cn0zkqVc%<3k^I;}(0VB- zd*=98Y_rrRzhp$HqlwOv-|!MvwvmhM=WA;)AHl6{&`Fj`B%H>dmvr%zu~|Ia>DV*w zMTRdrLq`JjQKJVsEB>{go!sfo^42M#817{Yx@S?l(%}1skEklm<+!|s)6`?Zx;moS zAg_W+3SZo6|Ly3B=ij8w3M{Z5>@-l;&Zx0l&(E@Wamih_+`bG{$9gdzjgQS={7(Rd z6(u*KfFV8ur~tKdD4v@uYh*F+6=^({;TWh>jn{T-bPgi@Ts2H08*>|K0nK4T^no_J zukWI+3bZ=Z)0S>Irek1GhfEeQ*TZ-^(baRz_gGw>1JgLT@#wfXz~Ah&v~o=ek`E*t zJ1J8v$g9-Hjg0nibi4xVMRr{WhY>8f`Ogp*!qWN;w;?Jn{AngaD|y>e82mKL^wsOvW_S>Q?QwSw9Xgcsuv;1Np6m~e z*Fd%{AmF`dH-s$mg}_8enz`ZYTi@lloX{9GB=BU&$;+1X4CbfXy_Z6i#U!9VmW-p@5k-o;qfL+(!xB# zAswli%IdKT#L=AzZ<8Y`inLW$0d?@XDm>h{o`n1oY_}%;`s`!0rqH4jCHz7%3<#B zdr`T@lM222L%KLlS_+PimoPsG(>SIxISiVMna%lh6JJ67gr?4ZNF zt+I58&p`csKfTJe@8rId+df_|RGO%g8a-Yl>2+pPt@-77%O90>L}G>fU@OS8@sXl& zJPG^l+tbm@V+td636wb``F@m)u$w4n@QGt~FL6OrplD)&37`+^);M;o4ZYB<)-AUS?Kll_eF8rKQ&JrMK}EG!W~6X4@Z>@nBVPgq ze&wm9V_;hnmLZL&@KV~6xPUr0pU{B2z3Ih|W2R!;jw>S-Cde@zeN5{$yswf?yH ziL%oAbYU5Rgg>~xBEF!q?-?1bm?_jwxs=~vWh#A;Q&5xrwY9?+ZYopm>(6hv;!cFB z^zC35yYDdux<;!=gATcC zpJ4-l3OZ#A*|uDgDZxl@vuRV}hfTc|$}DbO_X0WkxZabnaj`5};@JP;2-q7Y??VLM zk>l#d_E~y$rHEzT$9YOJL-f3qPY7W{%Rp1>a(sh-Eb6oz?SyDRF(y6cCU9t+gN4?b4dy zh6XR??N=MpCx}^|s-==&__4q(4O{&>SftFt2(Vt%>@KtcDa4Sl`M4L)JaiKpQZ!~X z($awUF;fhK;C$6cyqWCjP6nwRYjhGj`!as@xBsV~3{l2=W%u(_2FssX=WsC=V z37hvSNeL3k_udG`tJx7``JB61efCW}GZP^<0$U{PdX3>VFu8&F(Gn+sD$|h#i^{I~ z`5EP{vs-fF3Z6P;6_qGK8(_{7YARDubV9^dGJTmRci`?=R+(i$hk?8&z2S!_fsBS) z@1x#Pw~2HCHwuJzBWpg0@vh;obbhZ#Brfz5X;0|N=MU^ZZuo#o%8DR@wjIz%bV%Q{ zHStT8N=YL$amH8zL17sh8iqe4s35J^1BWUvP2Z@>KMo_wqZcX9zKetioQGPyfas?O zsCNp~Q>n*HEwjqmP2Sh;bbcv`n%li->rBcWpf;FzRMtB%W^74N{cV;1vO`IUVfzay zepsa(QF@!`j?f7CryR4eC92}8l(wu(dIlo%3(r|(Jt^#U@~^eg^-qd-Q`{8E_i4+- zr03gBc6?h;+Yv`b!*^)3!wLNKS_$Jw7tquow<4wpIgEk{v5Wl4IxSYctCnuudQfoEf zE!y%yP60IGGQVwbfBwlNA?DcPckPw!IbdlW%7-13DD;>E@~aHj7c zh*EKPG~KXJF!H@TN$u@g9>l$GxmF1rb4pRe^_~KWPyH8+KUW#qzrHJ*N=o0haWQd= zs6y6|&KRt?cWml+hnR8;wW>WV=*3PGtaC;e=Vcm zB{4kwtc|L(W+I_n(nhyvX?)1#uqEaXTDeRgj&v7tY`BT$5o$R?Fb9u?r|YhzLEKcu zv!Ki!MTq&HtU@L=-i6N|9+Tc^0%sJeTqak!=XXzc8Gcm&xZtB~5w}+~y4M%$nzql= z4fi2D9jJPu-lAQtw`$hduE3`;450i0P` zcQM$Y#V$V>8)=pV?r3Uk9BsF7s(NU9_s}N&D?Zzq*9H5yF zWyY&4R)|HB{mt8Hgd=^kaq(I6mH_@eT=!_oYw-5COF5u&!0Ev=>j*4{%@bfZ8a)j*mk-r+VT7a1A=I%iIAPElGRb;a7$V^)><3!wKmXQFtTtkjjB}; zd;2a8jZz%&@p>4J3M#WLU|g*@WW^fLK{3y2-?D9>B^SlL%(W`eHP0Cg%1QROpCA*3X7v2o%4BxG$ zkhvZT&XxIhMijU_IAOU7_XnHerd1M(Y_AxC0+uJj3`^!f&6(SlT8QnCJHZiQA?PO= zsyNSlhT^`byBo2|(rlW$7}UN9D=i)C4#-u{Qd)i3xqr!tlw}a3M0P6Z9>r9L%IQ+4 zLM-lL$;=h}T7h4XW6jzl0c4_*jfW+!5of-B+*JdM_$xO14J$WAl$V1_oo7KE=-wl$ zAs4H>vtgM>!CH<#n{Zl-gJ6G=rAyX&pQ|?5EaoP`XsqcuxGk75h#-JXnOALa z?*_kCM=MZE?{We2_|2fA33rg&x<0nG^ND7AI=YVerQc|hg`<{PA4pS zeR&VkD8yKDC4_N$0~g8N3`Y>GPW9iq;8FwqW`E!T@5-{$Qoi<)ngTTXI5s%4dXF9D z1Ct$glUKrP1SYE2!)u{EVfHt!!&<&luLj4<@Uz_r+Zj#bAZ=tiBBCnCwZLT^$@%U? zClt3YkF6i!W-RUO@x2|jlImGQDQV0Q*ONjmI)+R9H5HBBv?xlWSP=TDY$35NqmYnS#OTOK2UfI(%cUd9) zDd>pG?!z*ykEkbo{gu_msLtX>nu6XJ03TX!my_OAQviO;Bpu{2Bqh-C5Yrty+Rk@i zREsgM*&oJ54&CQw8tY4Pdi~->#G#u-qK!j2bq0nWr~FKJee0NE5pK^pa@fd z|BBT`lN zD6J7HffnQZr(Oke(4DEWxxGdUgx3xs6$CeVkZsluLk9;jPJ;EWKK^t;Z#-;W&$c=q z=3`#n`UstSlUd&d!K&xMmTxA1{)Y_RWTE*ZvIMTY9w~1 z+?!)QFgS8)Yp&hc$Pn&KiO+C*diZNBX}eSQeztINqYxy|?kobWMGZ($2`J#^b)DOv9hx>xie}d>JkIAtj$a}2E9S^>4I5K{u zps+AX&+J2Le&w3`SPn}w(fu&e#R})ORa`ZAtHGH|rNQE6Hy0wF$v%W#<+hPCg`b?R zK;caENx)jrdj+^dPxND4s!uC;jDg;Vlu^W8#SMeWBa2Db$9A$5J?;l0e;&qs0E>J_7 z9sJDh1jfhKaP`WS17-_YnSutVf3L-F3gmFKA49}`BVTG_5Fdw3?0ErvBsir{IgK=| zN{B%>(Aql-wxyIE;r-~=pn-uy#A}I`E79@j`_c!%$7XL6Jc#_<+>z34ZB%?d?&dAn zhCy|%ShXq_Jue_xD7}w_+FpFXy{?$#0`}!{$;|5FBSuEnU&>#kn%3Bcr!hDfEh=2u zamE2lKl)4g*;yi_otMDEC7>f@Y1xgaDp`Isg_4l>Z>Ba^VNG6zM)D<}ezKyfXte(t z*^A42QZKo^;lBO>d?j(7S-qiAr09+Q_NuZdAnVJkB;U}#%cvI9=}FZQqJMY%)1w)c zM60Dq;o{PQDKO06N&&;oyOvY2U$sVxS1ldXE_*@|Pqrn1i&WBn7$@Kv0{~k%wxvAB zb+zPZ%hBbwKRbxVYgN*INe^-w5qP;L?9rNo&n`ubO2UZxZsXj;m&s5mL@X@>X9`6o zAI|#%`CD%@?mTy8c+Go#doO?R+h=;~GYY;v?0Ex1NLTx{D81j3V{%-jQHu1YAE1$V z&Kv}$FrggaIo7xw1Xtw&+yer@nOOMkf~o8)`jQ9fS2`Vx-n$Xx3haDD!}%%C8XX1f z@@r@hz+|eEZmI=b%kj|11ZsygsUju&@KNlm7gr@(WZ5P+9eOOL^As#-!U;Ik(!}68 zyYUhM(f+mvy<3MJ{jS>$d|Oe+zi?9=6fp>oqc9cR9i?)yB34bsGjDtJV@H)geNZFZ zrXdAjC$bUVpfXDtnJ4)xL|-WAccVugY2H-v^rOD!Oy(*b?bmrv0mON=WiOFiTU*Oh zZF>%T^N_@mg;UNgv3F5p2t4o=XJsyT>74Ia`U1`4fiL+^^%rNlACgP6(u?8g56lTv zWOWZ^eWX=3)-z70WfV9ltg8uwi< z=*?qND}I7D6L%$;xI=pFnBU-O#kscNv#3H>JdPA`>*Z9P-{S^=v+P7y;pyJ}2W?@9 z+r`@DUJs4PkE#6pNb=#o0NT0iPeK`k0!7m2?=LD?TNn^UOy#f4x~9|`zflVTDojCn zS>1n!xF4oL-0ZFVnx)}PEdaRhar6*bGzkhz(4;kXUvESGDnIy9-`?R{GLjyRrR{Za zo?X7Y#{!%HRNs6vA!OwtbC$3YdE9(VUVW5`h#jweaPp{L2-3GJZZihuZ5(JVBlI_5 zN|_b8w{)@vIXqWl^wiV7vv<2_oQwUp`_D;{_?Bg+SgK*+35I>C&WjBFYE&Zh=@DQz zE90-7DOuvqEF7{nW_S=iZkiJUq@BQdpkNSXd7 zz_K)9FM}a^DWc8`>BV~)^4Ff&qm~gt6mK|>Bpvjps)~wd=a|c-J{lPYW&Q5Kk&&k; zdeI42;kVxXe}r#gA*);}c}TS#)G{eUvw(3D=k5k0HHmazOO6X7E2~oK*cMo(N|u7U zq~CaNu|m*T8@__(8ywIa({U_GuQ(#t#hApnBGyXXp|KmDxfsQLHXjZ#)+DiL zYyqb2OFrLcCQPr*H+NZLM5-joJaicc$(HxJX5j^P(tXyc!7!>Du9D?_R{Sm zZ#@R1anw~hBFk!SRE>}J+`#6jdyFZ5pIj`=LO7{LFB2{a0{D*9I?66F)bHMViEQ04 z27*O44V-9ub=Cm3_-9*s<#IAQuF1F?VlDDlxOww_b$3?XNRitfI|P6cg5GVGRvb@B z3VJB%_v3CJlX6uqGBm+iY6W1|_`MwG7N+fAB>lz&(W%gFurmaG^!R~Or2bIKEqeEF zL|nA$iF=XKH4n17JSH5EDm{mWsf_VmKFYx5>?`t?s!t8|g0 zQN8_|DS8v{@s?;CU;&)ya8tC86W{+9>)#g(LV!C7)}-8whL{}2OrH&GllRwiF8_n^ z`=Os?VAs79L44Lp559C?m&tD2FN$ZB*%Y?;6@@K^iRIFeFh8#JOZvBkk3_H}q;1)! zfn#Ccsa$)%zK!x$3zLNFF8qP`Vs5feBIo$E#eE*R*MVG1>iW2X|3sv_%qD2$V|lq2 zC><(xbK+css|TMX>8U53JVo_}71_1vt&8qsvk&^Z*hvT|6Da(zV&5234kpekQK>^9 zQd6eswWB z(^z(w~Sg1FHRO_gXhH)KIbekmLLoAIi%Xv|(?iR8=j?X_TKi=>kR&d8S#>dKsRC zA195l$Xki#uZ;RZHnSAU0KkC{9L0G8Xo^=pbOLV5<`F**Cl}6mNKQ`@>yoQK@TzbL z^HtC{>WCUUp#-)>2Q}hJ4(N!Nh~v0hmv;-_(;Z&E)&^np`NG0tZTP7UYB%o1U51514F#2Bg~x)K^;<~ zlka`!2zB!&1HhpHx#HyLP?6IHK0Y*vhpTGG?g79Q9u{lbQr&niNYN^*Lk!)Ex39!V z=fa*V8#Fx;i^o~8C66CN9k*Jhy5Mu$^RrZrCcpXyJU!XVAWJ}_T?c+I1hk0vR~)oH zxVF-Z0#wRxYI*v@X=mAyJ>c(@c91wF(awW{zN0DVd-i{!@0KxNe;!!ZZ7wZoQMj_` z0J`TCs`WwPd@2rQR>5@s`p{nZG9C9lD5abS^N~79aAGI{S zt*B|JrUxH=rC)4X9rmTJD&#=k;*3$$_-ugYX)(`lo@nu~w;` zj=c#Aj6G)(eA~-plt9Rcxo`tY1T*rflzR8Ug5H4K5tmB&&w_Mm8E&3$A!TBy?$vx3 z`Jn?q`@+DMGZZAQsIoYA8%}_Jmb%BIR`?q7brNZ_<_8$zA;{@5j-Kb8Yr7UtL+!?G zLM#gvxYULovy-Gd|6JHIxk)sD$<=7St9ru-b41>A$kVpIa35wX|G-k$iUO6;ZlCSt zc@9~xKAH}EeXn-xpso-T{VL>f>ZE@>4CWm6}``ZNle)3z%4E9=f4iU z^9K%+%!`aK>t_#IoQE=UpBUq+Amc3wXOOw&Z=-fLoAqt@tf;pr22PXr&xsng+$N?M zt2lH5 zd8ohtVUy+og$YnjcVG&XzlDk$Vr8J>j}O&|bG+&KEwC^zwqf1yLhO3gndTBDM#tt7 ztFFNFVH5YSNqVQ7;7EV zS2mP73h`>&3EH`(eCU1dSRWvD*_)%~@zSoN@AgsQP6;i2uO+cvGG zhq~(X;X7ljsp=(o%~A3Ewh6F)x4Wn*BK4tWXqV)svO}3`dyLHoLZ0K<+|<)@|MaWJ zMNu6~R|M1Lo~JEeIdb6bW%4IJN-O9)|S-VNw9=j^hVfrjv zrT#_G@#RO0tctfgBy!&`U%dDvWWaBNHo0DY_poRE!(Y+(VhS3!;47BPgTd$Zw@EB+ zS1w%ZaB#WgrX>$};%0eXx)i;jCD(f3Awta@Emm6CuCi-c!)t<**wGMD*hitBJ!1gipEQ|Kc-*eLvyZqSbH9}X)|+ovWtrgyl#=M#nlxT zXqZ5@>?pKWl;2k`z$r%@7!)#?%q}AGA$6|(B>!waIEK-2^G{7ph5Ij5^wgV*i=hP_ z;^v(#s@6c^@3bxKAy9k8&rVIPmoE4Nhj(|6j+Gn+yKqbAPTS~Lpl=B8?X3!E4qK#U zcSxSGN77s6jhGT?gHXlX_G?-b>-dNJ^ETsKKZKV6)C`4|mKwazNunX>ihK*tGPC8? zI(xDND({)GRkP^rSufE0aP6foI2ltZ_~zUtGS!9*1kH6xUT6Hm>q6}DgcIkb)ovr& zb#dLLoD`8N`uA%ri-5QZ+@yL!?Y5M`Z-tyjIz`I9>Vfazfaziwu)->yPRLa)i^4wj z5XdZ~K2*>7$!`D_nC|M01fKvgi4@oU>7PJ_ehx)FkWCx&p66S_wPk-Lt#20i1qE%- z2E8@<Zn#RwiUG-1I*`b{-e0{qJs{8zCWPwn~DpvcypyqiL>xy3Pd+Vs!lo65-wL$3h=_ z8o7!0Ow#sO013B&CSnZTaHqGhKc|ZiM5LXcI(AWh2)N-`xt;GT~OXY1b>s z1Re)?K^+5mSdC>Nzrw|?s<8%d$6;+^H?Tyh)(DTz%sy<@XCNFK8X5x2 z23w1Gy87N$kX)d*B*C@8->|csk(En*7&ywKwR5+ZJI1Em;<{a~of*modQaEGzJerUy`0zv0WW- zVLhArO`5WtyoE_P{v6~;WjmzAuiDEOEnX~ypv4qg^M+6X#ja^%{dd17%$9H?v()AWG&MEVumsw^ z1nx^)Tc;HWl815hnK5x37d8sud_7Qgm})s_KS&J=D{>vqAZRA5BJp+iBF+%r73_`A zqNqmdiMc(!F2#KQEX>Rbo0sURJNV|C&%o0bh!7yOa&a>jN$5B`S5D^!tP=}BL)O560k}Z?H75k+_+H%3VzZ>@J@o2vJ_H!ZW9hqCJ(X2 zeGfk1<~6?x;>anPTjvuJf;Pq~7M6g}Pzj5ghX*9ADLc;8()`Dc17q`)D>FH~T+Sx} z=TX8|b`oqj??~|rai?=dQ;!QZ?Qd-CG=k-fZ`&+~P;s>KtwZ$w^4) ze-1<22KGc~%9g^jafG>cPs||Yy8nYynOIdvcJS8H9WeMDgM;T@sz4EZZ-k%8NueuS zYjTfr@OkwQ2ddLm7(oJe>ceE=>E$Kl1d~PBP6vx?lQWZWqW^FTa9!)57W@ofjp^H$ z6wAh?diz_f^j6b-NaB#yaUr8ny$&omb<;Lou7wi2+|e8 zN{R#_MD2d&jAyRh^zu^2ZHlm-jOS;f-!fYf1Uh>J?|L zaQdOK*#o&2yo| zQJqEj>b~&FC*yBw^$KtDAnS>MPfl9PB}oediYa=G4Tn4MrvI@Br>qKk#5pLbUq7zr z-a!pb%KPHZy)JgJ`es|iVTJv)=5!d}{mm((p< zMo{J3^_(5gedHNrXZ=HCa@>a|`q6mTqVf02MDoM`pJeKjc%AZy{7-fNL^{M;m*0nv zN=f;by@oR1FlJO|e?kG`pVRdH7zIjZ#ouC4rqIJY#(#!yO!RA_Cru20t4EPxL%8^e zJN%oma=O&&|Nd3;e)Z~1f5xW)7^<_;KjLI46=q-!xCamdgxz}E$(NPQ7k~{YHo#@6 zyp{Y^1@ga)A{Vpm%mIR{F)3ZUVZ-Gu;pIl{HcwDeA)*gWiPhRFDk><8EVA0~trWNW zhztspT>RYJ+~aQHfu}?vzW`@fl=@gjAUh32f(i$52c%a2C`V?0IWydzLHGc*wGX!+ zzbsPK_TRPU88XAGEVGixd}Ollv+YID5PVW;o3ER7r{2R#Lv{8J1wcegMJUZHABM0Q zI_!6qU%0LAA@4#BwrOM=c8+1<)2733(3#KSIXV-y^H3IU!vtuN!dQvI>3N`D~@=I zxKOT2Xb*8N5Rp4kUS7V({Jy-=4Fvr8EFmPtDPH*~pmBCO!fV?hoJrc3rM@^8d&Y(f!Y7oq+X@_MRRd zNH8r&{sY?kV8okI2m;ARZ%&1U9_&D|49b_hQ~jX#k?W+}6)!nHR0Kc3;zC6H-i8PP zr7cb#a71_L6p^jP^Q_o0{wq;YhyA_eNE{W>~I5rn|5TxkYjvJ|eiX7U=v zV($N3=1}Wo{L+e=?zG(AgMjF=vN5#w~boPd94Q$qg7lQiB;&w+=&p-1f+L4wbi(>V5Tx5YiT6vjpeJdlqR3jRfD@bN>(?UIuGodu-*@EQw)<8|`;YLPl ztoIS@DkbJdH^2{+Ji#53%gP7fGReS`1$Qcnte|D83`Z#%S&Z33wnnvG&viTl5o8^Nb zjy2TlIG9Y{C9<}=j^z@^+{G|+RFQ*7F8-i(wRLn(!}tU8Tmp(eSQPdXtudUX?rX>< zP8>M~me+rDQ&vpDX5^Ed^MqXbpko`T)mlPFAIbjm7#^w3MkyIYkTv9QFf}|In<2H0 z*nKCx<`aW=nRQbvVZMfSNWKMcjeX{`3gBpz6|_6%oad z?erYP!O#AIfl706(snyK6u9gA+xUfrGl1XG%M~1xprwkAniS6cSaCbEm*7+rF^9qA zm@Z5sDB@B!lMs<`a75ugbz|^E1+OzkQ~kSL@|C$Qh9GA+nuCXzcbn7L!x&0R&*te# zPQ>ayU7qm&!v6Z;iAr!wZ>^vJJyLw?ozGs+vz8V7XJV7PdY+)g^1}iBAJ+Wp{{4OS z>z2V@|k1qS{MGhCEWCUFMt4j`x%sLCBC*ljJb}{bNpG+?X2F(YIczJkUynM;KVZ%L}T?-su zMo)a?Uvs~TdIb)AcNnGkpg}NFd>mZo=A;^oW;)nTHmr? zDsXkBXh2+rZkhb806~G)PRYO~!F*UFCo>GDYlMmN^RZ$q3d0fFRZuS6!1<6NU(@*B z3?}n?YN;=s%v8yII2iM1URD-+3(}MNYfir3hYhLkSGvga+SKKL0H9mP zj3USNGmjf!y629McF3E4DT|{=Qd_*-PtbFOgTx9~onlu65mJZz$jKx(YM@jZck;Qx zViQ=q48~5O*22$6qUMQE2KvI zn?!C$kIKV&{WqwWY|eb)M^1#Z|B+XLU0^|UwCs*|tQuYA5O#n5EPG8_T+EA`z*Q1lYUhpYftlry7Y{hz~^j4xv_x!W)q^ zb;-*Ml;#$3cAchU#b80vS>CfHzO$3>xeYY5Kp)wiPw3JJ9|R6!NJ>m>%iSaT+F|4l ze<3zLY!i3UnD4$pr8H;CQ;>aJA@%_BUi%Oxx=|bHD`haXkBm4(xfr@;mra^y&xHdOJL&qwQCb<(asPNaEH2h#8 z8OIn-&lSyiRu>}al!LcM!iJN9 z!J3!=^agDmE_-R4SXg(K!}o!^6%M1R#(RWewbb=K^iv?neZzcOy_WKXtAlU!5r2d6 zUmyCd$Z2d-zDh&FnOoAXUj_!N_bxGwNR|_Qg_da>kuE2th6U4#msAbyhoLRBfY#56 z=yp$=uCMc+9d0TpN81;=)ly3&{O;Q2XDsYgcoZ_`v|9+;&`$i`2hb_rSFQ=Q6w9rq zBhhn9pAyZP6umm(;!97X%n*Hq$b|WV76&Bm1qUy$#MoBleL>fN$KI`x@H&;ttF6-p zYc6{Wf9K`uMb3FU&w9jsgD1m^72;-Co1f}X02-ayeN=?qzb(}xJ<9|wfk%J zbmLUudSMdW8<)Q|5yo6?{=-F~JA9%*pJB~wI(DFKi>T<0m7xIv>$J}o&G}4ZQR5Vo zcBFVaK^#_MEO8G_!N61Im&t_A`p$1q*Wngp3o(w~!n!40NRoMKoU&kANXc|18L>;A zretzdYZL`-dR}U-+sC#@tY+AvVb(1mu$}g3q37QW8oZ+Du#05XM9%#nwcLI1+j8On zdwjK(9k(T8Jg4G20=;je=hJ_9L@7jsz9=Z)x4 z0W;59&;?KYk=BI`u+^|&X>*<+(;3q(CUuks_B0pL- z)CMn@L%(wGamMOKn1CnJKhDcAE?5UOa{ZNx8;uor9(KQM4z*Y1yTMV0+V`rjZ;LIu zy^vv4!g+_O?y>4!7GzghC%-Cq5l5G-n7=AW%$ZoaBF-n^%fS6N-tj^v{9ow|MF|DH z!?okYlZCuv+~ds>j|saaBp8=ozq-}*BPqGLsR{Wo522x}kMd1TC3!HQd*#*{>4LDn zmxnRmzJ9nHXB@P}Y?-(i@cgWhG;;+`sgxN; zLd`HD1H77PUH%1S#N*h@Pa{EM(8TQ?=ub>KGK)AOVD~)z^;_8jhJD#M%BOeaQ zV?@}jnSZ3mU1L>6u!^>}e^>j(Pdu74@>?j`#8!eN-93G)$JTH$pzh+xp`Eu{2)dkr z!q=~NY~K#ml$5IK<#hT-XNYG;$>=*ok^P92)!j3L>NCYllNwd-cjXEL8ynGz14U6W zSWH7n`NXRUE@j>(U9n+vp1j! zATS?(LG|9W=Ap=F2J(w2QDsH0eF}3oP_M|L^TK{m*mo}10Xb!Fo`ih@=KL9HsTjVu z90!8g;DwLU9Ro6&;w2*~K%QYM%_uqy)ZF7~k-vDz)Rf5Li7@4<&}NMK z+0OcoJns=WjzyP=)dHtD3rbcW!9}|3F zw$tue0aq3t;le;c(tOGLnw$svY0K4?c$;XRIj9LD-F`e>*>2PWyGDP%OZ|4(Z0S_Ez2L>|VUM>nxp{t|l8k znD0H^ShsXG3Rz^}eFcxHtn4wE$Ri;kAtJ&WMsjZW^Y%?oBiBE~aW&;33NNgWIH@o? zHWroC8lf3yNk58=yDNfbH^|1JgNKpiz^`UbYl0z-`YDbFz!}fyk!3?XEsy47UaHD- zMId}}s;xx)|KXgtD0_AvbxRG+v`5hCsLoLCiwIa z^zq#6_2X9~mHIiF1?R6G*yvV&b~#7$Cno6`KEqe2b#;B@=csSEw%A9O(Mam>))iOw zluJv^@q2ngWX=+u`%MXa3s=v3sr!BJsamVuW9M0tdVIp7yIXGFX=`1(zP@KPV*UE{ zo9fwEcd}N$tv>befn`!;Y z;HiK7XiUC>colx+d38t;;o*5I6Q2~}ckaURAl<{Mhnn(M7n}`RG$(g$qS1HAdo3-O z968ebDkO`FaW+)Pb!?0|S3u;J!h{(IszQs(Ka*KWR;M_%(PquOBsKb7yXxu+$$5{<5l z51Z*r&Su{^*!BDdYQJxXOha^*pV}#IoYLMk$MP2Snuv{S57QdJs&~|Q#uX#cN5dNp zILmHWylL)}UA@RnaKy*6`b1oRcs0%vD!9Gm!i8s70(mYB-Mf(#K`rImezwqChqQ)a zoc`qHyRvPUMbqcD|Hs!!Hj-JLr{26(H1AucrhTz_Rl|bM+H^892bEqiKXIsf{l0kS z>K8UtDqOQ==Kp{DW>5Bz_C4qwm^D{*2}>AAwB2Kg`;88H0fud=y|W@_iw{dnV{&f< zmu5&q8^iwpr?u;hYHHiMAiW0ZQbH5BfOG;PC3L9~1VQOdsnS~nL|RKid}PJ^SVUv5&L~Xa<|ralF>-4aMt&E3Qy-Sjgse|M>3r zQI{XpsADh)ts4UBI}6{x>m!j%JIuB$6oe56h!o#fMGb&1`d8Y90tj7ULNPYrI%5(c zqu)ipd972uB}QTzA(?_>Bdyb^Zxee{WMTcApbhm|D-%6 zr4@b1(pYqT)bvQl$=tt%{CG0D1mR#W4Qf|&k!2@Cg`qxQNzX5@L5ag2wa)Oh61bUo zBCpELw(#w^vw{C+jFhaVE9-Uf%8)u5v+Bc3aBLPwf@rpUXAf$G!4AD?vU zCsQ!bLUwhu{I)P6+BAz}9pW8*YXAQX0}^1}o@~ha zvW#A6JmbckEV*mCfb8T2FFnT7KH(Y_0k*?BeA-314_otpWM6JnruOn;0wgr5zC%fi zUwp{u?CQTy$x4`wt%>H}xtn+cxg71jlT?S2b zA03Oioz6CvqpBSOliPRu8nNIEvqT03tdGS!$ zC4pON&H(%=alr3vfKd!8%^N$Di2ZH;tuJOzk-qNh$4>IJ_n3ZY!w3UZS1iJ_sY=v5 zvX^qyMPAoXhkXOpQ+$7Xm9VG9*s|F_0O;4H08iG8f!2<&rs|wFc1D(c+h1 zPi^R!7Dl#`j}BwbAG5#<%u|(oUicOrPJxR$Sn~^_g?@Us2QS%whk0@TQE(&yFmONx zCwJ$>Rf9%%-%wO(K%eHAR?7e?Cw)f-MV|XdM5-N#!U9&bTyv+8%+@*csynXAt^tZ8 z&G~}~vQ{#1p8Yf{F3hbNHSo+rw!*H#i}+fox3+P|?wkq0pq58MW6!T=Z>&y!iuL)m z(;GsAN;LCunG_15 zXGh@;tdTh~<1T!LXmhF$x$@$$I{Icsp>dFepXTcBnSz#;cjdqJvPC{&QIEO*j zXBwVK%U}{6-44~*i#puW4-3!_v9xuM7TjvjWodiOF-8VX&VaBa|572Swz-%-FyADJaBrmC7R}GiHfK+NrG`b>I}QHc{^F^$?+)n4nvQ%5Assg5xA!u9zA>co+0mm7q)!rlfHmM(753;h$r%-_4}%B`cx4rXU6Lz&v9yEC5` ziC3F4yJQ>Rm0TVTzs(0~>l{()p1tNl5nGGDv{s(_ah4T*l#tV`s0K&{yJNewz|#Wd zWwR~4nEg@F0Oit`$3GVY~^>J)<{vCp#?txgR^e_5dppf39m-$YL6??8k}c z!Y7)p_HybhYwP*~@<8OlT0y|EhXFW;ADkx$RE!?2Orj6kD1Up)FQdE#DtSG876XmOVv`@nUyh$_ z=@f^|9{U&^`qmSx#%%W5Ra%`FGK1~L2n_A6Z??|0?#Xs19glVSk1vAb zhgE}vJQ?;6o|rR*B3!x>P39FYnOd2zsy-;QEP*!ik?|h01mp;$qUBcO#QQ?;oLpgE@`#2R)NyFw0$E1$yWKvU? zMki6}-l^m?J^29Z20x918!Ye155YVZUAX(Uk>n)1*bt(yr$ar?=h?S!t9XL_Y*KOO zB?UVFm5o(Vvaq&`sc!oJATaxomO&r9VQrzz#= zjCbW&Or4qv?nO?vaoks4Hbfv2xH9}rjH_;Q%im*Jl9DR(PwQo)F9U-F+PS(9rEHFj zM$q*eD7Dx@D5Tt2OnjYJ5EGT=QS0gjrGIi`>jdd-qw1bOG&&|q+1EL2FI1hs+h(TPOP}dJ0 zbC-e*TM|DU9Y|dsuXYhxzjw*hf&sZ8_IWJy<#`44Uty+ne7TPSp|p-ltY`6t@VKgV zWQsW5m31l#CLwRg_DL`4jsPAG*x=3?hi}tX3Ae^BdKwv@$uNi;@>Ehh4lOhgP89Q% zE7OO-%3i&KOe?LR*sg(GuW+UBSDmb9n-7vtC-Rgvs4#cke}9$vd?TABf#efa?~b(q z9_P1_6-6elo(rB`Z2qYX7FQ#Hc-qT`dwqMu8v2 z@~Or!-Rs+|<1aJ|8F3q}@*Vv%8i=d^it3~j{qt{)ALV7v2Vek3E9ILRyR4gd^!YhW zvTA@w>BT4BH})vrQr@JmR~)^#_iy&6JmasBqbl5{k!@Nb5|#QX+f>0A?PDa*kbazw zMbB0`y+^6>oH@eb63kc68tZ<{Z(@d-8W{L+i^F4hz23j$ajF~{4?z0)LHXJoupwX) z2{)~Hyuh+5t}3fr^WcV@g(Mn#2YC;EGnQh9%Y?Bjc)04E>Z zvA=GK4XgsSjW#H#)y95K<%N?^oNa(MRya0OSG2K-f8^6V5Vgu9F=0Q!;fxwUTbV%& zeUb>f)93D8@D7m=Me&he+M4Q+(w2H9bJd$PQ)z-xPkHIqbu``tX=Av2YLhntqbGQu zRxV^-v6>d7b~D5`Qw~kcy~g>2*|#9-XhQYWBuj2=T|ssj1pgE+R7_+6sur^5XVoJ6 z3N&Iwoj!slHfa)jd2R*g`jA=C@4W1-$(Y0#_+TjM|IVBFU;KJ(WV!tV?szc>jen@( z*2x!?oCEw)>?j2zRo_p7c%)5LR7`t9I)9o>dZ46kfFB+1^zZY8A;&1rs|$}zQ45); zRYc?|WIfoL(e_4YznQCcKoxa|4gZ~0bBywy0xP&?F<4bs42!exq?P^l0 z`w54tPwq!Kbbi+hk-!rXenzn;FmlUrQ^!VgMPoR`%rM=9nG+*`hUf%7p)J{QN=oXT zUs~E@Aa}gNqrUTJj8?jN&;v?}q|j@#?Qbtw752t+kS!zP^MUsQa`Mz8cDQaqhLPlh zSc=kHY7=`k&W3kLviw@kZ~)o{?=9hU6BwnqP6`59)RtbCqXW@igh$cP%V7AfO7p;g zWC~}qU5%@PbY8r-Rzx~fqX37pDzi$q?yOof5-wDs7}i5P))G+mrSxR*=(#I(VJX7V zE)K8G8bLE;kVmMl7i1l2h@s8qB5C(VfrvGKiJtkw!=o0E753(`?@9vXl41T*g)0s7 zgLvl6lo2@-6t!2&D}qvbswwn1oibrdwucrJx=_%o#*tRP%4G7>_8`6GzI z(-_E<=&P&IGWI(sSAyf^4Pm6NOAaB(+m@$r0ZX37#)gkLdH7KxnUd62B~M_K9~Un0 zs%dI;?@?{H$O-P2y{h^BwMo{iD137VsWf#(p=j3B>`GAl&$SY>NX6t`nXG^0(NIPY zSUi@xYH`p%d9^x|!(|T-0ex&=+S+tCb&(h>R*K|6U&tG`nm~e7J}`V+ppMKwz}{z2fPuI3 z`teP+kTKxU{~iw}`9b#uqJY{q)1j+9W0LnehU15*KGY_(uIFrsaCV#dpnvpvWkgb$ zDg^e|$&n*mAw2SDT=+V&+Z6-3PJisN_+>!To~cD2-DI6(vE5gimHa5iSMwNE1T08O z&&t)oh|Y_>O*YjrW603zbq!e*8AdSq^=OUb8zrm^( z+RUJ%8x)+QyVibl>5~ZFLx1>#MeMVB%Xx>$`n#sI4!P<;O+Z_>wwCMa)zor}N7vdD zQitH03>3!)+#0o&0Vr;CJ3>TgY$WFn0Gf2(D^b$bjOV1V6}t?Xd!OD9inba{iZXw+ zvw6n%HI`1ObA4tB2-Ebxm_dQ_1Gl{EW~pVI!nohDmv#*wE7kC9SY9*GX{?i#K*x8+ z=X%kyx;DvjiR-mj7Y!J0&+I(|E^(9X!sal}izY_$0k~%@i|#RM)CAHrY~o>V zHFg1j;6Q{f4-OCihUcRcuE~YN=Ri5_7#khp33pWYEdS4Fq~NAoo3Yq2hWq>4pfdT# t|59f{JdoY}eF<}%$@>%7{p;uPdg~xf(DU>ooYyg)ZlsUUtI~0f`#*S?cJ}}P diff --git a/docs/img/RemoveCardFromDecksRef.png b/docs/img/RemoveCardFromDecksRef.png new file mode 100644 index 0000000000000000000000000000000000000000..3f0b990878e8ea6b4d26efb96fcb41182246a69b GIT binary patch literal 37972 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

E=%U(=4M&ot);R}lwwu?`ZJdo9>qYv!< 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 literal 0 HcmV?d00001 diff --git a/docs/img/RemoveTagFromCardRef.png b/docs/img/RemoveTagFromCardRef.png new file mode 100644 index 0000000000000000000000000000000000000000..d0461d23baf3081f4e1909f5f9ba2a3e9b9c6dca GIT binary patch literal 35882 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 CardList : addCard() + return + end + end loop +end loop + +@enduml diff --git a/docs/uml/AddDecksToDecksFoundRef.puml b/docs/uml/AddDecksToDecksFoundRef.puml new file mode 100644 index 0000000000..5dbf52d1e3 --- /dev/null +++ b/docs/uml/AddDecksToDecksFoundRef.puml @@ -0,0 +1,34 @@ +@startuml + + +mainframe sd Add all Decks with decksUUID to decksFound +participant ":ViewCardCommand" as ViewCardCommand +participant ":CardList" as CardList +participant ":CardSelector" as CardSelector +participant ":TagList" as TagList +participant ":DeckList" as DeckList +participant ":Tag" as Tag +participant ":Card" as Card +participant ":Deck" as Deck +participant ":TagUUID" as TagUUID +participant ":DeckUUID" as DeckUUID +participant ":UserInterface" as UserInterface +participant ":CardKeywordParser" as CardKeywordParser + +loop current uuid of tagsUUID != null + + ViewCardCommand -> DeckList : DeckList() + return decksFound + ViewCardCommand -> DeckList : getDecks() + return allDecks + loop current uuid of allDecks != null + ViewCardCommand -> DeckUUID : equals() + return isUUIDEqual + alt isUUIDEqual + ViewCardCommand -> DeckList : addDeck() + return + end + end loop +end loop + +@enduml diff --git a/docs/uml/AddTagsToTagsFoundRef.puml b/docs/uml/AddTagsToTagsFoundRef.puml new file mode 100644 index 0000000000..23b315c60b --- /dev/null +++ b/docs/uml/AddTagsToTagsFoundRef.puml @@ -0,0 +1,37 @@ +@startuml +autoactivate on + + + +mainframe sd Add all Tags with tagsUUID to tagsFound + +participant ":ViewCardCommand" as ViewCardCommand +participant ":CardList" as CardList +participant ":CardSelector" as CardSelector +participant ":TagList" as TagList +participant ":DeckList" as DeckList +participant ":Tag" as Tag +participant ":Card" as Card +participant ":Deck" as Deck +participant ":TagUUID" as TagUUID +participant ":DeckUUID" as DeckUUID +participant ":UserInterface" as UserInterface +participant ":CardKeywordParser" as CardKeywordParser + +loop current uuid of tagsUUID != null + + ViewCardCommand -> TagList : TagList() + return tagsFound + ViewCardCommand -> TagList : getTags() + return allTags + loop current uuid of allTags != null + ViewCardCommand -> TagUUID : equals() + return isUUIDEqual + alt isUUIDEqual + ViewCardCommand -> TagList : addTag() + return + end + end loop +end loop + +@enduml diff --git a/docs/uml/CardUntagSequence.puml b/docs/uml/CardUntagSequence.puml index e514ce11fa..30feff7a7e 100644 --- a/docs/uml/CardUntagSequence.puml +++ b/docs/uml/CardUntagSequence.puml @@ -53,28 +53,37 @@ return tagToRemove RemoveTagFromCardCommand -> RemoveTagFromCardCommand : RemoveTagFromCard(cardAffected, tagToRemove) -opt tagToRemove.isDeckEmpty() -RemoveTagFromCardCommand -> Tag : getDecks() -return decksUUIDArr -loop curr uuid of dekcsUUIDArr != null -RemoveTagFromCardCommand -> DeckList : findDeckFromUUID(deckUUID) -return affectedDeck -RemoveTagFromCardCommand -> Deck : removeCardFromMap(cardAffected) - -end loop -end -opt cardAffected.getUUID() != null -RemoveTagFromCardCommand -> Card : getUUID() -return cardUUID -RemoveTagFromCardCommand -> Tag : removeCard(cardUUID) -return -RemoveTagFromCardCommand -> Tag : getUUID() -return tagUUID -RemoveTagFromCardCommand -> Card : removeTag(tagUUID) -return - -end +ref over RemoveTagFromCardCommand, Tag, DeckList, Deck +Remove affected Cards from Deck +end ref + +'opt tagToRemove.isDeckEmpty() +'RemoveTagFromCardCommand -> Tag : getDecks() +'return decksUUIDArr +'loop curr uuid of decksUUIDArr != null +'RemoveTagFromCardCommand -> DeckList : findDeckFromUUID(deckUUID) +'return affectedDeck +'RemoveTagFromCardCommand -> Deck : removeCardFromMap(cardAffected) +' +'end loop +'end + +ref over RemoveTagFromCardCommand, Tag, Card +Remove Tag from Card and vice versa +end ref + +'opt cardAffected.getUUID() != null +'RemoveTagFromCardCommand -> Card : getUUID() +'return cardUUID +'RemoveTagFromCardCommand -> Tag : removeCard(cardUUID) +'return +'RemoveTagFromCardCommand -> Tag : getUUID() +'return tagUUID +'RemoveTagFromCardCommand -> Card : removeTag(tagUUID) +'return + +'end return RemoveTagFromCardCommand -> UserInterface : printRemoveTagFromCard() diff --git a/docs/uml/CardViewSequence.puml b/docs/uml/CardViewSequence.puml index c9b6aa942c..2be5eb5df5 100644 --- a/docs/uml/CardViewSequence.puml +++ b/docs/uml/CardViewSequence.puml @@ -13,6 +13,7 @@ participant ":Deck" as Deck participant ":TagUUID" as TagUUID participant ":DeckUUID" as DeckUUID participant ":UserInterface" as UserInterface +participant ":CardKeywordParser" as CardKeywordParser Create ViewCardCommand @@ -46,21 +47,25 @@ return decksUUID ViewCardCommand -> ViewCardCommand : findTagsFromTagUUID(tagsUUID) -loop current uuid of tagsUUID != null - - ViewCardCommand -> TagList : TagList() - return tagsFound - ViewCardCommand -> TagList : getTags() - return allTags - loop current uuid of allTags != null - ViewCardCommand -> TagUUID : equals() - return isUUIDEqual - alt isUUIDEqual - ViewCardCommand -> TagList : addTag() - return - end - end loop -end loop +ref over ViewCardCommand, TagList, TagUUID +Add all Tags with tagsUUID to tagsFound +end ref + +'loop current uuid of tagsUUID != null +' +' ViewCardCommand -> TagList : TagList() +' return tagsFound +' ViewCardCommand -> TagList : getTags() +' return allTags +' loop current uuid of allTags != null +' ViewCardCommand -> TagUUID : equals() +' return isUUIDEqual +' alt isUUIDEqual +' ViewCardCommand -> TagList : addTag() +' return +' end +' end loop +'end loop return tagsFound ViewCardCommand -> UserInterface : printTags(tagsFound) @@ -69,21 +74,10 @@ return ViewCardCommand -> ViewCardCommand : findDecksFromDeckUUID(decksUUID) -loop current uuid of tagsUUID != null - - ViewCardCommand -> DeckList : DeckList() - return decksFound - ViewCardCommand -> DeckList : getDecks() - return allDecks - loop current uuid of allDecks != null - ViewCardCommand -> DeckUUID : equals() - return isUUIDEqual - alt isUUIDEqual - ViewCardCommand -> DeckList : addDeck() - return - end - end loop -end loop +ref over ViewCardCommand, DeckUUID, DeckList +Add all Decks with decksUUID to decksFound +end ref + return decksFound ViewCardCommand -> UserInterface : printDecks(decksFound) diff --git a/docs/uml/ListCardsUnderTag.puml b/docs/uml/ListCardsUnderTag.puml index 951b75be16..01e7682498 100644 --- a/docs/uml/ListCardsUnderTag.puml +++ b/docs/uml/ListCardsUnderTag.puml @@ -1,7 +1,7 @@ @startuml autoactivate on -participant ":ListCardsUnderTagCommand" as ListCardsUnderTagCommand +participant ":ListCardsInTagCommand" as ListCardsInTagCommand participant ":TagList" as TagList participant ":CardList" as CardList participant ":CardSelector" as CardSelector @@ -11,38 +11,43 @@ participant ":DeckList" as DeckList participant ":Tag" as Tag participant ":UserInterface" as UserInterface +participant ":TagKeywordParser" as TagKeywordParser -Create ListCardsUnderTagCommand -TagKeywordParser -> ListCardsUnderTagCommand : ListCardsUnderTagCommand() -activate ListCardsUnderTagCommand +Create ListCardsInTagCommand +TagKeywordParser -> ListCardsInTagCommand : ListCardsInTagCommand() +activate ListCardsInTagCommand Create TagSelector -ListCardsUnderTagCommand -> TagSelector : TagSelector() +ListCardsInTagCommand -> TagSelector : TagSelector() return -ListCardsUnderTagCommand -> ListCardsUnderTagCommand: execute() -ListCardsUnderTagCommand -> TagList : findTag(TagSelector) +ListCardsInTagCommand -> ListCardsInTagCommand: execute() +ListCardsInTagCommand -> TagList : findTag(TagSelector) return foundTag -ListCardsUnderTagCommand -> ListCardsUnderTagCommand : findCardsUnderTag(foundTag) -ListCardsUnderTagCommand -> Tag : getCardsUUID() +ListCardsInTagCommand -> ListCardsInTagCommand : findCardsUnderTag(foundTag) +ListCardsInTagCommand -> Tag : getCardsUUID() return cardsUUID -loop curr UUID of all Cards != null - loop curr UUID of cardsUUID != null - alt curr UUID of all Cards == curr UUID of cardsUUID - ListCardsUnderTagCommand -> CardList : addCard() - return - end - end loop -end loop +ref over ListCardsInTagCommand, CardList +Add all Card with cardsUUID to foundCardList +end ref + +'loop curr UUID of all Cards != null +' loop curr UUID of cardsUUID != null +' alt curr UUID of all Cards == curr UUID of cardsUUID +' ListCardsInTagCommand -> CardList : addCard() +' return +' end +' end loop +'end loop return foundCardList -ListCardsUnderTagCommand -> UserInterface : printCardList(foundCardList) +ListCardsInTagCommand -> UserInterface : printCardList(foundCardList) return @enduml diff --git a/docs/uml/RemoveCardFromDecksRef.puml b/docs/uml/RemoveCardFromDecksRef.puml new file mode 100644 index 0000000000..e735409294 --- /dev/null +++ b/docs/uml/RemoveCardFromDecksRef.puml @@ -0,0 +1,32 @@ + +@startuml +autoactivate on + +mainframe sd Remove affected Cards from Deck + +participant ":RemoveTagFromCardCommand" as RemoveTagFromCardCommand +participant ":TagList" as TagList +participant ":CardList" as CardList +participant ":CardSelector" as CardSelector +participant ":TagSelector" as TagSelector +participant ":TagList" as TagList +participant ":DeckList" as DeckList +participant ":Tag" as Tag +participant ":Card" as Card +participant ":Deck" as Deck +participant ":UserInterface" as UserInterface +participant ":CardKeywordParser" as CardKeywordParser + + +opt tagToRemove.isDeckEmpty() +RemoveTagFromCardCommand -> Tag : getDecks() +return decksUUIDArr +loop curr uuid of decksUUIDArr != null +RemoveTagFromCardCommand -> DeckList : findDeckFromUUID(deckUUID) +return affectedDeck +RemoveTagFromCardCommand -> Deck : removeCardFromMap(cardAffected) + +end loop +end + +@enduml diff --git a/docs/uml/RemoveTagFromCardRef.puml b/docs/uml/RemoveTagFromCardRef.puml new file mode 100644 index 0000000000..3d931c2282 --- /dev/null +++ b/docs/uml/RemoveTagFromCardRef.puml @@ -0,0 +1,30 @@ +@startuml +autoactivate on + +mainframe sd Remove Tag from Card and vice versa + +participant ":RemoveTagFromCardCommand" as RemoveTagFromCardCommand +participant ":TagList" as TagList +participant ":CardList" as CardList +participant ":CardSelector" as CardSelector +participant ":TagSelector" as TagSelector +participant ":TagList" as TagList +participant ":DeckList" as DeckList +participant ":Tag" as Tag +participant ":Card" as Card +participant ":Deck" as Deck +participant ":UserInterface" as UserInterface +participant ":CardKeywordParser" as CardKeywordParser + +opt cardAffected.getUUID() != null +RemoveTagFromCardCommand -> Card : getUUID() +return cardUUID +RemoveTagFromCardCommand -> Tag : removeCard(cardUUID) +return +RemoveTagFromCardCommand -> Tag : getUUID() +return tagUUID +RemoveTagFromCardCommand -> Card : removeTag(tagUUID) +return + +end +@enduml From 2c80c8f0689904ca1d2975eee00d2722fd4369dc Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 01:15:47 +0800 Subject: [PATCH 243/311] docs: fix UG --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 2527b8c3f8..631c67c395 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -564,7 +564,7 @@ Your file will be loaded the next time you run Inka! | **Command** | **Format** | |-------------------------------|-------------------------------------------------------------------------------------| -| Create a `Card` | `card add -q QUESTION -a ANSWER` | +| Create a `Card` | `card add -q {question} -a {answer}` | | Create a `Tag` | `card tag -c {cardUUID} -t {tag_name}` | | Create a `Deck` | `card deck -c {cardUUID} -d {deck_name}` OR `card deck -t {tagUUID} -d {deckName}` | | Add a `Card` to a `Deck` | `card deck -c {cardUUID} -d {deckName}` OR `card deck -i {cardIndex} -d {deckName}` | From e849b1a0523ac2d51f3c09c0d2059be394ea7452 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 01:25:06 +0800 Subject: [PATCH 244/311] docs: fix missing return in png --- docs/img/RemoveCardFromDecksRef.png | Bin 37972 -> 38676 bytes docs/uml/RemoveCardFromDecksRef.puml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/img/RemoveCardFromDecksRef.png b/docs/img/RemoveCardFromDecksRef.png index 3f0b990878e8ea6b4d26efb96fcb41182246a69b..30f0a4b5692487eb65cec7249abeda37ee181ab4 100644 GIT binary patch delta 13973 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 DeckList : findDeckFromUUID(deckUUID) return affectedDeck RemoveTagFromCardCommand -> Deck : removeCardFromMap(cardAffected) - +return end loop end From 4a419b70fa185cbfffd41c9af42dca1c5ea2f7eb Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 01:39:39 +0800 Subject: [PATCH 245/311] docs : fix class diagrams for tagList and cardList --- docs/img/CardListClass.svg | 2 +- docs/img/TagListClass.svg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/img/CardListClass.svg b/docs/img/CardListClass.svg index b91238b151..1af3a0c9a4 100644 --- a/docs/img/CardListClass.svg +++ b/docs/img/CardListClass.svg @@ -1,4 +1,4 @@ -CardList
+ getCards() : List<Card>
+ addCard(card : Card) 
+ findCard(cardSelector: CardSelector) : Card
+ findCardFromUUID(cardUUID : CardUUID) : Card
+ delete(cardSelector: CardSelector) 
+ delete(index : int)
+ getCards() : List<Card>...
InkaUUIDCardUUIDCard
cards
cards
*
*
TagUUID
TagUUID
DeckUUID
DeckUUID
uuid
uuid
tags
tags
1
1
*
*
*
*
decks
decks
Text is not SVG - cannot display
\ No newline at end of file +CardList
+ getCards() : List<Card>
+ addCard(card : Card) 
+ findCard(cardSelector: CardSelector) : Card
+ findCardFromUUID(cardUUID : CardUUID) : Card
+ delete(cardSelector: CardSelector) 
+ delete(index : int)
+ isEmpty() : Boolean
+ size() : int
+ get(id : int) : Card
+ getCards() : List<Card>...
InkaUUIDCardUUIDCard
cards
cards
*
*
TagUUID
TagUUID
DeckUUID
DeckUUID
uuid
uuid
tags
tags
1
1
*
*
*
*
decks
decks
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/img/TagListClass.svg b/docs/img/TagListClass.svg index d9311312c7..82b4213972 100644 --- a/docs/img/TagListClass.svg +++ b/docs/img/TagListClass.svg @@ -1,4 +1,4 @@ -TagList
+ getTags() : List<Tag>
+ addTag(tag : Tag) 
+ findTagFromName(tagName : String) : Tag
+ findTagFromUUID(tagUUID : TagUUID) : Tag
+ deleteTagByUUID(tagUUID: TagUUID) : Boolean
+ getTags() : List<Tag>...
InkaUUIDTagUUIDTag
tags
tags
*
*
CardUUID
CardUUID
DeckUUID
DeckUUID
uuid
uuid
cards
cards
1
1
*
*
*
*
decks
decks
Text is not SVG - cannot display
\ No newline at end of file +TagList
+ getTags() : List<Tag>
+ addTag(tag : Tag) 
+ findTagFromName(tagName : String) : Tag
+ findTagFromUUID(tagUUID : TagUUID) : Tag
+ delete(id : int)
+ delete(tagSelector : TagSelector)
+ isEmpty() : Boolean
+ size() : int
+ get(id : int) : Tag
+ getTags() : List<Tag>...
InkaUUIDTagUUIDTag
tags
tags
*
*
CardUUID
CardUUID
DeckUUID
DeckUUID
uuid
uuid
cards
cards
1
1
*
*
*
*
decks
decks
Text is not SVG - cannot display
\ No newline at end of file From 711c31aaf3b51ae58230d6862ff54e6e8b5e1b66 Mon Sep 17 00:00:00 2001 From: Akhil Date: Mon, 10 Apr 2023 01:42:00 +0800 Subject: [PATCH 246/311] feat: DeckList feature resolved, deck feature has been started --- docs/DeveloperGuide.md | 35 +- docs/img/DeckListFinal.svg | 3631 +++++++++++++++++++++++++++++ src/main/java/model/DeckList.java | 3 - 3 files changed, 3664 insertions(+), 5 deletions(-) create mode 100644 docs/img/DeckListFinal.svg diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index bf7086f7ac..51bd9b9a10 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -9,11 +9,12 @@ - [Storage Component](#storage-component) - [CardList Component](#cardlist-component) - [TagList Component](#taglist-component) + - [DeckList Component](#decklist-component) - [Implementation](#implementation) - [card feature](#card-feature) - [tag feature](#tag-feature) - - [[Proposed] deck feature](#deck-feature) + - [deck feature](#deck-feature) - [Appendix: Requirements](#appendix-requirements) - [Product scope](#product-scope) @@ -49,6 +50,7 @@ include links to the original source as well} - [Storage Component](#storage-component) - [CardList Component](#cardlist-component) - [TagList Component](#taglist-component) +- [DeckList_Component](#decklist-component) ### Architecture @@ -130,12 +132,24 @@ share the same methods and implementations. The following describes the class diagram for TagList Component : ![TagList Class Diagram](img/TagListClass.svg) +### DeckList Component + +API: `DeckList.java` + +Inka's DeckList Component stores a list fo `Deck` as decks. Each `Deck` contains its own `UUID`, which is auto generated +in the constructor of `Deck` as well as the tags and cards that is associated with, which are stored in the form of +`CardUUID`, `TagUUID`. As mentioned previously, `CardUUID`, `TagUUID` and `DeckUUID` inherit from `InkaUUID`. + +The following describes the class diagram for the DeckList Component : + +![DeckList_Class_Diagram](img/DeckListFinal.svg) + ## Implementation - [card feature](#card-feature) - [tag feature](#tag-feature) - [export feature](#export-feature) -- [[Proposed] deck feature](#deck-feature) +- [deck feature](#deck-feature) ### Card Feature @@ -359,6 +373,23 @@ The sequence diagram below shows how this feature works: ### Deck Feature +The Deck Feature currently supports the following functionalities : + +- add a `Deck` to a `Card` +- add a `Deck` to a `Tag` +- delete a `Deck` from the `DeckList` +- delete a `Card` from a `Deck` +- delete a `Tag` from a `Deck` +- list all the `Deck` in the `DeckList` +- list all the `Card` under a `Deck` +- list all the `Tag` under a `Deck` +- let the user cycle through all the `Card` in the `Deck` +- rename the `Deck` + + +This guide will show two of the more complex implementation of the tag features, other tag-related features will be +similar : + --- ## Appendix: Requirements diff --git a/docs/img/DeckListFinal.svg b/docs/img/DeckListFinal.svg new file mode 100644 index 0000000000..c99816b829 --- /dev/null +++ b/docs/img/DeckListFinal.svg @@ -0,0 +1,3631 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/main/java/model/DeckList.java b/src/main/java/model/DeckList.java index 10c53fd2e4..3330cd97c6 100644 --- a/src/main/java/model/DeckList.java +++ b/src/main/java/model/DeckList.java @@ -22,9 +22,6 @@ public void addDeck(Deck deck) { this.deckList.add(deck); } - public boolean deleteDeckByUUID(DeckUUID deckUUID) { - return deckList.removeIf(deck -> (deck.getDeckUUID().equals(deckUUID.uuid))); - } public boolean isEmpty() { return deckList.isEmpty(); From b45133a1c00ac1a1378bc46c2f1b43ff899ac836 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 03:33:56 +0800 Subject: [PATCH 247/311] update DG --- docs/DeveloperGuide.md | 40 ++++++++++++ docs/img/LoadSequence.PNG | Bin 0 -> 51603 bytes docs/img/SaveSequence.PNG | Bin 0 -> 45287 bytes docs/img/StorageClass.svg | 4 ++ docs/uml/LoadSequence.puml | 74 +++++++++++++++++++++++ docs/uml/SaveSequence.puml | 52 ++++++++++++++++ src/main/java/utils/storage/Storage.java | 4 -- 7 files changed, 170 insertions(+), 4 deletions(-) create mode 100644 docs/img/LoadSequence.PNG create mode 100644 docs/img/SaveSequence.PNG create mode 100644 docs/img/StorageClass.svg create mode 100644 docs/uml/LoadSequence.puml create mode 100644 docs/uml/SaveSequence.puml diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 1a38fc0290..3a81b9502a 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -104,6 +104,18 @@ The following is the sequence diagram for parsing `card add -q QN -a ANS`: API: Storage.java + +Inka's storage functions operate in the `JsonStorage` class that extends the `Storage` class, that implements the `IDataStorage` interface. +The methods `load()` and `save()` read and write to the filesystem respectively. +This also serves to implement the [export feature](#export-feature) . +It uses a `Memory` object as an intermediary to contain app data during serialization and deserialization. +It uses methods contained within the classes `JsonToMemory` and `MemoryToJson` to deserialize and serialize app save data respectively. + +![Storage Class Diagram](img/StorageClass.svg) + + + + ### CardList Component API: CardList.java @@ -298,6 +310,34 @@ The implementation of the `tag list {-t {tagName} | -i {tagIndex}}` The sequence diagram below shows how this feature works: ![List Cards under Tag](img/ListCardsUnderTagSequence.png) +### Export Feature +The implementation of the Export feature is split into [saving](#save) and [loading](#load) + + +### Save +Saving is implemented with `save()` + +If the user the command `export` or exiting the app with `bye`, the app will save their data to both a file, `savedata.json` and a backup file, `backup.json`. It does so by calling save() on both the file and the backup file. +1. All data is compiled into a `Memory` object. +2. Memory is serialized into a Json Format using the method `convert()` in `MemoryToJson` that returns a `JsonObject`. +3. The Json is written into the filesystem. + +The sequence diagram below illustrates this feature: +![export feature](img/SaveSequence.png) + + +### Load +Loading is implemented with `load()` + +`load()` is called by inka on app startup to read a file `savedata.json` in the directory of the jar file. If the file is corrupted, `load()` is called to read a file `backup.json` instead. +1. The file is read and parsed as a Json using `Gsonbuilder`, being converted into a `JsonObject`. +2. The `JsonObject` is deserialized into a `Memory` object using the `convert()` method in `JsonToMemory`. +3. The memory object is returned to be read from by Inka. + +The sequence diagram below illustrates this feature: +![export feature](img/LoadSequence.png) + + ### Deck Feature --- diff --git a/docs/img/LoadSequence.PNG b/docs/img/LoadSequence.PNG new file mode 100644 index 0000000000000000000000000000000000000000..da7f682052698a80a5defdfc6bccdbdda7c192df GIT binary patch literal 51603 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 V9FP7DHevyqnX!ct$>6W({{gp4Y&ZY_ literal 0 HcmV?d00001 diff --git a/docs/img/SaveSequence.PNG b/docs/img/SaveSequence.PNG new file mode 100644 index 0000000000000000000000000000000000000000..0d6a35e68ad2e8fab4788e8be515695f46bfc528 GIT binary patch literal 45287 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 C+p$yt literal 0 HcmV?d00001 diff --git a/docs/img/StorageClass.svg b/docs/img/StorageClass.svg new file mode 100644 index 0000000000..1b825c055a --- /dev/null +++ b/docs/img/StorageClass.svg @@ -0,0 +1,4 @@ + + + +StoragesaveFile: File+saveFileExists(): Boolean<<interface>>IDataStorage+save()+load(): Memory
Extends
Extends
JsonStoragebackupFile: FilegsonBuilder: GsonBuilder+loadBackup()
Use
Use
JsonToMemory+convert()
Use
Use
MemoryToJson+convert()MemorytagList: TagListdeckList: DeckListcardList: CardList+getCardList(): CardList+getDeckList(): DeckList+getTagList(): TagList+setCardList()+setDeckList()+setTagList()
Use
Use
Use
Use
Use
Use
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/uml/LoadSequence.puml b/docs/uml/LoadSequence.puml new file mode 100644 index 0000000000..d01498b81e --- /dev/null +++ b/docs/uml/LoadSequence.puml @@ -0,0 +1,74 @@ +@startuml + + +participant "JsonStorage" as JsonStorage +participant ":load" as load + +participant "JsonObject:saveDataObject" as saveDataObject +participant GsonBuilder +participant JsonElement +participant "JsonToMemory" as jtm + + +create load +JsonStorage -> load : load() +activate load + + +load -> GsonBuilder : create().fromJson() +activate GsonBuilder +create JsonElement + +GsonBuilder -> JsonElement +activate JsonElement +create saveDataObject +deactivate GsonBuilder +JsonElement -> saveDataObject : getAsJsonObject() +deactivate JsonElement +activate saveDataObject +saveDataObject --> load +deactivate saveDataObject + +alt valid save file + +load -> jtm :JsonToMemory.convert(saveDataObject) +activate jtm + + + +jtm -> jtm++ :getJsonCardList() +return +jtm -> jtm++ :getJsonTagList() +return +jtm -> jtm++ :getJsonDeckList() +return + +create memory +jtm -> memory +deactivate jtm +activate memory + memory -> load +deactivate memory + +else benis + + + +load --> JsonStorage + +deactivate load + + + + + + +participant "Memory:memory" as memory +<-- JsonStorage + +note right : memory object returned + + + + +@enduml diff --git a/docs/uml/SaveSequence.puml b/docs/uml/SaveSequence.puml new file mode 100644 index 0000000000..9d81af9235 --- /dev/null +++ b/docs/uml/SaveSequence.puml @@ -0,0 +1,52 @@ +@startuml + +participant "JsonStorage" as JsonStorage +participant ":save" as save + +participant "Memory:memory" as memory +participant "MemoryToJson" as MemoryToJson + + + + + +create save +JsonStorage -> save : save(cardList, tagList, deckList) + +activate save +create memory +save -> memory : Memory(cardList, tagList, deckList) +activate memory +memory --> save +deactivate memory + +save -> "MemoryToJson" :MemoryToJson.convert(memory); +activate "MemoryToJson" + + + +"MemoryToJson" -> "MemoryToJson" ++ : convert() + +"MemoryToJson" -> "MemoryToJson" ++: cardListToJson + +return +"MemoryToJson" -> "MemoryToJson" ++: tagListToJson +return +"MemoryToJson" -> "MemoryToJson" ++: deckListToJson +return +return + + +"MemoryToJson" --> save +note left : savedata converted to json + +deactivate "MemoryToJson" + + + +save -> JsonStorage : saveDataToFile() +note right : data written to filesystem as json + + +deactivate save +@enduml diff --git a/src/main/java/utils/storage/Storage.java b/src/main/java/utils/storage/Storage.java index b683d737be..6f530219e5 100644 --- a/src/main/java/utils/storage/Storage.java +++ b/src/main/java/utils/storage/Storage.java @@ -1,7 +1,6 @@ package utils.storage; import java.io.File; -import java.io.IOException; public abstract class Storage implements IDataStorage { @@ -15,7 +14,4 @@ public boolean saveFileExists() { return saveFile.exists() && saveFile.isFile(); } - public void createSaveFile() throws IOException { - saveFile.createNewFile(); - } } From 4d3f346389c73ca45d3ebdd90e4df68062925bed Mon Sep 17 00:00:00 2001 From: Akhil Date: Mon, 10 Apr 2023 06:35:58 +0800 Subject: [PATCH 248/311] feat: DeckList and Deck Feature Added into the DG, UG Command List settled --- .savedata_backup.json | 42 +--- docs/DeveloperGuide.md | 105 +++++++++- docs/UserGuide.md | 185 ++++++++++++++---- docs/img/AddCardToDeck.png | Bin 0 -> 65433 bytes docs/img/AddCardToDeckRef.png | Bin 0 -> 37311 bytes docs/img/ListItemDeckFinal.png | Bin 0 -> 56476 bytes docs/uml/AddCardToDeck.puml | 66 +++++++ docs/uml/ListItemsDeck.puml | 53 +++++ savedata.json | 39 +--- .../utils/command/AddCardToDeckCommand.java | 18 +- 10 files changed, 389 insertions(+), 119 deletions(-) create mode 100644 docs/img/AddCardToDeck.png create mode 100644 docs/img/AddCardToDeckRef.png create mode 100644 docs/img/ListItemDeckFinal.png create mode 100644 docs/uml/AddCardToDeck.puml create mode 100644 docs/uml/ListItemsDeck.puml diff --git a/.savedata_backup.json b/.savedata_backup.json index 3e3d8d639a..1d5afd6385 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -1,26 +1,5 @@ { "decks": [ - { - "deckName": "deck1", - "deckUUID": { - "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" - }, - "cardsSet": [], - "cardUUIDIntegerHashMap": {}, - "cards": [ - { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" - } - ], - "tags": [ - { - "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" - }, - { - "uuid": "f0721ed3-f357-4a6d-9d35-cd436ec5d280" - } - ] - }, { "deckName": "decktag", "deckUUID": { @@ -137,10 +116,7 @@ "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } ], - "cardUUIDIntegerHashMap": { - "619c689d-395a-4bb8-ab00-6ae9972bb929": 1, - "1ddd9a67-f56c-4914-99c0-2f90c580f0e9": 1 - }, + "cardUUIDIntegerHashMap": {}, "cards": [ { "uuid": "924119c1-a807-4df2-b311-080be9ee8522" @@ -167,11 +143,7 @@ "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" } ], - "decks": [ - { - "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" - } - ] + "decks": [] }, { "uuid": { @@ -268,7 +240,6 @@ } ], "decks": [] - }, { "uuid": { @@ -281,7 +252,6 @@ } ], "decks": [] - } ], "cards": [ @@ -314,11 +284,7 @@ "uuid": "e58cb988-30bf-48a8-b95e-abcd3b3bc5b6" } ], - "decks": [ - { - "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" - } - ] + "decks": [] }, { "uuid": { @@ -402,13 +368,11 @@ "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" } ], - "decks": [ { "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" } ] - } ] } \ No newline at end of file diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 1305edbd10..ac658b8aa4 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -406,8 +406,8 @@ Reference Frames : The Deck Feature currently supports the following functionalities : -- add a `Deck` to a `Card` -- add a `Deck` to a `Tag` +- add a `Card` to a `Deck` +- add a `Tag` to a `Deck` - delete a `Deck` from the `DeckList` - delete a `Card` from a `Deck` - delete a `Tag` from a `Deck` @@ -421,6 +421,107 @@ The Deck Feature currently supports the following functionalities : This guide will show two of the more complex implementation of the tag features, other tag-related features will be similar : +#### Add Card to the Deck + +This is the implementation of adding a card to the deck in the following format +`card deck {-i INDEX_NUMBER | -c CARDUUID } -d {DECK_NAME}`. This command adds the card to a certain deck, if the +deck already exists, if it doesn't. then a new deck is created and the card is added to it. The points below roughly +elucidate what happens internally when this command is run: + +- When a user enters the command above, the input is passed on to the `Parser` class, which calls its method + `Parser::parseCommand()`. + + +- Upon detecting the `card` keyword, the input is passed to the + `CardKeywordParser::parseTokens()` method. + + +- Based on this, the method returns a call to the method + `CardKeywordParser::handleAction()` which eventually leads to the `CardKeywordParser::handleDeck` method due to the + presence of the keyword `deck` in the input. + + +- This method returns the constructor + `AddCardToDeckCommand::AddCardToDeckCommand(deckName, cardSelector)`. + + +- This leads to the triggering of the `AddCardToDeckCommand::execute()` method, which then internally calls the +`AddCardToDeckCommand::addCardToDeck()`, only after the card which needs to be added to the deck is identified by the +`CardList::findCard(cardSelector)` method. + + +- Next, the deck to which the card must be added is identified by using the `DeckList::findDeckFromName(deckName)`. The +`cardUUID` of the card which needs to be added to the deck is obtained via `Card::getUuid()`. + + +- Subsequently, we then check to see if the deck to which the card must be added to is null or not. If it null it means +that the deck was never initialized to begin with. In order to initialize it, we first print a message tp the user +using `UserInterface::printDeckCreationSuccess()`, followed by new `Deck` object creation using its constructor +`Deck::deck(deckName, cardToAddUUID)`. Next, the card is added to the `HashSet` of the `Deck` object using +`Deck::addCardToSet(cardToAddUUID)` and the `Deck` object is added to the `deckList` by `DeckList::addDeck()`. + + +- If the deck to which the card must be added is not null, then we simply add the card to the `Deck` object's +`HashSet` and `ArrayList`. **The `HashSet` is an aggregation of all the cards in the `Deck` object, whereas the +`ArrayList` only contains `CardUUID` which were added separately to the `Deck`**. + + +- Lastly, the `DeckUUID` is added to the `Card` object as well, this is to enable better deletion and adding +algorithms. + +The sequence diagram is as such: +![Add Cards to Deck](img/AddCardToDeck.png) + +Here is the reference frame that has been abstracted out: +![Add Cards to Deck Reference Frame](img/AddCardToDeckRef.png) + +#### List Cards and Tags under a Deck + +This is the implementation of `deck list -d {DECK_NAME}`. The command lists the individual cards and tags under +the `Deck` object. + +- When a user enters the command above, the input is passed on to the `Parser` class, which calls its method +`Parser::parseCommand()`. + + +- Upon detecting the `deck` keyword, the input is passed to the +`DeckKeywordParser::parseTokens()` method. + + +- Based on this, the method returns a call to the method +`DeckKeywordParser::handleAction()` which eventually leads to the `DeckKeywordParser::handleList` method due to the +presence of the keyword `list` in the input. + + +- This method returns the constructor +`ListItemsDeckCommand::ListItemsDeckCommand()` due to the presence of the `-d` flag. + + +- Now, the `ListItemsDeckCommand::execute()` triggers the execution of the `ListItemsDeckCommand:: +findCardsUnderDeck(cardList, deckList)`. + + +- The sole purpose of this method is to gather a `CardList` of all cards that +are under the `Deck` **directly**, this does not include the cards which are under the deck via tags. + + +- In order to +accomplish this, the method uses `DeckList::findDeckFromName(deckName)` to obtain the revelant deck and +`Deck::getCardsUUID` to obtain an `ArrayList` of the `CardUUIDs` under the deck. Next, a perusal of the `CardList` is +done in order to match the `CardUUId` with the relevant `Card`, if matches are found, they are added to the +`foundCardList`. + + +- Next, the list of cards is printed using the `UserInterface::printCardList(foundCardList)`. + +A similar process is done to obtain the `TagList` containing the list of tags under the deck and is printed, it can be +observed in the sequence diagram below: + +![List Items under a Deck](img/ListItemDeckFinal.png) + +The reference frames provided are very similar to the ones provided above in the +[UnTag Cards section](#list-cards-under-a-tag) + --- ## Appendix: Requirements diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 631c67c395..577bf44b62 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -6,6 +6,35 @@ Inka is a CLI-based software that allows users to add Cards containing questions and put groups of cards into a deck. Inka aims to help students revise for their exam by providing a flashcard-like experience. +## Table of Contents +Use the hyperlinks for ease of access! + +- [Quick Start](#quick-start) + - [Use Case](#use-case) +- [Usage of Flags](#usage-of-flags) +- [Features](#features) + - [Get Help Manual](#get-help-manual-) + - [Adding a Card](#adding-a-card) + - [Listing all the cards](#listing-all-cards-) + - [Deleting a card](#deleting-a-card-) + - [Tagging a Card](#tagging-a-card-) + - [Removing a tag from a card](#removing-a-tag-from-a-card-) + - [Putting a card into a deck](#putting-a-card-into-a-deck-) + - [Viewing a card](#viewing-a-card-) + - [Editing a tag](#editing-a-tag-) + - [Deleting a tag](#deleting-a-card-) + - [List all tags](#list-all-tags--tag-list--t-tagname---x-tagindex) + - [Put all cards under a tag into a deck](#put-all-cards-under-a-tag-into-a-deck) + - [Edit a Deck](#edit-a-deck-deck-edit--o-olddeckname--n-newdeckname) + - [Delete a card/tag from deck](#delete-a-cardtag-from-deck-deck-delete--d-deckname--c-carduuid---t-taguuid) + - [List all decks](#list-all-decks-deck-list) + - [List all cards and tags under deck](#list-all-cards-and-tags-under-deck--deck-list--d-deckname) + - [Run the deck](#run-the-deck--deck-run--d-deckname) + - [Exit the Program](#exit-the-program-) +- [FAQ](#faq) +- [Command Summary](#command-summary) + + ## Quick Start 1. Ensure that you have Java 11 or above installed. @@ -139,6 +168,7 @@ can be viewed using the `card view` command below. That's a good question for revision later! You now have 4 questions in the bank. ``` +### Editing a card : ### Listing all cards : @@ -390,9 +420,9 @@ tag either through its tag name or tag index ***Lists of flags (in any order)*** : -- [OPTIONAL] `-t` the name of the tag to be deleted, ***(no whitespaces allowed)***, ***must not*** exceed 50 +- [OPTIONAL] `-t` the name of the tag, ***(no whitespaces allowed)***, ***must not*** exceed 50 characters -- [OPTIONAL] `-x` the index of the tag to be deleted +- [OPTIONAL] `-x` the index of the tag Users can refer to this [section](#usage-of-flags) to recap on how the flag works. @@ -457,11 +487,10 @@ Successfully added tag physics to deck midterm --- -### Edit a deck: `deck edit` +### Edit a deck: `deck edit -o OLD_DECK_NAME -n NEW_DECK_NAME` Rename an existing deck -Example of usage: `deck edit -o old-deck-name -n new-deck-name` Sample output: @@ -469,7 +498,18 @@ Sample output: Deck 9dc5ab5f-75af-4b0d-b554-341f59ac829bdeck name has been changed from old-deck-name to new-deck-name ``` -### [WIP] Delete a card/tag from deck: `deck delete -d {deckName} (-c {cardUUID} | -t {tagUUID})` +### Delete a Deck : `deck delete -d DECK_NAME` + +Delete a deck using this syntax, example: +``` +> deck delete -d deck1 +Successfully removed deck deck1 from card 1ddd9a67-f56c-4914-99c0-2f90c580f0e9 +Successfully removed deck deck1 from tag physics +Successfully removed deck deck1 from tag Test +Successfully removed deck deck1 from the deck list. +``` + +### Delete a card/tag from deck: `deck delete -d DECK_NAME {-c CARD_UUID | -t TAG_UUID}` Delete a card from an existing deck either by specifying the cardUUID or tagUUID to delete. @@ -518,6 +558,86 @@ Here is your current list of decks: 2.Deck name : another-deck, deck uuid : b7fa870a-e92c-4a74-90de-cfeafd6ec141``` ``` +### List all cards and tags under deck : `deck list -d DECK_NAME` + +Here is an example of this being used: +``` +> deck list -d physicsdeck +Here is a list of your cards : + + 1. [924119c1-a807-4df2-b311-080be9ee8522] + Qn: this might work + Ans: finally + +Here is your current list of tags: +1.Tag name : physics, tag uuid : c8259fee-125d-4700-829c-0da79eba1e91 +``` + + +### Run the Deck : `deck run -d DECK_NAME` +In order to use `deck run`, the following key pointers must be kept in mind: +1. Once you type the command in, the question would be printed first. Do note that **you are only required to hit press +enter. Pressing enter would inform the program to display the answer** +2. If you wish to exit, the type _exit_, and the program should jump out of `run mode` and bring you back to normal +functioning +3. If a user were to type anything, Inka would prompt the user not to type anything and display the answer. + +Here are some examples: +- _Example where the user only presses an enter!_ +``` +> deck run -d physicsdeck + Q: this might work + + A: finally + + Q: How efficient is binary search? + + A: O(log n) + + Q: What is the formula of force? + + A: F = ma + +``` +- _Example where the user wishes to exit_: +``` +> deck run -d physicsdeck + Q: this might work + + A: finally + + Q: How efficient is binary search? +exit +Exiting run mode! + +``` + +- _Example where the user enters something other than exit or enter_: +``` +> deck run -d physicsdeck + Q: this might work +asgsdfgsfdgsdfg +There is no need to input any characters! +Just hitting enter is sufficient to show the answer! Anyway, here is the answer! + + A: finally + + Q: How efficient is binary search? +sfgsdfgsdfgsdfg +There is no need to input any characters! +Just hitting enter is sufficient to show the answer! Anyway, here is the answer! + + A: O(log n) + + Q: What is the formula of force? +dfgsdfgsdfgsdfgsdfg +There is no need to input any characters! +Just hitting enter is sufficient to show the answer! Anyway, here is the answer! + + A: F = ma +``` + + --- ### Exit the program : @@ -562,32 +682,29 @@ Your file will be loaded the next time you run Inka! ## Command Summary -| **Command** | **Format** | -|-------------------------------|-------------------------------------------------------------------------------------| -| Create a `Card` | `card add -q {question} -a {answer}` | -| Create a `Tag` | `card tag -c {cardUUID} -t {tag_name}` | -| Create a `Deck` | `card deck -c {cardUUID} -d {deck_name}` OR `card deck -t {tagUUID} -d {deckName}` | -| Add a `Card` to a `Deck` | `card deck -c {cardUUID} -d {deckName}` OR `card deck -i {cardIndex} -d {deckName}` | -| Add a `Tag` to a `Deck` | `tag deck -t {tagUUID} -d {deckName}` | -| Add a `Card` to a `Tag` | `card tag -c {cardUUID} -t {tagName}` | -| Delete a `Tag` from a `Card` | `card untag -c {cardUUIID} -t {tagName}` | -| Delete a `Card` | `card delete -i {cardUUID}` | -| Delete a `Tag` | `tag delete -t {tagName}` | -| Delete a `Deck` | `deck delete -d {deckName}` | -| Delete a `Card` from a `Deck` | `deck delete -d {deckName} -c {cardUUID}` | -| Delete a `Tag` from a `Deck` | `deck delete -d {deckName} -t {tagUUID}` | -| List `Cards` | `card list` | -| List `Tags` | `tag list` | -| List `Decks` | `deck list` | -| List `Cards` under a `Deck` | `deck list -c {deckName}` | -| List `Cards` under a `Tag` | `tag list -t {tagName}` | -| List `Tags` under a `Deck` | `deck list -d {deckName}` | -| Edit a `Tag` | `tag edit -n {newTagName} -o {oldTagName}` | -| Edit a `Card` | `card edit -n {newTagName} -o {oldTagName}` | -| Edit a `Deck` | `deck edit -n {newTagName} -o {oldTagName}` | -| View a `Card` | `card view -c {cardUUID}` | -| Exits the program | `bye` | -| Help about `Deck` | `deck help` | -| Help about `Tag` | `tag help` | -| Help about `Card` | `card help` | -| Help in general | `help` | +| **Command** | **Format** | +|----------------------------------------|---------------------------------------------------------------------------| +| Create a `Card` | `card add -q {question_here} -a {answer_here}` | +| Create a `Tag` | `card tag -c CARD_UUID -t TAG_NAME` | +| Add a `Card` to a `Deck` | `card deck {-c CARD_UUID \| -i CARD_INDEX} -d DECK_NAME` | +| Add a `Tag` to a `Deck` | `tag deck -d DECK_NAME {-t TAG_NAME \| -x TAG_INDEX}` | +| Add a `Card` to a `Tag` | `card tag {-c CARD_UUID \| -i CARD_INDEX} -t TAG_NAME` | +| Delete a `Card` | `card delete {-c CARD_UUID \| -i CARD_INDEX}` | +| Delete a `Tag` | `tag delete {-t TAG_NAME \| -x TAG_INDEX}` | +| Delete a `Deck` | `deck delete -d DECK_NAME` | +| Delete a `Card` or `Tag` from a `Deck` | `deck delete -d DECK_NAME {-c CARD_UUID \| -t TAG_UUID}` | +| Deleting a `Tag` from a `Card` | `card untag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX` | +| List `Cards` | `card list` | +| List `Tags` | `tag list` | +| List `Decks` | `deck list` | +| List `Cards` and `Tags` under a `Deck` | `deck list -d DECK_NAME` | +| List `Cards` under a `Tag` | `tag list [-t TAG_NAME \| -x TAG_INDEX]` | +| Edit a `Tag` | `tag edit -o OLD_TAG_NAME -n NEW_TAG_NAME` | +| Edit a `Card` | `card edit -o OLD_TAG_NAME -n NEW_TAG_NAME` | +| Edit a `Deck` | `deck edit -o OLD_DECK_NAME -n NEW_DECK_NAME` | +| View a `Card` | `card view {-c CARD_UUID \| -i CARD_INDEX}` | +| Help about `Deck` | `deck help` | +| Help about `Tag` | `tag help` | +| Help about `Card` | `card help` | +| Help in general | `help` | +| Run the `deck` | `deck run -d DECK_NAME` | diff --git a/docs/img/AddCardToDeck.png b/docs/img/AddCardToDeck.png new file mode 100644 index 0000000000000000000000000000000000000000..b31799a0e36ea61f85dd411ae05248279525575e GIT binary patch literal 65433 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 g3@x^8J72T8eT AddCardToDeckCommand : AddCardToDeckCommand() +activate AddCardToDeckCommand + +Create CardSelector +AddCardToDeckCommand -> CardSelector : cardSelector() +return + +AddCardToDeckCommand -> AddCardToDeckCommand : execute() +AddCardToDeckCommand -> CardList : findCard(cardSelector) +return cardToAdd + +AddCardToDeckCommand -> AddCardToDeckCommand : addCardToDeck(cardToAdd) +AddCardToDeckCommand -> DeckList : findDeckFromName(deckName) +return deckToAdd +AddCardToDeckCommand -> Card : cardToAdd.getUuid() +return cardToAddUUID + +ref over AddCardToDeckCommand, UserInterface +If deckToAdd is null, create a new deck and add the card, else add the card to the existing deck +end ref + +'alt deckToAdd is null +'AddCardToDeckCommand -> UserInterface : printDeckCreationSuccess() +'return +'AddCardToDeckCommand -> Deck : deck(deckName, cardToAddUUID) +'return deckToAdd +'AddCardToDeckCommand -> Deck : addCardToSet(cardToAddUUID) +'return +'AddCardToDeckCommand -> DeckList : addDeck(deckToAdd) +'return +' +'else deckToAdd is not null +'AddCardToDeckCommand -> Deck : addCard(cardToAddUUID) +'return +'AddCardToDeckCommand -> Deck : addCardToSet(cardToAddUUID) +'return +'end + +AddCardToDeckCommand -> Deck : getDeckUUID() +return deckUUID +AddCardToDeckCommand -> Card : addDeck(deckUUID) +return + +AddCardToDeckCommand -> Card : getUuid() +return cardUUID +AddCardToDeckCommand -> UserInterface : printAddCardToDeckSuccess(cardUUID, deckName) +return + +@enduml diff --git a/docs/uml/ListItemsDeck.puml b/docs/uml/ListItemsDeck.puml new file mode 100644 index 0000000000..09954bf29b --- /dev/null +++ b/docs/uml/ListItemsDeck.puml @@ -0,0 +1,53 @@ +@startuml +autoactivate on + +participant ":ListItemsDeckCommand" as ListItemsDeckCommand +participant ":TagList" as TagList +participant ":CardList" as CardList +participant ":CardSelector" as CardSelector +participant ":TagSelector" as TagSelector +participant ":TagList" as TagList +participant ":DeckList" as DeckList +participant ":Tag" as Tag +participant ":Deck" as Deck + +participant ":UserInterface" as UserInterface +participant ":DeckKeywordParser" as DeckKeywordParser + + +Create ListItemsDeckCommand +DeckKeywordParser -> ListItemsDeckCommand : ListItemsDeckCommand() +activate ListItemsDeckCommand + +ListItemsDeckCommand -> ListItemsDeckCommand : execute() +ListItemsDeckCommand -> ListItemsDeckCommand : findCardsUnderDeck() +ListItemsDeckCommand -> DeckList : findDeckFromName(String) +return foundDeck + +ListItemsDeckCommand -> Deck : getCardsUUID() +return cardsUUID + +ref over ListItemsDeckCommand, CardList +Add all the Cards with cardsUUID to the foundCardList +end ref +return foundCardList +ListItemsDeckCommand -> UserInterface : printCardList(foundCardList) +return + +'start of listing the tags' + +ListItemsDeckCommand -> ListItemsDeckCommand : findTagsUnderDeck() + +ListItemsDeckCommand -> Deck : getTagsUUID() +return tagsUUID + +ref over ListItemsDeckCommand, CardList +Add all the Tags with tagsUUID to the foundTagList +end ref + +return foundTagList +ListItemsDeckCommand -> UserInterface : printTagList(foundTagList) +return + + +@enduml diff --git a/savedata.json b/savedata.json index 07e5766f2c..1d5afd6385 100644 --- a/savedata.json +++ b/savedata.json @@ -1,26 +1,5 @@ { "decks": [ - { - "deckName": "deck1", - "deckUUID": { - "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" - }, - "cardsSet": [], - "cardUUIDIntegerHashMap": {}, - "cards": [ - { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" - } - ], - "tags": [ - { - "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" - }, - { - "uuid": "f0721ed3-f357-4a6d-9d35-cd436ec5d280" - } - ] - }, { "deckName": "decktag", "deckUUID": { @@ -137,10 +116,7 @@ "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" } ], - "cardUUIDIntegerHashMap": { - "619c689d-395a-4bb8-ab00-6ae9972bb929": 1, - "1ddd9a67-f56c-4914-99c0-2f90c580f0e9": 1 - }, + "cardUUIDIntegerHashMap": {}, "cards": [ { "uuid": "924119c1-a807-4df2-b311-080be9ee8522" @@ -167,11 +143,7 @@ "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" } ], - "decks": [ - { - "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" - } - ] + "decks": [] }, { "uuid": { @@ -268,7 +240,6 @@ } ], "decks": [] - }, { "uuid": { @@ -313,11 +284,7 @@ "uuid": "e58cb988-30bf-48a8-b95e-abcd3b3bc5b6" } ], - "decks": [ - { - "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" - } - ] + "decks": [] }, { "uuid": { diff --git a/src/main/java/utils/command/AddCardToDeckCommand.java b/src/main/java/utils/command/AddCardToDeckCommand.java index f64778b4b7..b728a7d9af 100644 --- a/src/main/java/utils/command/AddCardToDeckCommand.java +++ b/src/main/java/utils/command/AddCardToDeckCommand.java @@ -3,6 +3,7 @@ import model.Card; import model.CardList; import model.CardSelector; +import model.CardUUID; import model.Deck; import model.DeckList; import model.DeckUUID; @@ -26,22 +27,22 @@ public AddCardToDeckCommand(String deckName, CardSelector cardSelector) { } private void addCardToDeck(DeckList deckList, Card cardToAdd, UserInterface ui) throws InkaException { - assert cardToAdd != null; Deck deckToAdd = deckList.findDeckFromName(deckName); + CardUUID cardToAddUUID = cardToAdd.getUuid(); if (deckName.length() > 50) { throw new LongDeckNameException(); } else if (deckToAdd == null) { ui.printDeckCreationSuccess(); - deckToAdd = new Deck(deckName, cardToAdd.getUuid()); - deckToAdd.addCardToSet(cardToAdd.getUuid()); + deckToAdd = new Deck(deckName, cardToAddUUID); + deckToAdd.addCardToSet(cardToAddUUID); deckList.addDeck(deckToAdd); - } else if (deckToAdd.cardIsInSet(cardToAdd.getUuid())) { + } else if (deckToAdd.cardIsInSet(cardToAddUUID)) { throw new CardInDeckException(); - } else if (deckToAdd.cardIsInMap(cardToAdd.getUuid())) { + } else if (deckToAdd.cardIsInMap(cardToAddUUID)) { throw new CardInDeckUnderTagException(); } else { - deckToAdd.addCard(cardToAdd.getUuid()); // add card to the array list - deckToAdd.addCardToSet(cardToAdd.getUuid()); // add card to the set + deckToAdd.addCard(cardToAddUUID); // add card to the array list + deckToAdd.addCardToSet(cardToAddUUID); // add card to the set } //add the tag uuid to the card @@ -56,6 +57,7 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI assert cardToAdd != null; addCardToDeck(deckList, cardToAdd, ui); - ui.printAddCardToDeckSuccess(cardToAdd.getUuid(), deckName); + CardUUID cardUUID = cardToAdd.getUuid(); + ui.printAddCardToDeckSuccess(cardUUID, deckName); } } From 83ca43f806a911272e849fb8ab8474838f58386a Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 10:13:54 +0800 Subject: [PATCH 249/311] docs: cleanup UG and DG --- docs/DeveloperGuide.md | 178 ++++++++++++++++++++++------------------- docs/UserGuide.md | 159 +++++++++++++++++++++--------------- 2 files changed, 189 insertions(+), 148 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index d8aa443763..6c991e72eb 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -106,18 +106,16 @@ The following is the sequence diagram for parsing `card add -q QN -a ANS`: API: Storage.java - -Inka's storage functions operate in the `JsonStorage` class that extends the `Storage` class, that implements the `IDataStorage` interface. +Inka's storage functions operate in the `JsonStorage` class that extends the `Storage` class, that implements +the `IDataStorage` interface. The methods `load()` and `save()` read and write to the filesystem respectively. This also serves to implement the [export feature](#export-feature) . It uses a `Memory` object as an intermediary to contain app data during serialization and deserialization. -It uses methods contained within the classes `JsonToMemory` and `MemoryToJson` to deserialize and serialize app save data respectively. +It uses methods contained within the classes `JsonToMemory` and `MemoryToJson` to deserialize and serialize app save +data respectively. ![Storage Class Diagram](img/StorageClass.svg) - - - ### CardList Component API: CardList.java @@ -191,16 +189,25 @@ For adding a card, a sample user input like `card add -q QN -a ANS` would be bro The implementation of `card add -q QN -a ANS` will be shown below : 1. When the user enters `card add -q QN -a ANS`, the input is passed to `Parser` class which - calls `Parser#parseCommand()`. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on + calls `Parser::parseCommand()`. The parser detects the keyword "card", then calls the `Parser::CardKeywordParser()` + on the user inputs excluding the "card" keyword. -2. The `Parser#CardKeywordParser()` further extracts the action keyword "add" from the user input, and calls - the `CardKeywordParser#handleAdd()` method. + + +2. The `Parser::CardKeywordParser()` further extracts the action keyword "add" from the user input, and calls + the `CardKeywordParser::handleAdd()` method. + + 3. The method uses the Apache Commons CLI library to parse the remaining user input to create a `Card` object with the arguements of the flags "-q" and "-a" in the input as its question and answer, and returns an `AddCardCommand` with the created `Card` object. The sequence diagram for the first 3 steps has been shown in the [parser sequence diagram](#parser-component). -4. This `AddCardCommand` will call the `CardList#addCard()` function and add the created `Card` object to + + +4. This `AddCardCommand` will call the `CardList::addCard()` function and add the created `Card` object to the `CardList`. + + 5. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with the corresponding functions. @@ -224,11 +231,12 @@ A sample user input, like `card delete -i 3` would be broken down as: The implementation of `card delete -i 3` will be shown below : -1. When the user enters `card delete -i 3`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. - The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the " +1. When the user enters `card delete -i 3`, the input is passed to `Parser` class which calls `Parser::parseCommand()`. + The parser detects the keyword "card", then calls the `Parser::CardKeywordParser()` on the user inputs excluding + the " card" keyword. -2. The `Parser#CardKeywordParser()` further extracts the action keyword "delete" from the user input and - call `CardKeywordParser#handleDelete()` method. +2. The `Parser::CardKeywordParser()` further extracts the action keyword "delete" from the user input and + call `CardKeywordParser::handleDelete()` method. 3. The method uses the Apache Commons CLI library to parse the remaining user input, and returns a `DeleteCardCommand` with a `CardSelector` argument. The `CardSelector` object has two optional fields, an int field or an uuid field, used in identifying the `Card` object, in this case to be deleted. The sequence diagram for the first 3 steps has @@ -257,14 +265,14 @@ A sample user input, like `card list` would be broken down as : The implementation of `card list` will be shown below : -1. When the user enters `card list`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The - parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the " +1. When the user enters `card list`, the input is passed to `Parser` class which calls `Parser::parseCommand()`. The + parser detects the keyword "card", then calls the `Parser::CardKeywordParser()` on the user inputs excluding the " card" keyword. -2. The `Parser#CardKeywordParser()` further extracts the action keyword "list" from the user input and - call `CardKeywordParser#handleList()` method. +2. The `Parser::CardKeywordParser()` further extracts the action keyword "list" from the user input and + call `CardKeywordParser::handleList()` method. 3. If there are no more user input after `card list`, a `ListCardCommand()` is returned. The sequence diagram for the first 3 steps has been shown in the [parser sequence diagram](#parser-component). -4. The command will call `UserInterface#printCardList()` method to print all `Card` objects in the `CardList`. +4. The command will call `UserInterface::printCardList()` method to print all `Card` objects in the `CardList`. The sequence diagram below shows how this feature of card works: ![Card List feature](img/CardListSequence.svg) @@ -274,35 +282,35 @@ The sequence diagram below shows how this feature of card works: The implementation of `card view {-c {cardUUID} | -i {cardIndex}}` will be shown below : - When the user enters `card view {-c {cardUUID} | -i {cardIndex}}`, the input is passed to `Parser` class which - calls `Parser#parseCommand()`. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on + calls `Parser::parseCommand()`. The parser detects the keyword "card", then calls the `Parser::CardKeywordParser()` on the user inputs excluding the " - card" keyword. The `Parser#CardKeywordParser()` uses the Apache Commons CLI library to parse the remaining user input - and call `CardKeywordParser#handleView()` method which in turn returns + card" keyword. The `Parser::CardKeywordParser()` uses the Apache Commons CLI library to parse the remaining user input + and call `CardKeywordParser::handleView()` method which in turn returns a `ViewCardCommand`. The sequence diagram for this section has been shown [above](#parser-component). - This `ViewCardCommand` will first find the card that is to be viewed by calling - the `CardList#findCard()` which will in turn call the `CardSelector#getIndex()` - and `CardSelector#getUUID()` depending on the flags and parameter specified by the user. `CardSelector` will then + the `CardList::findCard()` which will in turn call the `CardSelector::getIndex()` + and `CardSelector::getUUID()` depending on the flags and parameter specified by the user. `CardSelector` will then return the `cardToView` to `CardList` and then to `ViewCardCommand`. -- If the `cardToView` is not null, it will be passed to `UserInterface#printCard()` to be printed. `ViewCardCommand` - will proceed to call `Card#getTagsUUID()` which will - return `tagsUUID` and `Card#getDecksUUID()` which will return `decksUUID`. +- If the `cardToView` is not null, it will be passed to `UserInterface::printCard()` to be printed. `ViewCardCommand` + will proceed to call `Card::getTagsUUID()` which will + return `tagsUUID` and `Card::getDecksUUID()` which will return `decksUUID`. -- Once the `tagsUUID` is ready, `ViewCardCommand` will then call `ViewCardCommand#findTagFromTagUUID` which will loop - through each element `Tag` of `TagList`, call `Tag#getUUID()` and match it with every element of the `tagsUUID` +- Once the `tagsUUID` is ready, `ViewCardCommand` will then call `ViewCardCommand::findTagFromTagUUID` which will loop + through each element `Tag` of `TagList`, call `Tag::getUUID()` and match it with every element of the `tagsUUID` previously. If the `Tag` element's uuid matches the uuid in `tagsUUID`, then the `Tag` will be added to a `tagsFound` and returned to `ViewCardCommand`. -- Similarly, once the `decksUUID` is ready, `ViewCardCommand` will then call `ViewCardCommand#findDeckFromDeckUUID` - which will loop through each element `Deck` of `DeckList`, call `Deck#getUUID()` and match it with every element of +- Similarly, once the `decksUUID` is ready, `ViewCardCommand` will then call `ViewCardCommand::findDeckFromDeckUUID` + which will loop through each element `Deck` of `DeckList`, call `Deck::getUUID()` and match it with every element of the `decksUUID` previously. If the `Deck` element's uuid matches the uuid in `decksUUID`, then the `Deck` will be added to a `decksFound` and returned to `ViewCardCommand`. @@ -335,38 +343,38 @@ The implementation of the `card untag` feature is as follows: - When the user enters `card untag {-c CARD_UUID} | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}`, the input is passed to `Parser` class which - calls `Parser#parseCommand()`. The parser detects the keyword `card` and process the remaining input and pass them - to `Parser#CardKeywordParser` class which calls `HandleUntag()` method and returns a `RemoveTagFromCardCommand`. The + calls `Parser::parseCommand()`. The parser detects the keyword `card` and process the remaining input and pass them + to `Parser::CardKeywordParser` class which calls `HandleUntag()` method and returns a `RemoveTagFromCardCommand`. The sequence diagram for this section has been shown [above](#parser-component). - This `RemoveTagFromCardCommand` will first find the card to remove the tag from by calling - the `CardList#findCard()` which will in turn call the `CardSelector#getIndex()` - and `CardSelector#getUUID()` depending on the flags and parameter specified by the user. `CardSelector` will then + the `CardList::findCard()` which will in turn call the `CardSelector::getIndex()` + and `CardSelector::getUUID()` depending on the flags and parameter specified by the user. `CardSelector` will then return the `cardAffected` to `CardList` and then back to `RemoveTagFromCardCommand`. -- `RemoveTagFromCardCommand` will then find the tag to delete from the card by calling `TagList#findCard()` which will +- `RemoveTagFromCardCommand` will then find the tag to delete from the card by calling `TagList::findCard()` which will in turn call the - `TagSelector#getIndex()` and `TagSelector#getTagName()` depending on the flags and parameter specified by the + `TagSelector::getIndex()` and `TagSelector::getTagName()` depending on the flags and parameter specified by the user. `TagSelector` will return the `tagToRemove` to `TagList` and then back to `RemoveTagFromCardCommand`. - After `cardAffected` and `tagToRemove` is ready, `RemoveCardFromTagCommand` will - call `RemoveTagFromCardCommand#removeTagFromCard(cardAffected, tagToRemove)` which will check if the `Tag` is + call `RemoveTagFromCardCommand::removeTagFromCard(cardAffected, tagToRemove)` which will check if the `Tag` is currently inside a deck, if it is, we will loop through all the decks that the `Tag` is currently inside and remove the `cardAffected` from each of the deck. -- Afterwards, `RemoveTagFromCardCommand#removeTagFromCard(cardAffected, tagToRemove)` will remove the reference +- Afterwards, `RemoveTagFromCardCommand::removeTagFromCard(cardAffected, tagToRemove)` will remove the reference to the tag from the card and remove the reference to the card from the tag - by calling `Card#getUUID()`, `Tag#removeCard()`, `Tag#getUUID()`,`Card#RemoveTag()`. + by calling `Card::getUUID()`, `Tag::removeCard()`, `Tag::getUUID()`,`Card::RemoveTag()`. -- Finally, `RemoveTagFromCardCommand` will then call `UserInterface#printRemoveTagFromCard()` to print successful +- Finally, `RemoveTagFromCardCommand` will then call `UserInterface::printRemoveTagFromCard()` to print successful removal of `tagToRemove` from `cardAffected`. The sequence diagram below shows how this feature works: @@ -384,42 +392,46 @@ The implementation of the `tag list {-t TAG_NAME | -x TAG_INDEX}` - When the user enters `tag list {-t TAG_NAME | -x TAG_INDEX}`, the input is passed to `Parser` class which - calls `Parser#parseCommand()`. The parser detects the keyword `tag` and process the remaining input and pass them - to `Parser#TagKeywordParser` class which calls `HandleList()` method and returns a `ListCardsUnderTagCommand`. The + calls `Parser::parseCommand()`. The parser detects the keyword `tag` and process the remaining input and pass them + to `Parser::TagKeywordParser` class which calls `HandleList()` method and returns a `ListCardsUnderTagCommand`. The sequence diagram for this section has been shown [above](#parser-component). - This `ListCardsUnderTagCommand` will find the tag under which to display the cards from by calling - the `TagList#findTag()` which will in turn call the `TagSelector#getIndex()` - and `TagSelector#getTagName()` depending on the flags and parameter specified by the user. `TagSelector` will then + the `TagList::findTag()` which will in turn call the `TagSelector::getIndex()` + and `TagSelector::getTagName()` depending on the flags and parameter specified by the user. `TagSelector` will then return the `foundTag` to `TagList` and then back to `ListCardsUnderTagCommand`. - After `foundTag` is ready, `ListCardsUnderTagCommand` will - call `ListCardsUnderTagCommand#findCardsUnderTag(foundTag)` which will call the `Tag#getCardsUUID` and return the + call `ListCardsUnderTagCommand::findCardsUnderTag(foundTag)` which will call the `Tag::getCardsUUID` and return the UUIDs of the cards under the `Tag` in the form of `cardsUUID`. `ListCardsUnderTagCommand` will then loop through the entire cardList and the `cardsUUID`, if their uuid matches, that `Card` will be added to `foundCardList` and returned to `ListCardsUnderTagCommand`. -- Once `foundCardList` is returned, `ListCardsUdnerTagCommand` will call `UserInterface#printCardList(foundCardList)` to +- Once `foundCardList` is returned, `ListCardsUnderTagCommand` will call `UserInterface::printCardList(foundCardList)` + to print the list of cards under the specified tag. The sequence diagram below shows how this feature works: ![List Cards under Tag](img/ListCardsUnderTagSequence.png) - ### Export Feature -The implementation of the Export feature is split into [saving](#save) and [loading](#load) +The implementation of the Export feature is split into [saving](#save) and [loading](#load) ### Save + Saving is implemented with `save()` -If the user the command `export` or exiting the app with `bye`, the app will save their data to both a file, `savedata.json` and a backup file, `backup.json`. It does so by calling save() on both the file and the backup file. +If the user the command `export` or exiting the app with `bye`, the app will save their data to both a +file, `savedata.json` and a backup file, `backup.json`. It does so by calling save() on both the file and the backup +file. + 1. All data is compiled into a `Memory` object. 2. Memory is serialized into a Json Format using the method `convert()` in `MemoryToJson` that returns a `JsonObject`. 3. The Json is written into the filesystem. @@ -427,11 +439,13 @@ If the user the command `export` or exiting the app with `bye`, the app will sav The sequence diagram below illustrates this feature: ![export feature](img/SaveSequence.png) - ### Load + Loading is implemented with `load()` -`load()` is called by inka on app startup to read a file `savedata.json` in the directory of the jar file. If the file is corrupted, `load()` is called to read a file `backup.json` instead. +`load()` is called by inka on app startup to read a file `savedata.json` in the directory of the jar file. If the file +is corrupted, `load()` is called to read a file `backup.json` instead. + 1. The file is read and parsed as a Json using `Gsonbuilder`, being converted into a `JsonObject`. 2. The `JsonObject` is deserialized into a `Memory` object using the `convert()` method in `JsonToMemory`. 3. The memory object is returned to be read from by Inka. @@ -442,7 +456,6 @@ The sequence diagram below illustrates this feature: Reference Frames : ![Add Cards to foundCardList](img/AddCardsToFoundCardListRef.png) - ### Deck Feature The Deck Feature currently supports the following functionalities : @@ -458,14 +471,13 @@ The Deck Feature currently supports the following functionalities : - let the user cycle through all the `Card` in the `Deck` - rename the `Deck` - This guide will show two of the more complex implementation of the tag features, other tag-related features will be similar : #### Add Card to the Deck -This is the implementation of adding a card to the deck in the following format -`card deck {-i INDEX_NUMBER | -c CARDUUID } -d {DECK_NAME}`. This command adds the card to a certain deck, if the +This is the implementation of adding a card to the deck in the following format +`card deck {-i CARD_INDEX | -c CARD_UUID } -d {DECK_NAME}`. This command adds the card to a certain deck, if the deck already exists, if it doesn't. then a new deck is created and the card is added to it. The points below roughly elucidate what happens internally when this command is run: @@ -478,7 +490,7 @@ elucidate what happens internally when this command is run: - Based on this, the method returns a call to the method - `CardKeywordParser::handleAction()` which eventually leads to the `CardKeywordParser::handleDeck` method due to the + `CardKeywordParser::handleAction()` which eventually leads to the `CardKeywordParser::handleDeck()` method due to the presence of the keyword `deck` in the input. @@ -487,28 +499,28 @@ elucidate what happens internally when this command is run: - This leads to the triggering of the `AddCardToDeckCommand::execute()` method, which then internally calls the -`AddCardToDeckCommand::addCardToDeck()`, only after the card which needs to be added to the deck is identified by the -`CardList::findCard(cardSelector)` method. + `AddCardToDeckCommand::addCardToDeck()`, only after the card which needs to be added to the deck is identified by the + `CardList::findCard(cardSelector)` method. - Next, the deck to which the card must be added is identified by using the `DeckList::findDeckFromName(deckName)`. The -`cardUUID` of the card which needs to be added to the deck is obtained via `Card::getUuid()`. + `cardUUID` of the card which needs to be added to the deck is obtained via `Card::getUuid()`. - Subsequently, we then check to see if the deck to which the card must be added to is null or not. If it null it means -that the deck was never initialized to begin with. In order to initialize it, we first print a message tp the user -using `UserInterface::printDeckCreationSuccess()`, followed by new `Deck` object creation using its constructor -`Deck::deck(deckName, cardToAddUUID)`. Next, the card is added to the `HashSet` of the `Deck` object using -`Deck::addCardToSet(cardToAddUUID)` and the `Deck` object is added to the `deckList` by `DeckList::addDeck()`. + that the deck was never initialized to begin with. In order to initialize it, we first print a message tp the user + using `UserInterface::printDeckCreationSuccess()`, followed by new `Deck` object creation using its constructor + `Deck::deck(deckName, cardToAddUUID)`. Next, the card is added to the `HashSet` of the `Deck` object using + `Deck::addCardToSet(cardToAddUUID)` and the `Deck` object is added to the `deckList` by `DeckList::addDeck()`. - If the deck to which the card must be added is not null, then we simply add the card to the `Deck` object's -`HashSet` and `ArrayList`. **The `HashSet` is an aggregation of all the cards in the `Deck` object, whereas the -`ArrayList` only contains `CardUUID` which were added separately to the `Deck`**. + `HashSet` and `ArrayList`. **The `HashSet` is an aggregation of all the cards in the `Deck` object, whereas the + `ArrayList` only contains `CardUUID` which were added separately to the `Deck`**. - Lastly, the `DeckUUID` is added to the `Card` object as well, this is to enable better deletion and adding -algorithms. + algorithms. The sequence diagram is as such: ![Add Cards to Deck](img/AddCardToDeck.png) @@ -522,45 +534,45 @@ This is the implementation of `deck list -d {DECK_NAME}`. The command lists the the `Deck` object. - When a user enters the command above, the input is passed on to the `Parser` class, which calls its method -`Parser::parseCommand()`. + `Parser::parseCommand()`. -- Upon detecting the `deck` keyword, the input is passed to the -`DeckKeywordParser::parseTokens()` method. +- Upon detecting the `deck` keyword, the input is passed to the + `DeckKeywordParser::parseTokens()` method. -- Based on this, the method returns a call to the method -`DeckKeywordParser::handleAction()` which eventually leads to the `DeckKeywordParser::handleList` method due to the -presence of the keyword `list` in the input. +- Based on this, the method returns a call to the method + `DeckKeywordParser::handleAction()` which eventually leads to the `DeckKeywordParser::handleList` method due to the + presence of the keyword `list` in the input. -- This method returns the constructor -`ListItemsDeckCommand::ListItemsDeckCommand()` due to the presence of the `-d` flag. +- This method returns the constructor + `ListItemsDeckCommand::ListItemsDeckCommand()` due to the presence of the `-d` flag. - Now, the `ListItemsDeckCommand::execute()` triggers the execution of the `ListItemsDeckCommand:: -findCardsUnderDeck(cardList, deckList)`. + findCardsUnderDeck(cardList, deckList)`. - The sole purpose of this method is to gather a `CardList` of all cards that -are under the `Deck` **directly**, this does not include the cards which are under the deck via tags. + are under the `Deck` **directly**, this does not include the cards which are under the deck via tags. - In order to -accomplish this, the method uses `DeckList::findDeckFromName(deckName)` to obtain the revelant deck and -`Deck::getCardsUUID` to obtain an `ArrayList` of the `CardUUIDs` under the deck. Next, a perusal of the `CardList` is -done in order to match the `CardUUId` with the relevant `Card`, if matches are found, they are added to the -`foundCardList`. + accomplish this, the method uses `DeckList::findDeckFromName(deckName)` to obtain the revelant deck and + `Deck::getCardsUUID` to obtain an `ArrayList` of the `CardUUIDs` under the deck. Next, a perusal of the `CardList` is + done in order to match the `CardUUId` with the relevant `Card`, if matches are found, they are added to the + `foundCardList`. - Next, the list of cards is printed using the `UserInterface::printCardList(foundCardList)`. -A similar process is done to obtain the `TagList` containing the list of tags under the deck and is printed, it can be +A similar process is done to obtain the `TagList` containing the list of tags under the deck and is printed, it can be observed in the sequence diagram below: ![List Items under a Deck](img/ListItemDeckFinal.png) -The reference frames provided are very similar to the ones provided above in the +The reference frames provided are very similar to the ones provided above in the [UnTag Cards section](#list-cards-under-a-tag) --- diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 577bf44b62..4405727908 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -7,34 +7,34 @@ and put groups of cards into a deck. Inka aims to help students revise for their experience. ## Table of Contents + Use the hyperlinks for ease of access! - [Quick Start](#quick-start) - - [Use Case](#use-case) + - [Use Case](#use-case) - [Usage of Flags](#usage-of-flags) - [Features](#features) - - [Get Help Manual](#get-help-manual-) - - [Adding a Card](#adding-a-card) - - [Listing all the cards](#listing-all-cards-) - - [Deleting a card](#deleting-a-card-) - - [Tagging a Card](#tagging-a-card-) - - [Removing a tag from a card](#removing-a-tag-from-a-card-) - - [Putting a card into a deck](#putting-a-card-into-a-deck-) - - [Viewing a card](#viewing-a-card-) - - [Editing a tag](#editing-a-tag-) - - [Deleting a tag](#deleting-a-card-) - - [List all tags](#list-all-tags--tag-list--t-tagname---x-tagindex) - - [Put all cards under a tag into a deck](#put-all-cards-under-a-tag-into-a-deck) - - [Edit a Deck](#edit-a-deck-deck-edit--o-olddeckname--n-newdeckname) - - [Delete a card/tag from deck](#delete-a-cardtag-from-deck-deck-delete--d-deckname--c-carduuid---t-taguuid) - - [List all decks](#list-all-decks-deck-list) - - [List all cards and tags under deck](#list-all-cards-and-tags-under-deck--deck-list--d-deckname) - - [Run the deck](#run-the-deck--deck-run--d-deckname) - - [Exit the Program](#exit-the-program-) + - [Get Help Manual](#get-help-manual-) + - [Adding a Card](#adding-a-card) + - [Listing all the cards](#listing-all-cards-) + - [Deleting a card](#deleting-a-card-) + - [Tagging a Card](#tagging-a-card-) + - [Removing a tag from a card](#removing-a-tag-from-a-card-) + - [Putting a card into a deck](#putting-a-card-into-a-deck-) + - [Viewing a card](#viewing-a-card-) + - [Editing a tag](#editing-a-tag-) + - [Deleting a tag](#deleting-a-card-) + - [List all tags](#list-all-tags--tag-list--t-tagname---x-tagindex) + - [Put all cards under a tag into a deck](#put-all-cards-under-a-tag-into-a-deck) + - [Edit a Deck](#edit-a-deck-deck-edit--o-olddeckname--n-newdeckname) + - [Delete a card/tag from deck](#delete-a-cardtag-from-deck-deck-delete--d-deckname--c-carduuid---t-taguuid) + - [List all decks](#list-all-decks-deck-list) + - [List all cards and tags under deck](#list-all-cards-and-tags-under-deck--deck-list--d-deckname) + - [Run the deck](#run-the-deck--deck-run--d-deckname) + - [Exit the Program](#exit-the-program-) - [FAQ](#faq) - [Command Summary](#command-summary) - ## Quick Start 1. Ensure that you have Java 11 or above installed. @@ -168,7 +168,8 @@ can be viewed using the `card view` command below. That's a good question for revision later! You now have 4 questions in the bank. ``` -### Editing a card : + +### Editing a card : ### Listing all cards : @@ -487,10 +488,11 @@ Successfully added tag physics to deck midterm --- -### Edit a deck: `deck edit -o OLD_DECK_NAME -n NEW_DECK_NAME` +### Edit a deck: -Rename an existing deck +`deck edit -o OLD_DECK_NAME -n NEW_DECK_NAME` +Rename an existing deck Sample output: @@ -498,9 +500,14 @@ Sample output: Deck 9dc5ab5f-75af-4b0d-b554-341f59ac829bdeck name has been changed from old-deck-name to new-deck-name ``` -### Delete a Deck : `deck delete -d DECK_NAME` +### Delete a Deck : + +`deck delete -d DECK_NAME` + +This feature will also remove all existing cards and tags from the Deck. Delete a deck using this syntax, example: + ``` > deck delete -d deck1 Successfully removed deck deck1 from card 1ddd9a67-f56c-4914-99c0-2f90c580f0e9 @@ -509,15 +516,19 @@ Successfully removed deck deck1 from tag Test Successfully removed deck deck1 from the deck list. ``` -### Delete a card/tag from deck: `deck delete -d DECK_NAME {-c CARD_UUID | -t TAG_UUID}` +### Delete a card/tag from deck: + +`deck delete -d DECK_NAME {-c CARD_UUID | -t TAG_UUID}` Delete a card from an existing deck either by specifying the cardUUID or tagUUID to delete. To delete a card from an existing deck -Example of usage: `deck delete -c c2c61475-df53-4656-94c4-c2e36933d359 -d my-deck` +***Example of usage:*** -Sample output: +`deck delete -c c2c61475-df53-4656-94c4-c2e36933d359 -d my-deck` + +***Sample output:*** ``` Successfully removed card c2c61475-df53-4656-94c4-c2e36933d359 from deck my-deck @@ -525,9 +536,11 @@ Successfully removed card c2c61475-df53-4656-94c4-c2e36933d359 from deck my-deck Alternatively, delete a tag from an existing deck -Example of usage: `deck delete -t 833249f3-a090-474c-a3de-c1b5f25609d4 -d my-deck` +***Example of usage:*** -Sample output: +`deck delete -t 833249f3-a090-474c-a3de-c1b5f25609d4 -d my-deck` + +***Sample output:*** ``` Successfully removed tag 833249f3-a090-474c-a3de-c1b5f25609d4 from deck my-deck @@ -535,22 +548,28 @@ Successfully removed tag 833249f3-a090-474c-a3de-c1b5f25609d4 from deck my-deck The entire deck can also be deleted (cards and tags that were in the deck are not deleted) -Example of usage: `deck delete -d my-deck` +***Example of usage:*** -Sample output: +`deck delete -d my-deck` + +***Sample output:*** ``` Successfully removed deck my-deck from card c2c61475-df53-4656-94c4-c2e36933d359 Successfully removed deck my-deck from the deck list. ``` -### List all decks: `deck list` +### List all decks: + +`deck list` List all decks that have been created -Example usage: `deck list` +***Example usage:*** -Sample output: +`deck list` + +***Sample output:*** ``` Here is your current list of decks: @@ -558,9 +577,12 @@ Here is your current list of decks: 2.Deck name : another-deck, deck uuid : b7fa870a-e92c-4a74-90de-cfeafd6ec141``` ``` -### List all cards and tags under deck : `deck list -d DECK_NAME` +### List all cards and tags under deck : + +`deck list -d DECK_NAME` Here is an example of this being used: + ``` > deck list -d physicsdeck Here is a list of your cards : @@ -573,17 +595,22 @@ Here is your current list of tags: 1.Tag name : physics, tag uuid : c8259fee-125d-4700-829c-0da79eba1e91 ``` +### Run the Deck : + +`deck run -d DECK_NAME` -### Run the Deck : `deck run -d DECK_NAME` In order to use `deck run`, the following key pointers must be kept in mind: + 1. Once you type the command in, the question would be printed first. Do note that **you are only required to hit press -enter. Pressing enter would inform the program to display the answer** + enter. Pressing enter would inform the program to display the answer** 2. If you wish to exit, the type _exit_, and the program should jump out of `run mode` and bring you back to normal -functioning + functioning 3. If a user were to type anything, Inka would prompt the user not to type anything and display the answer. Here are some examples: + - _Example where the user only presses an enter!_ + ``` > deck run -d physicsdeck Q: this might work @@ -599,7 +626,9 @@ Here are some examples: A: F = ma ``` + - _Example where the user wishes to exit_: + ``` > deck run -d physicsdeck Q: this might work @@ -613,6 +642,7 @@ Exiting run mode! ``` - _Example where the user enters something other than exit or enter_: + ``` > deck run -d physicsdeck Q: this might work @@ -637,7 +667,6 @@ Just hitting enter is sufficient to show the answer! Anyway, here is the answer! A: F = ma ``` - --- ### Exit the program : @@ -682,29 +711,29 @@ Your file will be loaded the next time you run Inka! ## Command Summary -| **Command** | **Format** | -|----------------------------------------|---------------------------------------------------------------------------| -| Create a `Card` | `card add -q {question_here} -a {answer_here}` | -| Create a `Tag` | `card tag -c CARD_UUID -t TAG_NAME` | -| Add a `Card` to a `Deck` | `card deck {-c CARD_UUID \| -i CARD_INDEX} -d DECK_NAME` | -| Add a `Tag` to a `Deck` | `tag deck -d DECK_NAME {-t TAG_NAME \| -x TAG_INDEX}` | -| Add a `Card` to a `Tag` | `card tag {-c CARD_UUID \| -i CARD_INDEX} -t TAG_NAME` | -| Delete a `Card` | `card delete {-c CARD_UUID \| -i CARD_INDEX}` | -| Delete a `Tag` | `tag delete {-t TAG_NAME \| -x TAG_INDEX}` | -| Delete a `Deck` | `deck delete -d DECK_NAME` | -| Delete a `Card` or `Tag` from a `Deck` | `deck delete -d DECK_NAME {-c CARD_UUID \| -t TAG_UUID}` | -| Deleting a `Tag` from a `Card` | `card untag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX` | -| List `Cards` | `card list` | -| List `Tags` | `tag list` | -| List `Decks` | `deck list` | -| List `Cards` and `Tags` under a `Deck` | `deck list -d DECK_NAME` | -| List `Cards` under a `Tag` | `tag list [-t TAG_NAME \| -x TAG_INDEX]` | -| Edit a `Tag` | `tag edit -o OLD_TAG_NAME -n NEW_TAG_NAME` | -| Edit a `Card` | `card edit -o OLD_TAG_NAME -n NEW_TAG_NAME` | -| Edit a `Deck` | `deck edit -o OLD_DECK_NAME -n NEW_DECK_NAME` | -| View a `Card` | `card view {-c CARD_UUID \| -i CARD_INDEX}` | -| Help about `Deck` | `deck help` | -| Help about `Tag` | `tag help` | -| Help about `Card` | `card help` | -| Help in general | `help` | -| Run the `deck` | `deck run -d DECK_NAME` | +| **Command** | **Format** | +|----------------------------------------|------------------------------------------------| +| Create a `Card` | `card add -q {question_here} -a {answer_here}` | +| Create a `Tag` | `card tag -c CARD_UUID -t TAG_NAME` | +| Add a `Card` to a `Deck` | `card deck {-c CARD_UUID \ | -i CARD_INDEX} -d DECK_NAME` | +| Add a `Tag` to a `Deck` | `tag deck -d DECK_NAME {-t TAG_NAME \ | -x TAG_INDEX}` | +| Add a `Card` to a `Tag` | `card tag {-c CARD_UUID \ | -i CARD_INDEX} -t TAG_NAME` | +| Delete a `Card` | `card delete {-c CARD_UUID \ | -i CARD_INDEX}` | +| Delete a `Tag` | `tag delete {-t TAG_NAME \ | -x TAG_INDEX}` | +| Delete a `Deck` | `deck delete -d DECK_NAME` | +| Delete a `Card` or `Tag` from a `Deck` | `deck delete -d DECK_NAME {-c CARD_UUID \ | -t TAG_UUID}` | +| Deleting a `Tag` from a `Card` | `card untag {-c CARD_UUID \ | -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX` | +| List `Cards` | `card list` | +| List `Tags` | `tag list` | +| List `Decks` | `deck list` | +| List `Cards` and `Tags` under a `Deck` | `deck list -d DECK_NAME` | +| List `Cards` under a `Tag` | `tag list [-t TAG_NAME \ | -x TAG_INDEX]` | +| Edit a `Tag` | `tag edit -o OLD_TAG_NAME -n NEW_TAG_NAME` | +| Edit a `Card` | `card edit -o OLD_TAG_NAME -n NEW_TAG_NAME` | +| Edit a `Deck` | `deck edit -o OLD_DECK_NAME -n NEW_DECK_NAME` | +| View a `Card` | `card view {-c CARD_UUID \ | -i CARD_INDEX}` | +| Help about `Deck` | `deck help` | +| Help about `Tag` | `tag help` | +| Help about `Card` | `card help` | +| Help in general | `help` | +| Run the `deck` | `deck run -d DECK_NAME` | From be6e1b7e5080f88682f4cd79d904036cb3948143 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 10 Apr 2023 10:17:47 +0800 Subject: [PATCH 250/311] fix: corrected ParserSequence --- docs/img/ParserSequence.svg | 72 ++++++++++-------------------------- docs/uml/ParserSequence.puml | 44 +++++++++++----------- 2 files changed, 42 insertions(+), 74 deletions(-) diff --git a/docs/img/ParserSequence.svg b/docs/img/ParserSequence.svg index e5e393e601..08f5a27590 100644 --- a/docs/img/ParserSequence.svg +++ b/docs/img/ParserSequence.svg @@ -1,71 +1,37 @@ -ParserParserCardKeywordParserCardKeywordParserOptionBuilderOptionBuilderDefaultParserDefaultParserparseTokens()Keyword token is notpassed to KeywordParserhandleAction()handleAdd()get Options for flagsparseUsingOptions()Apache CommonsCLI parserparse()Flag valuesParsed CommandParsed Command propagated back \ No newline at end of file +:AddCardCommand:Card:CardList:CardList:UserInterface:UserInterface:CardKeywordParser:CardKeywordParsercreate card to add:CardcardToAddAddCardCommand(cardToAdd):AddCardCommandexecute()addCard(cardToAdd)print success message and number of cards \ No newline at end of file diff --git a/docs/img/CardDeleteSequence.svg b/docs/img/CardDeleteSequence.svg index 76ce80961c..6ca3e72e04 100644 --- a/docs/img/CardDeleteSequence.svg +++ b/docs/img/CardDeleteSequence.svg @@ -1 +1 @@ -:DeleteCardCommand:CardList:CardList:CardSelector:TagList:TagList:DeckList:DeckList:Tag:Tag:Card:Card:Deck:Deck:UserInterface:UserInterfaceCardKeywordParserCardKeywordParserDeleteCardCommand():DeleteCardCommandCardSelector():CardSelectorexecute()findCard()alt[index is specified in CardSelector]getIndex()cardIndex[uuid is specified in CardSelector]getUUID()cardUUIDcardToDeletegetTagsUUID(cardToDelete)tagsUUIDgetDecksUUID(cardToDelete))decksUUIDcardRemovalFromDeck()loop[until all uuid in decksUUID have been checked]findDeckFromUUID()deckFounddelete card uuid from deckloop[until all uuid in tagsUUID have been checked]findTagFromUUID()tagFounddelete card uuid from tagdelete(cardSelector)printDeleteSuccess();printNumOfQuestions(cardList); \ No newline at end of file +:DeleteCardCommand:CardList:CardList:CardSelector:TagList:TagList:DeckList:DeckList:Card:Card:UserInterface:UserInterface:CardKeywordParser:CardKeywordParsercreate cardSelector to identify card:CardSelectorcardSelectorDeleteCardCommand(cardSelector):DeleteCardCommandexecute()findCard()alt[index is specified in cardSelector]getIndex()cardIndex[uuid is specified in cardSelector]getUUID()cardUUIDcardToDeletegetTagsUUID()tagsUUIDgetDecksUUID()decksUUIDcardRemovalFromDeck()find deck from decksUUID and delete cardToDelete from itcardRemovalFromTag()find tag from tagsUUID and delete cardToDelete from itdelete cardToDeleteprint success message and number of cards left \ No newline at end of file diff --git a/docs/img/CardListSequence.svg b/docs/img/CardListSequence.svg index f02be1e702..d7fedb405c 100644 --- a/docs/img/CardListSequence.svg +++ b/docs/img/CardListSequence.svg @@ -1 +1 @@ -:ListCardCommand:CardList:CardList:UserInterface:UserInterfaceCardKeywordParserCardKeywordParserListCardCommand(card):ListCardCommandexecute()printCardList()loop[until all cards have been printed]print card \ No newline at end of file +:ListCardCommand:CardList:CardList:UserInterface:UserInterface:CardKeywordParser:CardKeywordParserListCardCommand():ListCardCommandexecute()printCardList()loop[until all cards are printed]print card \ No newline at end of file From c72535749d6ce5e4a06b785d358ca1719d7954c6 Mon Sep 17 00:00:00 2001 From: Gujimugger Date: Mon, 10 Apr 2023 13:21:38 +0800 Subject: [PATCH 272/311] Fix failed check --- src/main/java/Inka.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index 61bf202737..a9e8f67a57 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -70,7 +70,6 @@ public void run() { } catch (InkaException e) { ui.printException(e); } - ui.printInputIdentifier(); } } } From a47d20e91f69af440c5ff3d9332889c247b99b68 Mon Sep 17 00:00:00 2001 From: Gujimugger Date: Mon, 10 Apr 2023 15:49:12 +0800 Subject: [PATCH 273/311] Improve coding standard: remove arrowhead code --- .../java/utils/parser/OptionsBuilder.java | 110 ++++++++++-------- 1 file changed, 61 insertions(+), 49 deletions(-) diff --git a/src/main/java/utils/parser/OptionsBuilder.java b/src/main/java/utils/parser/OptionsBuilder.java index eef5dfa5c8..abb364c8ac 100644 --- a/src/main/java/utils/parser/OptionsBuilder.java +++ b/src/main/java/utils/parser/OptionsBuilder.java @@ -23,64 +23,76 @@ public class OptionsBuilder { protected static final String FLAG_LONG_ANSWER = "answer"; private String model; - private String keyword; + private String action; public OptionsBuilder(String model, String action) { this.model = model; - this.keyword = action; + this.action = action; } public Options buildOptions() { switch (model) { case Parser.CARD_KEYWORD: - switch (keyword) { - case CardKeywordParser.ADD_ACTION: - return buildAddOptions(); - case CardKeywordParser.TAG_ACTION: - return buildTagOptions(); - case CardKeywordParser.UNTAG_ACTION: - return buildUntagOptions(); - case CardKeywordParser.VIEW_ACTION: - return buildViewOptions(); - case CardKeywordParser.DELETE_ACTION: - return buildDeleteOptions(Parser.CARD_KEYWORD); - case CardKeywordParser.DECK_ACTION: - return buildDeckOptions(Parser.CARD_KEYWORD); - default: - // Should be exhaustive - assert false; - return null; - } + return buildCardModelOptions(action); case Parser.TAG_KEYWORD: - switch (keyword) { - case TagKeywordParser.DELETE_ACTION: - return buildDeleteOptions(Parser.TAG_KEYWORD); - case TagKeywordParser.DECK_ACTION: - return buildDeckOptions(Parser.TAG_KEYWORD); - case TagKeywordParser.EDIT_ACTION: - return buildEditOptions(Parser.TAG_KEYWORD); - case TagKeywordParser.LIST_ACTION: - return buildListOptions(Parser.TAG_KEYWORD); - default: - // Should be exhaustive - assert false; - return null; - } + return buildTagModelOptions(action); case Parser.DECK_KEYWORD: - switch (keyword) { - case DeckKeywordParser.DELETE_ACTION: - return buildDeleteOptions(Parser.DECK_KEYWORD); - case DeckKeywordParser.EDIT_ACTION: - return buildEditOptions(Parser.DECK_KEYWORD); - case DeckKeywordParser.LIST_ACTION: - return buildListOptions(Parser.DECK_KEYWORD); - case DeckKeywordParser.RUN_ACTION: - return buildRunOptions(); - default: - // Should be exhaustive - assert false; - return null; - } + return buildDeckModelOptions(action); + default: + // Should be exhaustive + assert false; + return null; + } + } + + private Options buildDeckModelOptions(String action) { + switch (action) { + case DeckKeywordParser.DELETE_ACTION: + return buildDeleteOptions(Parser.DECK_KEYWORD); + case DeckKeywordParser.EDIT_ACTION: + return buildEditOptions(Parser.DECK_KEYWORD); + case DeckKeywordParser.LIST_ACTION: + return buildListOptions(Parser.DECK_KEYWORD); + case DeckKeywordParser.RUN_ACTION: + return buildRunOptions(); + default: + // Should be exhaustive + assert false; + return null; + } + } + + private Options buildTagModelOptions(String action) { + switch (action) { + case TagKeywordParser.DELETE_ACTION: + return buildDeleteOptions(Parser.TAG_KEYWORD); + case TagKeywordParser.DECK_ACTION: + return buildDeckOptions(Parser.TAG_KEYWORD); + case TagKeywordParser.EDIT_ACTION: + return buildEditOptions(Parser.TAG_KEYWORD); + case TagKeywordParser.LIST_ACTION: + return buildListOptions(Parser.TAG_KEYWORD); + default: + // Should be exhaustive + assert false; + return null; + } + } + + public static Options buildCardModelOptions(String action) { + switch (action) { + case CardKeywordParser.ADD_ACTION: + return buildAddOptions(); + case CardKeywordParser.TAG_ACTION: + return buildTagOptions(); + case CardKeywordParser.UNTAG_ACTION: + return buildUntagOptions(); + case CardKeywordParser.VIEW_ACTION: + return buildViewOptions(); + case CardKeywordParser.DELETE_ACTION: + return buildDeleteOptions(Parser.CARD_KEYWORD); + case CardKeywordParser.DECK_ACTION: + return buildDeckOptions(Parser.CARD_KEYWORD); default: // Should be exhaustive assert false; @@ -193,7 +205,7 @@ private static Options buildListOptions(String model) { private static Options buildRunOptions() { Options options = new Options(); - options.addRequiredOption(FLAG_DECK, FLAG_LONG_DECK,true, "name of the deck to review"); + options.addRequiredOption(FLAG_DECK, FLAG_LONG_DECK, true, "name of the deck to review"); return options; } From b02129f1a96aa3c0ef5f3ba797ec5e2ff726b709 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 15:53:54 +0800 Subject: [PATCH 274/311] ref: fix spacing in UI --- src/main/java/utils/UserInterface.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index c2aff02398..bc0fac9c8d 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -99,7 +99,7 @@ public void printCardList(CardList cardList) { } else { System.out.println("Here is a list of your cards :\n"); for (int i = 0; i < cardList.size(); ++i) { - System.out.println("\t" + (i + 1) + "." + cardList.get(i).toTruncatedString()); // 1. question answer + System.out.println("\t" + (i + 1) + ".\t" + cardList.get(i).toTruncatedString()); // 1. question answer } } } @@ -110,7 +110,7 @@ public void printTagList(TagList tagList) { } else { System.out.println("Here is your current list of tags:"); for (int i = 0; i < tagList.size(); ++i) { - System.out.println((i + 1) + "." + tagList.get(i)); + System.out.println((i + 1) + ".\t" + tagList.get(i)); } } } @@ -121,7 +121,7 @@ public void printTags(TagList tagList) { } else { System.out.println("\tHere are your tags:"); for (int i = 0; i < tagList.size(); ++i) { - System.out.println("\t" + (i + 1) + "." + tagList.get(i)); + System.out.println("\t" + (i + 1) + ".\t" + tagList.get(i)); } } System.out.println(""); @@ -133,7 +133,7 @@ public void printDeckList(DeckList deckList) { } else { System.out.println("Here is your current list of decks:"); for (int i = 0; i < deckList.size(); ++i) { - System.out.println((i + 1) + "." + deckList.get(i)); + System.out.println((i + 1) + ".\t" + deckList.get(i)); } } } @@ -144,7 +144,7 @@ public void printDecks(DeckList deckList) { } else { System.out.println("\tHere are your decks:"); for (int i = 0; i < deckList.size(); ++i) { - System.out.println("\t" + (i + 1) + "." + deckList.get(i)); + System.out.println("\t" + (i + 1) + ".\t" + deckList.get(i)); } } } From 22bbbfec2427db2c51a87a60537aded2fdc055f0 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 16:18:16 +0800 Subject: [PATCH 275/311] fix svg into png --- docs/DeveloperGuide.md | 4 ++-- docs/img/CardListClass.png | Bin 0 -> 102964 bytes docs/img/CardListClass.svg | 4 ---- docs/img/TagListClass.png | Bin 0 -> 102424 bytes docs/img/TagListClass.svg | 4 ---- 5 files changed, 2 insertions(+), 10 deletions(-) create mode 100644 docs/img/CardListClass.png delete mode 100644 docs/img/CardListClass.svg create mode 100644 docs/img/TagListClass.png delete mode 100644 docs/img/TagListClass.svg diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 6c991e72eb..0a3737b140 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -127,7 +127,7 @@ associated with. inherit from the `InkaUUID` class. The following describes the class diagram for CardList Component : -![CardList Class Diagram](img/CardListClass.svg) +![CardList Class Diagram](img/CardListClass.png) ### TagList Component @@ -140,7 +140,7 @@ from `InkaUUID` as they all share the same methods and implementations. The following describes the class diagram for TagList Component : -![TagList Class Diagram](img/TagListClass.svg) +![TagList Class Diagram](img/TagListClass.png) ### DeckList Component diff --git a/docs/img/CardListClass.png b/docs/img/CardListClass.png new file mode 100644 index 0000000000000000000000000000000000000000..187487892ca70c500ab3da593fc79f47be9015c5 GIT binary patch literal 102964 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�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 HvpM)*Lja~1 literal 0 HcmV?d00001 diff --git a/docs/img/CardListClass.svg b/docs/img/CardListClass.svg deleted file mode 100644 index 1af3a0c9a4..0000000000 --- a/docs/img/CardListClass.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -CardList
+ getCards() : List<Card>
+ addCard(card : Card) 
+ findCard(cardSelector: CardSelector) : Card
+ findCardFromUUID(cardUUID : CardUUID) : Card
+ delete(cardSelector: CardSelector) 
+ delete(index : int)
+ isEmpty() : Boolean
+ size() : int
+ get(id : int) : Card
+ getCards() : List<Card>...
InkaUUIDCardUUIDCard
cards
cards
*
*
TagUUID
TagUUID
DeckUUID
DeckUUID
uuid
uuid
tags
tags
1
1
*
*
*
*
decks
decks
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/img/TagListClass.png b/docs/img/TagListClass.png new file mode 100644 index 0000000000000000000000000000000000000000..4af51a85e11d611f34b6789a1392c5074ce4913d GIT binary patch literal 102424 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 z - - -TagList
+ getTags() : List<Tag>
+ addTag(tag : Tag) 
+ findTagFromName(tagName : String) : Tag
+ findTagFromUUID(tagUUID : TagUUID) : Tag
+ delete(id : int)
+ delete(tagSelector : TagSelector)
+ isEmpty() : Boolean
+ size() : int
+ get(id : int) : Tag
+ getTags() : List<Tag>...
InkaUUIDTagUUIDTag
tags
tags
*
*
CardUUID
CardUUID
DeckUUID
DeckUUID
uuid
uuid
cards
cards
1
1
*
*
*
*
decks
decks
Text is not SVG - cannot display
\ No newline at end of file From 05f7295c0c44a76e85cf09cceecd8d86c01dd6f7 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 10 Apr 2023 16:39:24 +0800 Subject: [PATCH 276/311] docs: PPP + filling in some DG gaps --- docs/DeveloperGuide.md | 53 +++++++++++++++++++++++---------------- docs/team/ltzehan.md | 57 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 88 insertions(+), 22 deletions(-) create mode 100644 docs/team/ltzehan.md diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 6c991e72eb..ad9a032ac1 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -16,13 +16,13 @@ - [tag feature](#tag-feature) - [deck feature](#deck-feature) -- [Appendix: Requirements](#appendix-requirements) - - [Product scope](#product-scope) - - [Target user profile](#target-user-profile) - - [Value proposition](#value-proposition) +- [Appendix](#appendix) + - [Target User Profile](#target-user-profile) + - [Value Proposition](#value-proposition) - [User Stories](#user-stories) - [Non-Functional Requirements](#non-functional-requirements) - [Glossary](#glossary) + - [Instructions for Manual Testing](#instructions-for-manual-testing) --- @@ -33,12 +33,14 @@ Third-party libraries: - [Apache Commons CLI](https://commons.apache.org/proper/commons-cli/) - [gson](https://github.com/google/gson) -{list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- -include links to the original source as well} --- -## Setting up, getting started +## Setting up, Getting started + +This repository was developed using [IntelliJ IDEA](https://www.jetbrains.com/idea/), and can be set up as per any regular IntelliJ project. + +For compliance with code style, developers may find it useful to import the `CS2113-codestyle.xml` formatter configuration. --- @@ -62,7 +64,8 @@ The following diagram describes the architecture of Inka: ### UI Component -API: Ui.java +API: `UserInterface.java` + ### Parser Component @@ -104,7 +107,7 @@ The following is the sequence diagram for parsing `card add -q QN -a ANS`: ### Storage Component -API: Storage.java +API: `Storage.java` Inka's storage functions operate in the `JsonStorage` class that extends the `Storage` class, that implements the `IDataStorage` interface. @@ -118,7 +121,7 @@ data respectively. ### CardList Component -API: CardList.java +API: `CardList.java` Inka's Cards are stored inside `CardList` Component. Each Card has a reference to its own randomly generated `uuid` as well as a reference to `tags` and `decks`, which are essentially the UUIDs of the tags and decks that each card is @@ -437,7 +440,7 @@ file. 3. The Json is written into the filesystem. The sequence diagram below illustrates this feature: -![export feature](img/SaveSequence.png) +![export feature](img/SaveSequence.PNG) ### Load @@ -451,7 +454,7 @@ is corrupted, `load()` is called to read a file `backup.json` instead. 3. The memory object is returned to be read from by Inka. The sequence diagram below illustrates this feature: -![export feature](img/LoadSequence.png) +![export feature](img/LoadSequence.PNG) Reference Frames : ![Add Cards to foundCardList](img/AddCardsToFoundCardListRef.png) @@ -577,17 +580,15 @@ The reference frames provided are very similar to the ones provided above in the --- -## Appendix: Requirements - -### Product scope +## Appendix -### Target user profile +### Target User Profile - Person who wants a convenient, versatile and portable way to revise concepts while doing coding assignments - Person who wants to effectively learn a new language while doing coding assignments - Person who wants to be challenged to come up with answers quickly against time pressure. -### Value proposition +### Value Proposition User will be able to revise while coding or using the terminal so they don't have to switch between apps. This will maximize their productivity and refresh their memory instantly whenever they want to recall some topics suddenly appear @@ -614,13 +615,21 @@ on their mind. ### Non-Functional Requirements -{Give non-functional requirements} +- The program should be able to run on any OS +- The program should be able to handle invalid/corrupted save files +- The program should have intuitive commands +- The program should scale properly even as the amount of data increases ### Glossary -- _glossary item_ - Definition +- _Inka_ - The name of this application +- _IntelliJ IDEA_ - The Integrated Development Environment (IDE) used for this project +- _CLI_ - Command Line Interface; usable from a terminal as opposed to a graphical interface -### Instructions for manual testing +### Instructions for Manual Testing -{Give instructions on how to do a manual product testing e.g., how to load sample data to be used -for testing} +Running the program: +- Download the latest version of the `.jar` file from the [release page](https://github.com/AY2223S2-CS2113-F10-1/tp/releases). +- Move the executable to a folder of your choice. The folder should have write permissions as it will generate save files in this directory. +- Run the executable either by double-clicking on it, or using `java -jar FILENAME.jar` +- An introduction to the supported commands are provided in the User Guide diff --git a/docs/team/ltzehan.md b/docs/team/ltzehan.md new file mode 100644 index 0000000000..979488f1fc --- /dev/null +++ b/docs/team/ltzehan.md @@ -0,0 +1,57 @@ +# Lee Tze Han's Project Portfolio Page + +## Project: Inka + +Inka is a CLI-based software that allows users to add Cards containing questions and answers, attach tags into each Card and put groups of cards into a deck. Inka aims to help students revise for their exam by providing a flashcard-like experience. + +## Code Contribution + +[Reposense Report](https://nus-cs2113-ay2223s2.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2023-02-17&tabOpen=true&tabType=authorship&tabAuthor=ltzehan&tabRepo=AY2223S2-CS2113-F10-1%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code~other&authorshipIsBinaryFileTypeChecked=false&authorshipIsIgnoredFilesChecked=false) + +## Enhancements Implemented + +Refactored parser into a hierarchial parser structure using the `Parser` and `KeywordParser` classes. + +- `Parser` dispatches the appropriate `KeywordParser` derived class according to the keyword in the user's input +- `KeywordParser` is the interface between Apache Commons CLI's parser and Inka's parsers. The choice to integrate a third-party parser is to avoid regex-based parsers that are difficult to maintain, and allows for more features such as required/optional flags, flexible flag ordering and etc. +- Parsing for flag arguments with whitespaces (e.g. card questions & answers) are more involved, requiring logic encapsulated in `OptionsBuilder::buildMultipleTokenOption` +- `InvalidSyntaxException` provides useful error messages with formatted flags to the user, which is converted from Apache's exceptions in `KeywordParser` +- Initial implementation for creating `Options` for card and tag parsing +- Attempt to make Apache's help formatter less poor + +Design for selectors (`CardSelector`, `TagSelector`) + +- Implemented `CardSelector` to allow the user to specify a card either by its `CardUUID` or corresponding index in `card list` +- Main difficulty is that converting between the two card representations may require `CardList`, which is only available in `Command::execute`, so this serves as a container to defer card selection + +Support for simple comparison of `InkaUUID` classes +- For our custom UUID classes to work with Java container, `Object::equals` and `Object::hashCode` have to since previous matching was done on underlying `UUID` + +## UG Contributions + +- Quick start +- Example use case +- Standardization for syntax formatting [#145](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/145) +- Fixes for formatting + +## DG Contributions + +- [Architecture diagram](../img/Architecture.svg) +- Parser design considerations, [class diagram](../img/ParserClass.svg), and [sequence diagram](../img/ParserSequence.svg) +- CardSelector/TagSelector design considerations + +## Review Contributions + +PRs with design comments: + +- [#41](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/41) +- [#43](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/43) +- [#153](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/153) + +## Team-based tasks Contribution + +- Refactoring and offering comments for possible refactoring +- Cleaning up GitHub issues +- Test-driven bug fixing ([#188](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/188)) and pushed for implementing regression tests +- Set up IntelliJ formatter configuration file +- Teaching them the wonders of IntelliJ shortcuts From e6a281a77526fb1d64cb9ecb967eaffd3c9ba22c Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 16:57:35 +0800 Subject: [PATCH 277/311] updateUG --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 654ebe6413..b15a2039eb 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -739,7 +739,7 @@ Sample output : **A**: You do so by following these steps: -1. Export the deck as a Json file using the command "export" +1. Export the deck as a Json file using the command "export". It may take a moment for the file to be written, so please wait, or try refreshing your file explorer! 2. Navigate to the directory of your Inka installation. 3. The file will be named savedata.json. Copy this file. 4. Paste this file in the Inka's directory in the new computer From 401cf25deff10fc0377d97ef304ec38782fdc733 Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 10 Apr 2023 17:18:09 +0800 Subject: [PATCH 278/311] docs: selector --- docs/DeveloperGuide.md | 18 ++++++++++++++++++ docs/img/SelectorClass.svg | 7 +++++++ docs/team/ltzehan.md | 2 +- 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 docs/img/SelectorClass.svg diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index ad9a032ac1..00d11aed91 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -103,8 +103,26 @@ When the user's input is passed to `Parser`: the `UserInterface` and `Storage` objects to print output or save the program state respectively. The following is the sequence diagram for parsing `card add -q QN -a ANS`: + ![Parser Sequence Diagram](img/ParserSequence.svg) +### Selector Component + +API: `CardSelector.java`, `TagSelector.java` + +Complimentary to the parser design is the use of _selectors_ to allow the user more flexibility in how they choose to specify a `Card` or a `Tag`. + +- Aim: Allow the user to refer to a `Card` either by its `CardUUID` or its index in `card list`, and to refer to a `Tag` either by its name or its index in `tag list` +- Difficulties: + - By design, the parsers should not require access to `CardList` or `TagList` to decouple the user input parsing and the actual application logic + - The parsed `Command` should only fetch the corresponding `Card`/`Tag` once `Command::execute()` is run, hence requiring an intermediate representation + +By encapsulating the identifier in a selector class, retrieving the actual instance of `Card`/`Tag` from `CardList`/`TagList` can be deferred until `Command::execute()` is run. + +The class diagram for the selector-style classes are as follows: + +![Selector Class Diagram](img/SelectorClass.svg) + ### Storage Component API: `Storage.java` diff --git a/docs/img/SelectorClass.svg b/docs/img/SelectorClass.svg new file mode 100644 index 0000000000..b180c401a7 --- /dev/null +++ b/docs/img/SelectorClass.svg @@ -0,0 +1,7 @@ + + + + + + CardSelector- uuid: Optional<CardUUID> = Optional.empty()- index: Optional<Integer> = Optional.empty()+ CardSelector(String uuid)+ CardSelector(int index)+ getUuid() : Optional<CardUUID>+ getIndex: Optional<Integer>TagSelector- tagName: Optional<String> = Optional.empty()- index: Optional<Integer> = Optional.empty()+ TagSelector(String tagName)+ TagSelector(int index)+ getTagName() : Optional<String>+ getIndex: Optional<Integer> + diff --git a/docs/team/ltzehan.md b/docs/team/ltzehan.md index 979488f1fc..fee05f6ac5 100644 --- a/docs/team/ltzehan.md +++ b/docs/team/ltzehan.md @@ -38,7 +38,7 @@ Support for simple comparison of `InkaUUID` classes - [Architecture diagram](../img/Architecture.svg) - Parser design considerations, [class diagram](../img/ParserClass.svg), and [sequence diagram](../img/ParserSequence.svg) -- CardSelector/TagSelector design considerations +- CardSelector/TagSelector design considerations and [class diagram](../img/SelectorClass.svg) ## Review Contributions From 0406b527489c8cd372f963e7057332fc3bc79ade Mon Sep 17 00:00:00 2001 From: ltzehan Date: Mon, 10 Apr 2023 17:24:12 +0800 Subject: [PATCH 279/311] docs: update PPP --- docs/team/ltzehan.md | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/docs/team/ltzehan.md b/docs/team/ltzehan.md index fee05f6ac5..f194856a28 100644 --- a/docs/team/ltzehan.md +++ b/docs/team/ltzehan.md @@ -36,9 +36,14 @@ Support for simple comparison of `InkaUUID` classes ## DG Contributions -- [Architecture diagram](../img/Architecture.svg) -- Parser design considerations, [class diagram](../img/ParserClass.svg), and [sequence diagram](../img/ParserSequence.svg) -- CardSelector/TagSelector design considerations and [class diagram](../img/SelectorClass.svg) +- Architecture diagram +- Parser design considerations, class diagram, and sequence diagram +- CardSelector/TagSelector design considerations and class diagram + +![](../img/Architecture.svg) +![](../img/ParserSequence.svg) +![](../img/ParserClass.svg) +![](../img/SelectorClass.svg) ## Review Contributions From c6cfdb994cd01157a1dd6d24943d3efd05cd3f82 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Mon, 10 Apr 2023 17:29:22 +0800 Subject: [PATCH 280/311] Make save files read only --- src/main/java/Inka.java | 2 - .../java/utils/storage/json/JsonStorage.java | 46 +++++++++++++++++-- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/main/java/Inka.java b/src/main/java/Inka.java index a9e8f67a57..92ea9825ee 100644 --- a/src/main/java/Inka.java +++ b/src/main/java/Inka.java @@ -41,13 +41,11 @@ public static void main(String[] args) { * @return CardList containing all saved cards */ private Memory loadSaveFile() { - // Notify user of no previously saved file if (!storage.saveFileExists()) { ui.printNoSaveFile(); return new Memory(); } - // File exists; try to load from it Memory memory = new Memory(); try { memory = storage.load(); diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 677fdb21bf..f9c858c1f5 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -9,6 +9,10 @@ import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.attribute.PosixFilePermission; +import java.util.HashSet; +import java.util.Set; import java.util.logging.Logger; import java.util.logging.Level; @@ -61,6 +65,22 @@ public JsonStorage(String filePath) { //Add custom adapters gsonBuilder.registerTypeAdapter(CardUUID.class, new CardUuidJsonAdapter()); gsonBuilder.registerTypeAdapter(TagUUID.class, new TagUuidJsonAdapter()); + + try { + if (System.getProperty("os.name").startsWith("Windows")) { + backupFile.setReadOnly(); + saveFile.setReadOnly(); + } else { + Set permissions = new HashSet<>(); + permissions.add(PosixFilePermission.OWNER_READ); + permissions.add(PosixFilePermission.GROUP_READ); + permissions.add(PosixFilePermission.OTHERS_READ); + Files.setPosixFilePermissions(backupFile.toPath(), permissions); + Files.setPosixFilePermissions(saveFile.toPath(), permissions); + } + } catch (IOException e) { + logger.log(Level.WARNING, "Failed to set permissions to read-only for " + filePath, e); + } } /** @@ -145,13 +165,29 @@ public void save(CardList cardList, TagList tagList, DeckList deckList) throws S * @throws IOException if an I/O error occurs while writing to the file */ private void saveDataToFile(File file, JsonObject data) throws IOException { - try (FileWriter fileWriter = new FileWriter(file); - BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { + boolean wasReadOnly = file.canWrite(); - Gson gson = gsonBuilder.setPrettyPrinting().create(); - String serialized = gson.toJson(data); + try { + if (!wasReadOnly) { + file.setWritable(true); + } + try (FileWriter fileWriter = new FileWriter(file); + BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { + + Gson gson = gsonBuilder.setPrettyPrinting().create(); + String serialized = gson.toJson(data); - bufferedWriter.write(serialized); + bufferedWriter.write(serialized); + } + + if (!wasReadOnly) { + file.setWritable(false); + } + } catch (IOException e) { + if (!wasReadOnly) { + file.setWritable(false); + } + throw e; } } } From 5dd4e878bd243ac21307d42f265d4c2a3714e381 Mon Sep 17 00:00:00 2001 From: Gujimugger Date: Mon, 10 Apr 2023 17:32:17 +0800 Subject: [PATCH 281/311] Update sequence diagrams for more accurate constructor calls and etc --- docs/uml/AddCardToDeck.puml | 24 ++++++----- docs/uml/CardAddSequence.puml | 8 +++- docs/uml/CardDeleteSequence.puml | 10 +++-- docs/uml/CardListSequence.puml | 15 ++++--- docs/uml/CardTagSequence.puml | 69 -------------------------------- docs/uml/CardUntagSequence.puml | 22 ++++++---- docs/uml/CardViewSequence.puml | 15 ++++--- docs/uml/ListCardsUnderTag.puml | 22 ++++++---- docs/uml/ListItemsDeck.puml | 11 +++-- docs/uml/TagListSequence.puml | 60 --------------------------- 10 files changed, 82 insertions(+), 174 deletions(-) delete mode 100644 docs/uml/CardTagSequence.puml delete mode 100644 docs/uml/TagListSequence.puml diff --git a/docs/uml/AddCardToDeck.puml b/docs/uml/AddCardToDeck.puml index d591cffd24..7d10adcfd6 100644 --- a/docs/uml/AddCardToDeck.puml +++ b/docs/uml/AddCardToDeck.puml @@ -1,28 +1,29 @@ @startuml autoactivate on +participant ":Inka" as Inka participant ":AddCardToDeckCommand" as AddCardToDeckCommand -participant ":TagList" as TagList participant ":CardList" as CardList participant ":CardSelector" as CardSelector -participant ":TagSelector" as TagSelector -participant ":TagList" as TagList participant ":DeckList" as DeckList -participant ":Tag" as Tag participant ":Deck" as Deck participant ":UserInterface" as UserInterface -participant ":DeckKeywordParser" as DeckKeywordParser -Create AddCardToDeckCommand -TagKeywordParser -> AddCardToDeckCommand : AddCardToDeckCommand() -activate AddCardToDeckCommand +Inka -> CardKeywordParser : parseCommand() Create CardSelector -AddCardToDeckCommand -> CardSelector : cardSelector() +CardKeywordParser -> CardSelector : create cardSelector to identify card +return cardSelector + +Create AddCardToDeckCommand +CardKeywordParser -> AddCardToDeckCommand : AddCardToDeckCommand(cardSelector) + return -AddCardToDeckCommand -> AddCardToDeckCommand : execute() +return AddCardToDeckCommand + +Inka -> AddCardToDeckCommand : execute() AddCardToDeckCommand -> CardList : findCard(cardSelector) return cardToAdd @@ -63,4 +64,7 @@ return cardUUID AddCardToDeckCommand -> UserInterface : printAddCardToDeckSuccess(cardUUID, deckName) return +return + +return @enduml diff --git a/docs/uml/CardAddSequence.puml b/docs/uml/CardAddSequence.puml index 31ed48ac00..f1b18a20a2 100644 --- a/docs/uml/CardAddSequence.puml +++ b/docs/uml/CardAddSequence.puml @@ -2,20 +2,25 @@ autoactivate on +participant ":Inka" as Inka participant ":AddCardCommand" as AddCardCommand participant ":Card" as Card participant ":CardList" as CardList participant ":UserInterface" as UserInterface participant ":CardKeywordParser" as CardKeywordParser +Inka -> CardKeywordParser : parseCommand() Create Card CardKeywordParser -> Card : create card to add return cardToAdd Create AddCardCommand CardKeywordParser -> AddCardCommand : AddCardCommand(cardToAdd) +return + +return AddCardCommand -AddCardCommand -> AddCardCommand : execute() +Inka -> AddCardCommand : execute() AddCardCommand -> CardList : addCard(cardToAdd) return @@ -24,5 +29,4 @@ return return -return @enduml diff --git a/docs/uml/CardDeleteSequence.puml b/docs/uml/CardDeleteSequence.puml index 318ef9358b..720eec0c26 100644 --- a/docs/uml/CardDeleteSequence.puml +++ b/docs/uml/CardDeleteSequence.puml @@ -2,6 +2,7 @@ autoactivate on +participant ":Inka" as Inka participant ":DeleteCardCommand" as DeleteCardCommand participant ":CardList" as CardList participant ":CardSelector" as CardSelector @@ -11,14 +12,19 @@ participant ":Card" as Card participant ":UserInterface" as UserInterface participant ":CardKeywordParser" as CardKeywordParser +Inka -> CardKeywordParser : parseCommand() + Create CardSelector CardKeywordParser -> CardSelector : create cardSelector to identify card return cardSelector Create DeleteCardCommand CardKeywordParser -> DeleteCardCommand : DeleteCardCommand(cardSelector) +return + +return DeleteCardCommand -DeleteCardCommand -> DeleteCardCommand : execute() +Inka -> DeleteCardCommand : execute() DeleteCardCommand -> CardList : findCard() alt index is specified in cardSelector @@ -51,7 +57,5 @@ return DeleteCardCommand -> UserInterface : print success message and number of cards left return -return - return @enduml diff --git a/docs/uml/CardListSequence.puml b/docs/uml/CardListSequence.puml index 5df80fd3d9..ceb80934e7 100644 --- a/docs/uml/CardListSequence.puml +++ b/docs/uml/CardListSequence.puml @@ -2,23 +2,26 @@ autoactivate on +participant ":Inka" as Inka participant ":ListCardCommand" as ListCardCommand participant ":CardList" as CardList participant ":UserInterface" as UserInterface participant ":CardKeywordParser" as CardKeywordParser +Inka -> CardKeywordParser : parseCommand() Create ListCardCommand CardKeywordParser -> ListCardCommand : ListCardCommand() -ListCardCommand -> ListCardCommand : execute() -ListCardCommand -> UserInterface : printCardList() +return + +return ListCardCommand -loop until all cards are printed - UserInterface -> CardList : print card - return -end loop +Inka -> ListCardCommand : execute() +ListCardCommand -> UserInterface : printCardList() + +UserInterface -> CardList : print all cards return return diff --git a/docs/uml/CardTagSequence.puml b/docs/uml/CardTagSequence.puml deleted file mode 100644 index 66c0acfda9..0000000000 --- a/docs/uml/CardTagSequence.puml +++ /dev/null @@ -1,69 +0,0 @@ -@startuml -autoactivate on - -participant ":AddCardToTagCommand" as AddCardToTagCommand -participant ":TagList" as TagList -participant ":CardList" as CardList -participant ":CardSelector" as CardSelector -participant ":TagSelector" as TagSelector -participant ":TagList" as TagList -participant ":DeckList" as DeckList -participant ":Tag" as Tag -participant ":Card" as Card -participant ":UserInterface" as UserInterface - - -Create AddCardToTagCommand -CardKeywordParser -> AddCardToTagCommand : AddCardToTagCommand() -activate AddCardToTagCommand - -Create CardSelector -AddCardToTagCommand -> CardSelector : CardSelector() -return - -Create TagSelector -AddCardToTagCommand -> TagSelector : TagSelector() -return - -AddCardToTagCommand -> AddCardToTagCommand: execute() -AddCardToTagCommand -> CardList : findCard(cardSelector) - -alt index is specified -CardList -> CardSelector : getIndex() -return cardIndex -else uuid is specified -CardList -> CardSelector : getUUID() -return cardUUID -end -return cardAffected - -AddCardToTagCommand -> TagList : findTag(tagSelector) - -alt index is specified -TagList -> TagSelector : getIndex() -return tagIndex -else tagName is specified -TagList -> TagSelector : getTagName() -return tagUUID -end -return tagToAdd - -AddCardToTagCommand -> AddCardToTagCommand : AddCardToTag(cardToAdd) -opt cardAffected.getUUID() != null -AddCardToTagCommand -> Card : getUUID() -return cardUUID -AddCardToTagCommand -> Tag : removeCard(carUUID) -return -AddCardToTagCommand -> Tag : getUUID() -return tagUUID -AddCardToTagCommand -> Card : removeTag(tagUUID) -return - -end -return - -AddCardToTagCommand -> UserInterface : printRemoveTagFromCard() -return - - -@enduml diff --git a/docs/uml/CardUntagSequence.puml b/docs/uml/CardUntagSequence.puml index 30feff7a7e..fdecce7d16 100644 --- a/docs/uml/CardUntagSequence.puml +++ b/docs/uml/CardUntagSequence.puml @@ -1,6 +1,7 @@ @startuml autoactivate on +participant ":Inka" as Inka participant ":RemoveTagFromCardCommand" as RemoveTagFromCardCommand participant ":TagList" as TagList participant ":CardList" as CardList @@ -14,20 +15,23 @@ participant ":Deck" as Deck participant ":UserInterface" as UserInterface participant ":CardKeywordParser" as CardKeywordParser - -Create RemoveTagFromCardCommand -CardKeywordParser -> RemoveTagFromCardCommand : RemoveTagFromCardCommand() -activate RemoveTagFromCardCommand +Inka -> CardKeywordParser : parseCommand() Create CardSelector -RemoveTagFromCardCommand -> CardSelector : CardSelector() -return +CardKeywordParser -> CardSelector : create cardSelector to identify card +return cardSelector Create TagSelector -RemoveTagFromCardCommand -> TagSelector : TagSelector() +CardKeywordParser -> TagSelector : create tagSelector to identify tag +return tagSelector + +Create RemoveTagFromCardCommand +CardKeywordParser -> RemoveTagFromCardCommand : RemoveTagFromCardCommand(cardSelector, tagSelector) return -RemoveTagFromCardCommand -> RemoveTagFromCardCommand: execute() +return RemoveTagFromCardCommand + +Inka -> RemoveTagFromCardCommand: execute() RemoveTagFromCardCommand -> CardList : findCard(cardSelector) alt index is specified @@ -89,4 +93,6 @@ return RemoveTagFromCardCommand -> UserInterface : printRemoveTagFromCard() return +return + @enduml diff --git a/docs/uml/CardViewSequence.puml b/docs/uml/CardViewSequence.puml index 2be5eb5df5..17b5b7ba7c 100644 --- a/docs/uml/CardViewSequence.puml +++ b/docs/uml/CardViewSequence.puml @@ -2,6 +2,7 @@ autoactivate on +participant ":Inka" as Inka participant ":ViewCardCommand" as ViewCardCommand participant ":CardList" as CardList participant ":CardSelector" as CardSelector @@ -15,16 +16,18 @@ participant ":DeckUUID" as DeckUUID participant ":UserInterface" as UserInterface participant ":CardKeywordParser" as CardKeywordParser +Inka -> CardKeywordParser : parseCommand() + +Create CardSelector +CardKeywordParser -> CardSelector : create cardSelector to identify card +return cardSelector Create ViewCardCommand CardKeywordParser -> ViewCardCommand : ViewCardCommand() -activate ViewCardCommand - -Create CardSelector -ViewCardCommand -> CardSelector : CardSelector() return +return ViewCardCommand -ViewCardCommand -> ViewCardCommand : execute() +Inka -> ViewCardCommand : execute() ViewCardCommand -> CardList : findCard() alt index is specified @@ -83,4 +86,6 @@ return decksFound ViewCardCommand -> UserInterface : printDecks(decksFound) return +return + @enduml diff --git a/docs/uml/ListCardsUnderTag.puml b/docs/uml/ListCardsUnderTag.puml index 01e7682498..ba3a664cef 100644 --- a/docs/uml/ListCardsUnderTag.puml +++ b/docs/uml/ListCardsUnderTag.puml @@ -1,6 +1,8 @@ -@startuml +@startuml ListCardsInTagCommand + autoactivate on +participant ":Inka" as Inka participant ":ListCardsInTagCommand" as ListCardsInTagCommand participant ":TagList" as TagList participant ":CardList" as CardList @@ -13,18 +15,20 @@ participant ":Tag" as Tag participant ":UserInterface" as UserInterface participant ":TagKeywordParser" as TagKeywordParser - -Create ListCardsInTagCommand -TagKeywordParser -> ListCardsInTagCommand : ListCardsInTagCommand() -activate ListCardsInTagCommand +Inka -> TagKeywordParser : parseCommand() Create TagSelector -ListCardsInTagCommand -> TagSelector : TagSelector() +TagKeywordParser -> TagSelector : create tagSelector to identify tag +return tagSelector + +Create ListCardsInTagCommand +TagKeywordParser -> ListCardsInTagCommand : ListCardsInTagCommand(tagSelector) return +return ListCardsInTagCommand -ListCardsInTagCommand -> ListCardsInTagCommand: execute() -ListCardsInTagCommand -> TagList : findTag(TagSelector) +Inka -> ListCardsInTagCommand: execute() +ListCardsInTagCommand -> TagList : findTag(tagSelector) return foundTag ListCardsInTagCommand -> ListCardsInTagCommand : findCardsUnderTag(foundTag) @@ -50,4 +54,6 @@ return foundCardList ListCardsInTagCommand -> UserInterface : printCardList(foundCardList) return +return + @enduml diff --git a/docs/uml/ListItemsDeck.puml b/docs/uml/ListItemsDeck.puml index 09954bf29b..01c5b6dfc0 100644 --- a/docs/uml/ListItemsDeck.puml +++ b/docs/uml/ListItemsDeck.puml @@ -1,6 +1,7 @@ -@startuml +@startuml ListItemsDeckCommand autoactivate on +participant ":Inka" as Inka participant ":ListItemsDeckCommand" as ListItemsDeckCommand participant ":TagList" as TagList participant ":CardList" as CardList @@ -14,12 +15,14 @@ participant ":Deck" as Deck participant ":UserInterface" as UserInterface participant ":DeckKeywordParser" as DeckKeywordParser +Inka -> DeckKeywordParser : parseCommand() Create ListItemsDeckCommand DeckKeywordParser -> ListItemsDeckCommand : ListItemsDeckCommand() -activate ListItemsDeckCommand +return +return ListItemsDeckCommand -ListItemsDeckCommand -> ListItemsDeckCommand : execute() +Inka -> ListItemsDeckCommand : execute() ListItemsDeckCommand -> ListItemsDeckCommand : findCardsUnderDeck() ListItemsDeckCommand -> DeckList : findDeckFromName(String) return foundDeck @@ -49,5 +52,7 @@ return foundTagList ListItemsDeckCommand -> UserInterface : printTagList(foundTagList) return +return + @enduml diff --git a/docs/uml/TagListSequence.puml b/docs/uml/TagListSequence.puml deleted file mode 100644 index fb051ba3e4..0000000000 --- a/docs/uml/TagListSequence.puml +++ /dev/null @@ -1,60 +0,0 @@ -@startuml TagListSequence -autoactivate on - -participant ":AddCardToTagCommand" as AddCardToTagCommand -participant ":CardList" as CardList -participant ":CardSelector" as CardSelector -participant ":TagList" as TagList -participant ":Tag" as Tag -participant ":Card" as Card - -Create AddCardToTagCommand -CardKeywordParser -> AddCardToTagCommand : AddCardToTagCommand() -activate AddCardToTagCommand - -Create CardSelector -AddCardToTagCommand -> CardSelector : CardSelector() -return - -Create TagSelector -AddCardToTagCommand -> TagSelector : TagSelector() -return - -AddCardToTagCommand -> CardList : findCard() - -CardList -> CardSelector : getIndex() -return cardIndex - -CardList -> CardSelector : getUUID() -return cardUUID - -return cardToAdd - -AddCardToTagCommand -> AddCardToTagCommand : addCardToTag(cardToAdd) - -AddCardToTagCommand -> TagList : findTag() -return tagToAdd - -opt tagToAdd == null - create Tag - AddCardToTagCommand -> Tag : Tag() - return tagToAdd - AddCardToTagCommand -> TagList : addTag(tagToAdd) - return -end - - -AddCardToTagCommand -> Card : getUUID() -return cardUUID - -AddCardToTagCommand -> Tag : addCard(cardUUID) -return -AddCardToTagCommand -> Tag : getUUID() -return tagUUID - -AddCardToTagCommand -> Card : addTag(tagUUID) -return - - -@enduml - From 77a972393bc42333cf997bb2b42fe5e5901c6a02 Mon Sep 17 00:00:00 2001 From: Akhil Date: Mon, 10 Apr 2023 17:41:52 +0800 Subject: [PATCH 282/311] feat: Added PPP and changed UG --- docs/AboutUs.md | 14 +- docs/UserGuide.md | 61 +++++---- docs/team/MuthyaNarayanacharyAkhil.md | 177 ++++++++++++++++++++++++++ src/main/java/model/Card.java | 8 -- src/test/java/model/LogicTest.java | 1 - 5 files changed, 214 insertions(+), 47 deletions(-) create mode 100644 docs/team/MuthyaNarayanacharyAkhil.md diff --git a/docs/AboutUs.md b/docs/AboutUs.md index fcb80fd7d1..1aee65c050 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -1,9 +1,9 @@ # About us - Display | Name | Github Profile | Portfolio ------------------------------------------------------|:------------:|:-----------------------------------------:|:---------------------------------: - ![](https://via.placeholder.com/100.png?text=Photo) | Mitch Malvin | [Github](https://github.com/mitchmalvin1) | [Portfolio](team/mitchmalvin1.md) - ![](https://via.placeholder.com/100.png?text=Photo) | Don Joe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) - ![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) - ![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) - ![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) + Display | Name | Github Profile | Portfolio +-----------------------------------------------------|:--------------------------:|:-----------------------------------------:|:---------------------------------: + ![](https://via.placeholder.com/100.png?text=Photo) | Mitch Malvin | [Github](https://github.com/mitchmalvin1) | [Portfolio](team/mitchmalvin1.md) + ![](https://via.placeholder.com/100.png?text=Photo) | Muthya Narayanachary Akhil | [Github](https://github.com/lihka1202) | [Portfolio](team/MuthyaNarayanacharyAkhil.md) + ![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) + ![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) + ![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index b15a2039eb..ed922635d4 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -174,7 +174,6 @@ card add -q What is the flag for question? -a -q card add -q What is the flag for question? -a "-q" ``` -### Listing all cards ### Editing a card : ### Listing all cards : @@ -749,33 +748,33 @@ Your file will be loaded the next time you run Inka! ## Command Summary **Note:** Flags can be given in any order! -| **Command** | **Format** | -|----------------------------------|------------------------------------------------------------------------------------| -| Create a card | `card add -q QUESTION -a ANSWER` | -| Create a tag | `card tag {-c CARD_UUID | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}` | -| Create a deck (using card) | `card deck {-c CARD_UUID | -i CARD_INDEX} -d DECK_NAME` | -| Create a deck (using tag) | `card deck {-t TAG_NAME | -x TAG_INDEX} -d DECK_NAME` | -| Add a tag to a card | `card tag {-c CARD_UUID | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}` | -| Untag a card | `card untag {-c CARD_UUID | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}` | -| Add a card to a deck | `card deck {-c CARD_UUID | -i CARD_INDEX} -d DECK_NAME` | -| Add a tag to a deck | `tag deck -d DECK_NAME {-t TAG_NAME | -x TAG_INDEX}` | -| Delete a card | `card delete {-c CARD_UUID | -i CARD_INDEX}` | -| Delete a tag | `tag delete {-t TAG_NAME | -x TAG_INDEX}` | -| Delete a deck | `deck delete -d DECK_NAME` | -| Delete a card from a deck | `deck delete -d DECK_NAME {-c CARD_UUID | -i CARD_INDEX}` | -| Delete a tag from a deck | `deck delete -d DECK_NAME {-t TAG_NAME | -x TAG_INDEX}` | -| List cards | `card list` | -| List tags | `tag list` | -| List cards under a tag | `tag list {-t TAG_NAME | -x TAG_INDEX}` | -| List decks | `deck list` | -| List cards and tags under a deck | `deck list -d DECK_NAME` | -| View a card | `card view {-c CARD_UUID | -i CARD_INDEX}` | -| Run the `deck` | `deck run -d DECK_NAME` | -| Edit a card | `card edit -n NEW_CARD_NAME -o OLD_CARD_NAME` | -| Edit a tag | `tag edit -n NEW_TAG_NAME -o OLD_TAG_NAME` | -| Edit a deck | `deck edit -n NEW_DECK_NAME -o OLD_DECK_NAME` | -| Exits the program | `bye` | -| Help about deck | `deck help` | -| Help about tag | `tag help` | -| Help about card | `card help` | -| Help in general | `help` | +| **Command** | **Format** | +|----------------------------------|----------------------------------------------------------------------------| +| Create a card | `card add -q QUESTION -a ANSWER` | +| Create a tag | `card tag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | +| Create a deck (using card) | `card deck {-c CARD_UUID \| -i CARD_INDEX} -d DECK_NAME` | +| Create a deck (using tag) | `card deck {-t TAG_NAME \| -x TAG_INDEX} -d DECK_NAME` | +| Add a tag to a card | `card tag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | +| Untag a card | `card untag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | +| Add a card to a deck | `card deck {-c CARD_UUID \| -i CARD_INDEX} -d DECK_NAME` | +| Add a tag to a deck | `tag deck -d DECK_NAME {-t TAG_NAME \| -x TAG_INDEX}` | +| Delete a card | `card delete {-c CARD_UUID \| -i CARD_INDEX}` | +| Delete a tag | `tag delete {-t TAG_NAME \| -x TAG_INDEX}` | +| Delete a deck | `deck delete -d DECK_NAME` | +| Delete a card from a deck | `deck delete -d DECK_NAME {-c CARD_UUID \| -i CARD_INDEX}` | +| Delete a tag from a deck | `deck delete -d DECK_NAME {-t TAG_NAME \| -x TAG_INDEX}` | +| List cards | `card list` | +| List tags | `tag list` | +| List cards under a tag | `tag list {-t TAG_NAME \| -x TAG_INDEX}` | +| List decks | `deck list` | +| List cards and tags under a deck | `deck list -d DECK_NAME` | +| View a card | `card view {-c CARD_UUID \| -i CARD_INDEX}` | +| Run the `deck` | `deck run -d DECK_NAME` | +| Edit a card | `card edit -n NEW_CARD_NAME -o OLD_CARD_NAME` | +| Edit a tag | `tag edit -n NEW_TAG_NAME -o OLD_TAG_NAME` | +| Edit a deck | `deck edit -n NEW_DECK_NAME -o OLD_DECK_NAME` | +| Exits the program | `bye` | +| Help about deck | `deck help` | +| Help about tag | `tag help` | +| Help about card | `card help` | +| Help in general | `help` | diff --git a/docs/team/MuthyaNarayanacharyAkhil.md b/docs/team/MuthyaNarayanacharyAkhil.md new file mode 100644 index 0000000000..3e0b83be67 --- /dev/null +++ b/docs/team/MuthyaNarayanacharyAkhil.md @@ -0,0 +1,177 @@ +# Muthya Narayanachary Akhil - Project Portfolio Page + +## Overview +Inka is a CLI-based software that allows users to add Cards containing questions and answers, +attach tags into each Card and group cards into decks. Inka aims to help students revise for their exams +by providing a flashcard-like experience + +## Summary of Contributions + +I have mainly implemented 2 features, and have assisted in the implementation of some others. +### Features Implemented + +#### Deck Feature +- **What it does** : This feature allows users to group Card(s) and Tag(s) under a common structure called the Deck. +The core purpose of the Deck is to allow users to aggregate their existing Tag(s) and Card(s) into a singular block of +data which can be constantly referred to! The Deck has many features, they are listed below: + + - `card deck {-c CARD_UUID | -i CARD_INDEX} -d DECK_NAME` --> _Put the Card into a Deck_ + - `tag deck -d DECK_NAME {-t TAG_NAME | -x TAG_INDEX}` --> _Put the Tag into the Deck_ + - `deck edit -o OLD_DECK_NAME -n NEW_DECK_NAME` --> _Edit the name_ + - `deck delete -d DECK_NAME [{-c CARD_UUID | -i CARD_INDEX} | {-t TAG_NAME | -x TAG_INDEX}]` --> +Deleting a Card/Tag from Deck + - `deck list [-d DECK_NAME]` --> List all decks/ list all Card(s) and Tag(s) under Deck + - `deck run -d DECK_NAME` --> Run the Deck for the user to revise the questions + + +- **Justification** : This feature is another layer of grouping cards. Tags can group similar cards and Decks can group +similar Tag(s) and Card(s). This also allows users to generate viable groupings they would wish to test-themselves on. +More often than not, topics are usually related to each other, having three different levels of abstracting data would +allow users to customize their learning experience. + + +- **Highlights** : Since Deck is an overarching feature, one notable effect is its permeability in the program. Each +Deck makes use of an `ArrayList`, `HashSet` and `HashMap`. + - The purpose of the `ArrayList` is to keep an account + of all the cards which are individually added to the Deck. + - The purpose of the `HashSet` is to aggregate all the cards + stored under both the `HashMap` and the `ArrayList`. In gist, the `HashSet` contains every single card in the deck, + stored directly or indirectly through Tag(s). This is used to run the Deck. + - The purposed of the `HashMap` is to keep track of + all the cards under the various tags in a deck, and keep track of cards which could be shared between decks. + This ensures that even if shared cards are deleted from tag or tags are deleted from the deck, the `HashSet` is +updated. + + + + +### Features Contributed + +#### _Tag Feature_ + +Due to the permeability of the Deck, I contributed to the Tag Feature in the following ways: +- `Tag::addCardIntoDeckHashSet(DeckList, CardUUID)` : Whenever a card is added into the Tag, if the Tag is under any +Deck, the card is added into the `Hashset` and `HashMap`. +- `Tag::addDeck(DeckUUID)` : This function adds the `DeckUUID` of the deck the tag is under to the Tag's internal +storage of `DeckUUID`. +- `Tag::removeDeck(DeckUUID)` : This function removes the `DeckUUID` from a tag if the tag is deleted or removed from +the Deck. +- `Tag::cardIsInTag(CardUUID)` : This card returns a boolean and lets the user know if the card with the `CardUUID` is +in the Tag +- `Tag::getDecks()` : This command returns an `ArraList`, which is representative of the decks the tag is +under. + +#### _Card Feature_ +I have contributed to Card through the following methods: +- `Card::getDecksUUID()` : This method returns an `ArraList`, which is representative of the decks the card +is under. +- `Card::addDeck(DeckUUID)` : This method adds the `DeckUUID` to the Card's internal storage list of `DeckUUID` +- `Card::removeDecks(DeckUUID)` : This method removes the `DeckUUID` from the Card's internal storage list of +`DeckUUID`. + +### Miscellaneous Contributions + +#### _Testing Code_ +Here are some tests I wrote in order to gauge the logic: +- `LogicTest::logic_deleteSharedCard()` : Tests if the `HashSet` is able to detect when two tags sharing the same card +are added to the `Deck` and randomly deleted. +- `LogicTest::logic_unTagCardWhileInDeck()` : Tests if the cards under a tag are removed from the HashSet if the Tag is +removed from the `Deck`. +- `LogicTest::logic_tagCardWhileInDeck()` : Tests if the cards are added to a `HashSet` if new cards are added to a Tag +under the `Deck`. +- `LogicTest::logic_deleteMultipleTags()` : Tests overall functionality of `Deck`. + +### Code Contribution +The code contribution analyzed by repo-sense can be found +[here.](https://nus-cs2113-ay2223s2.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2023-02-17&tabOpen=true&tabType=authorship&tabAuthor=lihka1202&tabRepo=AY2223S2-CS2113-F10-1%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code~other&authorshipIsBinaryFileTypeChecked=false&authorshipIsIgnoredFilesChecked=false) + +### Team-based Tasks +Here are the Issues that were assigned to me and have been closed: +- [Refactoring Command and ExceptionHandler #12](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/12) +- [Create exception handler for parsing-related error #24](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/24) +- [Create exception handler for cardList related error (index out of bounds etc) #25](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/25) +- [Create exception class storing various types of exceptions for Inka #26](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/26) +- [Implement the Deck object #50](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/50) +- [Deck should be able to aggregate Card based on a list of CardUUID #51](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/51) +- [(Stretch Goal) Deck should also be able to aggregate Card based on a list of TagUUID #52](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/52) +- [Implement removal of Card from Deck #57](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/57) +- [If an instance of Card has been deleted, its UUID could be deleted from all instances of Decks and Tags it is under #59](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/59) +- [Implement Card instance knowledge of which Deck instance it belongs to #60](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/60) +- [Implement Tag instance knowledge of which Deck it belongs to #61](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/61) +- [Meet Week 10 tP requirements #73](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/73) +- [Ensure that the same Card cannot be added to the Deck #74](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/74) +- [Ensure that the same Card cannot be added to the same Tag. #75](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/75) +- [Ensure that the same Tag cannot be added to the Deck again #76](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/76) +- [[PE-D][Tester D] Error Message for creating deck #116](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/116) +- [[PE-D][Tester D] Fail to delete deck #123](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/123) +- [[PE-D][Tester A] List tags under a deck possible documentation error #134](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/134) +- [DG deck feature #171](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/171) +- [Combine add/delete cards for Deck #177](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/177) +- [Check if the Help command is up to date #182](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/182) +- [deck run should warn if the user enters any input #187](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/187) +- [Fix logic issues #189](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/189) +- [Modify deck list behaviour #194](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/194) +- [Settle up UG for Deck #198](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/198) + +Here is a list of PRs of mine that have been merged: +- [refactor: refactored exceptions into InkaExceptions #34](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/34) +- [feat: added Deck #68](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/68) +- [feat: Added Card and Tag removal from Deck #70](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/70) +- [feat: Added Deck under the Help Command #85](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/85) +- [feat: Added Command Summary #96](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/96) +- [feat: Added Card and Tag aggregation into the Deck and Added Run Mode #176](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/176) +- [feat: resolved #189, #187 #191](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/191) +- [feat: resolved issues(#194, #134, #182) and added some tests for Tags and Decks #206](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/206) +- [feat: DeckList and Deck Feature Added into the DG, UG checked #211](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/211) + + +### Documentation + +#### User Guide +I contributed the documentation with the following features: + +- `card deck {-c CARD_UUID | -i CARD_INDEX} -d DECK_NAME` --> _Put the Card into a Deck_ +- `tag deck -d DECK_NAME {-t TAG_NAME | -x TAG_INDEX}` --> _Put the Tag into the Deck_ +- `deck edit -o OLD_DECK_NAME -n NEW_DECK_NAME` --> _Edit the name_ +- `deck delete -d DECK_NAME [{-c CARD_UUID | -i CARD_INDEX} | {-t TAG_NAME | -x TAG_INDEX}]` --> + Deleting a Card/Tag from Deck +- `deck list [-d DECK_NAME]` --> List all decks/ list all Card(s) and Tag(s) under Deck +- `deck run -d DECK_NAME` --> Run the Deck for the user to revise the questions + +I also contributed by creating and formatting the **Command Summary**, which can be seen below: + +| **Command** | **Format** | +|----------------------------------|----------------------------------------------------------------------------| +| Create a card | `card add -q QUESTION -a ANSWER` | +| Create a tag | `card tag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | +| Create a deck (using card) | `card deck {-c CARD_UUID \| -i CARD_INDEX} -d DECK_NAME` | +| Create a deck (using tag) | `card deck {-t TAG_NAME \| -x TAG_INDEX} -d DECK_NAME` | +| Add a tag to a card | `card tag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | +| Untag a card | `card untag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | +| Add a card to a deck | `card deck {-c CARD_UUID \| -i CARD_INDEX} -d DECK_NAME` | +| Add a tag to a deck | `tag deck -d DECK_NAME {-t TAG_NAME \| -x TAG_INDEX}` | +| Delete a card | `card delete {-c CARD_UUID \| -i CARD_INDEX}` | +| Delete a tag | `tag delete {-t TAG_NAME \| -x TAG_INDEX}` | +| Delete a deck | `deck delete -d DECK_NAME` | +| Delete a card from a deck | `deck delete -d DECK_NAME {-c CARD_UUID \| -i CARD_INDEX}` | +| Delete a tag from a deck | `deck delete -d DECK_NAME {-t TAG_NAME \| -x TAG_INDEX}` | +| List cards | `card list` | +| List tags | `tag list` | +| List cards under a tag | `tag list {-t TAG_NAME \| -x TAG_INDEX}` | +| List decks | `deck list` | +| List cards and tags under a deck | `deck list -d DECK_NAME` | +| View a card | `card view {-c CARD_UUID \| -i CARD_INDEX}` | +| Run the `deck` | `deck run -d DECK_NAME` | +| Edit a card | `card edit -n NEW_CARD_NAME -o OLD_CARD_NAME` | +| Edit a tag | `tag edit -n NEW_TAG_NAME -o OLD_TAG_NAME` | +| Edit a deck | `deck edit -n NEW_DECK_NAME -o OLD_DECK_NAME` | +| Exits the program | `bye` | +| Help about deck | `deck help` | +| Help about tag | `tag help` | +| Help about card | `card help` | +| Help in general | `help` | + + + + +#### Developer Guide diff --git a/src/main/java/model/Card.java b/src/main/java/model/Card.java index 0d59fc4420..65dc0801e3 100644 --- a/src/main/java/model/Card.java +++ b/src/main/java/model/Card.java @@ -88,14 +88,6 @@ public void removeDecks(DeckUUID deckUUID) { decks.remove(deckUUID); } - public boolean deckEmpty() { - return this.decks.isEmpty(); - } - - public boolean tagEmpty() { - return this.tags.isEmpty(); - } - @Override public String toString() { return "\t[" + this.uuid + "]\n" + diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index b184f99a1b..11b793cce4 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -255,7 +255,6 @@ public void logic_unTagCardWhileTagInDeck() throws InkaException{ } - //TODO: Failing @Test public void logic_tagCardWhileTagInDeck() throws InkaException { // create a card From 51f95dd16fcca3e919cd9440899273612719131f Mon Sep 17 00:00:00 2001 From: Akhil Date: Mon, 10 Apr 2023 18:03:04 +0800 Subject: [PATCH 283/311] feat: Finished PPP and Linked in AboutUs --- docs/img/AddCardToDeck.png | Bin 65433 -> 64592 bytes docs/img/ListItemDeckFinal.png | Bin 56476 -> 62587 bytes docs/team/MuthyaNarayanacharyAkhil.md | 15 +++++++++++++++ 3 files changed, 15 insertions(+) diff --git a/docs/img/AddCardToDeck.png b/docs/img/AddCardToDeck.png index b31799a0e36ea61f85dd411ae05248279525575e..3729f000336978b1a65d80eee5b4706864fb09e1 100644 GIT binary patch literal 64592 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 VJd@(Fegp+nQBar9JZa+pe*l*&7gYcN literal 65433 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 literal 56476 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 g3@x^8J72T8eT Date: Mon, 10 Apr 2023 18:14:10 +0800 Subject: [PATCH 284/311] update the sequence diagrams for load and save --- docs/img/LoadSequence.PNG | Bin 51603 -> 53139 bytes docs/uml/LoadSequence.puml | 33 ++++++++++++++++--------------- docs/uml/SaveSequence.puml | 39 +++++++++++++++++++------------------ 3 files changed, 37 insertions(+), 35 deletions(-) diff --git a/docs/img/LoadSequence.PNG b/docs/img/LoadSequence.PNG index da7f682052698a80a5defdfc6bccdbdda7c192df..b5d38a6c02f8f1d44d1202d624b666b317c9759b 100644 GIT binary patch literal 53139 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 V9FP7DHevyqnX!ct$>6W({{gp4Y&ZY_ diff --git a/docs/uml/LoadSequence.puml b/docs/uml/LoadSequence.puml index d01498b81e..2afc5532c5 100644 --- a/docs/uml/LoadSequence.puml +++ b/docs/uml/LoadSequence.puml @@ -1,21 +1,21 @@ @startuml -participant "JsonStorage" as JsonStorage -participant ":load" as load +participant ":JsonStorage" as JsonStorage -participant "JsonObject:saveDataObject" as saveDataObject -participant GsonBuilder -participant JsonElement -participant "JsonToMemory" as jtm +participant "saveDataObject:JsonObject" as saveDataObject +participant "<> \nGsonBuilder" as GsonBuilder +participant ":JsonElement" as JsonElement +participant "<> \n JsonToMemory" as jtm +participant ":Memory" as memory +-> JsonStorage : load() +activate JsonStorage -create load -JsonStorage -> load : load() -activate load -load -> GsonBuilder : create().fromJson() + +JsonStorage -> GsonBuilder : create().fromJson() activate GsonBuilder create JsonElement @@ -26,12 +26,12 @@ deactivate GsonBuilder JsonElement -> saveDataObject : getAsJsonObject() deactivate JsonElement activate saveDataObject -saveDataObject --> load +saveDataObject --> JsonStorage deactivate saveDataObject alt valid save file -load -> jtm :JsonToMemory.convert(saveDataObject) +JsonStorage -> jtm :JsonToMemory.convert(saveDataObject) activate jtm @@ -47,16 +47,16 @@ create memory jtm -> memory deactivate jtm activate memory - memory -> load + memory --> JsonStorage deactivate memory else benis -load --> JsonStorage -deactivate load + + @@ -64,9 +64,10 @@ deactivate load participant "Memory:memory" as memory -<-- JsonStorage +<-- JsonStorage : memory note right : memory object returned +deactivate JsonStorage diff --git a/docs/uml/SaveSequence.puml b/docs/uml/SaveSequence.puml index 9d81af9235..92577700fa 100644 --- a/docs/uml/SaveSequence.puml +++ b/docs/uml/SaveSequence.puml @@ -1,52 +1,53 @@ @startuml -participant "JsonStorage" as JsonStorage -participant ":save" as save +participant ":JsonStorage" as JsonStorage -participant "Memory:memory" as memory -participant "MemoryToJson" as MemoryToJson +participant ":Memory" as memory +participant "<> \n MemoryToJson" as mtj -create save -JsonStorage -> save : save(cardList, tagList, deckList) -activate save + +-> JsonStorage : save(cardList, tagList, deckList) +activate JsonStorage + + create memory -save -> memory : Memory(cardList, tagList, deckList) +JsonStorage -> memory : Memory(cardList, tagList, deckList) activate memory -memory --> save +memory --> JsonStorage : Memory deactivate memory -save -> "MemoryToJson" :MemoryToJson.convert(memory); -activate "MemoryToJson" +JsonStorage-> "mtj" :MemoryToJson.convert(memory); +activate "mtj" -"MemoryToJson" -> "MemoryToJson" ++ : convert() +"mtj" -> "mtj" ++ : convert() -"MemoryToJson" -> "MemoryToJson" ++: cardListToJson +"mtj" -> "mtj" ++: cardListToJson return -"MemoryToJson" -> "MemoryToJson" ++: tagListToJson +"mtj" -> "mtj" ++: tagListToJson return -"MemoryToJson" -> "MemoryToJson" ++: deckListToJson +"mtj" -> "mtj" ++: deckListToJson return return -"MemoryToJson" --> save +"mtj" --> JsonStorage : JsonObject note left : savedata converted to json -deactivate "MemoryToJson" +deactivate "mtj" -save -> JsonStorage : saveDataToFile() +JsonStorage -> JsonStorage ++: saveDataToFile() note right : data written to filesystem as json +return -deactivate save @enduml From 794eba1390dab21330ff8f4911383b26508b9ec2 Mon Sep 17 00:00:00 2001 From: Akhil Date: Mon, 10 Apr 2023 18:19:20 +0800 Subject: [PATCH 285/311] fix: minor issues in PPP and linked About Us (Except Ian) --- docs/AboutUs.md | 6 +++--- docs/team/mitchmalvin1.md | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 1aee65c050..96df87381e 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -4,6 +4,6 @@ -----------------------------------------------------|:--------------------------:|:-----------------------------------------:|:---------------------------------: ![](https://via.placeholder.com/100.png?text=Photo) | Mitch Malvin | [Github](https://github.com/mitchmalvin1) | [Portfolio](team/mitchmalvin1.md) ![](https://via.placeholder.com/100.png?text=Photo) | Muthya Narayanachary Akhil | [Github](https://github.com/lihka1202) | [Portfolio](team/MuthyaNarayanacharyAkhil.md) - ![](https://via.placeholder.com/100.png?text=Photo) | Ron John | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) - ![](https://via.placeholder.com/100.png?text=Photo) | John Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) - ![](https://via.placeholder.com/100.png?text=Photo) | Don Roe | [Github](https://github.com/) | [Portfolio](docs/team/johndoe.md) + ![](https://via.placeholder.com/100.png?text=Photo) | Lee Tze Han | [Github](https://github.com/ltzehan) | [Portfolio](team/ltzehan.md) + ![](https://via.placeholder.com/100.png?text=Photo) | Wang Silang | [Github](https://github.com/JangusRoundstone) | [Portfolio](team/JangusRoundstone.md) + ![](https://via.placeholder.com/100.png?text=Photo) | Teng Yuan Kai | [Github](https://github.com/iantenkai) | [Portfolio](team/johndoe.md) diff --git a/docs/team/mitchmalvin1.md b/docs/team/mitchmalvin1.md index a79b25f034..fa2c947d24 100644 --- a/docs/team/mitchmalvin1.md +++ b/docs/team/mitchmalvin1.md @@ -102,7 +102,7 @@ Add documentations for the following features : - `tag edit -o OLD_NAME -n NEW_NAME` to edit the name of the Tag - `tag list [-c CARD_UUID | -i CARD_INDEX]` to list all the Cards that fall under the Tag - `tag delete {-t TAG_NAME | -x TAG_INDEX}` to remove the Tag from the TagList -- `tag deck {-t TAG_NAME | -x TAG_INDEX} -d DECK_NAME` to add all the cards that fall under a tag into the dck +- `tag deck {-t TAG_NAME | -x TAG_INDEX} -d DECK_NAME` to add all the cards that fall under a tag into the deck #### Developer Guide @@ -110,11 +110,11 @@ Add documentations for the following features : The Class Diagram for `CardList` can be found below : -![CardList Class Diagram](../img/CardListClass.svg) +![CardList Class Diagram](../img/CardListClass.png) The Class Diagram for `TagList` can be found below : -![TagList Class Diagram](../img/TagListClass.svg) +![TagList Class Diagram](../img/TagListClass.png) - Add Sequence Diagram for `card view {-c CARD_UUID | -i CARD_INDEX}`, `card untag {-c CARD_UUID | -t TAG_NAME}` and `tag list {-c CARD_UUID | -i CARD_INDEX}` From 6c8597e770a2f21af2222e3eb73f4281348312c6 Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 18:31:38 +0800 Subject: [PATCH 286/311] fix cardList class diagram --- docs/img/CardListClass.png | Bin 102964 -> 40097 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/img/CardListClass.png b/docs/img/CardListClass.png index 187487892ca70c500ab3da593fc79f47be9015c5..82920c30e546959d719fa842abc9f67e3275c237 100644 GIT binary patch literal 40097 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 literal 102964 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�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 HvpM)*Lja~1 From bd51874ae5f047577dba3034a8ccbffc0787acc6 Mon Sep 17 00:00:00 2001 From: Akhil Date: Mon, 10 Apr 2023 18:49:17 +0800 Subject: [PATCH 287/311] fix: issues with '|' operator and table --- docs/team/MuthyaNarayanacharyAkhil.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/docs/team/MuthyaNarayanacharyAkhil.md b/docs/team/MuthyaNarayanacharyAkhil.md index c2b4c940e2..65693de9d8 100644 --- a/docs/team/MuthyaNarayanacharyAkhil.md +++ b/docs/team/MuthyaNarayanacharyAkhil.md @@ -143,24 +143,24 @@ I also contributed by creating and formatting the **Command Summary**, which can | **Command** | **Format** | |----------------------------------|----------------------------------------------------------------------------| | Create a card | `card add -q QUESTION -a ANSWER` | -| Create a tag | `card tag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | -| Create a deck (using card) | `card deck {-c CARD_UUID \| -i CARD_INDEX} -d DECK_NAME` | -| Create a deck (using tag) | `card deck {-t TAG_NAME \| -x TAG_INDEX} -d DECK_NAME` | -| Add a tag to a card | `card tag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | -| Untag a card | `card untag {-c CARD_UUID \| -i CARD_INDEX} {-t TAG_NAME \| -x TAG_INDEX}` | -| Add a card to a deck | `card deck {-c CARD_UUID \| -i CARD_INDEX} -d DECK_NAME` | -| Add a tag to a deck | `tag deck -d DECK_NAME {-t TAG_NAME \| -x TAG_INDEX}` | -| Delete a card | `card delete {-c CARD_UUID \| -i CARD_INDEX}` | -| Delete a tag | `tag delete {-t TAG_NAME \| -x TAG_INDEX}` | +| Create a tag | `card tag {-c CARD_UUID `|` -i CARD_INDEX} {-t TAG_NAME `|` -x TAG_INDEX}` | +| Create a deck (using card) | `card deck {-c CARD_UUID `|` -i CARD_INDEX} -d DECK_NAME` | +| Create a deck (using tag) | `card deck {-t TAG_NAME `|` -x TAG_INDEX} -d DECK_NAME` | +| Add a tag to a card | `card tag {-c CARD_UUID `|` -i CARD_INDEX} {-t TAG_NAME `|` -x TAG_INDEX}` | +| Untag a card | `card untag {-c CARD_UUID `|` -i CARD_INDEX} {-t TAG_NAME `|` -x TAG_INDEX}` | +| Add a card to a deck | `card deck {-c CARD_UUID `|` -i CARD_INDEX} -d DECK_NAME` | +| Add a tag to a deck | `tag deck -d DECK_NAME {-t TAG_NAME `|` -x TAG_INDEX}` | +| Delete a card | `card delete {-c CARD_UUID `|` -i CARD_INDEX}` | +| Delete a tag | `tag delete {-t TAG_NAME `|` -x TAG_INDEX}` | | Delete a deck | `deck delete -d DECK_NAME` | -| Delete a card from a deck | `deck delete -d DECK_NAME {-c CARD_UUID \| -i CARD_INDEX}` | -| Delete a tag from a deck | `deck delete -d DECK_NAME {-t TAG_NAME \| -x TAG_INDEX}` | +| Delete a card from a deck | `deck delete -d DECK_NAME {-c CARD_UUID `|` -i CARD_INDEX}` | +| Delete a tag from a deck | `deck delete -d DECK_NAME {-t TAG_NAME `|` -x TAG_INDEX}` | | List cards | `card list` | | List tags | `tag list` | -| List cards under a tag | `tag list {-t TAG_NAME \| -x TAG_INDEX}` | +| List cards under a tag | `tag list {-t TAG_NAME `|` -x TAG_INDEX}` | | List decks | `deck list` | | List cards and tags under a deck | `deck list -d DECK_NAME` | -| View a card | `card view {-c CARD_UUID \| -i CARD_INDEX}` | +| View a card | `card view {-c CARD_UUID `|` -i CARD_INDEX}` | | Run the `deck` | `deck run -d DECK_NAME` | | Edit a card | `card edit -n NEW_CARD_NAME -o OLD_CARD_NAME` | | Edit a tag | `tag edit -n NEW_TAG_NAME -o OLD_TAG_NAME` | From 43d0548159a21f32de21d48350df480d9641a4ce Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 19:10:06 +0800 Subject: [PATCH 288/311] docs : remove parser section from tag sequence diagrams --- docs/DeveloperGuide.md | 130 +++++++++++------------ docs/img/AddCardToDeckRef.png | Bin 37311 -> 0 bytes docs/img/AddCardsToFoundCardListRef.png | Bin 27525 -> 25812 bytes docs/img/AddDecksToDecksFoundRef.png | Bin 43575 -> 42395 bytes docs/img/AddTagsToTagsFoundRef.png | Bin 42812 -> 41560 bytes docs/img/CardUntagSequence.png | Bin 87559 -> 70717 bytes docs/img/CardViewSequence.png | Bin 85525 -> 74789 bytes docs/img/ListCardsUnderTagSequence.png | Bin 46870 -> 35508 bytes docs/img/RemoveCardFromDecksRef.png | Bin 38676 -> 37355 bytes docs/img/RemoveTagFromCardRef.png | Bin 35882 -> 34506 bytes docs/uml/AddCardsToFoundCardListRef.puml | 3 +- docs/uml/AddDecksToDecksFoundRef.puml | 4 +- docs/uml/AddTagsToTagsFoundRef.puml | 3 +- docs/uml/CardUntagSequence.puml | 17 --- docs/uml/CardViewSequence.puml | 22 ++-- docs/uml/ListCardsUnderTag.puml | 26 ++--- docs/uml/RemoveCardFromDecksRef.puml | 3 +- docs/uml/RemoveTagFromCardRef.puml | 3 +- 18 files changed, 100 insertions(+), 111 deletions(-) delete mode 100644 docs/img/AddCardToDeckRef.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index dbc23ccb6b..7f5c389053 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -33,14 +33,15 @@ Third-party libraries: - [Apache Commons CLI](https://commons.apache.org/proper/commons-cli/) - [gson](https://github.com/google/gson) - --- ## Setting up, Getting started -This repository was developed using [IntelliJ IDEA](https://www.jetbrains.com/idea/), and can be set up as per any regular IntelliJ project. +This repository was developed using [IntelliJ IDEA](https://www.jetbrains.com/idea/), and can be set up as per any +regular IntelliJ project. -For compliance with code style, developers may find it useful to import the `CS2113-codestyle.xml` formatter configuration. +For compliance with code style, developers may find it useful to import the `CS2113-codestyle.xml` formatter +configuration. --- @@ -66,7 +67,6 @@ The following diagram describes the architecture of Inka: API: `UserInterface.java` - ### Parser Component API: `Parser.java` @@ -108,16 +108,21 @@ The following is the sequence diagram for parsing `card add -q QN -a ANS`: ### Selector Component -API: `CardSelector.java`, `TagSelector.java` +API: `CardSelector.java`, `TagSelector.java` -Complimentary to the parser design is the use of _selectors_ to allow the user more flexibility in how they choose to specify a `Card` or a `Tag`. +Complimentary to the parser design is the use of _selectors_ to allow the user more flexibility in how they choose to +specify a `Card` or a `Tag`. -- Aim: Allow the user to refer to a `Card` either by its `CardUUID` or its index in `card list`, and to refer to a `Tag` either by its name or its index in `tag list` -- Difficulties: - - By design, the parsers should not require access to `CardList` or `TagList` to decouple the user input parsing and the actual application logic - - The parsed `Command` should only fetch the corresponding `Card`/`Tag` once `Command::execute()` is run, hence requiring an intermediate representation +- Aim: Allow the user to refer to a `Card` either by its `CardUUID` or its index in `card list`, and to refer to a `Tag` + either by its name or its index in `tag list` +- Difficulties: + - By design, the parsers should not require access to `CardList` or `TagList` to decouple the user input parsing and + the actual application logic + - The parsed `Command` should only fetch the corresponding `Card`/`Tag` once `Command::execute()` is run, hence + requiring an intermediate representation -By encapsulating the identifier in a selector class, retrieving the actual instance of `Card`/`Tag` from `CardList`/`TagList` can be deferred until `Command::execute()` is run. +By encapsulating the identifier in a selector class, retrieving the actual instance of `Card`/`Tag` +from `CardList`/`TagList` can be deferred until `Command::execute()` is run. The class diagram for the selector-style classes are as follows: @@ -148,6 +153,7 @@ associated with. inherit from the `InkaUUID` class. The following describes the class diagram for CardList Component : + ![CardList Class Diagram](img/CardListClass.png) ### TagList Component @@ -196,7 +202,7 @@ The current functionalities: User input format for adding a card ``` -card delete -q QN -a ANS +card add -q QN -a ANS ``` For adding a card, a sample user input like `card add -q QN -a ANS` would be broken down as: @@ -211,8 +217,7 @@ The implementation of `card add -q QN -a ANS` will be shown below : 1. When the user enters `card add -q QN -a ANS`, the input is passed to `Parser` class which calls `Parser::parseCommand()`. The parser detects the keyword "card", then calls the `Parser::CardKeywordParser()` - on - the user inputs excluding the "card" keyword. + on the user inputs excluding the "card" keyword. 2. The `Parser::CardKeywordParser()` further extracts the action keyword "add" from the user input, and calls @@ -252,19 +257,23 @@ A sample user input, like `card delete -i 3` would be broken down as: The implementation of `card delete -i 3` will be shown below : -1. When the user enters `card delete -i 3`, the input is passed to `Parser` class which calls `Parser::parseCommand()`. - The parser detects the keyword "card", then calls the `Parser::CardKeywordParser()` on the user inputs excluding - the " - card" keyword. +1. When the user enters `card delete [-i CARDINDEX | -c CARDUUID]`, the input is passed to `Parser` class which + calls `Parser::parseCommand()`. The parser detects the keyword "card", then calls the `Parser::CardKeywordParser()` + on the user inputs excluding the "card" keyword. + 2. The `Parser::CardKeywordParser()` further extracts the action keyword "delete" from the user input and call `CardKeywordParser::handleDelete()` method. + 3. The method uses the Apache Commons CLI library to parse the remaining user input, and returns a `DeleteCardCommand` with a `CardSelector` argument. The `CardSelector` object has two optional fields, an int field or an uuid field, used in identifying the `Card` object, in this case to be deleted. The sequence diagram for the first 3 steps has been shown in the [parser sequence diagram](#parser-component). + 4. The `DeleteCardCommand` will first find the `Card` object to delete, then find all the `Tag` and `Deck` objects it is associated to by their uuids stored in the `Card` object, and delete the `Card` object's uuid from them. + 5. Then the `Card` object is deleted from the `CardList`. + 6. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with the corresponding functions. @@ -296,22 +305,18 @@ The implementation of `card list` will be shown below : 4. The command will call `UserInterface::printCardList()` method to print all `Card` objects in the `CardList`. The sequence diagram below shows how this feature of card works: + ![Card List feature](img/CardListSequence.svg) #### Card View -The implementation of `card view {-c {cardUUID} | -i {cardIndex}}` will be shown below : +The implementation of `card view {-c CARD_UUID | -i CARD_INDEX}` will be shown below : -- When the user enters `card view {-c {cardUUID} | -i {cardIndex}}`, the input is passed to `Parser` class which - calls `Parser::parseCommand()`. The parser detects the keyword "card", then calls the `Parser::CardKeywordParser()` on - the user inputs excluding the " - card" keyword. The `Parser::CardKeywordParser()` uses the Apache Commons CLI library to parse the remaining user input - and call `CardKeywordParser::handleView()` method which in turn returns - a `ViewCardCommand`. The sequence diagram for this section has been - shown [above](#parser-component). +- When the user enters `card view {-c CARD_UUID | -i CARD_INDEX}`, the input is processed by `Parser` which eventually + returns a `ViewCardCommand`. The sequence diagram for this section has been shown [above](#parser-component). -- This `ViewCardCommand` will first find the card that is to be viewed by calling +- This `ViewCardCommand::execute()` will first find the card that is to be viewed by calling the `CardList::findCard()` which will in turn call the `CardSelector::getIndex()` and `CardSelector::getUUID()` depending on the flags and parameter specified by the user. `CardSelector` will then return the `cardToView` to `CardList` and then @@ -325,16 +330,15 @@ The implementation of `card view {-c {cardUUID} | -i {cardIndex}}` will be shown - Once the `tagsUUID` is ready, `ViewCardCommand` will then call `ViewCardCommand::findTagFromTagUUID` which will loop through each element `Tag` of `TagList`, call `Tag::getUUID()` and match it with every element of the `tagsUUID` - previously. - If the `Tag` element's uuid matches the uuid in `tagsUUID`, then the `Tag` will be added to a `tagsFound` and returned - to `ViewCardCommand`. + previously. If the `Tag` element's uuid matches the uuid in `tagsUUID`, then the `Tag` will be added to a `tagsFound` + and returned to `ViewCardCommand`(this part is shown in a separate reference frame). - Similarly, once the `decksUUID` is ready, `ViewCardCommand` will then call `ViewCardCommand::findDeckFromDeckUUID` which will loop through each element `Deck` of `DeckList`, call `Deck::getUUID()` and match it with every element of - the `decksUUID` previously. - If the `Deck` element's uuid matches the uuid in `decksUUID`, then the `Deck` will be added to a `decksFound` and - returned to `ViewCardCommand`. + the `decksUUID` previously. If the `Deck` element's uuid matches the uuid in `decksUUID`, then the `Deck` will be + added to a `decksFound` and returned to `ViewCardCommand`. + (this part is also shown in a separate reference frame). The sequence diagram below shows how this feature works: ![Card View feature](img/CardViewSequence.png) @@ -362,37 +366,34 @@ similar : The implementation of the `card untag` feature is as follows: -- When the user enters `card untag {-c CARD_UUID} | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}`, the input is passed - to `Parser` class which - calls `Parser::parseCommand()`. The parser detects the keyword `card` and process the remaining input and pass them - to `Parser::CardKeywordParser` class which calls `HandleUntag()` method and returns a `RemoveTagFromCardCommand`. The - sequence diagram for this section has been +- When the user enters `card untag {-c CARD_UUID} | -i CARD_INDEX} {-t TAG_NAME | -x TAG_INDEX}`, the input is processed + by `Parser` which eventually returns a `RemoveTagFromCardCommand`. The sequence diagram for this section has been shown [above](#parser-component). -- This `RemoveTagFromCardCommand` will first find the card to remove the tag from by calling +- This `RemoveTagFromCardCommand::execute()` will first find the card to remove the tag from by calling the `CardList::findCard()` which will in turn call the `CardSelector::getIndex()` and `CardSelector::getUUID()` depending on the flags and parameter specified by the user. `CardSelector` will then return the `cardAffected` to `CardList` and then back to `RemoveTagFromCardCommand`. -- `RemoveTagFromCardCommand` will then find the tag to delete from the card by calling `TagList::findCard()` which will - in turn call the - `TagSelector::getIndex()` and `TagSelector::getTagName()` depending on the flags and parameter specified by the - user. `TagSelector` will return the `tagToRemove` to `TagList` and then back to `RemoveTagFromCardCommand`. +- `RemoveTagFromCardCommand` will then find the tag to delete from the card by calling `TagList::findCard(cardSelector)` + which will in turn call the`TagSelector::getIndex()` and `TagSelector::getTagName()` depending on the flags and + parameter specified by the user. `TagSelector` will return the `tagToRemove` to `TagList` and then back + to `RemoveTagFromCardCommand`. - After `cardAffected` and `tagToRemove` is ready, `RemoveCardFromTagCommand` will call `RemoveTagFromCardCommand::removeTagFromCard(cardAffected, tagToRemove)` which will check if the `Tag` is - currently inside a deck, - if it is, we will loop through all the decks that the `Tag` is currently inside and remove the `cardAffected` from - each of the deck. + currently inside a deck, if it is, we will loop through all the decks that the `Tag` is currently inside and remove + the `cardAffected` from each of the deck (this part is shown in a separate reference frame) - Afterwards, `RemoveTagFromCardCommand::removeTagFromCard(cardAffected, tagToRemove)` will remove the reference - to the tag from the card and remove the reference to the card from the tag - by calling `Card::getUUID()`, `Tag::removeCard()`, `Tag::getUUID()`,`Card::RemoveTag()`. + to the tag from the card and remove the reference to the card from the tag by + calling `Card::getUUID()`, `Tag::removeCard()`, `Tag::getUUID()`,`Card::RemoveTag()` (this part is also shown in a + separate reference frame. - Finally, `RemoveTagFromCardCommand` will then call `UserInterface::printRemoveTagFromCard()` to print successful @@ -411,32 +412,28 @@ Reference Frames : The implementation of the `tag list {-t TAG_NAME | -x TAG_INDEX}` -- When the user enters `tag list {-t TAG_NAME | -x TAG_INDEX}`, the input is passed - to `Parser` class which - calls `Parser::parseCommand()`. The parser detects the keyword `tag` and process the remaining input and pass them - to `Parser::TagKeywordParser` class which calls `HandleList()` method and returns a `ListCardsUnderTagCommand`. The - sequence diagram for this section has been - shown [above](#parser-component). +- When the user enters `tag list {-t TAG_NAME | -x TAG_INDEX}`, the input is processed by `Parser` which eventually + returns a `ListCardsUnderTagCommand`. The sequence diagram for this section has been shown [above](#parser-component). -- This `ListCardsUnderTagCommand` will find the tag under which to display the cards from by calling +- This `ListCardsUnderTagCommand::execute()` will find the tag under which to display the cards from by calling the `TagList::findTag()` which will in turn call the `TagSelector::getIndex()` and `TagSelector::getTagName()` depending on the flags and parameter specified by the user. `TagSelector` will then - return the `foundTag` to `TagList` and then back - to `ListCardsUnderTagCommand`. + return the `foundTag` to `TagList` and then back to `ListCardsUnderTagCommand`. - After `foundTag` is ready, `ListCardsUnderTagCommand` will call `ListCardsUnderTagCommand::findCardsUnderTag(foundTag)` which will call the `Tag::getCardsUUID` and return the - UUIDs of the cards - under the `Tag` in the form of `cardsUUID`. `ListCardsUnderTagCommand` will then loop through the entire cardList and - the `cardsUUID`, if their uuid matches, - that `Card` will be added to `foundCardList` and returned to `ListCardsUnderTagCommand`. + UUIDs of the cards under the `Tag` in the form of `cardsUUID`. + + +- `ListCardsUnderTagCommand` will then loop through the entire cardList and the `cardsUUID`, if their uuid matches, + that `Card` will be added to `foundCardList` and returned to `ListCardsUnderTagCommand` (this part is shown in a + separate reference frame). - Once `foundCardList` is returned, `ListCardsUnderTagCommand` will call `UserInterface::printCardList(foundCardList)` - to - print the list of cards under the specified tag. + to print the list of cards under the specified tag. The sequence diagram below shows how this feature works: ![List Cards under Tag](img/ListCardsUnderTagSequence.png) @@ -647,7 +644,10 @@ on their mind. ### Instructions for Manual Testing Running the program: -- Download the latest version of the `.jar` file from the [release page](https://github.com/AY2223S2-CS2113-F10-1/tp/releases). -- Move the executable to a folder of your choice. The folder should have write permissions as it will generate save files in this directory. + +- Download the latest version of the `.jar` file from + the [release page](https://github.com/AY2223S2-CS2113-F10-1/tp/releases). +- Move the executable to a folder of your choice. The folder should have write permissions as it will generate save + files in this directory. - Run the executable either by double-clicking on it, or using `java -jar FILENAME.jar` - An introduction to the supported commands are provided in the User Guide diff --git a/docs/img/AddCardToDeckRef.png b/docs/img/AddCardToDeckRef.png deleted file mode 100644 index d7a73673d8fe0f9082fb65c920dbecc9470230d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37311 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 E8y8%JdjJ3c literal 27525 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 G`u_`zT&B(d diff --git a/docs/img/AddDecksToDecksFoundRef.png b/docs/img/AddDecksToDecksFoundRef.png index bd749da588d13eb309ae6bbcdfb68393069df464..f6da28e5b8eb4607193eab8878e4e771cfdf5fba 100644 GIT binary patch literal 42395 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

r!6&QiByXwRwdNfJSnKNRj>GfGx1 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 S=h%_IlN7srAx-3(=l=nxZ+6}Q literal 43575 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 DIq9}f diff --git a/docs/img/AddTagsToTagsFoundRef.png b/docs/img/AddTagsToTagsFoundRef.png index ca8ca726ef578b39dcac0aa140e2bd331840e440..ecc21d4ad10cbe4e0a9c7654202890588edf2cd7 100644 GIT binary patch literal 41560 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 diff --git a/docs/img/CardUntagSequence.png b/docs/img/CardUntagSequence.png index 5633cced84c598977db1f4be240d6c26d2e2bac2..cdfe8165c40ad5c5430032142286c5e9d1af102c 100644 GIT binary patch literal 70717 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%0AT7x5KUkFB${h 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

V$|1!rMC#})992m8YVr|<^633uxQ2o` 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

0XjJke_#?nEf-l8}|H&@KN? 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�V*`7eK&)LYwgzt=DZ3 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 z z%uwrcSnT*Z6d|ld9Cog2b!QmJqCrK^=?1qh7E8$MCvoDkS5(R~0)m2WsMsMGaWaTcO%aki@dx@=mE zj|YpY(sj!M5hC8QT+73B&2jIr@)r+V03E zxC0;s$Y7~XKo^K$qHO^!SfMLqckefyxzMQ2O!OgZw7nS0Hmakb+fai-6)SJaWr zW%SjX%l%}KzA7@?^eq-WvJCChD*}y^*b+98LC#%YIqZD7EAi$>@H6;tMLgsapch|x zj-v0H8N#Vel4^OktpgdB~; zv}C)Xu`yb6tv(GwWE980Jpe7nYx9m1%o1NNw^6isSiGG062Yc>EY+15Yp&q?ShMqCjz7%h z6n!T^QY_2d>OzzZP8lkCi#=ynIYlubgaEvYoRw^B%R49-bF7D|?Lwn>7?a=C^4Fh1 z^-j;9s)%7&yWeFlV?ky3^Cc{ccbd+WAHh(_gvWKMR|j53(?1m1c|~CBC;GpD=rhAd zAAeehCo!q_R@(X|H{kQKq+`qrSGX2*77t?3uq*eEn1g<|a*0%CT3dU=_cW1{5U5c90 z7U8qm≈k17P_-09jzi7n8GF*lJ3tz4g&$_`mOF&8u^Qm8>ckDPS!Stx|1$#C>d%FeU4b)v0sZq-{PhvwP{(3+WcdQ1^4ujt*L5+teT5qaeX4c^7 zUh~?>MX=cVttqh}u<=?Vitt)Rn!=SK6o0*zb_LQzKq#K;UrZ|NjlK1Mce%W6gYJU- j7b_KFn6>f66t;rNE#u3G@1;>fzN09saxz8wlH30PVX3ee diff --git a/docs/team/mitchmalvin1.md b/docs/team/mitchmalvin1.md index e625323c48..fc6ae2ddca 100644 --- a/docs/team/mitchmalvin1.md +++ b/docs/team/mitchmalvin1.md @@ -56,7 +56,7 @@ More specifically, I contributed to the following features : With that in mind, another feature that I implemented is : -`card view {-c CAR_DUUID | -i CARD_INDEX}` +`card view {-c CARD_UUID | -i CARD_INDEX}` - ***What it does :*** This feature allows users to view what are the `tags` and `decks` that the card is currently associated with. It makes @@ -116,18 +116,18 @@ The Class Diagram for `TagList` can be found below : ![TagList Class Diagram](../img/TagListClass.svg) -- Add Sequence Diagram for `card view {-c CARDUUID | -i CARDINDEX}`, `card untag {-c CaRDUUID | -t TAGNAME}` - and `tag list {-c CARDUUID | -i CARDINDEX}` +- Add Sequence Diagram for `card view {-c CARD_UUID | -i CARD_INDEX}`, `card untag {-c CARD_UUID | -t TAG_NAME}` + and `tag list {-c CARD_UUID | -i CARD_INDEX}` -The Sequence Diagram for `card view {-c CARDUUID | -i CARDINDEX}` can be found below : +The Sequence Diagram for `card view {-c CARD_UUID | -i CARD_INDEX}` can be found below : ![Card View Sequence Diagram](../img/CardViewSequence.png) -The Sequence Diagram for `card untag {-c CaRDUUID | -t TAGNAME}` can be found below : +The Sequence Diagram for `card untag {-c CARD_UUID | -t TAG_NAME}` can be found below : ![Card Untag Sequence Diagram](../img/CardUntagSequence.png) -The Sequence Diagram for `tag list {-c CARDUUID | -i CARDINDEX}` can be found below : +The Sequence Diagram for `tag list {-c CARD_UUID | -i CARD_INDEX}` can be found below : ![List Card Under Tag Sequence Diagram](../img/ListCardsUnderTagSequence.png) diff --git a/docs/uml/CardUntagSequence.puml b/docs/uml/CardUntagSequence.puml index 999a74fac6..e514ce11fa 100644 --- a/docs/uml/CardUntagSequence.puml +++ b/docs/uml/CardUntagSequence.puml @@ -10,7 +10,9 @@ participant ":TagList" as TagList participant ":DeckList" as DeckList participant ":Tag" as Tag participant ":Card" as Card +participant ":Deck" as Deck participant ":UserInterface" as UserInterface +participant ":CardKeywordParser" as CardKeywordParser Create RemoveTagFromCardCommand @@ -50,10 +52,22 @@ end return tagToRemove RemoveTagFromCardCommand -> RemoveTagFromCardCommand : RemoveTagFromCard(cardAffected, tagToRemove) + +opt tagToRemove.isDeckEmpty() +RemoveTagFromCardCommand -> Tag : getDecks() +return decksUUIDArr +loop curr uuid of dekcsUUIDArr != null +RemoveTagFromCardCommand -> DeckList : findDeckFromUUID(deckUUID) +return affectedDeck +RemoveTagFromCardCommand -> Deck : removeCardFromMap(cardAffected) + +end loop +end + opt cardAffected.getUUID() != null RemoveTagFromCardCommand -> Card : getUUID() return cardUUID -RemoveTagFromCardCommand -> Tag : removeCard(carUUID) +RemoveTagFromCardCommand -> Tag : removeCard(cardUUID) return RemoveTagFromCardCommand -> Tag : getUUID() return tagUUID From bf22a725a69498c8f9b7d2870ef4bc16c6e43ac2 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Sun, 9 Apr 2023 21:59:47 +0800 Subject: [PATCH 236/311] Add javadoc comments to storage --- .../java/utils/storage/json/JsonStorage.java | 43 +++++++++++++++---- .../java/utils/storage/json/JsonToMemory.java | 36 +++++++++++++++- .../java/utils/storage/json/MemoryToJson.java | 26 ++++++++++- 3 files changed, 92 insertions(+), 13 deletions(-) diff --git a/src/main/java/utils/storage/json/JsonStorage.java b/src/main/java/utils/storage/json/JsonStorage.java index 0a31231155..677fdb21bf 100644 --- a/src/main/java/utils/storage/json/JsonStorage.java +++ b/src/main/java/utils/storage/json/JsonStorage.java @@ -37,6 +37,13 @@ public class JsonStorage extends Storage { private GsonBuilder gsonBuilder; private File backupFile; + /** + * This class represents a JSON storage object that extends the functionality of the {@link Storage} class. It + * creates a backup file, adds custom adapters and allows for the serialization and deserialization of objects to + * and from JSON. + * + * @param filePath The file path of the JSON storage file. + */ public JsonStorage(String filePath) { super(filePath); @@ -56,6 +63,12 @@ public JsonStorage(String filePath) { gsonBuilder.registerTypeAdapter(TagUUID.class, new TagUuidJsonAdapter()); } + /** + * Loads the memory data from the JSON file. + * + * @return A Memory object containing the loaded data. + * @throws InkaException If there is an issue loading or converting the data from the file. + */ @Override public Memory load() throws InkaException { try { @@ -78,6 +91,12 @@ public Memory load() throws InkaException { } } + /** + * Loads the backup save to a Memory object. + * + * @return Memory object representing the savedata in backup save file. + * @throws InkaException if an I/O error occurs while reading the backup file or if the backup file is corrupted. + */ private Memory loadBackup() throws InkaException { try { FileReader fileReader = new FileReader(backupFile); @@ -94,15 +113,14 @@ private Memory loadBackup() throws InkaException { } } - public static Memory makeMemory(CardList cardList, TagList tagList, DeckList deckList) { - Memory memory = new Memory(); - memory.setCardList(cardList); - memory.setTagList(tagList); - memory.setDeckList(deckList); - - return memory; - } - + /** + * Saves cardList, tagList, and deckList data to a JSON file + * + * @param cardList the CardList object containing all cards to be saved + * @param tagList the TagList object containing all tags to be saved + * @param deckList the DeckList object containing all decks to be saved + * @throws StorageSaveFailure if the file cannot be saved + */ @Override public void save(CardList cardList, TagList tagList, DeckList deckList) throws StorageSaveFailure { @@ -119,6 +137,13 @@ public void save(CardList cardList, TagList tagList, DeckList deckList) throws S } } + /** + * Saves the given JSON data to a file. + * + * @param file the file to save the data to + * @param data the JSON data to save to the file + * @throws IOException if an I/O error occurs while writing to the file + */ private void saveDataToFile(File file, JsonObject data) throws IOException { try (FileWriter fileWriter = new FileWriter(file); BufferedWriter bufferedWriter = new BufferedWriter(fileWriter)) { diff --git a/src/main/java/utils/storage/json/JsonToMemory.java b/src/main/java/utils/storage/json/JsonToMemory.java index f05e96c4de..5b9376f296 100644 --- a/src/main/java/utils/storage/json/JsonToMemory.java +++ b/src/main/java/utils/storage/json/JsonToMemory.java @@ -1,6 +1,5 @@ package utils.storage.json; - import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -21,6 +20,14 @@ import utils.exceptions.InkaException; public class JsonToMemory { + /** + * Converts a JsonObject representation of a memory into a Memory object. This method is called by the + * {@link JsonStorage#load()} method. + * + * @param saveDataObject the JsonObject representation of the memory + * @return the Memory object converted from the JsonObject + * @throws InkaException if there is an error in the conversion process + */ public static Memory convert(JsonObject saveDataObject) throws InkaException { CardList cardList = getJsonCardList(saveDataObject); @@ -32,6 +39,13 @@ public static Memory convert(JsonObject saveDataObject) throws InkaException { return memory; } + /** + * Converts a JSON object to a CardList object by parsing the "cards" JsonArray. + * + * @param saveDataObject the JSON object containing the data to be converted + * @return a CardList object generated from the JSON data + * @throws InkaException if there is an error while parsing the data + */ public static CardList getJsonCardList(JsonObject saveDataObject) throws InkaException { JsonArray jsonCardArray = saveDataObject.getAsJsonArray("cards"); ArrayList cards = new ArrayList<>(); @@ -65,6 +79,12 @@ public static CardList getJsonCardList(JsonObject saveDataObject) throws InkaExc return cardList; } + /** + * Converts a JSON object to a TagList object by parsing the "tags" member of saveDataObject + * + * @param saveDataObject the JsonObject representing the savedata with the "tags" member + * @return the TagList object containing the taglist + */ public static TagList getJsonTagList(JsonObject saveDataObject) { TagList tagList = new TagList(); // construct empty taglist to append stuff to JsonArray tagJsonArray = saveDataObject.getAsJsonArray("tags"); @@ -90,6 +110,12 @@ public static TagList getJsonTagList(JsonObject saveDataObject) { return tagList; } + /** + * Extracts and converts a JSON object representing savedata into a DeckList object. + * + * @param saveDataObject the JSON object containing the data + * @return the DeckList object + */ public static DeckList getJsonDeckList(JsonObject saveDataObject) { DeckList deckList = new DeckList(); JsonArray deckJsonArray = saveDataObject.getAsJsonArray("decks"); @@ -101,6 +127,12 @@ public static DeckList getJsonDeckList(JsonObject saveDataObject) { return deckList; } + /** + * Converts a JSON object into a Deck object. Used by the {@link JsonToMemory#getJsonDeckList(JsonObject)} method. + * + * @param deckObject the JSON object representing a deck + * @return a Deck object with properties parsed from the JSON object + */ public static Deck getJsonDeck(JsonObject deckObject) { String deckName = deckObject.get("deckName").getAsString(); @@ -132,7 +164,7 @@ public static Deck getJsonDeck(JsonObject deckObject) { int value = entry.getValue().getAsInt(); cardUuidIntegerHashMap.put(new CardUUID(UUID.fromString(cardUuidString)), value); } - } catch (NullPointerException e){ + } catch (NullPointerException e) { mapEmpty = true; } diff --git a/src/main/java/utils/storage/json/MemoryToJson.java b/src/main/java/utils/storage/json/MemoryToJson.java index f24c41d364..d6799e75f1 100644 --- a/src/main/java/utils/storage/json/MemoryToJson.java +++ b/src/main/java/utils/storage/json/MemoryToJson.java @@ -11,9 +11,14 @@ import model.Card; import model.Deck; - public class MemoryToJson { + /** + * Converts a Memory object into a JsonObject. + * + * @param memory the Memory object to convert + * @return a JsonObject representing the Memory object in JSON format + */ public static JsonObject convert(Memory memory) { JsonObject jsonMemory = new JsonObject(); Gson gson = new Gson(); @@ -30,10 +35,15 @@ public static JsonObject convert(Memory memory) { jsonMemory.add("tags", tagData); jsonMemory.add("cards", cardData); - return jsonMemory; } + /** + * Converts a CardList object into a JsonArray. + * + * @param cardList the CardList object to convert + * @return a JsonArray representing the CardList object in JSON format + */ private static JsonArray cardListToJson(CardList cardList) { Gson gson = new Gson(); JsonArray cardData = new JsonArray(); @@ -46,6 +56,12 @@ private static JsonArray cardListToJson(CardList cardList) { return cardData; } + /** + * Converts a TagList object into a JsonArray. + * + * @param tagList the TagList object to convert + * @return a JsonArray representing the TagList object in JSON format + */ private static JsonArray tagListToJson(TagList tagList) { Gson gson = new Gson(); JsonArray tagData = new JsonArray(); @@ -58,6 +74,12 @@ private static JsonArray tagListToJson(TagList tagList) { return tagData; } + /** + * Converts a DeckList object into a JsonArray. + * + * @param deckList the DeckList object to convert + * @return a JsonArray representing the DeckList object in JSON format + */ private static JsonArray deckListToJson(DeckList deckList) { Gson gson = new Gson(); JsonArray deckData = new JsonArray(); From f88719308988f7de8485d2136051da3de1195561 Mon Sep 17 00:00:00 2001 From: Akhil Date: Sun, 9 Apr 2023 22:06:54 +0800 Subject: [PATCH 237/311] feat: resolved a few changes, added some tests --- .savedata_backup.json | 37 +++--- savedata.json | 37 +++--- src/main/java/model/Deck.java | 31 +++-- src/main/java/model/Tag.java | 13 ++ src/main/java/utils/UserInterface.java | 2 +- .../utils/command/AddCardToTagCommand.java | 8 +- .../utils/command/AddTagToDeckCommand.java | 2 +- ...Command.java => ListItemsDeckCommand.java} | 25 +++- .../command/RemoveTagFromCardCommand.java | 16 ++- .../java/utils/parser/DeckKeywordParser.java | 21 ++-- .../java/utils/parser/OptionsBuilder.java | 5 +- src/test/java/model/LogicTest.java | 113 +++++++++++++++++- 12 files changed, 241 insertions(+), 69 deletions(-) rename src/main/java/utils/command/{ListCardsUnderDeckCommand.java => ListItemsDeckCommand.java} (60%) diff --git a/.savedata_backup.json b/.savedata_backup.json index 7a36227a21..66cee79e1d 100644 --- a/.savedata_backup.json +++ b/.savedata_backup.json @@ -100,13 +100,15 @@ }, "cardsSet": [ { - "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + "uuid": "793a110b-0033-4ed0-8a79-201eb0231956" + } + ], + "cardUUIDIntegerHashMap": {}, + "cards": [ + { + "uuid": "793a110b-0033-4ed0-8a79-201eb0231956" } ], - "cardUUIDIntegerHashMap": { - "924119c1-a807-4df2-b311-080be9ee8522": 1 - }, - "cards": [], "tags": [ { "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" @@ -223,11 +225,7 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ - { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" - } - ] + "decks": [] }, { "uuid": { @@ -239,11 +237,7 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ - { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" - } - ] + "decks": [] } ], "cards": [ @@ -362,6 +356,19 @@ } ], "decks": [] + }, + { + "uuid": { + "uuid": "793a110b-0033-4ed0-8a79-201eb0231956" + }, + "question": "new question", + "answer": "new answer", + "tags": [], + "decks": [ + { + "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" + } + ] } ] } \ No newline at end of file diff --git a/savedata.json b/savedata.json index 7a36227a21..66cee79e1d 100644 --- a/savedata.json +++ b/savedata.json @@ -100,13 +100,15 @@ }, "cardsSet": [ { - "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + "uuid": "793a110b-0033-4ed0-8a79-201eb0231956" + } + ], + "cardUUIDIntegerHashMap": {}, + "cards": [ + { + "uuid": "793a110b-0033-4ed0-8a79-201eb0231956" } ], - "cardUUIDIntegerHashMap": { - "924119c1-a807-4df2-b311-080be9ee8522": 1 - }, - "cards": [], "tags": [ { "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" @@ -223,11 +225,7 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ - { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" - } - ] + "decks": [] }, { "uuid": { @@ -239,11 +237,7 @@ "uuid": "924119c1-a807-4df2-b311-080be9ee8522" } ], - "decks": [ - { - "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" - } - ] + "decks": [] } ], "cards": [ @@ -362,6 +356,19 @@ } ], "decks": [] + }, + { + "uuid": { + "uuid": "793a110b-0033-4ed0-8a79-201eb0231956" + }, + "question": "new question", + "answer": "new answer", + "tags": [], + "decks": [ + { + "uuid": "cee2b589-1f83-4d85-8cb1-d42130741547" + } + ] } ] } \ No newline at end of file diff --git a/src/main/java/model/Deck.java b/src/main/java/model/Deck.java index 3f495e6d16..36396b35e8 100644 --- a/src/main/java/model/Deck.java +++ b/src/main/java/model/Deck.java @@ -113,8 +113,15 @@ public void addCardToSet(CardUUID cardUUID) { cardsSet.add(cardUUID); } - public void removeCardFromSet(CardUUID cardUUID) { - cardsSet.remove(cardUUID); + public void removeCardFromMap(CardUUID cardUUID) { + if(cardUUIDIntegerHashMap.get(cardUUID)==1) { + cardUUIDIntegerHashMap.remove(cardUUID); + if(!this.cardIsInList(cardUUID)) { + cardsSet.remove(cardUUID); + } + } else { + cardUUIDIntegerHashMap.put(cardUUID, cardUUIDIntegerHashMap.get(cardUUID)-1); + } } public void addTag(TagUUID tagUUID) { this.tags.add(tagUUID); @@ -128,7 +135,7 @@ public void addCardsToSet(TagUUID tagUUID, TagList tagList) { } } - public void addCardstoMap(TagUUID tagUUID, TagList tagList) { + public void addCardsToMap(TagUUID tagUUID, TagList tagList) { Tag tagToCheck = tagList.findTagFromUUID(tagUUID); ArrayList cardUUIDArrayList = tagToCheck.getCardsUUID(); for(CardUUID cardUUID: cardUUIDArrayList) { @@ -140,18 +147,20 @@ public void addCardstoMap(TagUUID tagUUID, TagList tagList) { } } + public void addCardToMap(CardUUID cardUUID) { + if(!this.cardUUIDIntegerHashMap.containsKey(cardUUID)) { + this.cardUUIDIntegerHashMap.put(cardUUID, 1); + } else { + this.cardUUIDIntegerHashMap.put(cardUUID, cardUUIDIntegerHashMap.get(cardUUID)+1); + } + + } + public void removeTaggedCardsMap(TagUUID tagUUID, TagList tagList) { Tag tagToCheck = tagList.findTagFromUUID(tagUUID); ArrayList cardUUIDArrayList = tagToCheck.getCardsUUID(); for(CardUUID cardUUID: cardUUIDArrayList) { - if(cardUUIDIntegerHashMap.get(cardUUID)==1) { - cardUUIDIntegerHashMap.remove(cardUUID); - if(!this.cardIsInList(cardUUID)) { - cardsSet.remove(cardUUID); - } - } else { - cardUUIDIntegerHashMap.put(cardUUID, cardUUIDIntegerHashMap.get(cardUUID)-1); - } + this.removeCardFromMap(cardUUID); } } public void setCards(ArrayList cards) { diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 8c98cb8322..b463df7d03 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -53,6 +53,9 @@ public boolean cardIsInTag(CardUUID cardUUID) { } return false; } + public boolean isDeckEmpty() { + return decks.isEmpty(); + } public ArrayList getCardsUUID() { return this.cards; @@ -62,6 +65,16 @@ public void addCard(CardUUID cardUUID) { cards.add(cardUUID); } + public void addCardIntoDeckHashSet(DeckList deckList, CardUUID cardUUID) { + for(DeckUUID deckUUID: this.decks) { + Deck deck = deckList.findDeckFromUUID(deckUUID); + if(!deck.cardIsInList(cardUUID) && !deck.cardIsInMap(cardUUID)) { + deck.addCardToMap(cardUUID); + } + deck.addCardToSet(cardUUID); + } + } + public void removeCard(CardUUID cardUUID) { cards.remove(cardUUID); } diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index 9b125654fc..c0403138fb 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -97,7 +97,7 @@ public void printException(InkaException e) { public void printCardList(CardList cardList) { if (cardList.isEmpty()) { - System.out.println("Your current list is empty."); + System.out.println("Your current list of cards is empty."); } else { System.out.println("Here is a list of your cards :\n"); for (int i = 0; i < cardList.size(); ++i) { diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index 37190fdcb1..74e06ac796 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -37,7 +37,7 @@ public AddCardToTagCommand(TagSelector tagSelector, CardSelector cardSelector) t * @param cardToAdd The card to add to tag * @param ui The userInterface to print the success of the tag creation */ - private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) + private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui, DeckList deckList) throws CardInTagException, TagNotFoundException { //find the corresponding Tag and Card based on its tagName and card uuid Tag tagToAdd = tagList.findTag(tagSelector); @@ -53,9 +53,7 @@ private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) CardUUID cardUUID = cardToAdd.getUuid(); tagToAdd.addCard(cardUUID); - - //add the tag uuid to the card - + tagToAdd.addCardIntoDeckHashSet(deckList, cardUUID); TagUUID tagUUID = tagToAdd.getUUID(); cardToAdd.addTag(tagUUID); @@ -67,7 +65,7 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI Card cardToAdd = cardList.findCard(cardSelector); assert cardToAdd != null; - addCardToTag(tagList, cardToAdd, ui); + addCardToTag(tagList, cardToAdd, ui, deckList); Tag tagToBeAdded = tagList.findTag(tagSelector); ui.printAddTagToCardSuccess(cardToAdd.getUuid(), tagToBeAdded.getUUID()); diff --git a/src/main/java/utils/command/AddTagToDeckCommand.java b/src/main/java/utils/command/AddTagToDeckCommand.java index 06e2f2f2d8..3ea054f12f 100644 --- a/src/main/java/utils/command/AddTagToDeckCommand.java +++ b/src/main/java/utils/command/AddTagToDeckCommand.java @@ -46,7 +46,7 @@ private void addTagToDeck(DeckList deckList, TagList tagList, UserInterface ui) } else { deckToAdd.addTag(tagToAdd.getUUID()); } - deckToAdd.addCardstoMap(tagToAdd.getUUID(), tagList); // add tagged cards to set + deckToAdd.addCardsToMap(tagToAdd.getUUID(), tagList); // add tagged cards to set deckToAdd.addCardsToSet(tagToAdd.getUUID(), tagList); // add tagged cards to map deckUUID = deckToAdd.getDeckUUID(); tagToAdd.addDeck(deckUUID); diff --git a/src/main/java/utils/command/ListCardsUnderDeckCommand.java b/src/main/java/utils/command/ListItemsDeckCommand.java similarity index 60% rename from src/main/java/utils/command/ListCardsUnderDeckCommand.java rename to src/main/java/utils/command/ListItemsDeckCommand.java index b5328595f0..e1438e9dc7 100644 --- a/src/main/java/utils/command/ListCardsUnderDeckCommand.java +++ b/src/main/java/utils/command/ListItemsDeckCommand.java @@ -6,17 +6,19 @@ import model.CardUUID; import model.Deck; import model.DeckList; +import model.Tag; import model.TagList; +import model.TagUUID; import utils.UserInterface; import utils.exceptions.DeckNotFoundException; import utils.exceptions.InkaException; import utils.storage.IDataStorage; -public class ListCardsUnderDeckCommand extends Command{ +public class ListItemsDeckCommand extends Command{ private String deckName; - public ListCardsUnderDeckCommand(String deckName) { + public ListItemsDeckCommand(String deckName) { this.deckName = deckName; } @@ -37,11 +39,30 @@ private CardList findCardsUnderDeck(CardList cardList, DeckList deckList) throws } return foundCardList; } + private TagList findTagsUnderDeck(TagList tagList, DeckList deckList) throws InkaException { + Deck foundDeck = deckList.findDeckFromName(deckName); + if(foundDeck==null) { + throw new DeckNotFoundException(); + } + ArrayList tagUUIDS = foundDeck.getTagsUUID(); + TagList foundTagList = new TagList(); + + for (Tag tag : tagList.getTags()) { + for (TagUUID tagUUID : tagUUIDS) { + if (tagUUID.equals(tag.getUUID())) { + foundTagList.addTag(tag); + } + } + } + return foundTagList; + } @Override public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { CardList foundCardList = findCardsUnderDeck(cardList, deckList); ui.printCardList(foundCardList); + TagList foundTagList = findTagsUnderDeck(tagList, deckList); + ui.printTagList(foundTagList); } } diff --git a/src/main/java/utils/command/RemoveTagFromCardCommand.java b/src/main/java/utils/command/RemoveTagFromCardCommand.java index b74c973568..b7a57022af 100644 --- a/src/main/java/utils/command/RemoveTagFromCardCommand.java +++ b/src/main/java/utils/command/RemoveTagFromCardCommand.java @@ -1,11 +1,14 @@ package utils.command; +import java.util.ArrayList; import model.Card; import model.CardList; import model.CardSelector; import model.CardUUID; +import model.Deck; import model.DeckList; +import model.DeckUUID; import model.Tag; import model.TagList; import model.TagSelector; @@ -35,13 +38,20 @@ public RemoveTagFromCardCommand(TagSelector tagSelector, CardSelector cardSelect * @param cardAffected The user-specified card that might contain the tag * @param tagToDelete The target tag that is to be deleted from the Card */ - private void removeTagFromCard(Card cardAffected, Tag tagToDelete) - throws TagNotInCardException { + private void removeTagFromCard(Card cardAffected, Tag tagToDelete, DeckList deckList) + throws InkaException { if (!tagToDelete.cardIsInTag(cardAffected.getUuid())) { throw new TagNotInCardException(); } + if(!tagToDelete.isDeckEmpty()) { + ArrayList deckUUIDArrayList = tagToDelete.getDecks(); + for(DeckUUID deckUUID: deckUUIDArrayList) { + Deck deck = deckList.findDeckFromUUID(deckUUID); + deck.removeCardFromMap(cardAffected.getUuid()); + } + } CardUUID cardUUID = cardAffected.getUuid(); tagToDelete.removeCard(cardUUID); @@ -56,7 +66,7 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI assert cardAffected != null; Tag tagToDelete = tagList.findTag(tagSelector); - removeTagFromCard(cardAffected, tagToDelete); + removeTagFromCard(cardAffected, tagToDelete, deckList); ui.printRemoveTagFromCard(cardAffected.getUuid(), tagToDelete.getUUID()); } diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java index 5d3afae37d..0071d60020 100644 --- a/src/main/java/utils/parser/DeckKeywordParser.java +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -8,9 +8,8 @@ import utils.command.Command; import utils.command.DeleteDeckCommand; import utils.command.EditDeckNameCommand; -import utils.command.ListCardsUnderDeckCommand; +import utils.command.ListItemsDeckCommand; import utils.command.ListDecksCommand; -import utils.command.ListTagsUnderDeckCommand; import utils.command.PrintHelpCommand; import utils.command.RemoveCardFromDeckCommand; import utils.command.RemoveTagFromDeckCommand; @@ -66,13 +65,10 @@ private Command handleList(List tokens) throws ParseException, InvalidSy Options listOptions = new OptionsBuilder(Parser.DECK_KEYWORD, LIST_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(listOptions, tokens); - if (cmd.hasOption("c")) { - String deckName = cmd.getOptionValue("c"); - return new ListCardsUnderDeckCommand(deckName); - } else if (cmd.hasOption("t")) { - String deckName = cmd.getOptionValue("t"); - return new ListTagsUnderDeckCommand(deckName); - } else { + if (cmd.hasOption("d")) { + String deckName = cmd.getOptionValue("d"); + return new ListItemsDeckCommand(deckName); + } else { return new ListDecksCommand(); } } @@ -96,10 +92,11 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { Options editOptions = new OptionsBuilder(Parser.DECK_KEYWORD, EDIT_ACTION).buildOptions(); Options deleteOptions = new OptionsBuilder(Parser.DECK_KEYWORD, DELETE_ACTION).buildOptions(); Options listOptions = new OptionsBuilder(Parser.DECK_KEYWORD, LIST_ACTION).buildOptions(); + Options runOptions = new OptionsBuilder(Parser.DECK_KEYWORD, RUN_ACTION).buildOptions(); // Combine all actions - String[] actionList = {EDIT_ACTION, DELETE_ACTION, LIST_ACTION}; - String[] headerList = {"Edit existing decks", "Delete decks", "List decks"}; - Options[] optionsList = {editOptions, deleteOptions, listOptions}; + String[] actionList = {EDIT_ACTION, DELETE_ACTION, LIST_ACTION, RUN_ACTION}; + String[] headerList = {"Edit existing decks", "Delete decks", "List decks", "Run the deck"}; + Options[] optionsList = {editOptions, deleteOptions, listOptions, runOptions}; String helpMessage = formatHelpMessage("deck", actionList, headerList, optionsList); return new PrintHelpCommand(helpMessage); diff --git a/src/main/java/utils/parser/OptionsBuilder.java b/src/main/java/utils/parser/OptionsBuilder.java index 48c53e9fcd..29624b77f1 100644 --- a/src/main/java/utils/parser/OptionsBuilder.java +++ b/src/main/java/utils/parser/OptionsBuilder.java @@ -183,8 +183,7 @@ private static Options buildListOptions(String model) { options.addOption(FLAG_TAG_INDEX, FLAG_LONG_TAG_INDEX, true, "tag index (optional)"); break; case Parser.DECK_KEYWORD: - options.addOption(FLAG_CARD, FLAG_LONG_CARD, true, "deck name to list cards from (optional)"); - options.addOption(FLAG_TAG, FLAG_LONG_TAG, true, "deck name to list tags from (optional)"); + options.addOption(FLAG_DECK, FLAG_LONG_DECK, true, "deck name to list cards and tags from (optional)"); break; default: return null; @@ -194,7 +193,7 @@ private static Options buildListOptions(String model) { private static Options buildRunOptions() { Options options = new Options(); - options.addRequiredOption(FLAG_DECK, FLAG_LONG_DECK,true, "deck to review"); + options.addRequiredOption(FLAG_DECK, FLAG_LONG_DECK,true, "name of the deck to review"); return options; } diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index 3afcc31466..b39438c52a 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -162,7 +162,6 @@ public void logic_addByTagDeleteByCardUUID() throws InkaException { try { parseAndExecute("deck delete -d testDeck -c " + cardUUID, RemoveCardFromDeckCommand.class); } catch (CardInSetNotInList ex) { - // TODO: This shows "The card is not in the deck" which might be misleading } // Card should remain in Deck @@ -195,6 +194,118 @@ public void logic_addByCardUUIDDeleteByTag() throws InkaException { assert deckList.get(0).getCardsSet().size() == 1; } + /** + * If two tags sharing the same card are added to the deck, deleting one deck must not delete the card from the + * deck's HashSet + * + * @throws InkaException + */ + @Test + public void logic_deleteSharedCard() throws InkaException{ + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + CardUUID cardUUID = cardList.get(0).getUuid(); + + // Create tag + parseAndExecute("card tag -t testTag1 -i 1", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag2 -i 1", AddCardToTagCommand.class); + + + // Add Tags to the testDeck + parseAndExecute("tag deck -t testTag1 -d testDeck", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag2 -d testDeck", AddTagToDeckCommand.class); + // Check if only one instance is stored in the HashSet + assert deckList.get(0).getCardsSet().size() == 1; + + + // remove testTag1 + parseAndExecute("deck delete -d testDeck -t testTag1", RemoveTagFromDeckCommand.class); + + // Card should remain in Deck + assert deckList.get(0).getCardsSet().size() == 1; + } + + @Test + public void logic_unTagCardWhileTagInDeck() throws InkaException{ + // create a card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + CardUUID cardUUID = cardList.get(0).getUuid(); + + // Add card to the tag + parseAndExecute("card tag -t testTag1 -i 1", AddCardToTagCommand.class); + + // Add tag to the deck + parseAndExecute("tag deck -t testTag1 -d testDeck", AddTagToDeckCommand.class); + assert deckList.get(0).getCardsSet().size()==1; + + // Remove the card from the tag + parseAndExecute("card untag -t testTag1 -i 1", RemoveTagFromCardCommand.class); + assert tagList.get(0).getCardsUUID().size()==0; + assert deckList.get(0).getCardsSet().size()==0; + + } + + //TODO: Failing + @Test + public void logic_TagCardWhileTagInDeck() throws InkaException { + // create a card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + parseAndExecute("card add -q test2 -a test2", AddCardCommand.class); + CardUUID cardUUID = cardList.get(0).getUuid(); + CardUUID cardUUID1 = cardList.get(1).getUuid(); + + // Add card to the tag + parseAndExecute("card tag -t testTag1 -i 1", AddCardToTagCommand.class); + + // Add Tag to the deck + parseAndExecute("tag deck -t testTag1 -d testDeck", AddTagToDeckCommand.class); + assert deckList.get(0).getCardsSet().size()==1; + + // Add another card to the tag + parseAndExecute("card tag -t testTag1 -i 2", AddCardToTagCommand.class); + + // Check if the HashSet has 2 cards now + assert deckList.get(0).getCardsSet().size()==2; + } + + @Test + public void logic_deleteMultipleTags() throws InkaException { + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + parseAndExecute("card add -q test2 -a test2", AddCardCommand.class); + parseAndExecute("card add -q test3 -a test3", AddCardCommand.class); + CardUUID cardUUID1 = cardList.get(0).getUuid(); + CardUUID cardUUID2 = cardList.get(1).getUuid(); + CardUUID cardUUID3 = cardList.get(2).getUuid(); + assert cardList.size()==3; + + parseAndExecute("card tag -t testTag1 -i 1", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag1 -i 2", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag2 -i 2", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag2 -i 3", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag3 -i 3", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag3 -i 1", AddCardToTagCommand.class); + assert tagList.get(0).getCardsUUID().size()==2; + assert tagList.get(1).getCardsUUID().size()==2; + assert tagList.get(2).getCardsUUID().size()==2; + assert tagList.size()==3; + + parseAndExecute("tag deck -t testTag1 -d testDeck1", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag2 -d testDeck1", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag2 -d testDeck2", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag3 -d testDeck2", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag1 -d testDeck3", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag3 -d testDeck3", AddTagToDeckCommand.class); + assert deckList.get(0).getTagsUUID().size()==2; + assert deckList.get(1).getTagsUUID().size()==2; + assert deckList.get(2).getTagsUUID().size()==2; + assert deckList.get(0).getCardsSet().size()==3; + assert deckList.get(1).getCardsSet().size()==3; + assert deckList.get(2).getCardsSet().size()==3; + assert deckList.size()==3; + + //parseAndExecute("deck delete -d testDeck1 -c " + cardUUID1, RemoveCardFromDeckCommand.class); + } + @Test public void logic_tagAndUntag() throws InkaException { // Create card From 05371c4ba98b64c86f5c1c11ee59cc3e1a7730d6 Mon Sep 17 00:00:00 2001 From: iantenkai Date: Sun, 9 Apr 2023 22:11:10 +0800 Subject: [PATCH 238/311] fix test files --- src/test/data/storage/valid.json | 249 ++++++++++++++++-- .../java/utils/storage/JsonStorageTest.java | 8 +- 2 files changed, 227 insertions(+), 30 deletions(-) diff --git a/src/test/data/storage/valid.json b/src/test/data/storage/valid.json index cb04dccb83..57ad3a0c88 100644 --- a/src/test/data/storage/valid.json +++ b/src/test/data/storage/valid.json @@ -1,14 +1,172 @@ { + "decks": [ + { + "deckName": "physicsdeck", + "deckUUID": { + "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" + }, + "cardsSet": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + }, + { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + }, + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "cardUUIDIntegerHashMap": {}, + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "tags": [ + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + } + ] + } + ], + "tags": [ + { + "uuid": { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + "tagName": "physics", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + }, + { + "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "f0721ed3-f357-4a6d-9d35-cd436ec5d280" + }, + "tagName": "Test", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "1631221a-1b21-4481-8113-76b0b6ce6499" + }, + "tagName": "bla", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" + }, + "tagName": "chemm", + "cards": [ + { + "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "b0154090-c344-49b6-a8c7-1a4f5e98ddcc" + }, + "tagName": "new_tag", + "cards": [ + { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "834649e9-e0da-40aa-9a04-78877abf94bd" + }, + "tagName": "test_tag", + "cards": [ + { + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "22c0769d-f046-4ae1-b0aa-e9910e92a3d2" + }, + "tagName": "test_final_tag", + "cards": [ + { + "uuid": "a8a9665b-88bd-4fe8-8970-5f5190bb968e" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + }, + "tagName": "del_tag", + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "decks": [] + }, + { + "uuid": { + "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" + }, + "tagName": "dup_tag", + "cards": [ + { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" + } + ], + "decks": [] + } + ], "cards": [ { "uuid": { "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" }, - "question": "fdfds", - "answer": "ffffffghgg", + "question": "What is the formula of force?", + "answer": "F \u003d ma", "tags": [ { "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + }, + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "f0721ed3-f357-4a6d-9d35-cd436ec5d280" + }, + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "6e5dc558-43e4-4039-bb0f-8eca965052f0" } ], "decks": [ @@ -21,48 +179,87 @@ "uuid": { "uuid": "619c689d-395a-4bb8-ab00-6ae9972bb929" }, - "question": "question2", - "answer": "ans2", + "question": "How efficient is binary search?", + "answer": "O(log n)", + "tags": [ + { + "uuid": "c8259fee-125d-4700-829c-0da79eba1e91" + }, + { + "uuid": "f5234305-3263-4969-bc52-dd93013b7228" + } + ], + "decks": [ + { + "uuid": "e723ebf2-57e4-4f5f-98f2-564dd824f517" + } + ] + }, + { + "uuid": { + "uuid": "a7094276-8429-4620-96b0-48f9e73c86dd" + }, + "question": "fsjgfssurglhsughfdughfdlufghfdughfdghdfugihguidhgufgsgsgsgsg", + "answer": "ans", "tags": [], "decks": [] - } - ], - "tags": [ + }, { "uuid": { - "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + "uuid": "2022d218-ef0d-417e-aa7d-75667dc1ef94" }, - "tagName": "tag1", - "cards": [ + "question": "testing", + "answer": "testing", + "tags": [ { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + "uuid": "b0154090-c344-49b6-a8c7-1a4f5e98ddcc" + }, + { + "uuid": "834649e9-e0da-40aa-9a04-78877abf94bd" } ], - "decks": [] - } - ], - "decks": [ + "decks": [ + { + "uuid": "845b2ac0-ccc9-4069-b885-6e651226510e" + }, + { + "uuid": "78e3dbe3-ab98-44a6-9e99-32a1b851e4a6" + }, + { + "uuid": "56dc8e36-2151-477a-85a0-301a4fbba26d" + } + ] + }, { - "deckName": "deck1", - "deckUUID": { - "uuid": "c83e08ad-e5b7-4812-9dd1-4b44504386ad" + "uuid": { + "uuid": "a8a9665b-88bd-4fe8-8970-5f5190bb968e" }, - "cards": [ + "question": "test", + "answer": "test", + "tags": [ { - "uuid": "1ddd9a67-f56c-4914-99c0-2f90c580f0e9" + "uuid": "22c0769d-f046-4ae1-b0aa-e9910e92a3d2" } ], - "tags": [] + "decks": [] }, { - "deckName": "decktag", - "deckUUID": { - "uuid": "46f82128-0ee7-4f8c-baa3-e4ca255eeb45" + "uuid": { + "uuid": "924119c1-a807-4df2-b311-080be9ee8522" }, - "cards": [], + "question": "this might work", + "answer": "finally", "tags": [ { - "uuid": "03658854-e5d4-468f-8c41-74917e5d4515" + "uuid": "b7b5bb62-6da4-4685-9559-2974cbc2b834" + }, + { + "uuid": "cd47288b-dcdd-4654-9901-a42a433751d5" + } + ], + "decks": [ + { + "uuid": "7f688a43-b13c-40ab-926d-72ae9acf8605" } ] } diff --git a/src/test/java/utils/storage/JsonStorageTest.java b/src/test/java/utils/storage/JsonStorageTest.java index 7aa368b367..9a174a4178 100644 --- a/src/test/java/utils/storage/JsonStorageTest.java +++ b/src/test/java/utils/storage/JsonStorageTest.java @@ -37,10 +37,10 @@ public class JsonStorageTest { private static final String card1A = "ffffffghgg"; private static final String fileCard1DeckUuid = "c83e08ad-e5b7-4812-9dd1-4b44504386ad"; private static final int fileCard1DeckSize = 1; - private static final int fileCard1TagSize = 1; + private static final int fileCard1TagSize = 6; private static final String fileCard1TagUuid = "03658854-e5d4-468f-8c41-74917e5d4515"; - private static final int fileDeckSize = 2; + private static final int fileDeckSize = 1; private static final String card2Uuid = "619c689d-395a-4bb8-ab00-6ae9972bb929"; private static final String card2Q = "question2"; @@ -82,9 +82,9 @@ public void load_validFile_cardList() throws InkaException { Memory memory = storage.load(); CardList cardList = memory.getCardList(); int cardListSize = cardList.size(); - int validFileCardListSize = 2; + int validFileCardListSize = 6; int expectedSize = validFileCardListSize; - assertEquals(cardListSize, expectedSize); + assertEquals(expectedSize, cardListSize); } From bfa844e63af6fe8f8ed783f747d874a8563a57f4 Mon Sep 17 00:00:00 2001 From: Akhil Date: Sun, 9 Apr 2023 22:06:54 +0800 Subject: [PATCH 239/311] feat: resolved a few changes, added some tests --- src/main/java/model/Deck.java | 31 +++-- src/main/java/model/Tag.java | 13 ++ src/main/java/utils/UserInterface.java | 2 +- .../utils/command/AddCardToTagCommand.java | 7 +- .../utils/command/AddTagToDeckCommand.java | 2 +- ...Command.java => ListItemsDeckCommand.java} | 25 +++- .../command/RemoveTagFromCardCommand.java | 16 ++- .../java/utils/parser/DeckKeywordParser.java | 21 ++-- .../java/utils/parser/OptionsBuilder.java | 5 +- src/test/java/model/LogicTest.java | 113 +++++++++++++++++- 10 files changed, 197 insertions(+), 38 deletions(-) rename src/main/java/utils/command/{ListCardsUnderDeckCommand.java => ListItemsDeckCommand.java} (62%) diff --git a/src/main/java/model/Deck.java b/src/main/java/model/Deck.java index 3f495e6d16..36396b35e8 100644 --- a/src/main/java/model/Deck.java +++ b/src/main/java/model/Deck.java @@ -113,8 +113,15 @@ public void addCardToSet(CardUUID cardUUID) { cardsSet.add(cardUUID); } - public void removeCardFromSet(CardUUID cardUUID) { - cardsSet.remove(cardUUID); + public void removeCardFromMap(CardUUID cardUUID) { + if(cardUUIDIntegerHashMap.get(cardUUID)==1) { + cardUUIDIntegerHashMap.remove(cardUUID); + if(!this.cardIsInList(cardUUID)) { + cardsSet.remove(cardUUID); + } + } else { + cardUUIDIntegerHashMap.put(cardUUID, cardUUIDIntegerHashMap.get(cardUUID)-1); + } } public void addTag(TagUUID tagUUID) { this.tags.add(tagUUID); @@ -128,7 +135,7 @@ public void addCardsToSet(TagUUID tagUUID, TagList tagList) { } } - public void addCardstoMap(TagUUID tagUUID, TagList tagList) { + public void addCardsToMap(TagUUID tagUUID, TagList tagList) { Tag tagToCheck = tagList.findTagFromUUID(tagUUID); ArrayList cardUUIDArrayList = tagToCheck.getCardsUUID(); for(CardUUID cardUUID: cardUUIDArrayList) { @@ -140,18 +147,20 @@ public void addCardstoMap(TagUUID tagUUID, TagList tagList) { } } + public void addCardToMap(CardUUID cardUUID) { + if(!this.cardUUIDIntegerHashMap.containsKey(cardUUID)) { + this.cardUUIDIntegerHashMap.put(cardUUID, 1); + } else { + this.cardUUIDIntegerHashMap.put(cardUUID, cardUUIDIntegerHashMap.get(cardUUID)+1); + } + + } + public void removeTaggedCardsMap(TagUUID tagUUID, TagList tagList) { Tag tagToCheck = tagList.findTagFromUUID(tagUUID); ArrayList cardUUIDArrayList = tagToCheck.getCardsUUID(); for(CardUUID cardUUID: cardUUIDArrayList) { - if(cardUUIDIntegerHashMap.get(cardUUID)==1) { - cardUUIDIntegerHashMap.remove(cardUUID); - if(!this.cardIsInList(cardUUID)) { - cardsSet.remove(cardUUID); - } - } else { - cardUUIDIntegerHashMap.put(cardUUID, cardUUIDIntegerHashMap.get(cardUUID)-1); - } + this.removeCardFromMap(cardUUID); } } public void setCards(ArrayList cards) { diff --git a/src/main/java/model/Tag.java b/src/main/java/model/Tag.java index 8c98cb8322..b463df7d03 100644 --- a/src/main/java/model/Tag.java +++ b/src/main/java/model/Tag.java @@ -53,6 +53,9 @@ public boolean cardIsInTag(CardUUID cardUUID) { } return false; } + public boolean isDeckEmpty() { + return decks.isEmpty(); + } public ArrayList getCardsUUID() { return this.cards; @@ -62,6 +65,16 @@ public void addCard(CardUUID cardUUID) { cards.add(cardUUID); } + public void addCardIntoDeckHashSet(DeckList deckList, CardUUID cardUUID) { + for(DeckUUID deckUUID: this.decks) { + Deck deck = deckList.findDeckFromUUID(deckUUID); + if(!deck.cardIsInList(cardUUID) && !deck.cardIsInMap(cardUUID)) { + deck.addCardToMap(cardUUID); + } + deck.addCardToSet(cardUUID); + } + } + public void removeCard(CardUUID cardUUID) { cards.remove(cardUUID); } diff --git a/src/main/java/utils/UserInterface.java b/src/main/java/utils/UserInterface.java index d4cce046ab..f7dccdcf18 100644 --- a/src/main/java/utils/UserInterface.java +++ b/src/main/java/utils/UserInterface.java @@ -95,7 +95,7 @@ public void printException(InkaException e) { public void printCardList(CardList cardList) { if (cardList.isEmpty()) { - System.out.println("Your current list is empty."); + System.out.println("Your current list of cards is empty."); } else { System.out.println("Here is a list of your cards :\n"); for (int i = 0; i < cardList.size(); ++i) { diff --git a/src/main/java/utils/command/AddCardToTagCommand.java b/src/main/java/utils/command/AddCardToTagCommand.java index ce961dace6..7a264c08c4 100644 --- a/src/main/java/utils/command/AddCardToTagCommand.java +++ b/src/main/java/utils/command/AddCardToTagCommand.java @@ -38,7 +38,7 @@ public AddCardToTagCommand(TagSelector tagSelector, CardSelector cardSelector) t * @param cardToAdd The card to add to tag * @param ui The userInterface to print the success of the tag creation */ - private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) + private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui, DeckList deckList) throws CardInTagException, TagNotFoundException, LongTagNameException { //find the corresponding Tag and Card based on its tagName and card uuid Tag tagToAdd = tagList.findTag(tagSelector); @@ -56,8 +56,7 @@ private void addCardToTag(TagList tagList, Card cardToAdd, UserInterface ui) CardUUID cardUUID = cardToAdd.getUuid(); tagToAdd.addCard(cardUUID); - - //add the tag uuid to the card + tagToAdd.addCardIntoDeckHashSet(deckList, cardUUID); TagUUID tagUUID = tagToAdd.getUUID(); cardToAdd.addTag(tagUUID); @@ -69,7 +68,7 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI Card cardToAdd = cardList.findCard(cardSelector); assert cardToAdd != null; - addCardToTag(tagList, cardToAdd, ui); + addCardToTag(tagList, cardToAdd, ui, deckList); Tag tagToBeAdded = tagList.findTag(tagSelector); ui.printAddTagToCardSuccess(cardToAdd.getUuid(), tagToBeAdded.getTagName()); diff --git a/src/main/java/utils/command/AddTagToDeckCommand.java b/src/main/java/utils/command/AddTagToDeckCommand.java index 0bf970df3d..621c37071a 100644 --- a/src/main/java/utils/command/AddTagToDeckCommand.java +++ b/src/main/java/utils/command/AddTagToDeckCommand.java @@ -55,7 +55,7 @@ private void addTagToDeck(DeckList deckList, TagList tagList, UserInterface ui) } else { deckToAdd.addTag(tagToAdd.getUUID()); } - deckToAdd.addCardstoMap(tagToAdd.getUUID(), tagList); // add tagged cards to set + deckToAdd.addCardsToMap(tagToAdd.getUUID(), tagList); // add tagged cards to set deckToAdd.addCardsToSet(tagToAdd.getUUID(), tagList); // add tagged cards to map deckUUID = deckToAdd.getDeckUUID(); tagToAdd.addDeck(deckUUID); diff --git a/src/main/java/utils/command/ListCardsUnderDeckCommand.java b/src/main/java/utils/command/ListItemsDeckCommand.java similarity index 62% rename from src/main/java/utils/command/ListCardsUnderDeckCommand.java rename to src/main/java/utils/command/ListItemsDeckCommand.java index 80e446731b..7d49ffac16 100644 --- a/src/main/java/utils/command/ListCardsUnderDeckCommand.java +++ b/src/main/java/utils/command/ListItemsDeckCommand.java @@ -6,18 +6,20 @@ import model.CardUUID; import model.Deck; import model.DeckList; +import model.Tag; import model.TagList; +import model.TagUUID; import utils.UserInterface; import utils.exceptions.DeckNotFoundException; import utils.exceptions.InkaException; import utils.exceptions.LongDeckNameException; import utils.storage.IDataStorage; -public class ListCardsUnderDeckCommand extends Command { +public class ListItemsDeckCommand extends Command{ private String deckName; - public ListCardsUnderDeckCommand(String deckName) { + public ListItemsDeckCommand(String deckName) { this.deckName = deckName; } @@ -42,11 +44,30 @@ private CardList findCardsUnderDeck(CardList cardList, DeckList deckList) throws } return foundCardList; } + private TagList findTagsUnderDeck(TagList tagList, DeckList deckList) throws InkaException { + Deck foundDeck = deckList.findDeckFromName(deckName); + if(foundDeck==null) { + throw new DeckNotFoundException(); + } + ArrayList tagUUIDS = foundDeck.getTagsUUID(); + TagList foundTagList = new TagList(); + + for (Tag tag : tagList.getTags()) { + for (TagUUID tagUUID : tagUUIDS) { + if (tagUUID.equals(tag.getUUID())) { + foundTagList.addTag(tag); + } + } + } + return foundTagList; + } @Override public void execute(CardList cardList, TagList tagList, DeckList deckList, UserInterface ui, IDataStorage storage) throws InkaException { CardList foundCardList = findCardsUnderDeck(cardList, deckList); ui.printCardList(foundCardList); + TagList foundTagList = findTagsUnderDeck(tagList, deckList); + ui.printTagList(foundTagList); } } diff --git a/src/main/java/utils/command/RemoveTagFromCardCommand.java b/src/main/java/utils/command/RemoveTagFromCardCommand.java index d2930ff290..71b800e55f 100644 --- a/src/main/java/utils/command/RemoveTagFromCardCommand.java +++ b/src/main/java/utils/command/RemoveTagFromCardCommand.java @@ -1,12 +1,15 @@ package utils.command; +import java.util.ArrayList; import java.util.Optional; import model.Card; import model.CardList; import model.CardSelector; import model.CardUUID; +import model.Deck; import model.DeckList; +import model.DeckUUID; import model.Tag; import model.TagList; import model.TagSelector; @@ -38,8 +41,8 @@ public RemoveTagFromCardCommand(TagSelector tagSelector, CardSelector cardSelect * @param cardAffected The user-specified card that might contain the tag * @param tagToDelete The target tag that is to be deleted from the Card */ - private void removeTagFromCard(Card cardAffected, Tag tagToDelete) - throws TagNotInCardException, LongTagNameException, TagNotFoundException { + private void removeTagFromCard(Card cardAffected, Tag tagToDelete, DeckList deckList) + throws InkaException { Optional tagName = tagSelector.getTagName(); @@ -51,6 +54,13 @@ private void removeTagFromCard(Card cardAffected, Tag tagToDelete) throw new TagNotInCardException(); } + if(!tagToDelete.isDeckEmpty()) { + ArrayList deckUUIDArrayList = tagToDelete.getDecks(); + for(DeckUUID deckUUID: deckUUIDArrayList) { + Deck deck = deckList.findDeckFromUUID(deckUUID); + deck.removeCardFromMap(cardAffected.getUuid()); + } + } CardUUID cardUUID = cardAffected.getUuid(); tagToDelete.removeCard(cardUUID); @@ -65,7 +75,7 @@ public void execute(CardList cardList, TagList tagList, DeckList deckList, UserI assert cardAffected != null; Tag tagToDelete = tagList.findTag(tagSelector); - removeTagFromCard(cardAffected, tagToDelete); + removeTagFromCard(cardAffected, tagToDelete, deckList); ui.printRemoveTagFromCard(cardAffected.getUuid(), tagToDelete.getTagName()); } diff --git a/src/main/java/utils/parser/DeckKeywordParser.java b/src/main/java/utils/parser/DeckKeywordParser.java index 5d3afae37d..0071d60020 100644 --- a/src/main/java/utils/parser/DeckKeywordParser.java +++ b/src/main/java/utils/parser/DeckKeywordParser.java @@ -8,9 +8,8 @@ import utils.command.Command; import utils.command.DeleteDeckCommand; import utils.command.EditDeckNameCommand; -import utils.command.ListCardsUnderDeckCommand; +import utils.command.ListItemsDeckCommand; import utils.command.ListDecksCommand; -import utils.command.ListTagsUnderDeckCommand; import utils.command.PrintHelpCommand; import utils.command.RemoveCardFromDeckCommand; import utils.command.RemoveTagFromDeckCommand; @@ -66,13 +65,10 @@ private Command handleList(List tokens) throws ParseException, InvalidSy Options listOptions = new OptionsBuilder(Parser.DECK_KEYWORD, LIST_ACTION).buildOptions(); CommandLine cmd = parseUsingOptions(listOptions, tokens); - if (cmd.hasOption("c")) { - String deckName = cmd.getOptionValue("c"); - return new ListCardsUnderDeckCommand(deckName); - } else if (cmd.hasOption("t")) { - String deckName = cmd.getOptionValue("t"); - return new ListTagsUnderDeckCommand(deckName); - } else { + if (cmd.hasOption("d")) { + String deckName = cmd.getOptionValue("d"); + return new ListItemsDeckCommand(deckName); + } else { return new ListDecksCommand(); } } @@ -96,10 +92,11 @@ private Command handleHelp(List tokens) throws InvalidSyntaxException { Options editOptions = new OptionsBuilder(Parser.DECK_KEYWORD, EDIT_ACTION).buildOptions(); Options deleteOptions = new OptionsBuilder(Parser.DECK_KEYWORD, DELETE_ACTION).buildOptions(); Options listOptions = new OptionsBuilder(Parser.DECK_KEYWORD, LIST_ACTION).buildOptions(); + Options runOptions = new OptionsBuilder(Parser.DECK_KEYWORD, RUN_ACTION).buildOptions(); // Combine all actions - String[] actionList = {EDIT_ACTION, DELETE_ACTION, LIST_ACTION}; - String[] headerList = {"Edit existing decks", "Delete decks", "List decks"}; - Options[] optionsList = {editOptions, deleteOptions, listOptions}; + String[] actionList = {EDIT_ACTION, DELETE_ACTION, LIST_ACTION, RUN_ACTION}; + String[] headerList = {"Edit existing decks", "Delete decks", "List decks", "Run the deck"}; + Options[] optionsList = {editOptions, deleteOptions, listOptions, runOptions}; String helpMessage = formatHelpMessage("deck", actionList, headerList, optionsList); return new PrintHelpCommand(helpMessage); diff --git a/src/main/java/utils/parser/OptionsBuilder.java b/src/main/java/utils/parser/OptionsBuilder.java index 48c53e9fcd..29624b77f1 100644 --- a/src/main/java/utils/parser/OptionsBuilder.java +++ b/src/main/java/utils/parser/OptionsBuilder.java @@ -183,8 +183,7 @@ private static Options buildListOptions(String model) { options.addOption(FLAG_TAG_INDEX, FLAG_LONG_TAG_INDEX, true, "tag index (optional)"); break; case Parser.DECK_KEYWORD: - options.addOption(FLAG_CARD, FLAG_LONG_CARD, true, "deck name to list cards from (optional)"); - options.addOption(FLAG_TAG, FLAG_LONG_TAG, true, "deck name to list tags from (optional)"); + options.addOption(FLAG_DECK, FLAG_LONG_DECK, true, "deck name to list cards and tags from (optional)"); break; default: return null; @@ -194,7 +193,7 @@ private static Options buildListOptions(String model) { private static Options buildRunOptions() { Options options = new Options(); - options.addRequiredOption(FLAG_DECK, FLAG_LONG_DECK,true, "deck to review"); + options.addRequiredOption(FLAG_DECK, FLAG_LONG_DECK,true, "name of the deck to review"); return options; } diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index 4cb2d615bc..1d44d7b234 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -168,7 +168,6 @@ public void logic_addByTagDeleteByCardUUID() throws InkaException { try { parseAndExecute("deck delete -d testDeck -c " + cardUUID, RemoveCardFromDeckCommand.class); } catch (CardInSetNotInList ex) { - // TODO: This shows "The card is not in the deck" which might be misleading } // Card should remain in Deck @@ -200,6 +199,118 @@ public void logic_addByCardUUIDDeleteByTag() throws InkaException { assert deckList.get(0).getCardsSet().size() == 1; } + /** + * If two tags sharing the same card are added to the deck, deleting one deck must not delete the card from the + * deck's HashSet + * + * @throws InkaException + */ + @Test + public void logic_deleteSharedCard() throws InkaException{ + // Create card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + CardUUID cardUUID = cardList.get(0).getUuid(); + + // Create tag + parseAndExecute("card tag -t testTag1 -i 1", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag2 -i 1", AddCardToTagCommand.class); + + + // Add Tags to the testDeck + parseAndExecute("tag deck -t testTag1 -d testDeck", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag2 -d testDeck", AddTagToDeckCommand.class); + // Check if only one instance is stored in the HashSet + assert deckList.get(0).getCardsSet().size() == 1; + + + // remove testTag1 + parseAndExecute("deck delete -d testDeck -t testTag1", RemoveTagFromDeckCommand.class); + + // Card should remain in Deck + assert deckList.get(0).getCardsSet().size() == 1; + } + + @Test + public void logic_unTagCardWhileTagInDeck() throws InkaException{ + // create a card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + CardUUID cardUUID = cardList.get(0).getUuid(); + + // Add card to the tag + parseAndExecute("card tag -t testTag1 -i 1", AddCardToTagCommand.class); + + // Add tag to the deck + parseAndExecute("tag deck -t testTag1 -d testDeck", AddTagToDeckCommand.class); + assert deckList.get(0).getCardsSet().size()==1; + + // Remove the card from the tag + parseAndExecute("card untag -t testTag1 -i 1", RemoveTagFromCardCommand.class); + assert tagList.get(0).getCardsUUID().size()==0; + assert deckList.get(0).getCardsSet().size()==0; + + } + + //TODO: Failing + @Test + public void logic_TagCardWhileTagInDeck() throws InkaException { + // create a card + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + parseAndExecute("card add -q test2 -a test2", AddCardCommand.class); + CardUUID cardUUID = cardList.get(0).getUuid(); + CardUUID cardUUID1 = cardList.get(1).getUuid(); + + // Add card to the tag + parseAndExecute("card tag -t testTag1 -i 1", AddCardToTagCommand.class); + + // Add Tag to the deck + parseAndExecute("tag deck -t testTag1 -d testDeck", AddTagToDeckCommand.class); + assert deckList.get(0).getCardsSet().size()==1; + + // Add another card to the tag + parseAndExecute("card tag -t testTag1 -i 2", AddCardToTagCommand.class); + + // Check if the HashSet has 2 cards now + assert deckList.get(0).getCardsSet().size()==2; + } + + @Test + public void logic_deleteMultipleTags() throws InkaException { + parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); + parseAndExecute("card add -q test2 -a test2", AddCardCommand.class); + parseAndExecute("card add -q test3 -a test3", AddCardCommand.class); + CardUUID cardUUID1 = cardList.get(0).getUuid(); + CardUUID cardUUID2 = cardList.get(1).getUuid(); + CardUUID cardUUID3 = cardList.get(2).getUuid(); + assert cardList.size()==3; + + parseAndExecute("card tag -t testTag1 -i 1", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag1 -i 2", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag2 -i 2", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag2 -i 3", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag3 -i 3", AddCardToTagCommand.class); + parseAndExecute("card tag -t testTag3 -i 1", AddCardToTagCommand.class); + assert tagList.get(0).getCardsUUID().size()==2; + assert tagList.get(1).getCardsUUID().size()==2; + assert tagList.get(2).getCardsUUID().size()==2; + assert tagList.size()==3; + + parseAndExecute("tag deck -t testTag1 -d testDeck1", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag2 -d testDeck1", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag2 -d testDeck2", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag3 -d testDeck2", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag1 -d testDeck3", AddTagToDeckCommand.class); + parseAndExecute("tag deck -t testTag3 -d testDeck3", AddTagToDeckCommand.class); + assert deckList.get(0).getTagsUUID().size()==2; + assert deckList.get(1).getTagsUUID().size()==2; + assert deckList.get(2).getTagsUUID().size()==2; + assert deckList.get(0).getCardsSet().size()==3; + assert deckList.get(1).getCardsSet().size()==3; + assert deckList.get(2).getCardsSet().size()==3; + assert deckList.size()==3; + + //parseAndExecute("deck delete -d testDeck1 -c " + cardUUID1, RemoveCardFromDeckCommand.class); + } + @Test public void logic_tagExistingTag() throws InkaException { // Create card From 7e4b44cac063ac6a004d66a6ef321c99978d1263 Mon Sep 17 00:00:00 2001 From: Akhil Date: Sun, 9 Apr 2023 22:35:02 +0800 Subject: [PATCH 240/311] feat: fixed CheckStyle Issues --- src/test/java/model/LogicTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/test/java/model/LogicTest.java b/src/test/java/model/LogicTest.java index d697d0104a..b184f99a1b 100644 --- a/src/test/java/model/LogicTest.java +++ b/src/test/java/model/LogicTest.java @@ -168,6 +168,7 @@ public void logic_addByTagDeleteByCardUUID() throws InkaException { try { parseAndExecute("deck delete -d testDeck -c " + cardUUID, RemoveCardFromDeckCommand.class); } catch (CardInSetNotInList ex) { + //Should throw out an exception } // Card should remain in Deck @@ -233,7 +234,7 @@ public void logic_deleteSharedCard() throws InkaException{ } - + @Test public void logic_unTagCardWhileTagInDeck() throws InkaException{ // create a card @@ -256,7 +257,7 @@ public void logic_unTagCardWhileTagInDeck() throws InkaException{ //TODO: Failing @Test - public void logic_TagCardWhileTagInDeck() throws InkaException { + public void logic_tagCardWhileTagInDeck() throws InkaException { // create a card parseAndExecute("card add -q test1 -a test1", AddCardCommand.class); parseAndExecute("card add -q test2 -a test2", AddCardCommand.class); From 6bdc6483299da9853495c56ab0f78a6c6c1bbe59 Mon Sep 17 00:00:00 2001 From: JangusRoundstone <88696064+JangusRoundstone@users.noreply.github.com> Date: Mon, 10 Apr 2023 00:10:29 +0800 Subject: [PATCH 241/311] PPP draft --- docs/team/JangusRoundstone.md | 80 +++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 docs/team/JangusRoundstone.md diff --git a/docs/team/JangusRoundstone.md b/docs/team/JangusRoundstone.md new file mode 100644 index 0000000000..fd4746c979 --- /dev/null +++ b/docs/team/JangusRoundstone.md @@ -0,0 +1,80 @@ +# Wang Silang - Project Portfolio Page + +## Overview + +Inka is a CLI-based software that allows users to add Cards containing questions and answers, attach tags into each Card +and put groups of cards into a deck. Inka aims to help students revise for their exam by providing a flashcard-like +experience. + +## Summary of Contributions + +### Features Implemented + +#### 1. Parser Version 1 + +- ***What it is :*** + This is the first parser of Inka, which parses user input with long switch cases. + +- ***Value :*** + With this parser, Inka v1.0 is able to run, and we could test all of our initial functionalities. + +#### 2. Parser Version 2: OptionBuilder + +- ***What it is :*** + The `OptionBuilder` class is a part of `Parser` Version 2, which custom builds `Options` object for the Apache Commons CLI parser, + allowing us to parse flags and their arguments in users' inputs more easily. + +- ***Value :*** + Now we can scale the variety of acceptable command line inputs more easily. For example, we can now more easily support Inka to + take in multi-flag user input, such as `tag edit -o TAG_OLD -n TAG_NEW`. + +#### 3. Tag Selector + +- ***What it is :*** + The `TagSelector` class has two optional fields, a string for the name of the `Tag` object, and an int for the index of the `Tag` + object. + +- ***Value :*** : + With `TagSelector`, we can give more freedom to users to choose whether they want to identify the `Tag` object in their command line + input by its name or index. + +### Code Contribution + +The code contribution detected and analyzed using RepoSense can be +found [here.](https://nus-cs2113-ay2223s2.github.io/tp-dashboard/?search=Wang&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~test-code~other~functional-code&since=2023-02-17&tabOpen=true&tabType=authorship&tabAuthor=JangusRoundstone&tabRepo=AY2223S2-CS2113-F10-1%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~test-code~functional-code&authorshipIsBinaryFileTypeChecked=false&authorshipIsIgnoredFilesChecked=false) + +### Team-based tasks : + +- Retest the bugs raised during PE dry-run, and flag the possible causes of bugs to facilitate more efficient bug fixing, for example in +[#110.](https://github.com/AY2223S2-CS2113-F10-1/tp/issues/110) +- Created the skeleton for Developer Guide, and assigned the roles for filling up each part of the Developer Guide. +- Helped teammates using Mac with `checkstyle` issues. + +### Documentation + +#### User Guide + +Add initial documentations for all the `Tag` features [link](https://github.com/AY2223S2-CS2113-F10-1/tp/pull/91/files) : + +#### Developer Guide + +- Add in explanation for card feature. + +- Add Sequence Diagram for `card add -q QN -a ANS`, `card delete [-i CARDINDEX | -c CARDUUID]` and `card list`. + +The Sequence Diagram for `card add -q QN -a ANS` can be found below : +![Card Add Sequence Diagram](../img/CardAddSequence.svg) + +The Sequence Diagram for `card delete [-i CARDINDEX | -c CARDUUID]` can be found below : +![Card Delete Sequence Diagram](../img/CardDeleteSequence.svg) + +The Sequence Diagram for `card list` can be found below : +![Card List Sequence Diagram](../img/CardListSequence.svg) + + + + + + + + From 75fc1d19a5bf52a30c6381ae8d474248fac7df7e Mon Sep 17 00:00:00 2001 From: Mitch Malvin Date: Mon, 10 Apr 2023 01:13:49 +0800 Subject: [PATCH 242/311] docs : abstract out seq diagrams into ref frames --- docs/DeveloperGuide.md | 65 +++++++++++++++++------ docs/UserGuide.md | 9 ++-- docs/img/AddCardsToFoundCardListRef.png | Bin 0 -> 27525 bytes docs/img/AddDecksToDecksFoundRef.png | Bin 0 -> 43575 bytes docs/img/AddTagsToTagsFoundRef.png | Bin 0 -> 42812 bytes docs/img/CardListClass.svg | 2 +- docs/img/CardUntagSequence.png | Bin 122489 -> 87559 bytes docs/img/CardViewSequence.png | Bin 132279 -> 85525 bytes docs/img/ListCardsUnderTagSequence.png | Bin 55311 -> 46870 bytes docs/img/RemoveCardFromDecksRef.png | Bin 0 -> 37972 bytes docs/img/RemoveTagFromCardRef.png | Bin 0 -> 35882 bytes docs/team/mitch-reference-frames.md | 9 ++++ docs/team/mitchmalvin1.md | 4 +- docs/uml/AddCardsToFoundCardListRef.puml | 27 ++++++++++ docs/uml/AddDecksToDecksFoundRef.puml | 34 ++++++++++++ docs/uml/AddTagsToTagsFoundRef.puml | 37 +++++++++++++ docs/uml/CardUntagSequence.puml | 51 ++++++++++-------- docs/uml/CardViewSequence.puml | 54 +++++++++---------- docs/uml/ListCardsUnderTag.puml | 41 +++++++------- docs/uml/RemoveCardFromDecksRef.puml | 32 +++++++++++ docs/uml/RemoveTagFromCardRef.puml | 30 +++++++++++ 21 files changed, 302 insertions(+), 93 deletions(-) create mode 100644 docs/img/AddCardsToFoundCardListRef.png create mode 100644 docs/img/AddDecksToDecksFoundRef.png create mode 100644 docs/img/AddTagsToTagsFoundRef.png create mode 100644 docs/img/RemoveCardFromDecksRef.png create mode 100644 docs/img/RemoveTagFromCardRef.png create mode 100644 docs/team/mitch-reference-frames.md create mode 100644 docs/uml/AddCardsToFoundCardListRef.puml create mode 100644 docs/uml/AddDecksToDecksFoundRef.puml create mode 100644 docs/uml/AddTagsToTagsFoundRef.puml create mode 100644 docs/uml/RemoveCardFromDecksRef.puml create mode 100644 docs/uml/RemoveTagFromCardRef.puml diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index bf7086f7ac..fa7a5c0694 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -164,16 +164,23 @@ For adding a card, a sample user input like `card add -q QN -a ANS` would be bro The implementation of `card add -q QN -a ANS` will be shown below : -1. When the user enters `card add -q QN -a ANS`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the "card" keyword. -2. The `Parser#CardKeywordParser()` further extracts the action keyword "add" from the user input, and calls the `CardKeywordParser#handleAdd()` method. -3. The method uses the Apache Commons CLI library to parse the remaining user input to create a `Card` object with the arguements of the flags "-q" and "-a" in the input as its question and answer, and returns an `AddCardCommand` with the created `Card` object. The sequence diagram for the first 3 steps has been shown in the [parser sequence diagram](#parser-component). -4. This `AddCardCommand` will call the `CardList#addCard()` function and add the created `Card` object to the `CardList`. -5. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with the corresponding functions. +1. When the user enters `card add -q QN -a ANS`, the input is passed to `Parser` class which + calls `Parser#parseCommand()`. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on + the user inputs excluding the "card" keyword. +2. The `Parser#CardKeywordParser()` further extracts the action keyword "add" from the user input, and calls + the `CardKeywordParser#handleAdd()` method. +3. The method uses the Apache Commons CLI library to parse the remaining user input to create a `Card` object with the + arguements of the flags "-q" and "-a" in the input as its question and answer, and returns an `AddCardCommand` with + the created `Card` object. The sequence diagram for the first 3 steps has been shown in + the [parser sequence diagram](#parser-component). +4. This `AddCardCommand` will call the `CardList#addCard()` function and add the created `Card` object to + the `CardList`. +5. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with + the corresponding functions. The sequence diagram below shows how this feature of card works: ![Card Add feature](img/CardAddSequence.svg) - #### Card Delete User input format for deleting a card @@ -191,17 +198,24 @@ A sample user input, like `card delete -i 3` would be broken down as: The implementation of `card delete -i 3` will be shown below : -1. When the user enters `card delete -i 3`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the "card" keyword. -2. The `Parser#CardKeywordParser()` further extracts the action keyword "delete" from the user input and call `CardKeywordParser#handleDelete()` method. -3. The method uses the Apache Commons CLI library to parse the remaining user input, and returns a `DeleteCardCommand` with a `CardSelector` argument. The `CardSelector` object has two optional fields, an int field or an uuid field, used in identifying the `Card` object, in this case to be deleted. The sequence diagram for the first 3 steps has been shown in the [parser sequence diagram](#parser-component). -4. The `DeleteCardCommand` will first find the `Card` object to delete, then find all the `Tag` and `Deck` objects it is associated to by their uuids stored in the `Card` object, and delete the `Card` object's uuid from them. +1. When the user enters `card delete -i 3`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. + The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the " + card" keyword. +2. The `Parser#CardKeywordParser()` further extracts the action keyword "delete" from the user input and + call `CardKeywordParser#handleDelete()` method. +3. The method uses the Apache Commons CLI library to parse the remaining user input, and returns a `DeleteCardCommand` + with a `CardSelector` argument. The `CardSelector` object has two optional fields, an int field or an uuid field, + used in identifying the `Card` object, in this case to be deleted. The sequence diagram for the first 3 steps has + been shown in the [parser sequence diagram](#parser-component). +4. The `DeleteCardCommand` will first find the `Card` object to delete, then find all the `Tag` and `Deck` objects it is + associated to by their uuids stored in the `Card` object, and delete the `Card` object's uuid from them. 5. Then the `Card` object is deleted from the `CardList`. -6. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with the corresponding functions. +6. Lastly, `UserInterface` will print a success message and the current number of `Card` objects in the `CardList` with + the corresponding functions. The sequence diagram below shows how this feature of card works: ![Card Delete feature](img/CardDeleteSequence.svg) - #### Card List User input format for listing all card @@ -217,9 +231,13 @@ A sample user input, like `card list` would be broken down as : The implementation of `card list` will be shown below : -1. When the user enters `card list`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the "card" keyword. -2. The `Parser#CardKeywordParser()` further extracts the action keyword "list" from the user input and call `CardKeywordParser#handleList()` method. -3. If there are no more user input after `card list`, a `ListCardCommand()` is returned. The sequence diagram for the first 3 steps has been shown in the [parser sequence diagram](#parser-component). +1. When the user enters `card list`, the input is passed to `Parser` class which calls `Parser#parseCommand()`. The + parser detects the keyword "card", then calls the `Parser#CardKeywordParser()` on the user inputs excluding the " + card" keyword. +2. The `Parser#CardKeywordParser()` further extracts the action keyword "list" from the user input and + call `CardKeywordParser#handleList()` method. +3. If there are no more user input after `card list`, a `ListCardCommand()` is returned. The sequence diagram for the + first 3 steps has been shown in the [parser sequence diagram](#parser-component). 4. The command will call `UserInterface#printCardList()` method to print all `Card` objects in the `CardList`. The sequence diagram below shows how this feature of card works: @@ -266,6 +284,12 @@ The implementation of `card view {-c {cardUUID} | -i {cardIndex}}` will be shown The sequence diagram below shows how this feature works: ![Card View feature](img/CardViewSequence.png) +Reference Frames : + +![Add Tags to tagsFound](img/AddTagsToTagsFoundRef.png) + +![Add Decks to decksFound](img/AddDecksToDecksFoundRef.png) + ### Tag Feature Tag Feature currently supports the following functionalities : @@ -276,11 +300,9 @@ Tag Feature currently supports the following functionalities : - list all the cards under a tag - edit the tag name - This guide will show two of the more complex implementation of the tag features, other tag-related features will be similar : - #### Untag a Card The implementation of the `card untag` feature is as follows: @@ -324,6 +346,12 @@ The implementation of the `card untag` feature is as follows: The sequence diagram below shows how this feature works: ![Card Untag](img/CardUntagSequence.png) +Reference Frames : + +![Remove affected Cards from Decks](img/RemoveCardFromDecksRef.png) + +![Remove Tag from Card and vice versa](img/RemoveTagFromCardRef.png) + #### List Cards under a Tag The implementation of the `tag list {-t TAG_NAME | -x TAG_INDEX}` @@ -357,6 +385,9 @@ The implementation of the `tag list {-t TAG_NAME | -x TAG_INDEX}` The sequence diagram below shows how this feature works: ![List Cards under Tag](img/ListCardsUnderTagSequence.png) +Reference Frames : +![Add Cards to foundCardList](img/AddCardsToFoundCardListRef.png) + ### Deck Feature --- diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 47f87c0d7c..2527b8c3f8 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -500,8 +500,8 @@ Example of usage: `deck delete -d my-deck` Sample output: ``` -Successfully removed deck 9dc5ab5f-75af-4b0d-b554-341f59ac829b from card c2c61475-df53-4656-94c4-c2e36933d359 -Successfully removed deck 9dc5ab5f-75af-4b0d-b554-341f59ac829b from the deck list. +Successfully removed deck my-deck from card c2c61475-df53-4656-94c4-c2e36933d359 +Successfully removed deck my-deck from the deck list. ``` ### List all decks: `deck list` @@ -562,16 +562,15 @@ Your file will be loaded the next time you run Inka! ## Command Summary -{Give a 'cheat sheet' of commands here} - | **Command** | **Format** | |-------------------------------|-------------------------------------------------------------------------------------| -| Create a `Card` | `card add -q {question_here} -a {answer_here}` | +| Create a `Card` | `card add -q QUESTION -a ANSWER` | | Create a `Tag` | `card tag -c {cardUUID} -t {tag_name}` | | Create a `Deck` | `card deck -c {cardUUID} -d {deck_name}` OR `card deck -t {tagUUID} -d {deckName}` | | Add a `Card` to a `Deck` | `card deck -c {cardUUID} -d {deckName}` OR `card deck -i {cardIndex} -d {deckName}` | | Add a `Tag` to a `Deck` | `tag deck -t {tagUUID} -d {deckName}` | | Add a `Card` to a `Tag` | `card tag -c {cardUUID} -t {tagName}` | +| Delete a `Tag` from a `Card` | `card untag -c {cardUUIID} -t {tagName}` | | Delete a `Card` | `card delete -i {cardUUID}` | | Delete a `Tag` | `tag delete -t {tagName}` | | Delete a `Deck` | `deck delete -d {deckName}` | diff --git a/docs/img/AddCardsToFoundCardListRef.png b/docs/img/AddCardsToFoundCardListRef.png new file mode 100644 index 0000000000000000000000000000000000000000..e91b0672d544423f2eb667c1fdb1dcc374634cd6 GIT binary patch literal 27525 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 G`u_`zT&B(d literal 0 HcmV?d00001 diff --git a/docs/img/AddDecksToDecksFoundRef.png b/docs/img/AddDecksToDecksFoundRef.png new file mode 100644 index 0000000000000000000000000000000000000000..bd749da588d13eb309ae6bbcdfb68393069df464 GIT binary patch literal 43575 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 DIq9}f literal 0 HcmV?d00001 diff --git a/docs/img/AddTagsToTagsFoundRef.png b/docs/img/AddTagsToTagsFoundRef.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8ca726ef578b39dcac0aa140e2bd331840e440 GIT binary patch literal 42812 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 literal 0 HcmV?d00001 diff --git a/docs/img/CardListClass.svg b/docs/img/CardListClass.svg index 2ce81f1c02..b91238b151 100644 --- a/docs/img/CardListClass.svg +++ b/docs/img/CardListClass.svg @@ -1,4 +1,4 @@ -cardList
+ getCards() : List<Card>
+ addCard(card : Card) 
+ findCard(cardSelector: CardSelector) : Card
+ findCardFromUUID(cardUUID : CardUUID) : Card
+ delete(cardSelector: CardSelector) 
+ delete(index : int)
+ getCards() : List<Card>...
InkaUUIDCardUUIDCard
cards
cards
*
*
TagUUID
TagUUID
DeckUUID
DeckUUID
uuid
uuid
tags
tags
1
1
*
*
*
*
decks
decks
Text is not SVG - cannot display
\ No newline at end of file +CardList
+ getCards() : List<Card>
+ addCard(card : Card) 
+ findCard(cardSelector: CardSelector) : Card
+ findCardFromUUID(cardUUID : CardUUID) : Card
+ delete(cardSelector: CardSelector) 
+ delete(index : int)
+ getCards() : List<Card>...
InkaUUIDCardUUIDCard
cards
cards
*
*
TagUUID
TagUUID
DeckUUID
DeckUUID
uuid
uuid
tags
tags
1
1
*
*
*
*
decks
decks
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/img/CardUntagSequence.png b/docs/img/CardUntagSequence.png index dd7b4c3744a1af55c6020766bf1174b0cea8fcf2..5633cced84c598977db1f4be240d6c26d2e2bac2 100644 GIT binary patch literal 87559 zcmb@Oby!u~_V>3SqJ*fFfP`|84gu*B1e8>|ySuv;kP?;d?rw<<2-4kM(%oI}+;BYS z-rv=8?;r1ep7R`pz1LoAt~tm2j?egxr2U5{ro-T1~`sg^tz0&_!!TM-aDE;iS9C`89aKWy_8;rxgN2J z$FNs;f4tX2=s=)wKNB@?K}F7Fui&v|y}ao72X46!rbN-&Sk|o_;{g^=i>#*DSwxxJ za|er6_j}tYvbzz9Gh_z2Qu=9Y49?FOg1@=X_v^Q5ZUq?MrE772OiHMXvz)nlBk+zT zj=+iMO7BGPLiQ)E2WeYXS_I_jUvyi?2Th2yZ<-`ZF~#)e-I%UtzW4f`(Y8!-ggB

rm)} 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