From 4cbe4b373a8e60417fe6418cf15221df8fa1fbae Mon Sep 17 00:00:00 2001 From: David Date: Thu, 7 Mar 2024 13:37:35 +0800 Subject: [PATCH 001/423] edit about us changed john doe to my name --- docs/AboutUs.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 0f072953ea..b8e82788e8 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) | Tay Wen Duan David | [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) From bac30d2330f135a958179b5f6f28367aa5388000 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Thu, 7 Mar 2024 13:38:35 +0800 Subject: [PATCH 002/423] Change john doe to timothy lau --- docs/AboutUs.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 0f072953ea..6470efd61d 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) | Timothy Lau | [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) From b0315a5c77ce743b6e28fdf6b1ddfdb56d2bfc4b Mon Sep 17 00:00:00 2001 From: rismm Date: Thu, 7 Mar 2024 13:40:00 +0800 Subject: [PATCH 003/423] Update AboutUs.md --- docs/AboutUs.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 0f072953ea..5bd3c42dd3 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) | Sim Jing Jie Ryan | [Github](https://github.com/rismm) | [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) From 71feab2f6df02c91e6d0353fc26a3950af50c392 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Thu, 7 Mar 2024 13:49:35 +0800 Subject: [PATCH 004/423] Update AboutUs.md --- docs/AboutUs.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 0f072953ea..22a7c8dc8a 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) | Sim Jun Hong | [Github](https://github.com/awesomesjh) | [Portfolio](docs/team/simjunhong.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) From 63d5a1696c0f5b885d137141468f27fe08977607 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Fri, 8 Mar 2024 01:08:03 +0800 Subject: [PATCH 005/423] Add info onto about us --- docs/AboutUs.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 0f072953ea..4061b8ea5c 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://cdn.discordapp.com/attachments/1024235699383308330/1215341390079201290/vimal-face.jpg?ex=65fc65df&is=65e9f0df&hm=fc7cfc6e9a3a28b7f15cf3115433685feda82277d24c8a687d649af1949553bf&) | Vimalapugazhan Purushothaman | [Github](https://github.com/vimalapugazhan) | [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) From 37788e10f223c996bc1469f9d17cc0f29b11702d Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 9 Mar 2024 01:11:56 +0800 Subject: [PATCH 006/423] Add command classes All command classes will implement the Command interface --- src/main/java/supertracker/command/Command.java | 6 ++++++ src/main/java/supertracker/command/ExitCommand.java | 13 +++++++++++++ .../java/supertracker/command/InvalidCommand.java | 13 +++++++++++++ 3 files changed, 32 insertions(+) create mode 100644 src/main/java/supertracker/command/Command.java create mode 100644 src/main/java/supertracker/command/ExitCommand.java create mode 100644 src/main/java/supertracker/command/InvalidCommand.java diff --git a/src/main/java/supertracker/command/Command.java b/src/main/java/supertracker/command/Command.java new file mode 100644 index 0000000000..ca1dd0346f --- /dev/null +++ b/src/main/java/supertracker/command/Command.java @@ -0,0 +1,6 @@ +package supertracker.command; + +public interface Command { + void execute(); + boolean isExit(); +} diff --git a/src/main/java/supertracker/command/ExitCommand.java b/src/main/java/supertracker/command/ExitCommand.java new file mode 100644 index 0000000000..875b6aedc4 --- /dev/null +++ b/src/main/java/supertracker/command/ExitCommand.java @@ -0,0 +1,13 @@ +package supertracker.command; + +public class ExitCommand implements Command { + @Override + public void execute() { + + } + + @Override + public boolean isExit() { + return true; + } +} diff --git a/src/main/java/supertracker/command/InvalidCommand.java b/src/main/java/supertracker/command/InvalidCommand.java new file mode 100644 index 0000000000..33a4c49dd0 --- /dev/null +++ b/src/main/java/supertracker/command/InvalidCommand.java @@ -0,0 +1,13 @@ +package supertracker.command; + +public class InvalidCommand implements Command { + @Override + public void execute() { + + } + + @Override + public boolean isExit() { + return false; + } +} From dd550f4ff467400d12c9050f676bb8b6c87d85b1 Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 9 Mar 2024 01:12:40 +0800 Subject: [PATCH 007/423] Add basic io handling --- src/main/java/seedu/duke/Duke.java | 21 --------- src/main/java/supertracker/SuperTracker.java | 32 ++++++++++++++ src/main/java/supertracker/parser/Parser.java | 44 +++++++++++++++++++ .../SuperTrackerTest.java} | 4 +- 4 files changed, 78 insertions(+), 23 deletions(-) delete mode 100644 src/main/java/seedu/duke/Duke.java create mode 100644 src/main/java/supertracker/SuperTracker.java create mode 100644 src/main/java/supertracker/parser/Parser.java rename src/test/java/{seedu/duke/DukeTest.java => supertracker/SuperTrackerTest.java} (78%) 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/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java new file mode 100644 index 0000000000..6a6095bab3 --- /dev/null +++ b/src/main/java/supertracker/SuperTracker.java @@ -0,0 +1,32 @@ +package supertracker; + +import supertracker.command.ExitCommand; +import supertracker.command.Command; +import supertracker.command.InvalidCommand; +import supertracker.parser.Parser; + +import java.util.Scanner; + +public class SuperTracker { + protected static final String LINE = "--------------------------------------------------------------------------\n"; + protected static final String GREET_MESSAGE = LINE + "Hello, welcome to SuperTracker, how may I help you?\n" + LINE; + protected static final String EXIT_MESSAGE = LINE + "Goodbye!\n" + LINE; + + /** + * Main entry-point for the java.supertracker.SuperTracker application. + */ + public static void main(String[] args) { + System.out.println(GREET_MESSAGE); + + Scanner in = new Scanner(System.in); + Command command; + do { + String input = in.nextLine(); + command = Parser.parseCommand(input.trim()); + System.out.println("\t" + input.trim()); + } while (!command.isExit()); + + in.close(); + System.out.println(EXIT_MESSAGE); + } +} diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java new file mode 100644 index 0000000000..b2fe3160ba --- /dev/null +++ b/src/main/java/supertracker/parser/Parser.java @@ -0,0 +1,44 @@ +package supertracker.parser; + +import supertracker.command.Command; +import supertracker.command.ExitCommand; +import supertracker.command.InvalidCommand; + +public class Parser { + protected static final String EXIT_COMMAND = "bye"; + + /** + * Returns the command word specified in the user input string + * + * @param input a String of the user's input + * @return a String of the first word in the user input + */ + protected static String getCommandWord(String input) { + if (!input.contains(" ")) { + return input; + } + return input.substring(0, input.indexOf(" ")); + } + + /** + * Parses a Command accordingly from the user input string + * + * @param input a String of the user's input + * @return a Command to execute + */ + public static Command parseCommand(String input) { + String commandWord = getCommandWord(input); + + Command command; + switch (commandWord) { + case EXIT_COMMAND: + command = new ExitCommand(); + break; + default: + command = new InvalidCommand(); + break; + } + return command; + } + +} diff --git a/src/test/java/seedu/duke/DukeTest.java b/src/test/java/supertracker/SuperTrackerTest.java similarity index 78% rename from src/test/java/seedu/duke/DukeTest.java rename to src/test/java/supertracker/SuperTrackerTest.java index 2dda5fd651..28187fff54 100644 --- a/src/test/java/seedu/duke/DukeTest.java +++ b/src/test/java/supertracker/SuperTrackerTest.java @@ -1,10 +1,10 @@ -package seedu.duke; +package supertracker; import static org.junit.jupiter.api.Assertions.assertTrue; import org.junit.jupiter.api.Test; -class DukeTest { +class SuperTrackerTest { @Test public void sampleTest() { assertTrue(true); From 0afebbbcb6b2238bd36d584839129a6cce1a03e6 Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 9 Mar 2024 01:28:07 +0800 Subject: [PATCH 008/423] Update commands --- src/main/java/supertracker/SuperTracker.java | 4 +--- src/main/java/supertracker/command/ExitCommand.java | 2 +- src/main/java/supertracker/command/InvalidCommand.java | 2 +- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index 6a6095bab3..b28cbccb1b 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -1,8 +1,6 @@ package supertracker; -import supertracker.command.ExitCommand; import supertracker.command.Command; -import supertracker.command.InvalidCommand; import supertracker.parser.Parser; import java.util.Scanner; @@ -23,7 +21,7 @@ public static void main(String[] args) { do { String input = in.nextLine(); command = Parser.parseCommand(input.trim()); - System.out.println("\t" + input.trim()); + command.execute(); } while (!command.isExit()); in.close(); diff --git a/src/main/java/supertracker/command/ExitCommand.java b/src/main/java/supertracker/command/ExitCommand.java index 875b6aedc4..9fcb04f11f 100644 --- a/src/main/java/supertracker/command/ExitCommand.java +++ b/src/main/java/supertracker/command/ExitCommand.java @@ -3,7 +3,7 @@ public class ExitCommand implements Command { @Override public void execute() { - + System.out.println("\tExiting..."); } @Override diff --git a/src/main/java/supertracker/command/InvalidCommand.java b/src/main/java/supertracker/command/InvalidCommand.java index 33a4c49dd0..0e6e45e7f6 100644 --- a/src/main/java/supertracker/command/InvalidCommand.java +++ b/src/main/java/supertracker/command/InvalidCommand.java @@ -3,7 +3,7 @@ public class InvalidCommand implements Command { @Override public void execute() { - + System.out.println("\tSorry! Invalid command"); } @Override From a569fd97cf17be56290fafea84b175229b812a50 Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 9 Mar 2024 01:47:19 +0800 Subject: [PATCH 009/423] Update gradle build settings Change main class to supertracker.SuperTracker --- build.gradle | 4 ++-- gradle/wrapper/gradle-wrapper.jar | Bin 63375 -> 61624 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 2 +- text-ui-test/EXPECTED.TXT | 16 ++++++++-------- text-ui-test/input.txt | 2 +- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index ea82051fab..2fa618e673 100644 --- a/build.gradle +++ b/build.gradle @@ -29,11 +29,11 @@ test { } application { - mainClass.set("seedu.duke.Duke") + mainClass.set("supertracker.SuperTracker") } shadowJar { - archiveBaseName.set("duke") + archiveBaseName.set("SuperTracker") archiveClassifier.set("") } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 033e24c4cdf41af1ab109bc7f253b2b887023340..afba109285af78dbd2a1d187e33ac4f87c76e392 100644 GIT binary patch delta 24872 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 HzpnldrMqp; delta 26705 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 66c01cfeba..2f4c9a940a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -4,4 +4,4 @@ distributionUrl=https\://services.gradle.org/distributions/gradle-7.6.2-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME -zipStorePath=wrapper/dists +zipStorePath=wrapper/dists \ No newline at end of file diff --git a/gradlew b/gradlew index fcb6fca147..fbf29cc490 100755 --- a/gradlew +++ b/gradlew @@ -245,4 +245,4 @@ eval "set -- $( tr '\n' ' ' )" '"$@"' -exec "$JAVACMD" "$@" +exec "$JAVACMD" "$@" \ No newline at end of file diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 892cb6cae7..3740265d25 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,9 +1,9 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| +-------------------------------------------------------------------------- +Hello, welcome to SuperTracker, how may I help you? +-------------------------------------------------------------------------- + + Exiting... +-------------------------------------------------------------------------- +Goodbye! +-------------------------------------------------------------------------- -What is your name? -Hello James Gosling diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index f6ec2e9f95..0abaeaa993 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +1 @@ -James Gosling \ No newline at end of file +bye \ No newline at end of file From 05acf68480470928e7eb17c4a0e06499f0dc574c Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 10 Mar 2024 14:30:08 +0800 Subject: [PATCH 010/423] Add item class --- .../java/supertracker/item/Inventory.java | 11 ++++++++ src/main/java/supertracker/item/Item.java | 25 +++++++++++++++++++ src/main/java/supertracker/parser/Parser.java | 2 +- 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/main/java/supertracker/item/Inventory.java create mode 100644 src/main/java/supertracker/item/Item.java diff --git a/src/main/java/supertracker/item/Inventory.java b/src/main/java/supertracker/item/Inventory.java new file mode 100644 index 0000000000..61f5078468 --- /dev/null +++ b/src/main/java/supertracker/item/Inventory.java @@ -0,0 +1,11 @@ +package supertracker.item; + +import java.util.HashMap; + +public class Inventory { + protected HashMap itemMap; + + public Inventory() { + this.itemMap = new HashMap<>(); + } +} diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java new file mode 100644 index 0000000000..b1b877354f --- /dev/null +++ b/src/main/java/supertracker/item/Item.java @@ -0,0 +1,25 @@ +package supertracker.item; + +public class Item { + protected String itemName; + protected int quantity; + protected double price; + + public Item(String itemName, int quantity, double price) { + this.itemName = itemName; + this.quantity = quantity; + this.price = price; + } + + public String getItemName() { + return itemName; + } + + public int getQuantity() { + return quantity; + } + + public double getPrice() { + return price; + } +} diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index b2fe3160ba..beea9662ac 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -5,7 +5,7 @@ import supertracker.command.InvalidCommand; public class Parser { - protected static final String EXIT_COMMAND = "bye"; + protected static final String EXIT_COMMAND = "quit"; /** * Returns the command word specified in the user input string From 903dbdb05d413eed4c68a7551c769786a9804cf4 Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 10 Mar 2024 14:39:02 +0800 Subject: [PATCH 011/423] Update text-ui-test/input.txt To pass automated tests --- text-ui-test/input.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 0abaeaa993..39eb2097e0 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +1 @@ -bye \ No newline at end of file +quit \ No newline at end of file From c71cb91d6b589b47d21e7cfff5ac5a7746031a2b Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 12 Mar 2024 03:49:52 +0800 Subject: [PATCH 012/423] Implement basic functionality of new command --- src/main/java/supertracker/SuperTracker.java | 22 +++--- src/main/java/supertracker/Ui.java | 34 +++++++++ .../java/supertracker/command/Command.java | 2 +- .../supertracker/command/ExitCommand.java | 13 ---- .../supertracker/command/InvalidCommand.java | 6 +- .../supertracker/command/ListCommand.java | 13 ++++ .../java/supertracker/command/NewCommand.java | 29 ++++++++ .../supertracker/command/QuitCommand.java | 15 ++++ .../java/supertracker/item/Inventory.java | 10 ++- src/main/java/supertracker/item/Item.java | 14 ++-- src/main/java/supertracker/parser/Parser.java | 72 +++++++++++++++++-- 11 files changed, 191 insertions(+), 39 deletions(-) create mode 100644 src/main/java/supertracker/Ui.java delete mode 100644 src/main/java/supertracker/command/ExitCommand.java create mode 100644 src/main/java/supertracker/command/ListCommand.java create mode 100644 src/main/java/supertracker/command/NewCommand.java create mode 100644 src/main/java/supertracker/command/QuitCommand.java diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index b28cbccb1b..0febd1dbf0 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -6,25 +6,31 @@ import java.util.Scanner; public class SuperTracker { - protected static final String LINE = "--------------------------------------------------------------------------\n"; - protected static final String GREET_MESSAGE = LINE + "Hello, welcome to SuperTracker, how may I help you?\n" + LINE; - protected static final String EXIT_MESSAGE = LINE + "Goodbye!\n" + LINE; - /** * Main entry-point for the java.supertracker.SuperTracker application. */ public static void main(String[] args) { - System.out.println(GREET_MESSAGE); + run(); + } + /** + * Runs the java.supertracker.SuperTracker application. + */ + private static void run() { + Ui.greetUser(); + handleCommands(); + } + + private static void handleCommands() { Scanner in = new Scanner(System.in); Command command; do { String input = in.nextLine(); + Ui.printLine(); command = Parser.parseCommand(input.trim()); command.execute(); - } while (!command.isExit()); - + Ui.printLine(); + } while (!command.isQuit()); in.close(); - System.out.println(EXIT_MESSAGE); } } diff --git a/src/main/java/supertracker/Ui.java b/src/main/java/supertracker/Ui.java new file mode 100644 index 0000000000..82cbfdb6a5 --- /dev/null +++ b/src/main/java/supertracker/Ui.java @@ -0,0 +1,34 @@ +package supertracker; + +import supertracker.item.Item; + +public class Ui { + private static final String LINE = " --------------------------------------------------------------------------"; + public static void printIndent(String string) { + System.out.println(" " + string); + } + + public static void printLine() { + System.out.println(LINE); + } + + public static void greetUser() { + printLine(); + printIndent("Hello, welcome to SuperTracker, how may I help you?"); + printLine(); + } + + public static void sayGoodbye() { + printIndent("Goodbye!"); + } + + public static void printInvalidCommand() { + printIndent("Sorry! Invalid command!"); + } + + public static void newCommandSuccess(Item item) { + printIndent(item.getName() + " has been added to the inventory!"); + printIndent("Quantity: " + item.getQuantity()); + printIndent("Price: $" + String.format("%.2f", item.getPrice())); + } +} diff --git a/src/main/java/supertracker/command/Command.java b/src/main/java/supertracker/command/Command.java index ca1dd0346f..0d6ea48f07 100644 --- a/src/main/java/supertracker/command/Command.java +++ b/src/main/java/supertracker/command/Command.java @@ -2,5 +2,5 @@ public interface Command { void execute(); - boolean isExit(); + boolean isQuit(); } diff --git a/src/main/java/supertracker/command/ExitCommand.java b/src/main/java/supertracker/command/ExitCommand.java deleted file mode 100644 index 9fcb04f11f..0000000000 --- a/src/main/java/supertracker/command/ExitCommand.java +++ /dev/null @@ -1,13 +0,0 @@ -package supertracker.command; - -public class ExitCommand implements Command { - @Override - public void execute() { - System.out.println("\tExiting..."); - } - - @Override - public boolean isExit() { - return true; - } -} diff --git a/src/main/java/supertracker/command/InvalidCommand.java b/src/main/java/supertracker/command/InvalidCommand.java index 0e6e45e7f6..24cc7752b3 100644 --- a/src/main/java/supertracker/command/InvalidCommand.java +++ b/src/main/java/supertracker/command/InvalidCommand.java @@ -1,13 +1,15 @@ package supertracker.command; +import supertracker.Ui; + public class InvalidCommand implements Command { @Override public void execute() { - System.out.println("\tSorry! Invalid command"); + Ui.printInvalidCommand(); } @Override - public boolean isExit() { + public boolean isQuit() { return false; } } diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java new file mode 100644 index 0000000000..cd5821be67 --- /dev/null +++ b/src/main/java/supertracker/command/ListCommand.java @@ -0,0 +1,13 @@ +package supertracker.command; + +public class ListCommand implements Command { + @Override + public void execute() { + System.out.println("\tSorry! Invalid command"); + } + + @Override + public boolean isQuit() { + return false; + } +} diff --git a/src/main/java/supertracker/command/NewCommand.java b/src/main/java/supertracker/command/NewCommand.java new file mode 100644 index 0000000000..f66bfd296c --- /dev/null +++ b/src/main/java/supertracker/command/NewCommand.java @@ -0,0 +1,29 @@ +package supertracker.command; + +import supertracker.Ui; +import supertracker.item.Inventory; +import supertracker.item.Item; + +public class NewCommand implements Command { + private String name; + private int quantity; + private double price; + + public NewCommand(String name, int quantity, double price) { + this.name = name; + this.quantity = quantity; + this.price = price; + } + + @Override + public void execute() { + Item item = new Item(name, quantity, price); + Inventory.put(name, item); + Ui.newCommandSuccess(item); + } + + @Override + public boolean isQuit() { + return false; + } +} diff --git a/src/main/java/supertracker/command/QuitCommand.java b/src/main/java/supertracker/command/QuitCommand.java new file mode 100644 index 0000000000..34d458a36c --- /dev/null +++ b/src/main/java/supertracker/command/QuitCommand.java @@ -0,0 +1,15 @@ +package supertracker.command; + +import supertracker.Ui; + +public class QuitCommand implements Command { + @Override + public void execute() { + Ui.sayGoodbye(); + } + + @Override + public boolean isQuit() { + return true; + } +} diff --git a/src/main/java/supertracker/item/Inventory.java b/src/main/java/supertracker/item/Inventory.java index 61f5078468..9f8872c20b 100644 --- a/src/main/java/supertracker/item/Inventory.java +++ b/src/main/java/supertracker/item/Inventory.java @@ -3,9 +3,13 @@ import java.util.HashMap; public class Inventory { - protected HashMap itemMap; + private static HashMap itemMap = new HashMap<>(); - public Inventory() { - this.itemMap = new HashMap<>(); + public static boolean contains(String name) { + return itemMap.containsKey(name.toLowerCase()); + } + + public static void put(String name, Item item) { + itemMap.put(name.toLowerCase(), item); } } diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java index b1b877354f..aa1643da7e 100644 --- a/src/main/java/supertracker/item/Item.java +++ b/src/main/java/supertracker/item/Item.java @@ -1,18 +1,18 @@ package supertracker.item; public class Item { - protected String itemName; - protected int quantity; - protected double price; + private String name; + private int quantity; + private double price; - public Item(String itemName, int quantity, double price) { - this.itemName = itemName; + public Item(String name, int quantity, double price) { + this.name = name; this.quantity = quantity; this.price = price; } - public String getItemName() { - return itemName; + public String getName() { + return name; } public int getQuantity() { diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index beea9662ac..d7f02ab5b1 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -1,11 +1,18 @@ package supertracker.parser; import supertracker.command.Command; -import supertracker.command.ExitCommand; +import supertracker.command.NewCommand; +import supertracker.command.QuitCommand; import supertracker.command.InvalidCommand; +import supertracker.command.ListCommand; +import supertracker.item.Inventory; public class Parser { - protected static final String EXIT_COMMAND = "quit"; + private static final String QUIT_COMMAND = "quit"; + private static final String NEW_COMMAND = "new"; + private static final String LIST_COMMAND = "list"; + private static final int PARAM_BEGIN_INDEX = 2; + private static final double ROUNDING_FACTOR = 100.0; /** * Returns the command word specified in the user input string @@ -13,7 +20,7 @@ public class Parser { * @param input a String of the user's input * @return a String of the first word in the user input */ - protected static String getCommandWord(String input) { + private static String getCommandWord(String input) { if (!input.contains(" ")) { return input; } @@ -31,8 +38,14 @@ public static Command parseCommand(String input) { Command command; switch (commandWord) { - case EXIT_COMMAND: - command = new ExitCommand(); + case QUIT_COMMAND: + command = new QuitCommand(); + break; + case NEW_COMMAND: + command = parseNewCommand(input); + break; + case LIST_COMMAND: + command = new ListCommand(); break; default: command = new InvalidCommand(); @@ -41,4 +54,53 @@ public static Command parseCommand(String input) { return command; } + private static Command parseNewCommand(String input) { + // split input string into params if they start with "n/", "q/" or "p/" + String[] params = input.split("(?=[nqp]/)"); + + String name = ""; + String quantityString = ""; + String priceString = ""; + + for (String param : params) { + param = param.trim(); + if (param.startsWith("n/")) { + name = param.substring(PARAM_BEGIN_INDEX); + } else if (param.startsWith("q/")) { + quantityString = param.substring(PARAM_BEGIN_INDEX); + } else if (param.startsWith("p/")) { + priceString = param.substring(PARAM_BEGIN_INDEX); + } + } + + if (name.isEmpty() || quantityString.isEmpty() || priceString.isEmpty()) { + // throw error (possible to split for unique error messages) + System.out.println("empty param"); + } + + if (Inventory.contains(name)) { + // throw error + System.out.println("Inventory already contains item"); + } + + // throws NumberFormatException if strings cannot be parsed + int quantity = Integer.parseInt(quantityString); + double price = roundTo2Dp(Double.parseDouble(priceString)); + + + if (quantity < 0) { + // throw error + System.out.println("quantity less than 0"); + } + if (price < 0) { + // throw error + System.out.println("price less than 0"); + } + + return new NewCommand(name, quantity, price); + } + + private static double roundTo2Dp(double unroundedValue) { + return Math.round(unroundedValue * ROUNDING_FACTOR) / ROUNDING_FACTOR; + } } From 2b7a702728e29656663f59af42e5a601e8510d78 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 12 Mar 2024 05:46:13 +0800 Subject: [PATCH 013/423] Implement basic functionality of list command --- src/main/java/supertracker/Ui.java | 34 +++++++++++++++++- .../supertracker/command/ListCommand.java | 24 ++++++++++++- .../java/supertracker/item/Inventory.java | 5 +++ src/main/java/supertracker/item/Item.java | 4 +++ src/main/java/supertracker/parser/Parser.java | 35 ++++++++++++++++--- 5 files changed, 96 insertions(+), 6 deletions(-) diff --git a/src/main/java/supertracker/Ui.java b/src/main/java/supertracker/Ui.java index 82cbfdb6a5..72e591d86c 100644 --- a/src/main/java/supertracker/Ui.java +++ b/src/main/java/supertracker/Ui.java @@ -29,6 +29,38 @@ public static void printInvalidCommand() { public static void newCommandSuccess(Item item) { printIndent(item.getName() + " has been added to the inventory!"); printIndent("Quantity: " + item.getQuantity()); - printIndent("Price: $" + String.format("%.2f", item.getPrice())); + printIndent("Price: " + item.getPriceString()); + } + + public static void listIntro(int size) { + if (size == 0) { + printIndent("Nothing to list! No items in inventory!"); + return; + } + if (size == 1) { + printIndent("There is 1 unique item in your inventory:"); + return; + } + printIndent("There are " + size + " unique items in your inventory:"); + } + + public static void listItem(Item item, int index, boolean qExists, boolean pExists, String firstParam) { + String stringToPrint = index + ". Name: " + item.getName(); + String quantityString = " Quantity: " + item.getQuantity(); + String priceString = " Price: " + item.getPriceString(); + + if (qExists && pExists) { + if (firstParam.equals("q")) { + stringToPrint += (quantityString + priceString); + } else if (firstParam.equals("p")) { + stringToPrint += (priceString + quantityString); + } + } else if (qExists) { + stringToPrint += quantityString; + } else if (pExists) { + stringToPrint += priceString; + } + + printIndent(stringToPrint); } } diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index cd5821be67..c5042d99bf 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -1,9 +1,31 @@ package supertracker.command; +import supertracker.Ui; +import supertracker.item.Inventory; +import supertracker.item.Item; + +import java.util.Collection; + public class ListCommand implements Command { + private boolean qExists; + private boolean pExists; + private String firstParam; + + public ListCommand(boolean qExists, boolean pExists, String firstParam) { + this.qExists = qExists; + this.pExists = pExists; + this.firstParam = firstParam; + } + @Override public void execute() { - System.out.println("\tSorry! Invalid command"); + int index = 1; + Collection items = Inventory.items(); + Ui.listIntro(items.size()); + for (Item item : items) { + Ui.listItem(item, index, qExists, pExists, firstParam); + index++; + } } @Override diff --git a/src/main/java/supertracker/item/Inventory.java b/src/main/java/supertracker/item/Inventory.java index 9f8872c20b..5d6dc2c93b 100644 --- a/src/main/java/supertracker/item/Inventory.java +++ b/src/main/java/supertracker/item/Inventory.java @@ -1,5 +1,6 @@ package supertracker.item; +import java.util.Collection; import java.util.HashMap; public class Inventory { @@ -12,4 +13,8 @@ public static boolean contains(String name) { public static void put(String name, Item item) { itemMap.put(name.toLowerCase(), item); } + + public static Collection items() { + return itemMap.values(); + } } diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java index aa1643da7e..105d88db61 100644 --- a/src/main/java/supertracker/item/Item.java +++ b/src/main/java/supertracker/item/Item.java @@ -22,4 +22,8 @@ public int getQuantity() { public double getPrice() { return price; } + + public String getPriceString() { + return "$" + String.format("%.2f", price); + } } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index d7f02ab5b1..7f99679a2d 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -45,7 +45,7 @@ public static Command parseCommand(String input) { command = parseNewCommand(input); break; case LIST_COMMAND: - command = new ListCommand(); + command = parseListCommand(input); break; default: command = new InvalidCommand(); @@ -64,11 +64,11 @@ private static Command parseNewCommand(String input) { for (String param : params) { param = param.trim(); - if (param.startsWith("n/")) { + if (param.startsWith("n/") && name.isEmpty()) { name = param.substring(PARAM_BEGIN_INDEX); - } else if (param.startsWith("q/")) { + } else if (param.startsWith("q/") && quantityString.isEmpty()) { quantityString = param.substring(PARAM_BEGIN_INDEX); - } else if (param.startsWith("p/")) { + } else if (param.startsWith("p/") && priceString.isEmpty()) { priceString = param.substring(PARAM_BEGIN_INDEX); } } @@ -100,6 +100,33 @@ private static Command parseNewCommand(String input) { return new NewCommand(name, quantity, price); } + private static Command parseListCommand(String input) { + // split input string into params if they start with "q/" or "p/" + String[] params = input.split("(?=[qp]/)"); + + boolean qExists = false; + boolean pExists = false; + + // to check if q comes before p or vice versa + String firstParam = ""; + + for (String param : params) { + if (param.startsWith("q/")) { + qExists = true; + if (firstParam.isEmpty()) { + firstParam = "q"; + } + } else if (param.startsWith("p/")) { + pExists = true; + if (firstParam.isEmpty()) { + firstParam = "p"; + } + } + } + + return new ListCommand(qExists, pExists, firstParam); + } + private static double roundTo2Dp(double unroundedValue) { return Math.round(unroundedValue * ROUNDING_FACTOR) / ROUNDING_FACTOR; } From 2134f0529b677e8866241e45accf17ffeeac7f94 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 12 Mar 2024 06:42:35 +0800 Subject: [PATCH 014/423] Add JUnit test case for NewCommand --- .../java/supertracker/item/Inventory.java | 4 +++ .../supertracker/command/NewCommandTest.java | 28 +++++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 src/test/java/supertracker/command/NewCommandTest.java diff --git a/src/main/java/supertracker/item/Inventory.java b/src/main/java/supertracker/item/Inventory.java index 5d6dc2c93b..931cb01f87 100644 --- a/src/main/java/supertracker/item/Inventory.java +++ b/src/main/java/supertracker/item/Inventory.java @@ -10,6 +10,10 @@ public static boolean contains(String name) { return itemMap.containsKey(name.toLowerCase()); } + public static Item get(String name) { + return itemMap.get(name.toLowerCase()); + } + public static void put(String name, Item item) { itemMap.put(name.toLowerCase(), item); } diff --git a/src/test/java/supertracker/command/NewCommandTest.java b/src/test/java/supertracker/command/NewCommandTest.java new file mode 100644 index 0000000000..e5c83cde77 --- /dev/null +++ b/src/test/java/supertracker/command/NewCommandTest.java @@ -0,0 +1,28 @@ +package supertracker.command; + +import org.junit.jupiter.api.Test; +import supertracker.item.Inventory; +import supertracker.item.Item; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class NewCommandTest { + @Test + public void newCommand_validData_correctlyConstructed() { + String name = "Milk"; + int quantity = 100; + double price = 5.00; + + Command command = new NewCommand("Milk", 100, 5.00); + command.execute(); + + assertTrue(Inventory.contains(name)); + Item item = Inventory.get(name); + assertNotNull(item); + assertEquals(name, item.getName()); + assertEquals(quantity, item.getQuantity()); + assertEquals(price, item.getPrice()); + } +} From ecddf0154ad34871e7f6066022f529dfa61f4b1a Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 12 Mar 2024 06:55:00 +0800 Subject: [PATCH 015/423] Fix IO redirection test --- text-ui-test/EXPECTED.TXT | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 3740265d25..f11348cd7d 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,9 +1,6 @@ --------------------------------------------------------------------------- -Hello, welcome to SuperTracker, how may I help you? --------------------------------------------------------------------------- - - Exiting... --------------------------------------------------------------------------- -Goodbye! --------------------------------------------------------------------------- - + -------------------------------------------------------------------------- + Hello, welcome to SuperTracker, how may I help you? + -------------------------------------------------------------------------- + -------------------------------------------------------------------------- + Goodbye! + -------------------------------------------------------------------------- From 92a9025910481d2db98ec7f4eb40239f6ee7eff3 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Tue, 12 Mar 2024 15:54:20 +0800 Subject: [PATCH 016/423] Edit UI Clean up UI class --- src/main/java/supertracker/Ui.java | 44 ++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 11 deletions(-) diff --git a/src/main/java/supertracker/Ui.java b/src/main/java/supertracker/Ui.java index 72e591d86c..cdbd1e0c44 100644 --- a/src/main/java/supertracker/Ui.java +++ b/src/main/java/supertracker/Ui.java @@ -3,7 +3,29 @@ import supertracker.item.Item; public class Ui { + private static final int ZERO_ITEMS = 0; + private static final int ONE_ITEM = 1; private static final String LINE = " --------------------------------------------------------------------------"; + private static final String EMPTY_LIST_MESSAGE = "Nothing to list! No items in inventory!"; + private static final String SINGLE_ITEM_LIST_MESSAGE= "There is 1 unique item in your inventory:"; + private static final String INVALID_COMMAND_MESSAGE = "Sorry! Invalid command!"; + public static final String WELCOME_MESSAGE = "Hello, welcome to SuperTracker, how may I help you?"; + public static final String FAREWELL_MESSAGE = "Goodbye! Hope to see you again!"; + + private static String listSize(int size){ + return ("There are " + size + " unique items in your inventory:"); + } + private static String priceMessage(Item item) { + return "Price: " + item.getPriceString(); + } + + private static String quantityMessage(Item item) { + return "Quantity: " + item.getQuantity(); + } + + private static String addItemOpening(Item item) { + return item.getName() + " has been added to the inventory!"; + } public static void printIndent(String string) { System.out.println(" " + string); } @@ -14,34 +36,34 @@ public static void printLine() { public static void greetUser() { printLine(); - printIndent("Hello, welcome to SuperTracker, how may I help you?"); + printIndent(WELCOME_MESSAGE); printLine(); } public static void sayGoodbye() { - printIndent("Goodbye!"); + printIndent(FAREWELL_MESSAGE); } public static void printInvalidCommand() { - printIndent("Sorry! Invalid command!"); + printIndent(INVALID_COMMAND_MESSAGE); } public static void newCommandSuccess(Item item) { - printIndent(item.getName() + " has been added to the inventory!"); - printIndent("Quantity: " + item.getQuantity()); - printIndent("Price: " + item.getPriceString()); + printIndent(addItemOpening(item)); + printIndent(quantityMessage(item)); + printIndent(priceMessage(item)); } public static void listIntro(int size) { - if (size == 0) { - printIndent("Nothing to list! No items in inventory!"); + if (size == ZERO_ITEMS) { + printIndent(EMPTY_LIST_MESSAGE); return; } - if (size == 1) { - printIndent("There is 1 unique item in your inventory:"); + if (size == ONE_ITEM) { + printIndent(SINGLE_ITEM_LIST_MESSAGE); return; } - printIndent("There are " + size + " unique items in your inventory:"); + printIndent(listSize(size)); } public static void listItem(Item item, int index, boolean qExists, boolean pExists, String firstParam) { From e57cc6da804053edec3b843a1db7defa6e6c1e49 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Tue, 12 Mar 2024 19:00:54 +0800 Subject: [PATCH 017/423] Remove some static variables --- src/main/java/supertracker/Ui.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/main/java/supertracker/Ui.java b/src/main/java/supertracker/Ui.java index cdbd1e0c44..31425f4f03 100644 --- a/src/main/java/supertracker/Ui.java +++ b/src/main/java/supertracker/Ui.java @@ -3,14 +3,12 @@ import supertracker.item.Item; public class Ui { - private static final int ZERO_ITEMS = 0; - private static final int ONE_ITEM = 1; private static final String LINE = " --------------------------------------------------------------------------"; private static final String EMPTY_LIST_MESSAGE = "Nothing to list! No items in inventory!"; private static final String SINGLE_ITEM_LIST_MESSAGE= "There is 1 unique item in your inventory:"; private static final String INVALID_COMMAND_MESSAGE = "Sorry! Invalid command!"; - public static final String WELCOME_MESSAGE = "Hello, welcome to SuperTracker, how may I help you?"; - public static final String FAREWELL_MESSAGE = "Goodbye! Hope to see you again!"; + private static final String WELCOME_MESSAGE = "Hello, welcome to SuperTracker, how may I help you?"; + private static final String FAREWELL_MESSAGE = "Goodbye! Hope to see you again!"; private static String listSize(int size){ return ("There are " + size + " unique items in your inventory:"); @@ -55,11 +53,11 @@ public static void newCommandSuccess(Item item) { } public static void listIntro(int size) { - if (size == ZERO_ITEMS) { + if (size == 0) { printIndent(EMPTY_LIST_MESSAGE); return; } - if (size == ONE_ITEM) { + if (size == 1) { printIndent(SINGLE_ITEM_LIST_MESSAGE); return; } From a81b95ed6823a5348a4cd1d1ca666b024c5d3d26 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Tue, 12 Mar 2024 19:16:45 +0800 Subject: [PATCH 018/423] Change farewell message --- src/main/java/supertracker/Ui.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/supertracker/Ui.java b/src/main/java/supertracker/Ui.java index 31425f4f03..9dbb40f0e7 100644 --- a/src/main/java/supertracker/Ui.java +++ b/src/main/java/supertracker/Ui.java @@ -8,7 +8,7 @@ public class Ui { private static final String SINGLE_ITEM_LIST_MESSAGE= "There is 1 unique item in your inventory:"; private static final String INVALID_COMMAND_MESSAGE = "Sorry! Invalid command!"; private static final String WELCOME_MESSAGE = "Hello, welcome to SuperTracker, how may I help you?"; - private static final String FAREWELL_MESSAGE = "Goodbye! Hope to see you again!"; + private static final String FAREWELL_MESSAGE = "Goodbye!"; private static String listSize(int size){ return ("There are " + size + " unique items in your inventory:"); From 735b0c96161eab214a76de9756ffdb60e9454cc9 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Tue, 12 Mar 2024 22:06:51 +0800 Subject: [PATCH 019/423] Add Update quantity and Price feature refactored new command code a bit as there was quite a bit of shared code in the parser --- src/main/java/supertracker/Ui.java | 11 +++ .../supertracker/command/UpdateCommand.java | 36 ++++++++ src/main/java/supertracker/parser/Parser.java | 82 ++++++++++++++++--- 3 files changed, 117 insertions(+), 12 deletions(-) create mode 100644 src/main/java/supertracker/command/UpdateCommand.java diff --git a/src/main/java/supertracker/Ui.java b/src/main/java/supertracker/Ui.java index 9dbb40f0e7..035c36b607 100644 --- a/src/main/java/supertracker/Ui.java +++ b/src/main/java/supertracker/Ui.java @@ -24,6 +24,11 @@ private static String quantityMessage(Item item) { private static String addItemOpening(Item item) { return item.getName() + " has been added to the inventory!"; } + + private static void updateItemOpening(Item item) { + System.out.println(item.getName() + " has been successfully updated!"); + } + public static void printIndent(String string) { System.out.println(" " + string); } @@ -52,6 +57,12 @@ public static void newCommandSuccess(Item item) { printIndent(priceMessage(item)); } + public static void updateCommandSuccess(Item item) { + updateItemOpening(item); + printIndent(quantityMessage(item)); + printIndent(priceMessage(item)); + } + public static void listIntro(int size) { if (size == 0) { printIndent(EMPTY_LIST_MESSAGE); diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java new file mode 100644 index 0000000000..cccd96a7db --- /dev/null +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -0,0 +1,36 @@ +package supertracker.command; + +import supertracker.Ui; +import supertracker.item.Inventory; +import supertracker.item.Item; + +public class UpdateCommand implements Command { + private String name; + private int newQuantity; + private double newPrice; + + public UpdateCommand(String name, int newQuantity, double newPrice) { + this.name = name; + this.newQuantity = newQuantity; + this.newPrice = newPrice; + } + + @Override + public void execute() { + Item oldItem = Inventory.get(name); + if (newQuantity == 0) { + newQuantity = oldItem.getQuantity(); + } + if (newPrice == 0) { + newPrice = oldItem.getPrice(); + } + Item newItem = new Item(name, newQuantity, newPrice); + Inventory.put(name, newItem); + Ui.updateCommandSuccess(newItem); + } + + @Override + public boolean isQuit() { + return false; + } +} diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 7f99679a2d..7aba52d7d6 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -1,16 +1,13 @@ package supertracker.parser; -import supertracker.command.Command; -import supertracker.command.NewCommand; -import supertracker.command.QuitCommand; -import supertracker.command.InvalidCommand; -import supertracker.command.ListCommand; +import supertracker.command.*; import supertracker.item.Inventory; public class Parser { private static final String QUIT_COMMAND = "quit"; private static final String NEW_COMMAND = "new"; private static final String LIST_COMMAND = "list"; + private static final String UPDATE_COMMAND = "update"; private static final int PARAM_BEGIN_INDEX = 2; private static final double ROUNDING_FACTOR = 100.0; @@ -47,6 +44,9 @@ public static Command parseCommand(String input) { case LIST_COMMAND: command = parseListCommand(input); break; + case UPDATE_COMMAND: + command = parseUpdateCommand(input); + break; default: command = new InvalidCommand(); break; @@ -54,7 +54,49 @@ public static Command parseCommand(String input) { return command; } - private static Command parseNewCommand(String input) { + + private static Command parseUpdateCommand(String input) { + ExtractDataForNewOrUpdateCommand result = getExtractDataForNewOrUpdateCommand(input); + + if (result.name.isEmpty()) { + // throw error + System.out.println("empty param"); + } + if (!Inventory.contains(result.name)) { + // throw error + System.out.println(result.name + " does not exist in inventory. Unable to update its values. =("); + } + + int quantity = 0; + double price = 0; + + if (result.quantityString.isEmpty()) { + quantity = 0; + } + else { + quantity = Integer.parseInt(result.quantityString); + } + if (result.priceString.isEmpty()) { + price = 0; + } + else { + price = roundTo2Dp(Double.parseDouble(result.priceString)); + } + + if (quantity < 0) { + // throw error + System.out.println("quantity less than 0"); + } + if (price < 0) { + // throw error + System.out.println("price less than 0"); + } + + return new UpdateCommand(result.name, quantity, price); + } + + // extracted for new or update command to use + private static ExtractDataForNewOrUpdateCommand getExtractDataForNewOrUpdateCommand(String input) { // split input string into params if they start with "n/", "q/" or "p/" String[] params = input.split("(?=[nqp]/)"); @@ -72,20 +114,36 @@ private static Command parseNewCommand(String input) { priceString = param.substring(PARAM_BEGIN_INDEX); } } + return new ExtractDataForNewOrUpdateCommand(name, quantityString, priceString); + } + + private static class ExtractDataForNewOrUpdateCommand { + public final String name; + public final String quantityString; + public final String priceString; + + public ExtractDataForNewOrUpdateCommand(String name, String quantityString, String priceString) { + this.name = name; + this.quantityString = quantityString; + this.priceString = priceString; + } + } + + private static Command parseNewCommand(String input) { + ExtractDataForNewOrUpdateCommand result = getExtractDataForNewOrUpdateCommand(input); - if (name.isEmpty() || quantityString.isEmpty() || priceString.isEmpty()) { + if (result.name.isEmpty() || result.quantityString.isEmpty() || result.priceString.isEmpty()) { // throw error (possible to split for unique error messages) System.out.println("empty param"); } - - if (Inventory.contains(name)) { + if (Inventory.contains(result.name)) { // throw error System.out.println("Inventory already contains item"); } // throws NumberFormatException if strings cannot be parsed - int quantity = Integer.parseInt(quantityString); - double price = roundTo2Dp(Double.parseDouble(priceString)); + int quantity = Integer.parseInt(result.quantityString); + double price = roundTo2Dp(Double.parseDouble(result.priceString)); if (quantity < 0) { @@ -97,7 +155,7 @@ private static Command parseNewCommand(String input) { System.out.println("price less than 0"); } - return new NewCommand(name, quantity, price); + return new NewCommand(result.name, quantity, price); } private static Command parseListCommand(String input) { From 95e5d456554ed5a1385e8f4e3160dce7982a9cdc Mon Sep 17 00:00:00 2001 From: DavidTay Date: Tue, 12 Mar 2024 22:13:31 +0800 Subject: [PATCH 020/423] Adhere to checkstylemain guidelines --- src/main/java/supertracker/parser/Parser.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 7aba52d7d6..89a097910a 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -1,6 +1,11 @@ package supertracker.parser; -import supertracker.command.*; +import supertracker.command.InvalidCommand; +import supertracker.command.ListCommand; +import supertracker.command.NewCommand; +import supertracker.command.QuitCommand; +import supertracker.command.UpdateCommand; +import supertracker.command.Command; import supertracker.item.Inventory; public class Parser { @@ -72,14 +77,12 @@ private static Command parseUpdateCommand(String input) { if (result.quantityString.isEmpty()) { quantity = 0; - } - else { + } else { quantity = Integer.parseInt(result.quantityString); } if (result.priceString.isEmpty()) { price = 0; - } - else { + } else { price = roundTo2Dp(Double.parseDouble(result.priceString)); } From 63a99238db7b0603a98002634bcaf0255fbad700 Mon Sep 17 00:00:00 2001 From: rismm Date: Fri, 15 Mar 2024 16:17:49 +0800 Subject: [PATCH 021/423] Update parser Add pattern matching for inputs using regex --- src/main/java/supertracker/SuperTracker.java | 1 + .../supertracker/command/InvalidCommand.java | 2 +- .../supertracker/command/ListCommand.java | 2 +- .../java/supertracker/command/NewCommand.java | 2 +- .../supertracker/command/QuitCommand.java | 2 +- .../supertracker/command/UpdateCommand.java | 2 +- src/main/java/supertracker/parser/Parser.java | 73 +++++++++++++------ src/main/java/supertracker/{ => ui}/Ui.java | 2 +- 8 files changed, 59 insertions(+), 27 deletions(-) rename src/main/java/supertracker/{ => ui}/Ui.java (99%) diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index 0febd1dbf0..a2df9595d9 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -2,6 +2,7 @@ import supertracker.command.Command; import supertracker.parser.Parser; +import supertracker.ui.Ui; import java.util.Scanner; diff --git a/src/main/java/supertracker/command/InvalidCommand.java b/src/main/java/supertracker/command/InvalidCommand.java index 24cc7752b3..b3992cbcc7 100644 --- a/src/main/java/supertracker/command/InvalidCommand.java +++ b/src/main/java/supertracker/command/InvalidCommand.java @@ -1,6 +1,6 @@ package supertracker.command; -import supertracker.Ui; +import supertracker.ui.Ui; public class InvalidCommand implements Command { @Override diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index c5042d99bf..3279306720 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -1,6 +1,6 @@ package supertracker.command; -import supertracker.Ui; +import supertracker.ui.Ui; import supertracker.item.Inventory; import supertracker.item.Item; diff --git a/src/main/java/supertracker/command/NewCommand.java b/src/main/java/supertracker/command/NewCommand.java index f66bfd296c..1bf73f14c2 100644 --- a/src/main/java/supertracker/command/NewCommand.java +++ b/src/main/java/supertracker/command/NewCommand.java @@ -1,6 +1,6 @@ package supertracker.command; -import supertracker.Ui; +import supertracker.ui.Ui; import supertracker.item.Inventory; import supertracker.item.Item; diff --git a/src/main/java/supertracker/command/QuitCommand.java b/src/main/java/supertracker/command/QuitCommand.java index 34d458a36c..2feec89a5e 100644 --- a/src/main/java/supertracker/command/QuitCommand.java +++ b/src/main/java/supertracker/command/QuitCommand.java @@ -1,6 +1,6 @@ package supertracker.command; -import supertracker.Ui; +import supertracker.ui.Ui; public class QuitCommand implements Command { @Override diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index cccd96a7db..3c697e22dd 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -1,6 +1,6 @@ package supertracker.command; -import supertracker.Ui; +import supertracker.ui.Ui; import supertracker.item.Inventory; import supertracker.item.Item; diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 89a097910a..5995bc4339 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -8,7 +8,11 @@ import supertracker.command.Command; import supertracker.item.Inventory; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class Parser { + private static final String BASE_FLAG = "/"; private static final String QUIT_COMMAND = "quit"; private static final String NEW_COMMAND = "new"; private static final String LIST_COMMAND = "list"; @@ -37,6 +41,7 @@ private static String getCommandWord(String input) { */ public static Command parseCommand(String input) { String commandWord = getCommandWord(input); + String params = input.replace(commandWord, "").trim(); Command command; switch (commandWord) { @@ -44,7 +49,7 @@ public static Command parseCommand(String input) { command = new QuitCommand(); break; case NEW_COMMAND: - command = parseNewCommand(input); + command = parseNewCommand(params); break; case LIST_COMMAND: command = parseListCommand(input); @@ -59,6 +64,27 @@ public static Command parseCommand(String input) { return command; } + private static String makeStringPattern(String inputParams, String[] paramFlags) { + StringBuilder flagBuilder = new StringBuilder(); + for (String flag : paramFlags) { + flagBuilder.append(flag); + } + String flags = flagBuilder.toString(); + + String[] params = inputParams.split("(?=[" + flags + "]" + BASE_FLAG + ")"); + StringBuilder stringPattern = new StringBuilder(); + + for (String paramFlag : paramFlags) { + for (String p : params) { + if (p.startsWith(paramFlag + BASE_FLAG)) { + stringPattern.append(p); + break; + } + } + } + + return stringPattern.toString().trim(); + } private static Command parseUpdateCommand(String input) { ExtractDataForNewOrUpdateCommand result = getExtractDataForNewOrUpdateCommand(input); @@ -133,32 +159,37 @@ public ExtractDataForNewOrUpdateCommand(String name, String quantityString, Stri } private static Command parseNewCommand(String input) { - ExtractDataForNewOrUpdateCommand result = getExtractDataForNewOrUpdateCommand(input); + Pattern p = Pattern.compile("n/(?.*) q/(?[0-9]*) p/(?[0-9]*(?:.[0-9]*)?)$"); + String[] flags = {"n", "q", "p"}; + String newCommandPattern = makeStringPattern(input, flags); + Matcher matcher = p.matcher(newCommandPattern); - if (result.name.isEmpty() || result.quantityString.isEmpty() || result.priceString.isEmpty()) { - // throw error (possible to split for unique error messages) - System.out.println("empty param"); + if (!matcher.matches()) { + return new InvalidCommand(); } - if (Inventory.contains(result.name)) { - // throw error - System.out.println("Inventory already contains item"); - } - - // throws NumberFormatException if strings cannot be parsed - int quantity = Integer.parseInt(result.quantityString); - double price = roundTo2Dp(Double.parseDouble(result.priceString)); + String itemName = matcher.group("name").trim(); + String itemQuantityString = matcher.group("quantity"); + String itemPriceString = matcher.group("price"); - if (quantity < 0) { - // throw error - System.out.println("quantity less than 0"); - } - if (price < 0) { - // throw error - System.out.println("price less than 0"); + if (itemName.isEmpty() || itemQuantityString.isEmpty() || itemPriceString.isEmpty()) { + return new InvalidCommand(); } - return new NewCommand(result.name, quantity, price); + // throws NumberFormatException if strings cannot be parsed + int itemQuantity = Integer.parseInt(itemQuantityString); + double itemPrice = roundTo2Dp(Double.parseDouble(itemPriceString)); + +// if (quantity < 0) { +// // throw error +// System.out.println("quantity less than 0"); +// } +// if (price < 0) { +// // throw error +// System.out.println("price less than 0"); +// } + + return new NewCommand(itemName, itemQuantity, itemPrice); } private static Command parseListCommand(String input) { diff --git a/src/main/java/supertracker/Ui.java b/src/main/java/supertracker/ui/Ui.java similarity index 99% rename from src/main/java/supertracker/Ui.java rename to src/main/java/supertracker/ui/Ui.java index 035c36b607..e087a75ad9 100644 --- a/src/main/java/supertracker/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -1,4 +1,4 @@ -package supertracker; +package supertracker.ui; import supertracker.item.Item; From 8bed28376e8997384e267bf2ac2d32a1bfb10da9 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 15 Mar 2024 16:41:24 +0800 Subject: [PATCH 022/423] add junit test case --- src/test/java/supertracker/command/UpdateCommandTest.java | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 src/test/java/supertracker/command/UpdateCommandTest.java diff --git a/src/test/java/supertracker/command/UpdateCommandTest.java b/src/test/java/supertracker/command/UpdateCommandTest.java new file mode 100644 index 0000000000..e745903652 --- /dev/null +++ b/src/test/java/supertracker/command/UpdateCommandTest.java @@ -0,0 +1,2 @@ +package supertracker.command;public class UpdateCommandTest { +} From d0e67e2848eae95f2e928e14e96f8453f7c1d011 Mon Sep 17 00:00:00 2001 From: David Date: Fri, 15 Mar 2024 16:41:52 +0800 Subject: [PATCH 023/423] add UpdateCOmmandTest --- .../command/UpdateCommandTest.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/src/test/java/supertracker/command/UpdateCommandTest.java b/src/test/java/supertracker/command/UpdateCommandTest.java index e745903652..7d88ce868b 100644 --- a/src/test/java/supertracker/command/UpdateCommandTest.java +++ b/src/test/java/supertracker/command/UpdateCommandTest.java @@ -1,2 +1,32 @@ -package supertracker.command;public class UpdateCommandTest { +package supertracker.command; + +import org.junit.jupiter.api.Test; +import supertracker.item.Inventory; +import supertracker.item.Item; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +public class UpdateCommandTest { + @Test + public void updateCommand_validData_correctlyConstructed(){ + String name = "Milk"; + int quantity = 100; + double price = 5.00; + + int newQuantity = 200; + double newPrice = 3.00; + + Command newCommand = new NewCommand("Milk", quantity, price); + newCommand.execute(); + Command updateCommand = new UpdateCommand("Milk", 200, 3.00); + updateCommand.execute(); + + assertTrue(Inventory.contains(name)); + Item item = Inventory.get(name); + assertNotNull(item); + assertEquals(name, item.getName()); + assertEquals(newQuantity, item.getQuantity()); + assertEquals(newPrice, item.getPrice()); + } } From 04fe15c468c3ec03a0c4af4b4650f1584a265b48 Mon Sep 17 00:00:00 2001 From: rismm Date: Fri, 15 Mar 2024 16:48:55 +0800 Subject: [PATCH 024/423] Update Parser --- src/main/java/supertracker/parser/Parser.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 5995bc4339..c8c9ccfc92 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -87,6 +87,7 @@ private static String makeStringPattern(String inputParams, String[] paramFlags) } private static Command parseUpdateCommand(String input) { + Pattern p = Pattern.compile("n/(.*)"); ExtractDataForNewOrUpdateCommand result = getExtractDataForNewOrUpdateCommand(input); if (result.name.isEmpty()) { @@ -169,8 +170,8 @@ private static Command parseNewCommand(String input) { } String itemName = matcher.group("name").trim(); - String itemQuantityString = matcher.group("quantity"); - String itemPriceString = matcher.group("price"); + String itemQuantityString = matcher.group("quantity").trim(); + String itemPriceString = matcher.group("price").trim(); if (itemName.isEmpty() || itemQuantityString.isEmpty() || itemPriceString.isEmpty()) { return new InvalidCommand(); @@ -180,15 +181,6 @@ private static Command parseNewCommand(String input) { int itemQuantity = Integer.parseInt(itemQuantityString); double itemPrice = roundTo2Dp(Double.parseDouble(itemPriceString)); -// if (quantity < 0) { -// // throw error -// System.out.println("quantity less than 0"); -// } -// if (price < 0) { -// // throw error -// System.out.println("price less than 0"); -// } - return new NewCommand(itemName, itemQuantity, itemPrice); } From cb9ae28fe482c703e83c11be7ecb52b105222026 Mon Sep 17 00:00:00 2001 From: rismm Date: Fri, 15 Mar 2024 17:25:22 +0800 Subject: [PATCH 025/423] Add JUnit test for Parser --- src/main/java/supertracker/parser/Parser.java | 2 +- .../java/supertracker/parser/ParserTest.java | 30 +++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 src/test/java/supertracker/parser/ParserTest.java diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index c8c9ccfc92..57b6f55d3d 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -77,7 +77,7 @@ private static String makeStringPattern(String inputParams, String[] paramFlags) for (String paramFlag : paramFlags) { for (String p : params) { if (p.startsWith(paramFlag + BASE_FLAG)) { - stringPattern.append(p); + stringPattern.append(p.trim()).append(" "); break; } } diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java new file mode 100644 index 0000000000..96dd6fe6ab --- /dev/null +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -0,0 +1,30 @@ +package supertracker.parser; + +import org.junit.jupiter.api.Test; +import supertracker.command.Command; +import supertracker.command.InvalidCommand; +import supertracker.command.NewCommand; + +import static org.junit.jupiter.api.Assertions.assertInstanceOf; + +public class ParserTest { + @Test + public void parseCommand_validNewCommandInput_newCommand() { + String[] inputs = {"new n/apple q/50 p/99.5", "new p/99.5 q/23 n/elephant", "new q/88 n/banana p/213"}; + + for (String input : inputs) { + Command resultCommand = Parser.parseCommand(input); + assertInstanceOf(NewCommand.class, resultCommand); + } + } + + @Test + public void parseCommand_invalidCommandInput_invalidCommand() { + String[] inputs = {"abcdefg", "1239", "newnew n/j q/2 p/123", "elephant"}; + + for (String input : inputs) { + Command resultCommand = Parser.parseCommand(input); + assertInstanceOf(InvalidCommand.class, resultCommand); + } + } +} From 935b4f82bcceb39ae2ef3286c64dca848ad0411e Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 16 Mar 2024 17:58:11 +0800 Subject: [PATCH 026/423] Update Parser class Add regex pattern matching support for list and update commands --- .../supertracker/command/ListCommand.java | 12 +- src/main/java/supertracker/parser/Parser.java | 169 ++++++++---------- src/main/java/supertracker/ui/Ui.java | 8 +- .../java/supertracker/parser/ParserTest.java | 27 +++ 4 files changed, 113 insertions(+), 103 deletions(-) diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index 3279306720..b0fb1abb89 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -7,13 +7,13 @@ import java.util.Collection; public class ListCommand implements Command { - private boolean qExists; - private boolean pExists; + private boolean hasQuantity; + private boolean hasPrice; private String firstParam; - public ListCommand(boolean qExists, boolean pExists, String firstParam) { - this.qExists = qExists; - this.pExists = pExists; + public ListCommand(boolean hasQuantity, boolean hasPrice, String firstParam) { + this.hasQuantity = hasQuantity; + this.hasPrice = hasPrice; this.firstParam = firstParam; } @@ -23,7 +23,7 @@ public void execute() { Collection items = Inventory.items(); Ui.listIntro(items.size()); for (Item item : items) { - Ui.listItem(item, index, qExists, pExists, firstParam); + Ui.listItem(item, index, hasQuantity, hasPrice, firstParam); index++; } } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 57b6f55d3d..e1920506bc 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -12,13 +12,26 @@ import java.util.regex.Pattern; public class Parser { - private static final String BASE_FLAG = "/"; private static final String QUIT_COMMAND = "quit"; private static final String NEW_COMMAND = "new"; private static final String LIST_COMMAND = "list"; private static final String UPDATE_COMMAND = "update"; - private static final int PARAM_BEGIN_INDEX = 2; private static final double ROUNDING_FACTOR = 100.0; + private static final String BASE_FLAG = "/"; + private static final String NAME_FLAG = "n"; + private static final String QUANTITY_FLAG = "q"; + private static final String PRICE_FLAG = "p"; + private static final String NAME_GROUP = "name"; + public static final String QUANTITY_GROUP = "quantity"; + public static final String PRICE_GROUP = "price"; + private static final String NEW_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">[0-9]*) " + + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">[0-9]*(?:\\.[0-9]*)?) "; + private static final String UPDATE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + + "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + "[0-9]*)?) " + + "(?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + "[0-9]*(?:\\.[0-9]*)?)?) "; + private static final String LIST_COMMAND_REGEX = "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + + ".*)?) (?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) "; /** * Returns the command word specified in the user input string @@ -52,10 +65,10 @@ public static Command parseCommand(String input) { command = parseNewCommand(params); break; case LIST_COMMAND: - command = parseListCommand(input); + command = parseListCommand(params); break; case UPDATE_COMMAND: - command = parseUpdateCommand(input); + command = parseUpdateCommand(params); break; default: command = new InvalidCommand(); @@ -64,6 +77,13 @@ public static Command parseCommand(String input) { return command; } + /** + * Returns a String in the format of a regex expression pattern for parsing of command inputs + * + * @param inputParams a String of the input parameters + * @param paramFlags a String array with the specified flags to split the input parameters + * @return a String of the input parameters in the format of a regex expression specified by the input flags + */ private static String makeStringPattern(String inputParams, String[] paramFlags) { StringBuilder flagBuilder = new StringBuilder(); for (String flag : paramFlags) { @@ -77,101 +97,73 @@ private static String makeStringPattern(String inputParams, String[] paramFlags) for (String paramFlag : paramFlags) { for (String p : params) { if (p.startsWith(paramFlag + BASE_FLAG)) { - stringPattern.append(p.trim()).append(" "); + stringPattern.append(p.trim()); break; } } + stringPattern.append(" "); } - return stringPattern.toString().trim(); + return stringPattern.toString(); + } + + private static Matcher getPatternMatcher(String regex, String input, String[] paramFlags) { + Pattern p = Pattern.compile(regex); + String commandPattern = makeStringPattern(input, paramFlags); + return p.matcher(commandPattern); + } + + private static double roundTo2Dp(double unroundedValue) { + return Math.round(unroundedValue * ROUNDING_FACTOR) / ROUNDING_FACTOR; } private static Command parseUpdateCommand(String input) { - Pattern p = Pattern.compile("n/(.*)"); - ExtractDataForNewOrUpdateCommand result = getExtractDataForNewOrUpdateCommand(input); + String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG}; + Matcher matcher = getPatternMatcher(UPDATE_COMMAND_REGEX, input, flags); - if (result.name.isEmpty()) { + if (!matcher.matches()) { + // throw error + return new InvalidCommand(); + } + + String itemName = matcher.group(NAME_GROUP).trim().toLowerCase(); + String quantityString = matcher.group(QUANTITY_GROUP).replace(QUANTITY_FLAG + BASE_FLAG, "").trim(); + String priceString = matcher.group(PRICE_GROUP).replace(PRICE_FLAG + BASE_FLAG, "").trim(); + if (itemName.isEmpty() || (quantityString.isEmpty() && priceString.isEmpty())) { // throw error System.out.println("empty param"); + return new InvalidCommand(); } - if (!Inventory.contains(result.name)) { + if (!Inventory.contains(itemName)) { // throw error - System.out.println(result.name + " does not exist in inventory. Unable to update its values. =("); + System.out.println(itemName + " does not exist in inventory. Unable to update its values. =("); + return new InvalidCommand(); } int quantity = 0; double price = 0; - if (result.quantityString.isEmpty()) { - quantity = 0; - } else { - quantity = Integer.parseInt(result.quantityString); + if (!quantityString.isEmpty()) { + quantity = Integer.parseInt(quantityString); } - if (result.priceString.isEmpty()) { - price = 0; - } else { - price = roundTo2Dp(Double.parseDouble(result.priceString)); + if (!priceString.isEmpty()) { + price = roundTo2Dp(Double.parseDouble(priceString)); } - if (quantity < 0) { - // throw error - System.out.println("quantity less than 0"); - } - if (price < 0) { - // throw error - System.out.println("price less than 0"); - } - - return new UpdateCommand(result.name, quantity, price); - } - - // extracted for new or update command to use - private static ExtractDataForNewOrUpdateCommand getExtractDataForNewOrUpdateCommand(String input) { - // split input string into params if they start with "n/", "q/" or "p/" - String[] params = input.split("(?=[nqp]/)"); - - String name = ""; - String quantityString = ""; - String priceString = ""; - - for (String param : params) { - param = param.trim(); - if (param.startsWith("n/") && name.isEmpty()) { - name = param.substring(PARAM_BEGIN_INDEX); - } else if (param.startsWith("q/") && quantityString.isEmpty()) { - quantityString = param.substring(PARAM_BEGIN_INDEX); - } else if (param.startsWith("p/") && priceString.isEmpty()) { - priceString = param.substring(PARAM_BEGIN_INDEX); - } - } - return new ExtractDataForNewOrUpdateCommand(name, quantityString, priceString); - } - - private static class ExtractDataForNewOrUpdateCommand { - public final String name; - public final String quantityString; - public final String priceString; - - public ExtractDataForNewOrUpdateCommand(String name, String quantityString, String priceString) { - this.name = name; - this.quantityString = quantityString; - this.priceString = priceString; - } + return new UpdateCommand(itemName, quantity, price); } private static Command parseNewCommand(String input) { - Pattern p = Pattern.compile("n/(?.*) q/(?[0-9]*) p/(?[0-9]*(?:.[0-9]*)?)$"); - String[] flags = {"n", "q", "p"}; - String newCommandPattern = makeStringPattern(input, flags); - Matcher matcher = p.matcher(newCommandPattern); + String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG}; + Matcher matcher = getPatternMatcher(NEW_COMMAND_REGEX, input, flags); if (!matcher.matches()) { return new InvalidCommand(); } - String itemName = matcher.group("name").trim(); - String itemQuantityString = matcher.group("quantity").trim(); - String itemPriceString = matcher.group("price").trim(); + String itemName = matcher.group(NAME_GROUP).trim(); + String itemQuantityString = matcher.group(QUANTITY_GROUP).trim(); + String itemPriceString = matcher.group(PRICE_GROUP).trim(); if (itemName.isEmpty() || itemQuantityString.isEmpty() || itemPriceString.isEmpty()) { return new InvalidCommand(); @@ -185,33 +177,24 @@ private static Command parseNewCommand(String input) { } private static Command parseListCommand(String input) { - // split input string into params if they start with "q/" or "p/" - String[] params = input.split("(?=[qp]/)"); + String[] flags = {QUANTITY_FLAG, PRICE_FLAG}; + Matcher matcher = getPatternMatcher(LIST_COMMAND_REGEX, input, flags); - boolean qExists = false; - boolean pExists = false; + if (!matcher.matches()) { + return new InvalidCommand(); + } + + boolean hasQuantity = !matcher.group(QUANTITY_GROUP).isEmpty(); + boolean hasPrice = !matcher.group(PRICE_GROUP).isEmpty(); // to check if q comes before p or vice versa String firstParam = ""; - - for (String param : params) { - if (param.startsWith("q/")) { - qExists = true; - if (firstParam.isEmpty()) { - firstParam = "q"; - } - } else if (param.startsWith("p/")) { - pExists = true; - if (firstParam.isEmpty()) { - firstParam = "p"; - } - } + if (hasQuantity && hasPrice) { + int quantityPosition = input.indexOf(QUANTITY_FLAG + BASE_FLAG); + int pricePosition = input.indexOf(PRICE_FLAG + BASE_FLAG); + firstParam = quantityPosition < pricePosition ? QUANTITY_FLAG : PRICE_FLAG; } - return new ListCommand(qExists, pExists, firstParam); - } - - private static double roundTo2Dp(double unroundedValue) { - return Math.round(unroundedValue * ROUNDING_FACTOR) / ROUNDING_FACTOR; + return new ListCommand(hasQuantity, hasPrice, firstParam); } -} +} \ No newline at end of file diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index e087a75ad9..56f0b493ee 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -75,20 +75,20 @@ public static void listIntro(int size) { printIndent(listSize(size)); } - public static void listItem(Item item, int index, boolean qExists, boolean pExists, String firstParam) { + public static void listItem(Item item, int index, boolean hasQuantity, boolean hasPrice, String firstParam) { String stringToPrint = index + ". Name: " + item.getName(); String quantityString = " Quantity: " + item.getQuantity(); String priceString = " Price: " + item.getPriceString(); - if (qExists && pExists) { + if (hasQuantity && hasPrice) { if (firstParam.equals("q")) { stringToPrint += (quantityString + priceString); } else if (firstParam.equals("p")) { stringToPrint += (priceString + quantityString); } - } else if (qExists) { + } else if (hasQuantity) { stringToPrint += quantityString; - } else if (pExists) { + } else if (hasPrice) { stringToPrint += priceString; } diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java index 96dd6fe6ab..62ff02d9ad 100644 --- a/src/test/java/supertracker/parser/ParserTest.java +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -4,7 +4,11 @@ import supertracker.command.Command; import supertracker.command.InvalidCommand; import supertracker.command.NewCommand; +import supertracker.command.UpdateCommand; +import supertracker.item.Inventory; +import supertracker.item.Item; +import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; public class ParserTest { @@ -18,6 +22,29 @@ public void parseCommand_validNewCommandInput_newCommand() { } } + @Test + public void parseCommand_validUpdateCommandInput_updateCommand() { + Command newItem = Parser.parseCommand("new n/banana milkshake q/11 p/12.2"); + newItem.execute(); + + Command update = Parser.parseCommand("update n/banana milkshake q/15 p/9.11"); + assertInstanceOf(UpdateCommand.class, update); + update.execute(); + Item bShake = Inventory.get("banana milkshake"); + assertEquals(15, bShake.getQuantity()); + assertEquals(9.11, bShake.getPrice()); + + update = Parser.parseCommand("update n/banana milkshake q/6969"); + update.execute(); + bShake = Inventory.get("banana milkshake"); + assertEquals(6969, bShake.getQuantity()); + + update = Parser.parseCommand("update n/banana milkshake p/96.96"); + update.execute(); + bShake = Inventory.get("banana milkshake"); + assertEquals(96.96, bShake.getPrice()); + } + @Test public void parseCommand_invalidCommandInput_invalidCommand() { String[] inputs = {"abcdefg", "1239", "newnew n/j q/2 p/123", "elephant"}; From 7b982ce5b51e5153a314d08782ae572dfaf970a0 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Sun, 17 Mar 2024 00:38:21 +0800 Subject: [PATCH 027/423] Add JUint to Ui --- src/test/java/supertracker/ui/UiTest.java | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 src/test/java/supertracker/ui/UiTest.java diff --git a/src/test/java/supertracker/ui/UiTest.java b/src/test/java/supertracker/ui/UiTest.java new file mode 100644 index 0000000000..0e23853411 --- /dev/null +++ b/src/test/java/supertracker/ui/UiTest.java @@ -0,0 +1,23 @@ +package supertracker.ui; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Test; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +public class UiTest { + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + @Test + public void printIndent_string_expectStringWithIndentation() { + PrintStream originalOut = System.out; + System.setOut(new PrintStream(outContent)); + + Ui.printIndent("test"); + System.setOut(new PrintStream(originalOut)); + String expected = " test\n"; + String actualString = outContent.toString(); + assertEquals(expected, actualString); + } +} + From 03eaa69e76df87b686989e7dfa787b2aa36af6ff Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 17 Mar 2024 03:36:18 +0800 Subject: [PATCH 028/423] Fix checkstyle --- src/main/java/supertracker/parser/Parser.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index e1920506bc..3928287e48 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -22,8 +22,8 @@ public class Parser { private static final String QUANTITY_FLAG = "q"; private static final String PRICE_FLAG = "p"; private static final String NAME_GROUP = "name"; - public static final String QUANTITY_GROUP = "quantity"; - public static final String PRICE_GROUP = "price"; + private static final String QUANTITY_GROUP = "quantity"; + private static final String PRICE_GROUP = "price"; private static final String NEW_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">[0-9]*) " + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">[0-9]*(?:\\.[0-9]*)?) "; @@ -197,4 +197,4 @@ private static Command parseListCommand(String input) { return new ListCommand(hasQuantity, hasPrice, firstParam); } -} \ No newline at end of file +} From 5cfaae8a3d12c83798ec773b98d516c4c9197cb0 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 17 Mar 2024 12:03:00 +0800 Subject: [PATCH 029/423] Add remove element to inventory hashmap and implement DeleteCommand class. --- .../supertracker/command/DeleteCommand.java | 22 +++++++++++++++++++ .../java/supertracker/item/Inventory.java | 4 ++++ 2 files changed, 26 insertions(+) create mode 100644 src/main/java/supertracker/command/DeleteCommand.java diff --git a/src/main/java/supertracker/command/DeleteCommand.java b/src/main/java/supertracker/command/DeleteCommand.java new file mode 100644 index 0000000000..aa72a0fce3 --- /dev/null +++ b/src/main/java/supertracker/command/DeleteCommand.java @@ -0,0 +1,22 @@ +package supertracker.command; + +import supertracker.item.Inventory; + +public class DeleteCommand implements Command { + + String itemName; + + public DeleteCommand(String itemName) { + this.itemName = itemName; + } + + @Override + public void execute() { + Inventory.delete(itemName); + } + + @Override + public boolean isQuit() { + return false; + } +} diff --git a/src/main/java/supertracker/item/Inventory.java b/src/main/java/supertracker/item/Inventory.java index 931cb01f87..7549804d39 100644 --- a/src/main/java/supertracker/item/Inventory.java +++ b/src/main/java/supertracker/item/Inventory.java @@ -18,6 +18,10 @@ public static void put(String name, Item item) { itemMap.put(name.toLowerCase(), item); } + public static void delete(String name) { + itemMap.remove(name.toLowerCase()); + } + public static Collection items() { return itemMap.values(); } From eeb442bb518cf3ea55a379a98e26fa52e345fa6e Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 17 Mar 2024 13:47:57 +0800 Subject: [PATCH 030/423] Implement delete class --- src/main/java/supertracker/command/DeleteCommand.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/supertracker/command/DeleteCommand.java b/src/main/java/supertracker/command/DeleteCommand.java index aa72a0fce3..9ecdda0c4b 100644 --- a/src/main/java/supertracker/command/DeleteCommand.java +++ b/src/main/java/supertracker/command/DeleteCommand.java @@ -1,6 +1,10 @@ package supertracker.command; import supertracker.item.Inventory; +import supertracker.ui.Ui; + +import static supertracker.ui.Ui.deleteUnsuccessful; + public class DeleteCommand implements Command { @@ -12,7 +16,13 @@ public DeleteCommand(String itemName) { @Override public void execute() { + if (!Inventory.contains(itemName)) { + deleteUnsuccessful(itemName); + return; + } + Inventory.delete(itemName); + Ui.deleteSuccess(itemName); } @Override From 07713b0f58ee93462487c99e0db60c58e4ed2244 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 17 Mar 2024 13:49:28 +0800 Subject: [PATCH 031/423] Add message for DeleteCommand --- src/main/java/supertracker/parser/Parser.java | 5 +++++ src/main/java/supertracker/ui/Ui.java | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 57b6f55d3d..84c8a33378 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -5,6 +5,7 @@ import supertracker.command.NewCommand; import supertracker.command.QuitCommand; import supertracker.command.UpdateCommand; +import supertracker.command.DeleteCommand; import supertracker.command.Command; import supertracker.item.Inventory; @@ -17,6 +18,7 @@ public class Parser { private static final String NEW_COMMAND = "new"; private static final String LIST_COMMAND = "list"; private static final String UPDATE_COMMAND = "update"; + private static final String DELETE_COMMAND = "delete"; private static final int PARAM_BEGIN_INDEX = 2; private static final double ROUNDING_FACTOR = 100.0; @@ -57,6 +59,9 @@ public static Command parseCommand(String input) { case UPDATE_COMMAND: command = parseUpdateCommand(input); break; + case DELETE_COMMAND: + command = new DeleteCommand(params); + break; default: command = new InvalidCommand(); break; diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index e087a75ad9..84b94e5d38 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -7,6 +7,7 @@ public class Ui { private static final String EMPTY_LIST_MESSAGE = "Nothing to list! No items in inventory!"; private static final String SINGLE_ITEM_LIST_MESSAGE= "There is 1 unique item in your inventory:"; private static final String INVALID_COMMAND_MESSAGE = "Sorry! Invalid command!"; + private static final String MISSING_ITEM_MESSAGE = "Sorry! I could not delete that item!"; private static final String WELCOME_MESSAGE = "Hello, welcome to SuperTracker, how may I help you?"; private static final String FAREWELL_MESSAGE = "Goodbye!"; @@ -29,6 +30,10 @@ private static void updateItemOpening(Item item) { System.out.println(item.getName() + " has been successfully updated!"); } + private static String deleteItemOpening(String itemName) { + return itemName + " has been deleted!"; + } + public static void printIndent(String string) { System.out.println(" " + string); } @@ -63,6 +68,14 @@ public static void updateCommandSuccess(Item item) { printIndent(priceMessage(item)); } + public static void deleteSuccess(String itemName) { + printIndent(deleteItemOpening(itemName)); + } + + public static void deleteUnsuccessful(String itemName) { + printIndent(MISSING_ITEM_MESSAGE); + } + public static void listIntro(int size) { if (size == 0) { printIndent(EMPTY_LIST_MESSAGE); From a68c716335a59916af0a2c79cfcc874f5350521f Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 17 Mar 2024 19:09:48 +0800 Subject: [PATCH 032/423] Add basic exception --- src/main/java/supertracker/TrackerException.java | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/main/java/supertracker/TrackerException.java diff --git a/src/main/java/supertracker/TrackerException.java b/src/main/java/supertracker/TrackerException.java new file mode 100644 index 0000000000..c15655f335 --- /dev/null +++ b/src/main/java/supertracker/TrackerException.java @@ -0,0 +1,8 @@ +package supertracker; + +public class TrackerException extends Exception { + protected String errorMessage; + public TrackerException(String errorMessage) { + this.errorMessage = errorMessage; + } +} From 71c845b2550f03ff3d14b9cb3d6f0142e0ec3ed7 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 17 Mar 2024 19:40:31 +0800 Subject: [PATCH 033/423] Change delete function to use n/ regex --- .../supertracker/command/DeleteCommand.java | 2 +- src/main/java/supertracker/parser/Parser.java | 20 ++++++++++++++++++- src/main/java/supertracker/ui/Ui.java | 2 +- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/java/supertracker/command/DeleteCommand.java b/src/main/java/supertracker/command/DeleteCommand.java index 9ecdda0c4b..d53ab9c5c7 100644 --- a/src/main/java/supertracker/command/DeleteCommand.java +++ b/src/main/java/supertracker/command/DeleteCommand.java @@ -17,7 +17,7 @@ public DeleteCommand(String itemName) { @Override public void execute() { if (!Inventory.contains(itemName)) { - deleteUnsuccessful(itemName); + deleteUnsuccessful(); return; } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index ad2b9793fb..3ea66c4f02 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -12,6 +12,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import static supertracker.ui.Ui.deleteUnsuccessful; + public class Parser { private static final String QUIT_COMMAND = "quit"; private static final String NEW_COMMAND = "new"; @@ -73,7 +75,7 @@ public static Command parseCommand(String input) { command = parseUpdateCommand(params); break; case DELETE_COMMAND: - command = new DeleteCommand(params); + command = parseDeleteCommand(params); break; default: command = new InvalidCommand(); @@ -202,4 +204,20 @@ private static Command parseListCommand(String input) { return new ListCommand(hasQuantity, hasPrice, firstParam); } + + private static Command parseDeleteCommand(String input) { + if (!input.contains(NAME_FLAG + BASE_FLAG)) { + return new InvalidCommand(); + } + String[] parseName = input.split(NAME_FLAG + BASE_FLAG, 2); + String itemName = parseName[1]; + + if (itemName.isEmpty()) { + return new InvalidCommand(); + } + //throws ArrayIndexOutOfBoundsException if string is have no n/ + return new DeleteCommand(itemName); + + } + } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index bdf1c8ba35..410f874863 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -72,7 +72,7 @@ public static void deleteSuccess(String itemName) { printIndent(deleteItemOpening(itemName)); } - public static void deleteUnsuccessful(String itemName) { + public static void deleteUnsuccessful() { printIndent(MISSING_ITEM_MESSAGE); } From 95e130c90202710e318c6052665fbbb26e029822 Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 17 Mar 2024 19:49:33 +0800 Subject: [PATCH 034/423] Add exception handling Add exception handling for new, update and list commands --- src/main/java/supertracker/SuperTracker.java | 10 +++++-- .../java/supertracker/TrackerException.java | 5 ++++ src/main/java/supertracker/parser/Parser.java | 26 ++++++++----------- src/main/java/supertracker/ui/Ui.java | 7 +++++ .../java/supertracker/parser/ParserTest.java | 7 ++--- 5 files changed, 35 insertions(+), 20 deletions(-) diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index a2df9595d9..3bd6eaf20e 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -1,6 +1,7 @@ package supertracker; import supertracker.command.Command; +import supertracker.command.InvalidCommand; import supertracker.parser.Parser; import supertracker.ui.Ui; @@ -28,8 +29,13 @@ private static void handleCommands() { do { String input = in.nextLine(); Ui.printLine(); - command = Parser.parseCommand(input.trim()); - command.execute(); + try { + command = Parser.parseCommand(input.trim()); + command.execute(); + } catch (TrackerException e) { + Ui.printError(e); + command = new InvalidCommand(); + } Ui.printLine(); } while (!command.isQuit()); in.close(); diff --git a/src/main/java/supertracker/TrackerException.java b/src/main/java/supertracker/TrackerException.java index c15655f335..307ae84830 100644 --- a/src/main/java/supertracker/TrackerException.java +++ b/src/main/java/supertracker/TrackerException.java @@ -2,7 +2,12 @@ public class TrackerException extends Exception { protected String errorMessage; + public TrackerException(String errorMessage) { this.errorMessage = errorMessage; } + + public String getErrorMessage() { + return errorMessage; + } } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index ad2b9793fb..f3675eff2e 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -1,5 +1,6 @@ package supertracker.parser; +import supertracker.TrackerException; import supertracker.command.InvalidCommand; import supertracker.command.ListCommand; import supertracker.command.NewCommand; @@ -54,7 +55,7 @@ private static String getCommandWord(String input) { * @param input a String of the user's input * @return a Command to execute */ - public static Command parseCommand(String input) { + public static Command parseCommand(String input) throws TrackerException { String commandWord = getCommandWord(input); String params = input.replace(commandWord, "").trim(); @@ -122,27 +123,22 @@ private static double roundTo2Dp(double unroundedValue) { return Math.round(unroundedValue * ROUNDING_FACTOR) / ROUNDING_FACTOR; } - private static Command parseUpdateCommand(String input) { + private static Command parseUpdateCommand(String input) throws TrackerException { String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG}; Matcher matcher = getPatternMatcher(UPDATE_COMMAND_REGEX, input, flags); if (!matcher.matches()) { - // throw error - return new InvalidCommand(); + throw new TrackerException("Invalid update command format!"); } String itemName = matcher.group(NAME_GROUP).trim().toLowerCase(); String quantityString = matcher.group(QUANTITY_GROUP).replace(QUANTITY_FLAG + BASE_FLAG, "").trim(); String priceString = matcher.group(PRICE_GROUP).replace(PRICE_FLAG + BASE_FLAG, "").trim(); if (itemName.isEmpty() || (quantityString.isEmpty() && priceString.isEmpty())) { - // throw error - System.out.println("empty param"); - return new InvalidCommand(); + throw new TrackerException("Parameters cannot be left empty!"); } if (!Inventory.contains(itemName)) { - // throw error - System.out.println(itemName + " does not exist in inventory. Unable to update its values. =("); - return new InvalidCommand(); + throw new TrackerException(itemName + " does not exist in inventory. Unable to update its values. =("); } int quantity = 0; @@ -158,12 +154,12 @@ private static Command parseUpdateCommand(String input) { return new UpdateCommand(itemName, quantity, price); } - private static Command parseNewCommand(String input) { + private static Command parseNewCommand(String input) throws TrackerException { String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG}; Matcher matcher = getPatternMatcher(NEW_COMMAND_REGEX, input, flags); if (!matcher.matches()) { - return new InvalidCommand(); + throw new TrackerException("Invalid new command format!"); } String itemName = matcher.group(NAME_GROUP).trim(); @@ -171,7 +167,7 @@ private static Command parseNewCommand(String input) { String itemPriceString = matcher.group(PRICE_GROUP).trim(); if (itemName.isEmpty() || itemQuantityString.isEmpty() || itemPriceString.isEmpty()) { - return new InvalidCommand(); + throw new TrackerException("Parameters cannot be empty!"); } // throws NumberFormatException if strings cannot be parsed @@ -181,12 +177,12 @@ private static Command parseNewCommand(String input) { return new NewCommand(itemName, itemQuantity, itemPrice); } - private static Command parseListCommand(String input) { + private static Command parseListCommand(String input) throws TrackerException { String[] flags = {QUANTITY_FLAG, PRICE_FLAG}; Matcher matcher = getPatternMatcher(LIST_COMMAND_REGEX, input, flags); if (!matcher.matches()) { - return new InvalidCommand(); + throw new TrackerException("Invalid list command format!"); } boolean hasQuantity = !matcher.group(QUANTITY_GROUP).isEmpty(); diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index bdf1c8ba35..b4b06bedd7 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -1,5 +1,6 @@ package supertracker.ui; +import supertracker.TrackerException; import supertracker.item.Item; public class Ui { @@ -10,6 +11,7 @@ public class Ui { private static final String MISSING_ITEM_MESSAGE = "Sorry! I could not delete that item!"; private static final String WELCOME_MESSAGE = "Hello, welcome to SuperTracker, how may I help you?"; private static final String FAREWELL_MESSAGE = "Goodbye!"; + private static final String BASIC_ERROR_MESSAGE = "Oh no! An error has occurred in your input"; private static String listSize(int size){ return ("There are " + size + " unique items in your inventory:"); @@ -107,4 +109,9 @@ public static void listItem(Item item, int index, boolean hasQuantity, boolean h printIndent(stringToPrint); } + + public static void printError(TrackerException e) { + printIndent(BASIC_ERROR_MESSAGE); + printIndent(e.getErrorMessage()); + } } diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java index 62ff02d9ad..2b1f833b4b 100644 --- a/src/test/java/supertracker/parser/ParserTest.java +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -1,6 +1,7 @@ package supertracker.parser; import org.junit.jupiter.api.Test; +import supertracker.TrackerException; import supertracker.command.Command; import supertracker.command.InvalidCommand; import supertracker.command.NewCommand; @@ -13,7 +14,7 @@ public class ParserTest { @Test - public void parseCommand_validNewCommandInput_newCommand() { + public void parseCommand_validNewCommandInput_newCommand() throws TrackerException { String[] inputs = {"new n/apple q/50 p/99.5", "new p/99.5 q/23 n/elephant", "new q/88 n/banana p/213"}; for (String input : inputs) { @@ -23,7 +24,7 @@ public void parseCommand_validNewCommandInput_newCommand() { } @Test - public void parseCommand_validUpdateCommandInput_updateCommand() { + public void parseCommand_validUpdateCommandInput_updateCommand() throws TrackerException { Command newItem = Parser.parseCommand("new n/banana milkshake q/11 p/12.2"); newItem.execute(); @@ -46,7 +47,7 @@ public void parseCommand_validUpdateCommandInput_updateCommand() { } @Test - public void parseCommand_invalidCommandInput_invalidCommand() { + public void parseCommand_invalidCommandInput_invalidCommand() throws TrackerException { String[] inputs = {"abcdefg", "1239", "newnew n/j q/2 p/123", "elephant"}; for (String input : inputs) { From bb69f679f92988629bba64b1fd8aa6d1ab01d46f Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 17 Mar 2024 20:19:29 +0800 Subject: [PATCH 035/423] remove unused import --- src/main/java/supertracker/parser/Parser.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 3ea66c4f02..875d928505 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -12,8 +12,6 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; -import static supertracker.ui.Ui.deleteUnsuccessful; - public class Parser { private static final String QUIT_COMMAND = "quit"; private static final String NEW_COMMAND = "new"; From 55282be1dd468624c031c76d17d73e992c0ac779 Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 17 Mar 2024 20:23:40 +0800 Subject: [PATCH 036/423] Add assertions --- build.gradle | 1 + src/main/java/supertracker/SuperTracker.java | 3 +++ src/main/java/supertracker/parser/Parser.java | 1 + 3 files changed, 5 insertions(+) diff --git a/build.gradle b/build.gradle index 2fa618e673..1b44090755 100644 --- a/build.gradle +++ b/build.gradle @@ -43,4 +43,5 @@ checkstyle { run{ standardInput = System.in + enableAssertions = true } diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index 3bd6eaf20e..26d379fdcf 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -2,6 +2,7 @@ import supertracker.command.Command; import supertracker.command.InvalidCommand; +import supertracker.command.QuitCommand; import supertracker.parser.Parser; import supertracker.ui.Ui; @@ -38,6 +39,8 @@ private static void handleCommands() { } Ui.printLine(); } while (!command.isQuit()); + + assert command instanceof QuitCommand; in.close(); } } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index f3675eff2e..0225eb4b77 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -116,6 +116,7 @@ private static String makeStringPattern(String inputParams, String[] paramFlags) private static Matcher getPatternMatcher(String regex, String input, String[] paramFlags) { Pattern p = Pattern.compile(regex); String commandPattern = makeStringPattern(input, paramFlags); + assert commandPattern.length() >= paramFlags.length; return p.matcher(commandPattern); } From c80a652c6a18ac01e1424c999e31288191927a77 Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 17 Mar 2024 21:29:45 +0800 Subject: [PATCH 037/423] Add basic error handling Add class for string constants with error messages Update text-ui-test --- src/main/java/supertracker/SuperTracker.java | 2 +- .../supertracker/command/UpdateCommand.java | 2 +- src/main/java/supertracker/parser/Parser.java | 33 +++++++------ .../java/supertracker/ui/ErrorMessage.java | 11 +++++ src/main/java/supertracker/ui/Ui.java | 7 ++- text-ui-test/EXPECTED.TXT | 46 +++++++++++++++++++ text-ui-test/input.txt | 10 ++++ 7 files changed, 90 insertions(+), 21 deletions(-) create mode 100644 src/main/java/supertracker/ui/ErrorMessage.java diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index 26d379fdcf..953acdfbdc 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -34,7 +34,7 @@ private static void handleCommands() { command = Parser.parseCommand(input.trim()); command.execute(); } catch (TrackerException e) { - Ui.printError(e); + Ui.printError(e.getErrorMessage()); command = new InvalidCommand(); } Ui.printLine(); diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index 3c697e22dd..d78a4df12f 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -24,7 +24,7 @@ public void execute() { if (newPrice == 0) { newPrice = oldItem.getPrice(); } - Item newItem = new Item(name, newQuantity, newPrice); + Item newItem = new Item(oldItem.getName(), newQuantity, newPrice); Inventory.put(name, newItem); Ui.updateCommandSuccess(newItem); } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 75a29c64da..6d7c66a88e 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -9,6 +9,7 @@ import supertracker.command.DeleteCommand; import supertracker.command.Command; import supertracker.item.Inventory; +import supertracker.ui.ErrorMessage; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -35,6 +36,8 @@ public class Parser { + "(?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + "[0-9]*(?:\\.[0-9]*)?)?) "; private static final String LIST_COMMAND_REGEX = "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + ".*)?) (?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) "; + private static final String DELETE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) "; + /** * Returns the command word specified in the user input string @@ -129,17 +132,17 @@ private static Command parseUpdateCommand(String input) throws TrackerException Matcher matcher = getPatternMatcher(UPDATE_COMMAND_REGEX, input, flags); if (!matcher.matches()) { - throw new TrackerException("Invalid update command format!"); + throw new TrackerException(ErrorMessage.INVALID_UPDATE_FORMAT); } String itemName = matcher.group(NAME_GROUP).trim().toLowerCase(); String quantityString = matcher.group(QUANTITY_GROUP).replace(QUANTITY_FLAG + BASE_FLAG, "").trim(); String priceString = matcher.group(PRICE_GROUP).replace(PRICE_FLAG + BASE_FLAG, "").trim(); if (itemName.isEmpty() || (quantityString.isEmpty() && priceString.isEmpty())) { - throw new TrackerException("Parameters cannot be left empty!"); + throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } if (!Inventory.contains(itemName)) { - throw new TrackerException(itemName + " does not exist in inventory. Unable to update its values. =("); + throw new TrackerException(itemName + ErrorMessage.ITEM_NOT_IN_LIST); } int quantity = 0; @@ -160,7 +163,7 @@ private static Command parseNewCommand(String input) throws TrackerException { Matcher matcher = getPatternMatcher(NEW_COMMAND_REGEX, input, flags); if (!matcher.matches()) { - throw new TrackerException("Invalid new command format!"); + throw new TrackerException(ErrorMessage.INVALID_NEW_ITEM_FORMAT); } String itemName = matcher.group(NAME_GROUP).trim(); @@ -168,7 +171,7 @@ private static Command parseNewCommand(String input) throws TrackerException { String itemPriceString = matcher.group(PRICE_GROUP).trim(); if (itemName.isEmpty() || itemQuantityString.isEmpty() || itemPriceString.isEmpty()) { - throw new TrackerException("Parameters cannot be empty!"); + throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } // throws NumberFormatException if strings cannot be parsed @@ -183,7 +186,7 @@ private static Command parseListCommand(String input) throws TrackerException { Matcher matcher = getPatternMatcher(LIST_COMMAND_REGEX, input, flags); if (!matcher.matches()) { - throw new TrackerException("Invalid list command format!"); + throw new TrackerException(ErrorMessage.INVALID_LIST_FORMAT); } boolean hasQuantity = !matcher.group(QUANTITY_GROUP).isEmpty(); @@ -200,19 +203,19 @@ private static Command parseListCommand(String input) throws TrackerException { return new ListCommand(hasQuantity, hasPrice, firstParam); } - private static Command parseDeleteCommand(String input) { - if (!input.contains(NAME_FLAG + BASE_FLAG)) { - return new InvalidCommand(); + private static Command parseDeleteCommand(String input) throws TrackerException { + String[] flags = {NAME_FLAG}; + Matcher matcher = getPatternMatcher(DELETE_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_DELETE_FORMAT); } - String[] parseName = input.split(NAME_FLAG + BASE_FLAG, 2); - String itemName = parseName[1]; + String itemName = matcher.group(NAME_GROUP); if (itemName.isEmpty()) { - return new InvalidCommand(); + throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } - //throws ArrayIndexOutOfBoundsException if string is have no n/ - return new DeleteCommand(itemName); + return new DeleteCommand(itemName); } - } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java new file mode 100644 index 0000000000..2e8bf89113 --- /dev/null +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -0,0 +1,11 @@ +package supertracker.ui; + +public class ErrorMessage { + + public static final String INVALID_UPDATE_FORMAT = "Invalid update command format!"; + public static final String EMPTY_PARAM_INPUT = "Parameters cannot be left empty!"; + public static final String INVALID_DELETE_FORMAT = "Invalid delete command format!"; + public static final String INVALID_LIST_FORMAT = "Invalid list command format!"; + public static final String INVALID_NEW_ITEM_FORMAT = "Invalid new command format!"; + public static final String ITEM_NOT_IN_LIST = " does not exist in inventory. Unable to update its values. =("; +} diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 28c77f9f2f..d11e05b7dd 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -1,6 +1,5 @@ package supertracker.ui; -import supertracker.TrackerException; import supertracker.item.Item; public class Ui { @@ -29,7 +28,7 @@ private static String addItemOpening(Item item) { } private static void updateItemOpening(Item item) { - System.out.println(item.getName() + " has been successfully updated!"); + printIndent(item.getName() + " has been successfully updated!"); } private static String deleteItemOpening(String itemName) { @@ -110,8 +109,8 @@ public static void listItem(Item item, int index, boolean hasQuantity, boolean h printIndent(stringToPrint); } - public static void printError(TrackerException e) { + public static void printError(String errorMessage) { printIndent(BASIC_ERROR_MESSAGE); - printIndent(e.getErrorMessage()); + printIndent(errorMessage); } } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index f11348cd7d..d21cbfbb99 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,6 +1,52 @@ -------------------------------------------------------------------------- Hello, welcome to SuperTracker, how may I help you? -------------------------------------------------------------------------- + -------------------------------------------------------------------------- + cake has been added to the inventory! + Quantity: 50 + Price: $15.60 + -------------------------------------------------------------------------- + -------------------------------------------------------------------------- + blueberry has been added to the inventory! + Quantity: 200 + Price: $10.00 + -------------------------------------------------------------------------- + -------------------------------------------------------------------------- + Oh no! An error has occurred in your input + Invalid new command format! + -------------------------------------------------------------------------- + -------------------------------------------------------------------------- + There are 2 unique items in your inventory: + 1. Name: blueberry Price: $10.00 Quantity: 200 + 2. Name: cake Price: $15.60 Quantity: 50 + -------------------------------------------------------------------------- + -------------------------------------------------------------------------- + cake has been successfully updated! + Quantity: 99 + Price: $15.60 + -------------------------------------------------------------------------- + -------------------------------------------------------------------------- + blueberry has been successfully updated! + Quantity: 54 + Price: $18.82 + -------------------------------------------------------------------------- + -------------------------------------------------------------------------- + There are 2 unique items in your inventory: + 1. Name: blueberry Quantity: 54 + 2. Name: cake Quantity: 99 + -------------------------------------------------------------------------- + -------------------------------------------------------------------------- + There are 2 unique items in your inventory: + 1. Name: blueberry Price: $18.82 + 2. Name: cake Price: $15.60 + -------------------------------------------------------------------------- + -------------------------------------------------------------------------- + cake has been deleted! + -------------------------------------------------------------------------- + -------------------------------------------------------------------------- + There is 1 unique item in your inventory: + 1. Name: blueberry + -------------------------------------------------------------------------- -------------------------------------------------------------------------- Goodbye! -------------------------------------------------------------------------- diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index 39eb2097e0..7cf755677d 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +1,11 @@ +new n/cake q/50 p/15.60 +new n/blueberry p/10 q/200 +new n/hello +list p/ q/ +update n/cake q/99 +update n/blueberry p/18.82 q/54 +list q/ +list p/ +delete n/cake +list quit \ No newline at end of file From 0d8267a2a822dd4840be42c61f984f876777c5cd Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 17 Mar 2024 23:12:04 +0800 Subject: [PATCH 038/423] implement JUnit for parseDeleteCommand method --- src/test/java/supertracker/parser/ParserTest.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java index 62ff02d9ad..185fdbd7f5 100644 --- a/src/test/java/supertracker/parser/ParserTest.java +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -8,8 +8,7 @@ import supertracker.item.Inventory; import supertracker.item.Item; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertInstanceOf; +import static org.junit.jupiter.api.Assertions.*; public class ParserTest { @Test @@ -45,6 +44,18 @@ public void parseCommand_validUpdateCommandInput_updateCommand() { assertEquals(96.96, bShake.getPrice()); } + @Test + public void parseCommand_validDeleteCommandInput_newCommand() { + + Command newItem = Parser.parseCommand("new n/strawberry q/12 p/2.2"); + newItem.execute(); + + Command deleteItem = Parser.parseCommand("delete n/strawberry"); + deleteItem.execute(); + + assertFalse(Inventory.contains("strawberry")); + } + @Test public void parseCommand_invalidCommandInput_invalidCommand() { String[] inputs = {"abcdefg", "1239", "newnew n/j q/2 p/123", "elephant"}; From c92739fd59bedb7b5f9f7bc58e7d0725f79d31d2 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 17 Mar 2024 23:32:34 +0800 Subject: [PATCH 039/423] Edit imports for ParserTest --- src/test/java/supertracker/parser/ParserTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java index 331990d7d0..b0274023a8 100644 --- a/src/test/java/supertracker/parser/ParserTest.java +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -9,7 +9,9 @@ import supertracker.item.Inventory; import supertracker.item.Item; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertInstanceOf; public class ParserTest { @Test From 6e19e6771f2029298a96c069433c54bd470faff6 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 18 Mar 2024 17:03:01 +0800 Subject: [PATCH 040/423] Update updateCommand to be able to update values to 0 --- src/main/java/supertracker/command/UpdateCommand.java | 4 ++-- src/main/java/supertracker/parser/Parser.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index d78a4df12f..6dd7748fe3 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -18,10 +18,10 @@ public UpdateCommand(String name, int newQuantity, double newPrice) { @Override public void execute() { Item oldItem = Inventory.get(name); - if (newQuantity == 0) { + if (newQuantity == -1) { newQuantity = oldItem.getQuantity(); } - if (newPrice == 0) { + if (newPrice == -1) { newPrice = oldItem.getPrice(); } Item newItem = new Item(oldItem.getName(), newQuantity, newPrice); diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 6d7c66a88e..77ed0764d4 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -145,8 +145,8 @@ private static Command parseUpdateCommand(String input) throws TrackerException throw new TrackerException(itemName + ErrorMessage.ITEM_NOT_IN_LIST); } - int quantity = 0; - double price = 0; + int quantity = -1; + double price = -1; if (!quantityString.isEmpty()) { quantity = Integer.parseInt(quantityString); From a5c0beedf0dce215148f800ff37499af6755992f Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 18 Mar 2024 17:31:28 +0800 Subject: [PATCH 041/423] Update updateCommand J unit tests includes checking for exception from invalid inputs, empty params and item not in list --- .../command/UpdateCommandTest.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/test/java/supertracker/command/UpdateCommandTest.java b/src/test/java/supertracker/command/UpdateCommandTest.java index 7d88ce868b..64afd2f8bf 100644 --- a/src/test/java/supertracker/command/UpdateCommandTest.java +++ b/src/test/java/supertracker/command/UpdateCommandTest.java @@ -1,12 +1,15 @@ package supertracker.command; import org.junit.jupiter.api.Test; +import supertracker.parser.Parser; +import supertracker.TrackerException; import supertracker.item.Inventory; import supertracker.item.Item; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertThrows; public class UpdateCommandTest { @Test public void updateCommand_validData_correctlyConstructed(){ @@ -29,4 +32,43 @@ public void updateCommand_validData_correctlyConstructed(){ assertEquals(newQuantity, item.getQuantity()); assertEquals(newPrice, item.getPrice()); } + + @Test + public void updateCommand_invalidInput() { + String name = "Milk"; + int quantity = 100; + double price = 5.00; + + Command newCommand = new NewCommand(name, quantity, price); + newCommand.execute(); + + String userInput = "update n/Milk p/-1"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void updateCommand_emptyParamInput() { + String name = "Milk"; + int quantity = 100; + double price = 5.00; + + Command newCommand = new NewCommand(name, quantity, price); + newCommand.execute(); + + String userInput = "update n/Milk p/"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void updateCommand_itemNotInList() { + String name = "Milk"; + int quantity = 100; + double price = 5.00; + + Command newCommand = new NewCommand(name, quantity, price); + newCommand.execute(); + + String userInput = "update n/apple q/20 p/3"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } } From 14824fa1d9e4ee3872c63933b7979eba95239d25 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 18 Mar 2024 17:51:49 +0800 Subject: [PATCH 042/423] Add assertions for updateCommand asserted that the item updated price and quantity is non negative --- src/main/java/supertracker/command/UpdateCommand.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index 6dd7748fe3..44ab515761 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -24,6 +24,8 @@ public void execute() { if (newPrice == -1) { newPrice = oldItem.getPrice(); } + assert newQuantity >= 0; + assert newPrice >= 0; Item newItem = new Item(oldItem.getName(), newQuantity, newPrice); Inventory.put(name, newItem); Ui.updateCommandSuccess(newItem); From b2703ae98f76dd8e697a7cb53d04e29c17265638 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 18 Mar 2024 19:17:57 +0800 Subject: [PATCH 043/423] Add more error checking conditions --- .../supertracker/command/DeleteCommand.java | 5 -- .../supertracker/command/UpdateCommand.java | 9 +-- src/main/java/supertracker/parser/Parser.java | 76 ++++++++++++++----- .../java/supertracker/ui/ErrorMessage.java | 12 ++- 4 files changed, 69 insertions(+), 33 deletions(-) diff --git a/src/main/java/supertracker/command/DeleteCommand.java b/src/main/java/supertracker/command/DeleteCommand.java index d53ab9c5c7..7eaf38c555 100644 --- a/src/main/java/supertracker/command/DeleteCommand.java +++ b/src/main/java/supertracker/command/DeleteCommand.java @@ -16,11 +16,6 @@ public DeleteCommand(String itemName) { @Override public void execute() { - if (!Inventory.contains(itemName)) { - deleteUnsuccessful(); - return; - } - Inventory.delete(itemName); Ui.deleteSuccess(itemName); } diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index 44ab515761..8195ab9f42 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -17,16 +17,9 @@ public UpdateCommand(String name, int newQuantity, double newPrice) { @Override public void execute() { - Item oldItem = Inventory.get(name); - if (newQuantity == -1) { - newQuantity = oldItem.getQuantity(); - } - if (newPrice == -1) { - newPrice = oldItem.getPrice(); - } assert newQuantity >= 0; assert newPrice >= 0; - Item newItem = new Item(oldItem.getName(), newQuantity, newPrice); + Item newItem = new Item(name, newQuantity, newPrice); Inventory.put(name, newItem); Ui.updateCommandSuccess(newItem); } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 77ed0764d4..22e4b756a7 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -135,27 +135,41 @@ private static Command parseUpdateCommand(String input) throws TrackerException throw new TrackerException(ErrorMessage.INVALID_UPDATE_FORMAT); } - String itemName = matcher.group(NAME_GROUP).trim().toLowerCase(); + String name = matcher.group(NAME_GROUP).trim(); String quantityString = matcher.group(QUANTITY_GROUP).replace(QUANTITY_FLAG + BASE_FLAG, "").trim(); String priceString = matcher.group(PRICE_GROUP).replace(PRICE_FLAG + BASE_FLAG, "").trim(); - if (itemName.isEmpty() || (quantityString.isEmpty() && priceString.isEmpty())) { + + if (name.isEmpty() || (quantityString.isEmpty() && priceString.isEmpty())) { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } - if (!Inventory.contains(itemName)) { - throw new TrackerException(itemName + ErrorMessage.ITEM_NOT_IN_LIST); + + if (!Inventory.contains(name)) { + throw new TrackerException(name + ErrorMessage.ITEM_NOT_IN_LIST_UPDATE); } int quantity = -1; double price = -1; - if (!quantityString.isEmpty()) { - quantity = Integer.parseInt(quantityString); + try { + if (!quantityString.isEmpty()) { + quantity = Integer.parseInt(quantityString); + } + if (!priceString.isEmpty()) { + price = roundTo2Dp(Double.parseDouble(priceString)); + } + } catch (NumberFormatException e) { + throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); } - if (!priceString.isEmpty()) { - price = roundTo2Dp(Double.parseDouble(priceString)); + + if (!quantityString.isEmpty() && quantity < 0) { + throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); + } + + if (!priceString.isEmpty() && price < 0) { + throw new TrackerException(ErrorMessage.PRICE_TOO_SMALL); } - return new UpdateCommand(itemName, quantity, price); + return new UpdateCommand(name, quantity, price); } private static Command parseNewCommand(String input) throws TrackerException { @@ -166,19 +180,38 @@ private static Command parseNewCommand(String input) throws TrackerException { throw new TrackerException(ErrorMessage.INVALID_NEW_ITEM_FORMAT); } - String itemName = matcher.group(NAME_GROUP).trim(); - String itemQuantityString = matcher.group(QUANTITY_GROUP).trim(); - String itemPriceString = matcher.group(PRICE_GROUP).trim(); + String name = matcher.group(NAME_GROUP).trim(); + String quantityString = matcher.group(QUANTITY_GROUP).trim(); + String priceString = matcher.group(PRICE_GROUP).trim(); - if (itemName.isEmpty() || itemQuantityString.isEmpty() || itemPriceString.isEmpty()) { + if (name.isEmpty() || quantityString.isEmpty() || priceString.isEmpty()) { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } + if (Inventory.contains(name)) { + throw new TrackerException(name + ErrorMessage.ITEM_IN_LIST_NEW); + } + + int quantity; + double price; + // throws NumberFormatException if strings cannot be parsed - int itemQuantity = Integer.parseInt(itemQuantityString); - double itemPrice = roundTo2Dp(Double.parseDouble(itemPriceString)); + try { + quantity = Integer.parseInt(quantityString); + price = roundTo2Dp(Double.parseDouble(priceString)); + } catch (NumberFormatException e) { + throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); + } + + if (quantity < 0) { + throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); + } - return new NewCommand(itemName, itemQuantity, itemPrice); + if (price < 0) { + throw new TrackerException(ErrorMessage.PRICE_TOO_SMALL); + } + + return new NewCommand(name, quantity, price); } private static Command parseListCommand(String input) throws TrackerException { @@ -211,11 +244,16 @@ private static Command parseDeleteCommand(String input) throws TrackerException throw new TrackerException(ErrorMessage.INVALID_DELETE_FORMAT); } - String itemName = matcher.group(NAME_GROUP); - if (itemName.isEmpty()) { + String name = matcher.group(NAME_GROUP); + + if (name.isEmpty()) { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } - return new DeleteCommand(itemName); + if (!Inventory.contains(name)) { + throw new TrackerException(name + ErrorMessage.ITEM_NOT_IN_LIST_DELETE); + } + + return new DeleteCommand(name); } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 2e8bf89113..a00de451ca 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -7,5 +7,15 @@ public class ErrorMessage { public static final String INVALID_DELETE_FORMAT = "Invalid delete command format!"; public static final String INVALID_LIST_FORMAT = "Invalid list command format!"; public static final String INVALID_NEW_ITEM_FORMAT = "Invalid new command format!"; - public static final String ITEM_NOT_IN_LIST = " does not exist in inventory. Unable to update its values. =("; + public static final String ITEM_NOT_IN_LIST_UPDATE = " does not exist in inventory. Unable to update its values. =("; + + public static final String ITEM_NOT_IN_LIST_DELETE = " does not exist in inventory. Unable to delete something that does not exist. =("; + public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; + + + public static final String INVALID_NUMBER_FORMAT = "Invalid values for price/quantity"; + + public static final String QUANTITY_TOO_SMALL = "Quantity should be more than 0"; + + public static final String PRICE_TOO_SMALL = "Price should be more than 0"; } From 5db17e083628839d6ec443465c9502aa81add4f7 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 18 Mar 2024 19:26:53 +0800 Subject: [PATCH 044/423] Move error message to new line --- src/main/java/supertracker/ui/ErrorMessage.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index a00de451ca..aebbfde3c1 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -7,9 +7,11 @@ public class ErrorMessage { public static final String INVALID_DELETE_FORMAT = "Invalid delete command format!"; public static final String INVALID_LIST_FORMAT = "Invalid list command format!"; public static final String INVALID_NEW_ITEM_FORMAT = "Invalid new command format!"; - public static final String ITEM_NOT_IN_LIST_UPDATE = " does not exist in inventory. Unable to update its values. =("; + public static final String ITEM_NOT_IN_LIST_UPDATE = + " does not exist in inventory. Unable to update its values. =("; - public static final String ITEM_NOT_IN_LIST_DELETE = " does not exist in inventory. Unable to delete something that does not exist. =("; + public static final String ITEM_NOT_IN_LIST_DELETE = + " does not exist in inventory. Unable to delete something that does not exist. =("; public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; From 11d07c4026365eeac094263682aa267d65bbf13d Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 18 Mar 2024 19:30:57 +0800 Subject: [PATCH 045/423] Remove unused import --- src/main/java/supertracker/command/DeleteCommand.java | 3 --- src/main/java/supertracker/ui/Ui.java | 4 ---- 2 files changed, 7 deletions(-) diff --git a/src/main/java/supertracker/command/DeleteCommand.java b/src/main/java/supertracker/command/DeleteCommand.java index 7eaf38c555..79bd798930 100644 --- a/src/main/java/supertracker/command/DeleteCommand.java +++ b/src/main/java/supertracker/command/DeleteCommand.java @@ -3,9 +3,6 @@ import supertracker.item.Inventory; import supertracker.ui.Ui; -import static supertracker.ui.Ui.deleteUnsuccessful; - - public class DeleteCommand implements Command { String itemName; diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index d11e05b7dd..1d70880455 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -73,10 +73,6 @@ public static void deleteSuccess(String itemName) { printIndent(deleteItemOpening(itemName)); } - public static void deleteUnsuccessful() { - printIndent(MISSING_ITEM_MESSAGE); - } - public static void listIntro(int size) { if (size == 0) { printIndent(EMPTY_LIST_MESSAGE); From efc14d3f108a8703d5d4e727d5ac2ac993fd4171 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 18 Mar 2024 19:48:04 +0800 Subject: [PATCH 046/423] Fix assertion error --- src/main/java/supertracker/command/UpdateCommand.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index 8195ab9f42..cf164dd932 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -17,6 +17,13 @@ public UpdateCommand(String name, int newQuantity, double newPrice) { @Override public void execute() { + Item oldItem = Inventory.get(name); + if (newQuantity == -1) { + newQuantity = oldItem.getQuantity(); + } + if (newPrice == -1) { + newPrice = oldItem.getPrice(); + } assert newQuantity >= 0; assert newPrice >= 0; Item newItem = new Item(name, newQuantity, newPrice); From 96ee341ddd97729be86fdff82327122e0dcec59a Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 18 Mar 2024 19:52:59 +0800 Subject: [PATCH 047/423] Update regex --- src/main/java/supertracker/parser/Parser.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 22e4b756a7..58d1664c3d 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -29,11 +29,11 @@ public class Parser { private static final String QUANTITY_GROUP = "quantity"; private static final String PRICE_GROUP = "price"; private static final String NEW_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " - + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">[0-9]*) " - + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">[0-9]*(?:\\.[0-9]*)?) "; + + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) " + + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) "; private static final String UPDATE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " - + "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + "[0-9]*)?) " - + "(?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + "[0-9]*(?:\\.[0-9]*)?)?) "; + + "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + ".*)?) " + + "(?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) "; private static final String LIST_COMMAND_REGEX = "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + ".*)?) (?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) "; private static final String DELETE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) "; From bf109d9cb0c9e265e6fe521506ec0ba81b71e716 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 19 Mar 2024 01:04:40 +0800 Subject: [PATCH 048/423] Implement add and remove commands --- build.gradle | 2 +- .../java/supertracker/command/AddCommand.java | 29 +++++++ .../supertracker/command/DeleteCommand.java | 10 +-- .../supertracker/command/RemoveCommand.java | 31 +++++++ src/main/java/supertracker/parser/Parser.java | 86 ++++++++++++++++++- .../java/supertracker/ui/ErrorMessage.java | 11 +-- src/main/java/supertracker/ui/Ui.java | 36 ++++++-- 7 files changed, 184 insertions(+), 21 deletions(-) create mode 100644 src/main/java/supertracker/command/AddCommand.java create mode 100644 src/main/java/supertracker/command/RemoveCommand.java diff --git a/build.gradle b/build.gradle index 1b44090755..f5bb848daf 100644 --- a/build.gradle +++ b/build.gradle @@ -41,7 +41,7 @@ checkstyle { toolVersion = '10.2' } -run{ +run { standardInput = System.in enableAssertions = true } diff --git a/src/main/java/supertracker/command/AddCommand.java b/src/main/java/supertracker/command/AddCommand.java new file mode 100644 index 0000000000..d89364f9c9 --- /dev/null +++ b/src/main/java/supertracker/command/AddCommand.java @@ -0,0 +1,29 @@ +package supertracker.command; + +import supertracker.item.Inventory; +import supertracker.item.Item; +import supertracker.ui.Ui; + +public class AddCommand implements Command { + private String name; + private int quantity; + + public AddCommand(String name, int quantity) { + this.name = name; + this.quantity = quantity; + } + + @Override + public void execute() { + Item oldItem = Inventory.get(name); + int newQuantity = oldItem.getQuantity() + quantity; + Item newItem = new Item(name, newQuantity, oldItem.getPrice()); + Inventory.put(name, newItem); + Ui.addCommandSuccess(newItem, quantity); + } + + @Override + public boolean isQuit() { + return false; + } +} diff --git a/src/main/java/supertracker/command/DeleteCommand.java b/src/main/java/supertracker/command/DeleteCommand.java index 79bd798930..fe0b44aece 100644 --- a/src/main/java/supertracker/command/DeleteCommand.java +++ b/src/main/java/supertracker/command/DeleteCommand.java @@ -5,16 +5,16 @@ public class DeleteCommand implements Command { - String itemName; + private String name; - public DeleteCommand(String itemName) { - this.itemName = itemName; + public DeleteCommand(String name) { + this.name = name; } @Override public void execute() { - Inventory.delete(itemName); - Ui.deleteSuccess(itemName); + Inventory.delete(name); + Ui.deleteCommandSuccess(name); } @Override diff --git a/src/main/java/supertracker/command/RemoveCommand.java b/src/main/java/supertracker/command/RemoveCommand.java new file mode 100644 index 0000000000..92cf834179 --- /dev/null +++ b/src/main/java/supertracker/command/RemoveCommand.java @@ -0,0 +1,31 @@ +package supertracker.command; + +import supertracker.item.Inventory; +import supertracker.item.Item; +import supertracker.ui.Ui; + +public class RemoveCommand implements Command { + private String name; + private int quantity; + + public RemoveCommand(String name, int quantity) { + this.name = name; + this.quantity = quantity; + } + + @Override + public void execute() { + Item oldItem = Inventory.get(name); + int newQuantity = oldItem.getQuantity() - quantity; + newQuantity = Math.max(newQuantity, 0); + int quantityRemoved = oldItem.getQuantity() - newQuantity; + Item newItem = new Item(name, newQuantity, oldItem.getPrice()); + Inventory.put(name, newItem); + Ui.removeCommandSuccess(newItem, quantityRemoved); + } + + @Override + public boolean isQuit() { + return false; + } +} diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 58d1664c3d..6c58e133c5 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -1,10 +1,12 @@ package supertracker.parser; import supertracker.TrackerException; +import supertracker.command.AddCommand; import supertracker.command.InvalidCommand; import supertracker.command.ListCommand; import supertracker.command.NewCommand; import supertracker.command.QuitCommand; +import supertracker.command.RemoveCommand; import supertracker.command.UpdateCommand; import supertracker.command.DeleteCommand; import supertracker.command.Command; @@ -20,6 +22,8 @@ public class Parser { private static final String LIST_COMMAND = "list"; private static final String UPDATE_COMMAND = "update"; private static final String DELETE_COMMAND = "delete"; + private static final String ADD_COMMAND = "add"; + private static final String REMOVE_COMMAND = "remove"; private static final double ROUNDING_FACTOR = 100.0; private static final String BASE_FLAG = "/"; private static final String NAME_FLAG = "n"; @@ -37,6 +41,10 @@ public class Parser { private static final String LIST_COMMAND_REGEX = "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + ".*)?) (?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) "; private static final String DELETE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) "; + private static final String ADD_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; + private static final String REMOVE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; /** @@ -79,6 +87,12 @@ public static Command parseCommand(String input) throws TrackerException { case DELETE_COMMAND: command = parseDeleteCommand(params); break; + case ADD_COMMAND: + command = parseAddCommand(params); + break; + case REMOVE_COMMAND: + command = parseRemoveCommand(params); + break; default: command = new InvalidCommand(); break; @@ -244,7 +258,7 @@ private static Command parseDeleteCommand(String input) throws TrackerException throw new TrackerException(ErrorMessage.INVALID_DELETE_FORMAT); } - String name = matcher.group(NAME_GROUP); + String name = matcher.group(NAME_GROUP).trim(); if (name.isEmpty()) { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); @@ -256,4 +270,74 @@ private static Command parseDeleteCommand(String input) throws TrackerException return new DeleteCommand(name); } + + private static Command parseAddCommand(String input) throws TrackerException { + String[] flags = {NAME_FLAG, QUANTITY_FLAG}; + Matcher matcher = getPatternMatcher(ADD_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_ADD_FORMAT); + } + + String name = matcher.group(NAME_GROUP).trim(); + String quantityString = matcher.group(QUANTITY_GROUP).replace(QUANTITY_FLAG + BASE_FLAG, "").trim(); + + if (name.isEmpty() || quantityString.isEmpty()) { + throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); + } + + if (!Inventory.contains(name)) { + throw new TrackerException(name + ErrorMessage.ITEM_NOT_IN_LIST_ADD); + } + + int quantity; + + // throws NumberFormatException if strings cannot be parsed + try { + quantity = Integer.parseInt(quantityString); + } catch (NumberFormatException e) { + throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); + } + + if (quantity < 0) { + throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); + } + + return new AddCommand(name,quantity); + } + + private static Command parseRemoveCommand(String input) throws TrackerException { + String[] flags = {NAME_FLAG, QUANTITY_FLAG}; + Matcher matcher = getPatternMatcher(REMOVE_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_REMOVE_FORMAT); + } + + String name = matcher.group(NAME_GROUP).trim(); + String quantityString = matcher.group(QUANTITY_GROUP).replace(QUANTITY_FLAG + BASE_FLAG, "").trim(); + + if (name.isEmpty() || quantityString.isEmpty()) { + throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); + } + + if (!Inventory.contains(name)) { + throw new TrackerException(name + ErrorMessage.ITEM_NOT_IN_LIST_REMOVE); + } + + int quantity; + + // throws NumberFormatException if strings cannot be parsed + try { + quantity = Integer.parseInt(quantityString); + } catch (NumberFormatException e) { + throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); + } + + if (quantity < 0) { + throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); + } + + return new RemoveCommand(name, quantity); + } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index aebbfde3c1..e51c2f0110 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -7,17 +7,18 @@ public class ErrorMessage { public static final String INVALID_DELETE_FORMAT = "Invalid delete command format!"; public static final String INVALID_LIST_FORMAT = "Invalid list command format!"; public static final String INVALID_NEW_ITEM_FORMAT = "Invalid new command format!"; + public static final String INVALID_ADD_FORMAT = "Invalid add command format!"; + public static final String INVALID_REMOVE_FORMAT = "Invalid remove command format!"; public static final String ITEM_NOT_IN_LIST_UPDATE = " does not exist in inventory. Unable to update its values. =("; - public static final String ITEM_NOT_IN_LIST_DELETE = " does not exist in inventory. Unable to delete something that does not exist. =("; + public static final String ITEM_NOT_IN_LIST_ADD= + " does not exist in inventory. Unable to increase its quantity. =("; + public static final String ITEM_NOT_IN_LIST_REMOVE= + " does not exist in inventory. Unable to decrease its quantity. =("; public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; - - public static final String INVALID_NUMBER_FORMAT = "Invalid values for price/quantity"; - public static final String QUANTITY_TOO_SMALL = "Quantity should be more than 0"; - public static final String PRICE_TOO_SMALL = "Price should be more than 0"; } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 1d70880455..e26721d328 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -23,16 +23,24 @@ private static String quantityMessage(Item item) { return "Quantity: " + item.getQuantity(); } - private static String addItemOpening(Item item) { + private static String newItemOpening(Item item) { return item.getName() + " has been added to the inventory!"; } - private static void updateItemOpening(Item item) { - printIndent(item.getName() + " has been successfully updated!"); + private static String updateItemOpening(Item item) { + return item.getName() + " has been successfully updated!"; } - private static String deleteItemOpening(String itemName) { - return itemName + " has been deleted!"; + private static String deleteItemOpening(String name) { + return name + " has been deleted!"; + } + + private static String addItemOpening(Item item, int quantityAdded) { + return quantityAdded + " " + item.getName() + " added to inventory!"; + } + + private static String removeItemOpening(Item item, int quantityRemoved) { + return quantityRemoved + " " + item.getName() + " removed from inventory!"; } public static void printIndent(String string) { @@ -58,19 +66,29 @@ public static void printInvalidCommand() { } public static void newCommandSuccess(Item item) { - printIndent(addItemOpening(item)); + printIndent(newItemOpening(item)); printIndent(quantityMessage(item)); printIndent(priceMessage(item)); } public static void updateCommandSuccess(Item item) { - updateItemOpening(item); + printIndent(updateItemOpening(item)); printIndent(quantityMessage(item)); printIndent(priceMessage(item)); } - public static void deleteSuccess(String itemName) { - printIndent(deleteItemOpening(itemName)); + public static void deleteCommandSuccess(String name) { + printIndent(deleteItemOpening(name)); + } + + public static void addCommandSuccess(Item item, int quantityAdded) { + printIndent(addItemOpening(item, quantityAdded)); + printIndent(quantityMessage(item)); + } + + public static void removeCommandSuccess(Item item, int quantityRemoved) { + printIndent(removeItemOpening(item, quantityRemoved)); + printIndent(quantityMessage(item)); } public static void listIntro(int size) { From b34a5cc003cdcde0564a754ad2560a063f050fcc Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 19 Mar 2024 04:03:16 +0800 Subject: [PATCH 049/423] Add JUnit tests for commands --- .../java/supertracker/item/Inventory.java | 4 + .../supertracker/command/AddCommandTest.java | 63 ++++++++++++++ .../command/DeleteCommandTest.java | 53 ++++++++++++ .../supertracker/command/NewCommandTest.java | 63 +++++++++++++- .../command/RemoveCommandTest.java | 84 +++++++++++++++++++ .../command/UpdateCommandTest.java | 10 ++- 6 files changed, 271 insertions(+), 6 deletions(-) create mode 100644 src/test/java/supertracker/command/AddCommandTest.java create mode 100644 src/test/java/supertracker/command/DeleteCommandTest.java create mode 100644 src/test/java/supertracker/command/RemoveCommandTest.java diff --git a/src/main/java/supertracker/item/Inventory.java b/src/main/java/supertracker/item/Inventory.java index 7549804d39..cd0ac92aaf 100644 --- a/src/main/java/supertracker/item/Inventory.java +++ b/src/main/java/supertracker/item/Inventory.java @@ -22,6 +22,10 @@ public static void delete(String name) { itemMap.remove(name.toLowerCase()); } + public static void clear() { + itemMap.clear(); + } + public static Collection items() { return itemMap.values(); } diff --git a/src/test/java/supertracker/command/AddCommandTest.java b/src/test/java/supertracker/command/AddCommandTest.java new file mode 100644 index 0000000000..d8d3ed4918 --- /dev/null +++ b/src/test/java/supertracker/command/AddCommandTest.java @@ -0,0 +1,63 @@ +package supertracker.command; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import supertracker.TrackerException; +import supertracker.item.Inventory; +import supertracker.item.Item; +import supertracker.parser.Parser; + +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class AddCommandTest { + @BeforeEach + public void setUp() { + Inventory.clear(); + } + + @Test + public void addCommand_validData_correctlyConstructed(){ + String name = "Milk"; + int quantity = 100; + double price = 5.00; + + int quantityToAdd = 50; + int newQuantity = quantity + quantityToAdd; + + Command newCommand = new NewCommand(name, quantity, price); + newCommand.execute(); + Command addCommand = new AddCommand(name, quantityToAdd); + addCommand.execute(); + + assertTrue(Inventory.contains(name)); + Item item = Inventory.get(name); + assertNotNull(item); + assertEquals(name, item.getName()); + assertEquals(newQuantity, item.getQuantity()); + } + + @Test + public void addCommand_missingParamInput() { + String userInput = "add n/Milk"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void addCommand_emptyParamInput() { + String userInput = "add n/Milk q/"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void addCommand_itemNotInList() { + String userInput = "add n/Milk q/100"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void newCommand_quantityLessThanZero() { + String userInput = "new n/Milk q/-100"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } +} diff --git a/src/test/java/supertracker/command/DeleteCommandTest.java b/src/test/java/supertracker/command/DeleteCommandTest.java new file mode 100644 index 0000000000..003b55a3dc --- /dev/null +++ b/src/test/java/supertracker/command/DeleteCommandTest.java @@ -0,0 +1,53 @@ +package supertracker.command; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import supertracker.TrackerException; +import supertracker.item.Inventory; +import supertracker.item.Item; +import supertracker.parser.Parser; + +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class DeleteCommandTest { + private static final String NAME = "Milk"; + @BeforeEach + public void setUp() { + Inventory.clear(); + + int quantity = 100; + double price = 5.00; + + Command newCommand = new NewCommand(NAME, quantity, price); + newCommand.execute(); + } + + @Test + public void deleteCommand_validData_correctlyConstructed() { + Command deleteCommand = new DeleteCommand(NAME); + deleteCommand.execute(); + + assertFalse(Inventory.contains(NAME)); + Item item = Inventory.get(NAME); + assertNull(item); + } + + @Test + public void deleteCommand_missingParamInput() { + String userInput = "delete"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void addCommand_emptyParamInput() { + String userInput = "delete n/"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void addCommand_itemNotInList() { + String userInput = "delete n/cake"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } +} diff --git a/src/test/java/supertracker/command/NewCommandTest.java b/src/test/java/supertracker/command/NewCommandTest.java index e5c83cde77..d2bec5fcb9 100644 --- a/src/test/java/supertracker/command/NewCommandTest.java +++ b/src/test/java/supertracker/command/NewCommandTest.java @@ -1,21 +1,28 @@ package supertracker.command; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import supertracker.TrackerException; import supertracker.item.Inventory; import supertracker.item.Item; +import supertracker.parser.Parser; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertThrows; public class NewCommandTest { + @BeforeEach + public void setUp() { + Inventory.clear(); + } + @Test public void newCommand_validData_correctlyConstructed() { String name = "Milk"; int quantity = 100; double price = 5.00; - Command command = new NewCommand("Milk", 100, 5.00); + Command command = new NewCommand(name, quantity, price); command.execute(); assertTrue(Inventory.contains(name)); @@ -25,4 +32,52 @@ public void newCommand_validData_correctlyConstructed() { assertEquals(quantity, item.getQuantity()); assertEquals(price, item.getPrice()); } + + @Test + public void newCommand_missingParamInput() { + String userInput = "new n/Milk"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void newCommand_emptyParamInput() { + String userInput = "new n/Milk q/100 p/"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void newCommand_itemAlreadyInList() { + String name = "Milk"; + int quantity = 100; + double price = 5.00; + + Command newCommand = new NewCommand(name, quantity, price); + newCommand.execute(); + + String userInput = "new n/milk q/100 p/5.00"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void newCommand_quantityOrPriceLessThanZero() { + String invalidQuantityInput = "new n/milk q/-100 p/5.00"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(invalidQuantityInput)); + + String invalidPriceInput = "new n/milk q/100 p/-5.00"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(invalidPriceInput)); + } + + @Test + public void newCommand_priceRoundedTo2Dp() throws TrackerException { + String name = "Milk"; + + String userInput = "new n/" + name + " q/100 p/5.555"; + Command command = Parser.parseCommand(userInput); + command.execute(); + + assertTrue(Inventory.contains(name)); + Item item = Inventory.get(name); + assertNotNull(item); + assertEquals(5.56, item.getPrice()); + } } diff --git a/src/test/java/supertracker/command/RemoveCommandTest.java b/src/test/java/supertracker/command/RemoveCommandTest.java new file mode 100644 index 0000000000..2174797bfe --- /dev/null +++ b/src/test/java/supertracker/command/RemoveCommandTest.java @@ -0,0 +1,84 @@ +package supertracker.command; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import supertracker.TrackerException; +import supertracker.item.Inventory; +import supertracker.item.Item; +import supertracker.parser.Parser; + +import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class RemoveCommandTest { + @BeforeEach + public void setUp() { + Inventory.clear(); + } + + @Test + public void removeCommand_validData_correctlyConstructed(){ + String name = "Milk"; + int quantity = 100; + double price = 5.00; + + int quantityToRemove = 50; + int newQuantity = quantity - quantityToRemove; + + Command newCommand = new NewCommand(name, quantity, price); + newCommand.execute(); + Command removeCommand = new RemoveCommand(name, quantityToRemove); + removeCommand.execute(); + + assertTrue(Inventory.contains(name)); + Item item = Inventory.get(name); + assertNotNull(item); + assertEquals(name, item.getName()); + assertEquals(newQuantity, item.getQuantity()); + } + + @Test + public void removeCommand_missingParamInput() { + String userInput = "remove n/Milk"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void removeCommand_emptyParamInput() { + String userInput = "remove n/Milk q/"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void removeCommand_itemNotInList() { + String userInput = "remove n/Milk q/50"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void removeCommand_quantityLessThanZero() { + String userInput = "new n/Milk q/-50"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void removeCommand_exceedCurrentQuantity() { + String name = "Milk"; + int quantity = 50; + double price = 5.00; + + int quantityToRemove = 100; + int newQuantity = 0; + + Command newCommand = new NewCommand(name, quantity, price); + newCommand.execute(); + Command removeCommand = new RemoveCommand(name, quantityToRemove); + removeCommand.execute(); + + assertTrue(Inventory.contains(name)); + Item item = Inventory.get(name); + assertNotNull(item); + assertEquals(name, item.getName()); + assertEquals(newQuantity, item.getQuantity()); + } +} diff --git a/src/test/java/supertracker/command/UpdateCommandTest.java b/src/test/java/supertracker/command/UpdateCommandTest.java index 64afd2f8bf..5468541f32 100644 --- a/src/test/java/supertracker/command/UpdateCommandTest.java +++ b/src/test/java/supertracker/command/UpdateCommandTest.java @@ -1,5 +1,6 @@ package supertracker.command; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import supertracker.parser.Parser; import supertracker.TrackerException; @@ -11,6 +12,11 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertThrows; public class UpdateCommandTest { + @BeforeEach + public void setUp() { + Inventory.clear(); + } + @Test public void updateCommand_validData_correctlyConstructed(){ String name = "Milk"; @@ -20,9 +26,9 @@ public void updateCommand_validData_correctlyConstructed(){ int newQuantity = 200; double newPrice = 3.00; - Command newCommand = new NewCommand("Milk", quantity, price); + Command newCommand = new NewCommand(name, quantity, price); newCommand.execute(); - Command updateCommand = new UpdateCommand("Milk", 200, 3.00); + Command updateCommand = new UpdateCommand(name, newQuantity, newPrice); updateCommand.execute(); assertTrue(Inventory.contains(name)); From 7055ee900a0d36fc2cc0c88f72ca311328aec761 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 19 Mar 2024 04:26:13 +0800 Subject: [PATCH 050/423] Add assertions for commands --- src/main/java/supertracker/command/AddCommand.java | 3 +++ src/main/java/supertracker/command/DeleteCommand.java | 2 ++ src/main/java/supertracker/command/NewCommand.java | 4 ++++ src/main/java/supertracker/command/RemoveCommand.java | 3 +++ src/main/java/supertracker/command/UpdateCommand.java | 4 ++++ 5 files changed, 16 insertions(+) diff --git a/src/main/java/supertracker/command/AddCommand.java b/src/main/java/supertracker/command/AddCommand.java index d89364f9c9..2d5346e4a1 100644 --- a/src/main/java/supertracker/command/AddCommand.java +++ b/src/main/java/supertracker/command/AddCommand.java @@ -15,6 +15,9 @@ public AddCommand(String name, int quantity) { @Override public void execute() { + assert Inventory.contains(name); + assert quantity >= 0; + Item oldItem = Inventory.get(name); int newQuantity = oldItem.getQuantity() + quantity; Item newItem = new Item(name, newQuantity, oldItem.getPrice()); diff --git a/src/main/java/supertracker/command/DeleteCommand.java b/src/main/java/supertracker/command/DeleteCommand.java index fe0b44aece..706397d639 100644 --- a/src/main/java/supertracker/command/DeleteCommand.java +++ b/src/main/java/supertracker/command/DeleteCommand.java @@ -13,6 +13,8 @@ public DeleteCommand(String name) { @Override public void execute() { + assert Inventory.contains(name); + Inventory.delete(name); Ui.deleteCommandSuccess(name); } diff --git a/src/main/java/supertracker/command/NewCommand.java b/src/main/java/supertracker/command/NewCommand.java index 1bf73f14c2..c791571b2b 100644 --- a/src/main/java/supertracker/command/NewCommand.java +++ b/src/main/java/supertracker/command/NewCommand.java @@ -17,6 +17,10 @@ public NewCommand(String name, int quantity, double price) { @Override public void execute() { + assert !Inventory.contains(name); + assert quantity >= 0; + assert price >= 0; + Item item = new Item(name, quantity, price); Inventory.put(name, item); Ui.newCommandSuccess(item); diff --git a/src/main/java/supertracker/command/RemoveCommand.java b/src/main/java/supertracker/command/RemoveCommand.java index 92cf834179..7d2e7faf94 100644 --- a/src/main/java/supertracker/command/RemoveCommand.java +++ b/src/main/java/supertracker/command/RemoveCommand.java @@ -15,6 +15,9 @@ public RemoveCommand(String name, int quantity) { @Override public void execute() { + assert Inventory.contains(name); + assert quantity >= 0; + Item oldItem = Inventory.get(name); int newQuantity = oldItem.getQuantity() - quantity; newQuantity = Math.max(newQuantity, 0); diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index cf164dd932..4b76db0375 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -17,6 +17,8 @@ public UpdateCommand(String name, int newQuantity, double newPrice) { @Override public void execute() { + assert Inventory.contains(name); + Item oldItem = Inventory.get(name); if (newQuantity == -1) { newQuantity = oldItem.getQuantity(); @@ -24,8 +26,10 @@ public void execute() { if (newPrice == -1) { newPrice = oldItem.getPrice(); } + assert newQuantity >= 0; assert newPrice >= 0; + Item newItem = new Item(name, newQuantity, newPrice); Inventory.put(name, newItem); Ui.updateCommandSuccess(newItem); From d5b14b5195f1e29efa261b3686c4fa01e90fcec0 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 19 Mar 2024 05:46:56 +0800 Subject: [PATCH 051/423] Setup logger --- .gitignore | 4 ++++ src/main/java/supertracker/SuperTracker.java | 23 +++++++++++++++++++ .../java/supertracker/ui/ErrorMessage.java | 1 + 3 files changed, 28 insertions(+) diff --git a/.gitignore b/.gitignore index 2873e189e1..f8a2599ae0 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,7 @@ bin/ /text-ui-test/ACTUAL.TXT text-ui-test/EXPECTED-UNIX.TXT + +# Log files +supertracker.log +supertracker.log.lck \ No newline at end of file diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index 953acdfbdc..c475cc9063 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -4,11 +4,18 @@ import supertracker.command.InvalidCommand; import supertracker.command.QuitCommand; import supertracker.parser.Parser; +import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; import java.util.Scanner; +import java.util.logging.*; public class SuperTracker { + private static final Logger logger = Logger.getLogger(SuperTracker.class.getName()); + private static final String START_MESSAGE = "Starting SuperTracker application"; + private static final String EXIT_MESSAGE = "Exiting SuperTracker application"; + private static final String LOG_FILE_LOCATION = "supertracker.log"; + /** * Main entry-point for the java.supertracker.SuperTracker application. */ @@ -20,8 +27,13 @@ public static void main(String[] args) { * Runs the java.supertracker.SuperTracker application. */ private static void run() { + setupLogger(); + logger.info(START_MESSAGE); + Ui.greetUser(); handleCommands(); + + logger.info(EXIT_MESSAGE); } private static void handleCommands() { @@ -43,4 +55,15 @@ private static void handleCommands() { assert command instanceof QuitCommand; in.close(); } + + private static void setupLogger() { + try { + FileHandler fileHandler = new FileHandler(LOG_FILE_LOCATION); + fileHandler.setLevel(Level.INFO); // Set desired log level + logger.setUseParentHandlers(false); // Disable console output for simplicity + logger.addHandler(fileHandler); + } catch (Exception e) { + logger.log(Level.SEVERE, ErrorMessage.FILE_HANDLER_ERROR, e); + } + } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index e51c2f0110..8d82f52be9 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -21,4 +21,5 @@ public class ErrorMessage { public static final String INVALID_NUMBER_FORMAT = "Invalid values for price/quantity"; public static final String QUANTITY_TOO_SMALL = "Quantity should be more than 0"; public static final String PRICE_TOO_SMALL = "Price should be more than 0"; + public static final String FILE_HANDLER_ERROR = "Error setting up file handler"; } From 540a933b23d197f82681c3a8091b5c96cd226924 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 19 Mar 2024 05:55:55 +0800 Subject: [PATCH 052/423] Remove * imports --- src/main/java/supertracker/SuperTracker.java | 5 ++++- src/test/java/supertracker/command/AddCommandTest.java | 4 +++- src/test/java/supertracker/command/DeleteCommandTest.java | 3 ++- src/test/java/supertracker/command/RemoveCommandTest.java | 4 +++- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index c475cc9063..997660522c 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -8,7 +8,10 @@ import supertracker.ui.Ui; import java.util.Scanner; -import java.util.logging.*; + +import java.util.logging.FileHandler; +import java.util.logging.Level; +import java.util.logging.Logger; public class SuperTracker { private static final Logger logger = Logger.getLogger(SuperTracker.class.getName()); diff --git a/src/test/java/supertracker/command/AddCommandTest.java b/src/test/java/supertracker/command/AddCommandTest.java index d8d3ed4918..45aaca45b7 100644 --- a/src/test/java/supertracker/command/AddCommandTest.java +++ b/src/test/java/supertracker/command/AddCommandTest.java @@ -7,8 +7,10 @@ import supertracker.item.Item; import supertracker.parser.Parser; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; public class AddCommandTest { @BeforeEach diff --git a/src/test/java/supertracker/command/DeleteCommandTest.java b/src/test/java/supertracker/command/DeleteCommandTest.java index 003b55a3dc..6ee62936bc 100644 --- a/src/test/java/supertracker/command/DeleteCommandTest.java +++ b/src/test/java/supertracker/command/DeleteCommandTest.java @@ -7,7 +7,8 @@ import supertracker.item.Item; import supertracker.parser.Parser; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; public class DeleteCommandTest { diff --git a/src/test/java/supertracker/command/RemoveCommandTest.java b/src/test/java/supertracker/command/RemoveCommandTest.java index 2174797bfe..82dc388e70 100644 --- a/src/test/java/supertracker/command/RemoveCommandTest.java +++ b/src/test/java/supertracker/command/RemoveCommandTest.java @@ -7,8 +7,10 @@ import supertracker.item.Item; import supertracker.parser.Parser; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; public class RemoveCommandTest { @BeforeEach From 343fe420cc0230592a872c8893ad1900de41a051 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 19 Mar 2024 05:58:55 +0800 Subject: [PATCH 053/423] Remove * import for NewCommandTest --- src/test/java/supertracker/command/NewCommandTest.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/java/supertracker/command/NewCommandTest.java b/src/test/java/supertracker/command/NewCommandTest.java index d2bec5fcb9..4eb05a72a1 100644 --- a/src/test/java/supertracker/command/NewCommandTest.java +++ b/src/test/java/supertracker/command/NewCommandTest.java @@ -7,8 +7,10 @@ import supertracker.item.Item; import supertracker.parser.Parser; -import static org.junit.jupiter.api.Assertions.*; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; public class NewCommandTest { @BeforeEach From d999ac476fca127b5af9b13b9d55c5c5a2b07699 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Tue, 19 Mar 2024 17:53:26 +0800 Subject: [PATCH 054/423] assert in UI and exception --- src/main/java/supertracker/TrackerException.java | 1 + src/main/java/supertracker/ui/Ui.java | 2 ++ 2 files changed, 3 insertions(+) diff --git a/src/main/java/supertracker/TrackerException.java b/src/main/java/supertracker/TrackerException.java index 307ae84830..65e2cda475 100644 --- a/src/main/java/supertracker/TrackerException.java +++ b/src/main/java/supertracker/TrackerException.java @@ -4,6 +4,7 @@ public class TrackerException extends Exception { protected String errorMessage; public TrackerException(String errorMessage) { + assert !errorMessage.isEmpty(); this.errorMessage = errorMessage; } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index e26721d328..333a1b6431 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -1,5 +1,6 @@ package supertracker.ui; +import supertracker.item.Inventory; import supertracker.item.Item; public class Ui { @@ -92,6 +93,7 @@ public static void removeCommandSuccess(Item item, int quantityRemoved) { } public static void listIntro(int size) { + assert size >= 0; if (size == 0) { printIndent(EMPTY_LIST_MESSAGE); return; From e455e0b5d235a1e5106240287bb1ded8779be96f Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Tue, 19 Mar 2024 17:53:39 +0800 Subject: [PATCH 055/423] no message --- src/main/java/supertracker/ui/Ui.java | 2 ++ src/test/java/supertracker/ui/UiTest.java | 23 ----------------------- 2 files changed, 2 insertions(+), 23 deletions(-) delete mode 100644 src/test/java/supertracker/ui/UiTest.java diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index e26721d328..07b2bb95a2 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -82,11 +82,13 @@ public static void deleteCommandSuccess(String name) { } public static void addCommandSuccess(Item item, int quantityAdded) { + assert quantityAdded >= 0; printIndent(addItemOpening(item, quantityAdded)); printIndent(quantityMessage(item)); } public static void removeCommandSuccess(Item item, int quantityRemoved) { + assert quantityRemoved >= 0; printIndent(removeItemOpening(item, quantityRemoved)); printIndent(quantityMessage(item)); } diff --git a/src/test/java/supertracker/ui/UiTest.java b/src/test/java/supertracker/ui/UiTest.java deleted file mode 100644 index 0e23853411..0000000000 --- a/src/test/java/supertracker/ui/UiTest.java +++ /dev/null @@ -1,23 +0,0 @@ -package supertracker.ui; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Test; - -import java.io.ByteArrayOutputStream; -import java.io.PrintStream; - -public class UiTest { - private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); - @Test - public void printIndent_string_expectStringWithIndentation() { - PrintStream originalOut = System.out; - System.setOut(new PrintStream(outContent)); - - Ui.printIndent("test"); - System.setOut(new PrintStream(originalOut)); - String expected = " test\n"; - String actualString = outContent.toString(); - assertEquals(expected, actualString); - } -} - From d42af6165878117ce4386fb3012bf0b998fd5c52 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Tue, 19 Mar 2024 18:02:51 +0800 Subject: [PATCH 056/423] remove import --- src/main/java/supertracker/ui/Ui.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index f440cfa0d7..f35c3737d9 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -1,6 +1,5 @@ package supertracker.ui; -import supertracker.item.Inventory; import supertracker.item.Item; public class Ui { From 19ededd88915cdb10c427b1d7878ecfadc5c9e9e Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Tue, 19 Mar 2024 19:52:06 +0800 Subject: [PATCH 057/423] add JUnit to ParserTest --- src/test/java/supertracker/parser/ParserTest.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java index b0274023a8..3fca4adb29 100644 --- a/src/test/java/supertracker/parser/ParserTest.java +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -2,10 +2,7 @@ import org.junit.jupiter.api.Test; import supertracker.TrackerException; -import supertracker.command.Command; -import supertracker.command.InvalidCommand; -import supertracker.command.NewCommand; -import supertracker.command.UpdateCommand; +import supertracker.command.*; import supertracker.item.Inventory; import supertracker.item.Item; @@ -48,7 +45,7 @@ public void parseCommand_validUpdateCommandInput_updateCommand() throws TrackerE } @Test - public void parseCommand_validDeleteCommandInput_newCommand() throws TrackerException { + public void parseCommand_validDeleteCommandInput_deleteCommand() throws TrackerException { Command newItem = Parser.parseCommand("new n/strawberry q/12 p/2.2"); newItem.execute(); @@ -69,4 +66,12 @@ public void parseCommand_invalidCommandInput_invalidCommand() throws TrackerExce assertInstanceOf(InvalidCommand.class, resultCommand); } } + @Test + public void parseCommand_validQuitCommandInput_quitCommand() throws TrackerException { + + String input = "quit"; + Command resultCommand = Parser.parseCommand(input); + + assertInstanceOf(QuitCommand.class, resultCommand); + } } From 0607d32dc94af7905784aa90c72b710215cc05f8 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Tue, 19 Mar 2024 19:56:32 +0800 Subject: [PATCH 058/423] Remove .* import --- src/test/java/supertracker/parser/ParserTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java index 3fca4adb29..3850dc31cc 100644 --- a/src/test/java/supertracker/parser/ParserTest.java +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -2,7 +2,11 @@ import org.junit.jupiter.api.Test; import supertracker.TrackerException; -import supertracker.command.*; +import supertracker.command.Command; +import supertracker.command.InvalidCommand; +import supertracker.command.NewCommand; +import supertracker.command.UpdateCommand; +import supertracker.command.QuitCommand; import supertracker.item.Inventory; import supertracker.item.Item; From d8948c8df3a6b5c66b66430e2bb6ce1286781017 Mon Sep 17 00:00:00 2001 From: rismm Date: Wed, 20 Mar 2024 16:22:23 +0800 Subject: [PATCH 059/423] Refactor code Remove unused code and unneccessary operations Add logging support for thrown exceptions and successful commands --- src/main/java/supertracker/SuperTracker.java | 4 +++- src/main/java/supertracker/TrackerException.java | 3 +++ src/main/java/supertracker/parser/Parser.java | 4 ++-- src/main/java/supertracker/ui/Ui.java | 1 - src/test/java/supertracker/parser/ParserTest.java | 1 + 5 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index 997660522c..a7e9e5b53f 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -14,10 +14,11 @@ import java.util.logging.Logger; public class SuperTracker { - private static final Logger logger = Logger.getLogger(SuperTracker.class.getName()); + public static final Logger logger = Logger.getLogger(SuperTracker.class.getName()); private static final String START_MESSAGE = "Starting SuperTracker application"; private static final String EXIT_MESSAGE = "Exiting SuperTracker application"; private static final String LOG_FILE_LOCATION = "supertracker.log"; + public static final String COMMAND_LOG = "Command passed successfully:"; /** * Main entry-point for the java.supertracker.SuperTracker application. @@ -48,6 +49,7 @@ private static void handleCommands() { try { command = Parser.parseCommand(input.trim()); command.execute(); + logger.log(Level.INFO, COMMAND_LOG,command); } catch (TrackerException e) { Ui.printError(e.getErrorMessage()); command = new InvalidCommand(); diff --git a/src/main/java/supertracker/TrackerException.java b/src/main/java/supertracker/TrackerException.java index 65e2cda475..31e2251476 100644 --- a/src/main/java/supertracker/TrackerException.java +++ b/src/main/java/supertracker/TrackerException.java @@ -1,11 +1,14 @@ package supertracker; +import java.util.logging.Level; + public class TrackerException extends Exception { protected String errorMessage; public TrackerException(String errorMessage) { assert !errorMessage.isEmpty(); this.errorMessage = errorMessage; + SuperTracker.logger.log(Level.INFO, "Error while passing input: " + errorMessage, this); } public String getErrorMessage() { diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 6c58e133c5..9cdeda7f39 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -280,7 +280,7 @@ private static Command parseAddCommand(String input) throws TrackerException { } String name = matcher.group(NAME_GROUP).trim(); - String quantityString = matcher.group(QUANTITY_GROUP).replace(QUANTITY_FLAG + BASE_FLAG, "").trim(); + String quantityString = matcher.group(QUANTITY_GROUP).trim(); if (name.isEmpty() || quantityString.isEmpty()) { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); @@ -315,7 +315,7 @@ private static Command parseRemoveCommand(String input) throws TrackerException } String name = matcher.group(NAME_GROUP).trim(); - String quantityString = matcher.group(QUANTITY_GROUP).replace(QUANTITY_FLAG + BASE_FLAG, "").trim(); + String quantityString = matcher.group(QUANTITY_GROUP).trim(); if (name.isEmpty() || quantityString.isEmpty()) { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index f35c3737d9..4e129562a5 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -7,7 +7,6 @@ public class Ui { private static final String EMPTY_LIST_MESSAGE = "Nothing to list! No items in inventory!"; private static final String SINGLE_ITEM_LIST_MESSAGE= "There is 1 unique item in your inventory:"; private static final String INVALID_COMMAND_MESSAGE = "Sorry! Invalid command!"; - private static final String MISSING_ITEM_MESSAGE = "Sorry! I could not delete that item!"; private static final String WELCOME_MESSAGE = "Hello, welcome to SuperTracker, how may I help you?"; private static final String FAREWELL_MESSAGE = "Goodbye!"; private static final String BASIC_ERROR_MESSAGE = "Oh no! An error has occurred in your input"; diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java index 3850dc31cc..cc1fc9b081 100644 --- a/src/test/java/supertracker/parser/ParserTest.java +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -70,6 +70,7 @@ public void parseCommand_invalidCommandInput_invalidCommand() throws TrackerExce assertInstanceOf(InvalidCommand.class, resultCommand); } } + @Test public void parseCommand_validQuitCommandInput_quitCommand() throws TrackerException { From b1cc8b97ddbec64e5b03c00bd9201a2169608003 Mon Sep 17 00:00:00 2001 From: rismm Date: Wed, 20 Mar 2024 16:27:32 +0800 Subject: [PATCH 060/423] Fix checkstyle --- src/main/java/supertracker/SuperTracker.java | 6 ++++-- src/main/java/supertracker/TrackerException.java | 3 --- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index a7e9e5b53f..f3338d7069 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -14,11 +14,12 @@ import java.util.logging.Logger; public class SuperTracker { - public static final Logger logger = Logger.getLogger(SuperTracker.class.getName()); + private static final Logger logger = Logger.getLogger(SuperTracker.class.getName()); private static final String START_MESSAGE = "Starting SuperTracker application"; private static final String EXIT_MESSAGE = "Exiting SuperTracker application"; private static final String LOG_FILE_LOCATION = "supertracker.log"; - public static final String COMMAND_LOG = "Command passed successfully:"; + private static final String COMMAND_LOG = "Command passed successfully:"; + private static final String UNSUCCESSFUL_COMMAND_LOG = "Error while passing input: "; /** * Main entry-point for the java.supertracker.SuperTracker application. @@ -52,6 +53,7 @@ private static void handleCommands() { logger.log(Level.INFO, COMMAND_LOG,command); } catch (TrackerException e) { Ui.printError(e.getErrorMessage()); + logger.log(Level.INFO, UNSUCCESSFUL_COMMAND_LOG + e.getErrorMessage(), e); command = new InvalidCommand(); } Ui.printLine(); diff --git a/src/main/java/supertracker/TrackerException.java b/src/main/java/supertracker/TrackerException.java index 31e2251476..65e2cda475 100644 --- a/src/main/java/supertracker/TrackerException.java +++ b/src/main/java/supertracker/TrackerException.java @@ -1,14 +1,11 @@ package supertracker; -import java.util.logging.Level; - public class TrackerException extends Exception { protected String errorMessage; public TrackerException(String errorMessage) { assert !errorMessage.isEmpty(); this.errorMessage = errorMessage; - SuperTracker.logger.log(Level.INFO, "Error while passing input: " + errorMessage, this); } public String getErrorMessage() { From b1833e4cc6c9e057d2c35e980bcfd5665229c0de Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Fri, 22 Mar 2024 00:06:22 +0800 Subject: [PATCH 061/423] Add Find command --- .../supertracker/command/FindCommand.java | 33 +++++++++++++++++ src/main/java/supertracker/parser/Parser.java | 36 ++++++++++++++----- .../java/supertracker/ui/ErrorMessage.java | 4 +++ src/main/java/supertracker/ui/Ui.java | 14 ++++++++ 4 files changed, 78 insertions(+), 9 deletions(-) create mode 100644 src/main/java/supertracker/command/FindCommand.java diff --git a/src/main/java/supertracker/command/FindCommand.java b/src/main/java/supertracker/command/FindCommand.java new file mode 100644 index 0000000000..f565284092 --- /dev/null +++ b/src/main/java/supertracker/command/FindCommand.java @@ -0,0 +1,33 @@ +package supertracker.command; + +import supertracker.item.Inventory; +import supertracker.item.Item; +import supertracker.ui.Ui; + +import java.util.Collection; + +public class FindCommand implements Command { + private String name; + + public FindCommand(String name) { + this.name = name; + } + + @Override + public void execute() { + int index = 1; + Collection items = Inventory.items(); + Ui.findIntro(); + for (Item item : items) { + if(item.getName().contains(name)){ + Ui.findItem(item, index); + index++; + } + } + } + + @Override + public boolean isQuit() { + return false; + } +} diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 9cdeda7f39..6bc5c74b62 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -1,15 +1,7 @@ package supertracker.parser; import supertracker.TrackerException; -import supertracker.command.AddCommand; -import supertracker.command.InvalidCommand; -import supertracker.command.ListCommand; -import supertracker.command.NewCommand; -import supertracker.command.QuitCommand; -import supertracker.command.RemoveCommand; -import supertracker.command.UpdateCommand; -import supertracker.command.DeleteCommand; -import supertracker.command.Command; +import supertracker.command.*; import supertracker.item.Inventory; import supertracker.ui.ErrorMessage; @@ -24,6 +16,7 @@ public class Parser { private static final String DELETE_COMMAND = "delete"; private static final String ADD_COMMAND = "add"; private static final String REMOVE_COMMAND = "remove"; + private static final String FIND_COMMAND = "find"; private static final double ROUNDING_FACTOR = 100.0; private static final String BASE_FLAG = "/"; private static final String NAME_FLAG = "n"; @@ -45,6 +38,7 @@ public class Parser { + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; private static final String REMOVE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; + private static final String FIND_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) "; /** @@ -93,6 +87,9 @@ public static Command parseCommand(String input) throws TrackerException { case REMOVE_COMMAND: command = parseRemoveCommand(params); break; + case FIND_COMMAND: + command = parseFindCommand(params); + break; default: command = new InvalidCommand(); break; @@ -340,4 +337,25 @@ private static Command parseRemoveCommand(String input) throws TrackerException return new RemoveCommand(name, quantity); } + + private static Command parseFindCommand(String input) throws TrackerException { + String[] flags = {NAME_FLAG}; + Matcher matcher = getPatternMatcher(FIND_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_FIND_FORMAT); + } + + String name = matcher.group(NAME_GROUP).trim(); + + if (name.isEmpty()) { + throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); + } + + if (!Inventory.contains(name)) { + throw new TrackerException(name + ErrorMessage.ITEM_NOT_IN_LIST_FIND); + } + + return new FindCommand(name); + } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 8d82f52be9..9ecede975e 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -17,9 +17,13 @@ public class ErrorMessage { " does not exist in inventory. Unable to increase its quantity. =("; public static final String ITEM_NOT_IN_LIST_REMOVE= " does not exist in inventory. Unable to decrease its quantity. =("; + public static final String ITEM_NOT_IN_LIST_FIND= + " Search came up empty, your item is not in our inventory. =("; public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; public static final String INVALID_NUMBER_FORMAT = "Invalid values for price/quantity"; public static final String QUANTITY_TOO_SMALL = "Quantity should be more than 0"; public static final String PRICE_TOO_SMALL = "Price should be more than 0"; public static final String FILE_HANDLER_ERROR = "Error setting up file handler"; + public static final String INVALID_FIND_FORMAT = + "Please ensure the name of the item you are looking for is correct"; } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 4e129562a5..75116509f8 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -10,6 +10,7 @@ public class Ui { private static final String WELCOME_MESSAGE = "Hello, welcome to SuperTracker, how may I help you?"; private static final String FAREWELL_MESSAGE = "Goodbye!"; private static final String BASIC_ERROR_MESSAGE = "Oh no! An error has occurred in your input"; + private static final String FIND_OPENING_MESSAGE = "Here are your found items:"; private static String listSize(int size){ return ("There are " + size + " unique items in your inventory:"); @@ -105,6 +106,10 @@ public static void listIntro(int size) { printIndent(listSize(size)); } + public static void findIntro() { + printIndent(FIND_OPENING_MESSAGE); + } + public static void listItem(Item item, int index, boolean hasQuantity, boolean hasPrice, String firstParam) { String stringToPrint = index + ". Name: " + item.getName(); String quantityString = " Quantity: " + item.getQuantity(); @@ -129,4 +134,13 @@ public static void printError(String errorMessage) { printIndent(BASIC_ERROR_MESSAGE); printIndent(errorMessage); } + + public static void findItem(Item item, int index) { + String stringToPrint = index + ". Name: " + item.getName(); + String quantityString = " Quantity: " + item.getQuantity(); + String priceString = " Price: " + item.getPriceString(); + + stringToPrint += (priceString + quantityString); + printIndent(stringToPrint); + } } From 689e61207a97477b0f5f3f1443208ada65e626b9 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Fri, 22 Mar 2024 00:12:04 +0800 Subject: [PATCH 062/423] Remove '.*' form of import --- src/main/java/supertracker/parser/Parser.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 6bc5c74b62..74ba493fc6 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -1,7 +1,16 @@ package supertracker.parser; import supertracker.TrackerException; -import supertracker.command.*; +import supertracker.command.AddCommand; +import supertracker.command.InvalidCommand; +import supertracker.command.ListCommand; +import supertracker.command.NewCommand; +import supertracker.command.QuitCommand; +import supertracker.command.RemoveCommand; +import supertracker.command.UpdateCommand; +import supertracker.command.DeleteCommand; +import supertracker.command.Command; +import supertracker.command.FindCommand; import supertracker.item.Inventory; import supertracker.ui.ErrorMessage; From a42f43bf7678b581e6cfa3204b039578e852e2b9 Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 23 Mar 2024 18:03:45 +0800 Subject: [PATCH 063/423] Add DG for parser --- docs/DeveloperGuide.md | 10 +++++++- docs/uml-diagrams/Parser.puml | 47 +++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 docs/uml-diagrams/Parser.puml diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 64e1f0ed2b..af5f036187 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -5,9 +5,17 @@ {list here sources of all reused/adapted ideas, code, documentation, and third-party libraries -- include links to the original source as well} ## Design & implementation +This section describes how certain features are implemented -{Describe the design and implementation of the product. Use UML diagrams and short code snippets where applicable.} +### Input Parsing +The program handles user inputs in the Parser class where inputs are parsed into command classes that implement the Command interface. +The Parser class only contains static methods as we have determined that it would be more practical instead of instantiating an instance of a Parser class. +> Note on the command inputs: +> - All valid command inputs by the user will have a command word _(first word separated by whitespace)_ with its respective parameters following the word. +> - Each parameter must be entered following a flag, i.e. a name parameter will have the input `n/NAME` + +The following is a sequence diagram of the execution sequence of a single user input ## Product scope ### Target user profile diff --git a/docs/uml-diagrams/Parser.puml b/docs/uml-diagrams/Parser.puml new file mode 100644 index 0000000000..950df0011d --- /dev/null +++ b/docs/uml-diagrams/Parser.puml @@ -0,0 +1,47 @@ + +@startuml +'https://plantuml.com/class-diagram + +abstract class AbstractList +abstract AbstractCollection +interface List +interface Collection + +List <|-- AbstractList +Collection <|-- AbstractCollection + +Collection <|- List +AbstractCollection <|- AbstractList +AbstractList <|-- ArrayList + +class ArrayList { +Object[] elementData +size() +} + +enum TimeUnit { +DAYS +HOURS +MINUTES +} + +@enduml + +@startuml +hide footbox +actor User +participant ":SuperTracker" as SuperTracker +participant ": Parser" as Parser + +activate SuperTracker +User -> SuperTracker : userInput +SuperTracker -> Parser: parseCommand(userInput) +activate Parser +Parser -> Parser : getPatternMatcher(regex, userInput) +activate Parser +Parser --> SuperTracker : commandToExecute +deactivate Parser +deactivate Parser +SuperTracker -> User : Output + +@enduml \ No newline at end of file From d0fbe586a0f8c6b6c126104980f470b8eac14228 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Sat, 23 Mar 2024 22:43:19 +0800 Subject: [PATCH 064/423] Remove bugs in FindCommand --- src/main/java/supertracker/command/FindCommand.java | 8 +++++++- src/main/java/supertracker/parser/Parser.java | 4 ---- src/main/java/supertracker/ui/Ui.java | 5 +++++ 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/src/main/java/supertracker/command/FindCommand.java b/src/main/java/supertracker/command/FindCommand.java index f565284092..12fdf1eabe 100644 --- a/src/main/java/supertracker/command/FindCommand.java +++ b/src/main/java/supertracker/command/FindCommand.java @@ -16,14 +16,20 @@ public FindCommand(String name) { @Override public void execute() { int index = 1; + boolean isFound = false; Collection items = Inventory.items(); + Ui.findIntro(); for (Item item : items) { - if(item.getName().contains(name)){ + if(item.getName().contains(name)) { Ui.findItem(item, index); index++; + isFound = true; } } + if (!isFound) { + Ui.noItemFound(name); + } } @Override diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 74ba493fc6..aed0cecf99 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -361,10 +361,6 @@ private static Command parseFindCommand(String input) throws TrackerException { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } - if (!Inventory.contains(name)) { - throw new TrackerException(name + ErrorMessage.ITEM_NOT_IN_LIST_FIND); - } - return new FindCommand(name); } } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 75116509f8..f8d1fc2b9d 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -143,4 +143,9 @@ public static void findItem(Item item, int index) { stringToPrint += (priceString + quantityString); printIndent(stringToPrint); } + + public static void noItemFound(String name) { + String stringToPrint = "So sorry, Your item: " + name + " could not be found."; + printIndent(stringToPrint); + } } From 5477830d0d2e5ec2035c0fdea254fc4dd99b8d8f Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 24 Mar 2024 01:19:18 +0800 Subject: [PATCH 065/423] Add sort functionality for list command List command now has 6 sorting modes: - Alphabetical, A-Z - Alphabetical, Z-A - Quantity, Ascending - Quantity, Descending - Price, Ascending - Price, Descending --- .../supertracker/command/FindCommand.java | 4 +-- .../supertracker/command/ListCommand.java | 30 ++++++++++++++++-- .../java/supertracker/item/Inventory.java | 7 +++-- src/main/java/supertracker/item/Item.java | 14 +++++++++ src/main/java/supertracker/parser/Parser.java | 31 +++++++++++++++++-- src/main/java/supertracker/ui/Ui.java | 6 ++-- 6 files changed, 80 insertions(+), 12 deletions(-) diff --git a/src/main/java/supertracker/command/FindCommand.java b/src/main/java/supertracker/command/FindCommand.java index f565284092..7e7e25cde1 100644 --- a/src/main/java/supertracker/command/FindCommand.java +++ b/src/main/java/supertracker/command/FindCommand.java @@ -4,7 +4,7 @@ import supertracker.item.Item; import supertracker.ui.Ui; -import java.util.Collection; +import java.util.List; public class FindCommand implements Command { private String name; @@ -16,7 +16,7 @@ public FindCommand(String name) { @Override public void execute() { int index = 1; - Collection items = Inventory.items(); + List items = Inventory.items(); Ui.findIntro(); for (Item item : items) { if(item.getName().contains(name)){ diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index b0fb1abb89..7b9a64c434 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -4,24 +4,48 @@ import supertracker.item.Inventory; import supertracker.item.Item; -import java.util.Collection; +import java.util.Collections; +import java.util.List; public class ListCommand implements Command { + private static final String QUANTITY_FLAG = "q"; + private static final String PRICE_FLAG = "p"; private boolean hasQuantity; private boolean hasPrice; private String firstParam; + private String sortBy; + private boolean reverse; - public ListCommand(boolean hasQuantity, boolean hasPrice, String firstParam) { + public ListCommand(boolean hasQuantity, boolean hasPrice, String firstParam, String sortBy, boolean reverse) { this.hasQuantity = hasQuantity; this.hasPrice = hasPrice; this.firstParam = firstParam; + this.sortBy = sortBy; + this.reverse = reverse; } @Override public void execute() { int index = 1; - Collection items = Inventory.items(); + List items = Inventory.items(); Ui.listIntro(items.size()); + + switch (sortBy) { + case QUANTITY_FLAG: + items.sort(Item.sortByQuantity()); + break; + case PRICE_FLAG: + items.sort(Item.sortByPrice()); + break; + default: + items.sort(Item.sortByName()); + break; + } + + if (reverse) { + Collections.reverse(items); + } + for (Item item : items) { Ui.listItem(item, index, hasQuantity, hasPrice, firstParam); index++; diff --git a/src/main/java/supertracker/item/Inventory.java b/src/main/java/supertracker/item/Inventory.java index cd0ac92aaf..68830c38af 100644 --- a/src/main/java/supertracker/item/Inventory.java +++ b/src/main/java/supertracker/item/Inventory.java @@ -1,7 +1,9 @@ package supertracker.item; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.List; public class Inventory { private static HashMap itemMap = new HashMap<>(); @@ -26,7 +28,8 @@ public static void clear() { itemMap.clear(); } - public static Collection items() { - return itemMap.values(); + public static List items() { + Collection items = itemMap.values(); + return new ArrayList<>(items); } } diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java index 105d88db61..00b2a1d967 100644 --- a/src/main/java/supertracker/item/Item.java +++ b/src/main/java/supertracker/item/Item.java @@ -1,5 +1,7 @@ package supertracker.item; +import java.util.Comparator; + public class Item { private String name; private int quantity; @@ -26,4 +28,16 @@ public double getPrice() { public String getPriceString() { return "$" + String.format("%.2f", price); } + + public static Comparator sortByName() { + return Comparator.comparing(Item::getName); + } + + public static Comparator sortByQuantity() { + return Comparator.comparingInt(Item::getQuantity); + } + + public static Comparator sortByPrice() { + return Comparator.comparingDouble(Item::getPrice); + } } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 74ba493fc6..bf576cf561 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -31,9 +31,15 @@ public class Parser { private static final String NAME_FLAG = "n"; private static final String QUANTITY_FLAG = "q"; private static final String PRICE_FLAG = "p"; + private static final String SORT_QUANTITY_FLAG = "x"; + private static final String SORT_PRICE_FLAG = "y"; + private static final String REVERSE_FLAG = "r"; private static final String NAME_GROUP = "name"; private static final String QUANTITY_GROUP = "quantity"; private static final String PRICE_GROUP = "price"; + private static final String SORT_QUANTITY_GROUP = "sortQuantity"; + private static final String SORT_PRICE_GROUP = "sortPrice"; + private static final String REVERSE_GROUP = "reverse"; private static final String NEW_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) " + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) "; @@ -41,7 +47,10 @@ public class Parser { + "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + ".*)?) " + "(?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) "; private static final String LIST_COMMAND_REGEX = "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG - + ".*)?) (?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) "; + + ".*)?) (?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) " + + "(?<" + SORT_QUANTITY_GROUP + ">(?:" + SORT_QUANTITY_FLAG + BASE_FLAG + ".*)?) " + + "(?<" + SORT_PRICE_GROUP + ">(?:" + SORT_PRICE_FLAG + BASE_FLAG + ".*)?) " + + "(?<" + REVERSE_GROUP + ">(?:" + REVERSE_FLAG + BASE_FLAG + ".*)?) "; private static final String DELETE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) "; private static final String ADD_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; @@ -235,7 +244,7 @@ private static Command parseNewCommand(String input) throws TrackerException { } private static Command parseListCommand(String input) throws TrackerException { - String[] flags = {QUANTITY_FLAG, PRICE_FLAG}; + String[] flags = {QUANTITY_FLAG, PRICE_FLAG, SORT_QUANTITY_FLAG, SORT_PRICE_FLAG, REVERSE_FLAG}; Matcher matcher = getPatternMatcher(LIST_COMMAND_REGEX, input, flags); if (!matcher.matches()) { @@ -244,6 +253,9 @@ private static Command parseListCommand(String input) throws TrackerException { boolean hasQuantity = !matcher.group(QUANTITY_GROUP).isEmpty(); boolean hasPrice = !matcher.group(PRICE_GROUP).isEmpty(); + boolean hasSortQuantity = !matcher.group(SORT_QUANTITY_GROUP).isEmpty(); + boolean hasSortPrice = !matcher.group(SORT_PRICE_GROUP).isEmpty(); + boolean reverse = !matcher.group(REVERSE_GROUP).isEmpty(); // to check if q comes before p or vice versa String firstParam = ""; @@ -253,7 +265,20 @@ private static Command parseListCommand(String input) throws TrackerException { firstParam = quantityPosition < pricePosition ? QUANTITY_FLAG : PRICE_FLAG; } - return new ListCommand(hasQuantity, hasPrice, firstParam); + // sort by whichever sorting method comes first + // if sorting method is unspecified then sort by alphabet + String sortBy = ""; + if (hasSortQuantity && hasSortPrice) { + int sortQuantityPosition = input.indexOf(SORT_QUANTITY_FLAG + BASE_FLAG); + int sortPricePosition = input.indexOf(SORT_PRICE_FLAG + BASE_FLAG); + sortBy = sortQuantityPosition < sortPricePosition ? QUANTITY_FLAG : PRICE_FLAG; + } else if (hasSortQuantity) { + sortBy = QUANTITY_FLAG; + } else if (hasSortPrice) { + sortBy = PRICE_FLAG; + } + + return new ListCommand(hasQuantity, hasPrice, firstParam, sortBy, reverse); } private static Command parseDeleteCommand(String input) throws TrackerException { diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 75116509f8..eaeb5e1aef 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -4,6 +4,8 @@ public class Ui { private static final String LINE = " --------------------------------------------------------------------------"; + private static final String QUANTITY_FLAG = "q"; + private static final String PRICE_FLAG = "p"; private static final String EMPTY_LIST_MESSAGE = "Nothing to list! No items in inventory!"; private static final String SINGLE_ITEM_LIST_MESSAGE= "There is 1 unique item in your inventory:"; private static final String INVALID_COMMAND_MESSAGE = "Sorry! Invalid command!"; @@ -116,9 +118,9 @@ public static void listItem(Item item, int index, boolean hasQuantity, boolean h String priceString = " Price: " + item.getPriceString(); if (hasQuantity && hasPrice) { - if (firstParam.equals("q")) { + if (firstParam.equals(QUANTITY_FLAG)) { stringToPrint += (quantityString + priceString); - } else if (firstParam.equals("p")) { + } else if (firstParam.equals(PRICE_FLAG)) { stringToPrint += (priceString + quantityString); } } else if (hasQuantity) { From 7316de645fcdf3e11e253f8d95d63d0242922826 Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 24 Mar 2024 01:45:19 +0800 Subject: [PATCH 066/423] Update DG DG details implementation of the Parser class Add UML diagrams using the PlantUML pluggin --- docs/DeveloperGuide.md | 49 +++++++++++++++++++- docs/uml-diagrams/Parser.puml | 64 ++++++++++++++++----------- docs/uml-diagrams/ParserClass.png | Bin 0 -> 20956 bytes docs/uml-diagrams/ParserSequence.png | Bin 0 -> 17605 bytes 4 files changed, 85 insertions(+), 28 deletions(-) create mode 100644 docs/uml-diagrams/ParserClass.png create mode 100644 docs/uml-diagrams/ParserSequence.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index af5f036187..b70a91328f 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -15,7 +15,54 @@ The Parser class only contains static methods as we have determined that it woul > - All valid command inputs by the user will have a command word _(first word separated by whitespace)_ with its respective parameters following the word. > - Each parameter must be entered following a flag, i.e. a name parameter will have the input `n/NAME` -The following is a sequence diagram of the execution sequence of a single user input +The following is a class diagram of the Parser and its relevant dependencies\ +![ParserClass](uml-diagrams/ParserClass.png) + +The following is a sequence diagram of the execution sequence of a single user input\ +![ParserSequence](uml-diagrams/ParserSequence.png) + +`Parser+parseCommand(input)` will return a `Command` object according to the command word in the user input. +It returns an `InvalidCommand` class if the command word detected is invalid. + +For the parsing of valid command word inputs, `Parser+parseCommand(input)` passes the parameters of the user input into the respective command's parsing method, +then calls the method `Parser-getPatternMatcher(regex, input, paramFlags)`that returns a `Matcher` object, which is Java's regex pattern matcher. +We use regular expressions to simplify the process of pattern matching for input parameters. Each command will have their respective regex strings for pattern matching + +> Note that `Parser-getPatternMatcher(regex, input, paramFlags)` will be called as long as the command word in the user input is valid, +> even if the parameters are invalid. The `Matcher` object returned will try to match the input parameters to the given regex. +> A `TrackerException` will be thrown if the input parameters are invalid. + +The input parameters will be passed into another method, `Parser-makeStringPattern(inputParam, paramFlags)` that returns a string in a pattern +according to a preset format that contains all the necessary input parameters. +Converting the parameter string to a pattern is done because **order does not matter** in the user's input parameters _(if there are multiple parameters)._ +Thus, it would be necessary to convert the user's input into a consistent format for pattern matching using regex. + +> Note: +> - All command regex are in the format:\ +> `a/(?.*) b/(?.*) c/(?.*) ` with `a/`, `b/`, `c/` being the respective parameter flags +> and `/` as the flag character. +> - As of now, parameter flags must only contain 1 character right before the `/` +> - Suppose we have `a/aaa b/bbb c/ccc ` as an input, according to the regex above, +> aaa will be in the named capture group "grp1", bbb in "grp2", ccc in "grp3" +> - If a parameter is optional, we would have it in a non-capture group with a `?` at the end +> - i.e. in `a/(?.*) (?(?:b/.*)?)`, the `b/` flag is an optional parameter +> +> For example, suppose the program wants to match the user input parameter +> `c/coconut a/apple b/bear a/anaconda d/donkey` to the regex `a/(?.*) b/(?.*) c/(?.*) (?(?:e/.*)?)` +> 1. The input parameter string and a string array of flags `{a, b, c, e}` is passed into `Parser-makeStringPattern` +> 2. `Parser-makeStringPattern` will return a pattern string `a/apple b/bear c/coconut ` +> 3. The program will then try to match the pattern string `a/apple b/bear c/coconut ` to the regex ` +> a/(?.*) b/(?.*) c/(?.*) (?(?:e/.*)?)` +> 4. The above pattern string matches the regex, with the following strings in the named capture groups: +> - "grp1": apple +> - "grp2": bear +> - "grp3": coconut +> - "grp4" is empty + +The `Matcher` will detect whether this input string pattern match the given regex pattern given to it +and extract out the necessary information if there is a match. +This will be used by each command's respective parsing method and returns the relevant parsed `Command` +object to `SuperTracker+handleCommands()` ## Product scope ### Target user profile diff --git a/docs/uml-diagrams/Parser.puml b/docs/uml-diagrams/Parser.puml index 950df0011d..b6f4f24afa 100644 --- a/docs/uml-diagrams/Parser.puml +++ b/docs/uml-diagrams/Parser.puml @@ -1,47 +1,57 @@ @startuml 'https://plantuml.com/class-diagram +skinparam classAttributeIconSize 0 -abstract class AbstractList -abstract AbstractCollection -interface List -interface Collection +class SuperTracker +class Parser +class TrackerException +interface Command -List <|-- AbstractList -Collection <|-- AbstractCollection +Parser <... SuperTracker +Command <.. SuperTracker +TrackerException <.. SuperTracker +TrackerException <.. Parser -Collection <|- List -AbstractCollection <|- AbstractList -AbstractList <|-- ArrayList +interface Command { + execute():void + isExit():boolean +} -class ArrayList { -Object[] elementData -size() +class TrackerException { + #errorMessage:String + +getErrorMessage():String + +TrackerException(errorMessage:String) } -enum TimeUnit { -DAYS -HOURS -MINUTES +class Parser { + {static}+parseCommand(input:String) : Command } @enduml @startuml hide footbox -actor User -participant ":SuperTracker" as SuperTracker -participant ": Parser" as Parser +actor User as User +participant ":SuperTracker" as SuperTracker #f5e3a9 +participant ":Parser" as Parser #cbf7f4 -activate SuperTracker +activate SuperTracker #f5e3a9 User -> SuperTracker : userInput -SuperTracker -> Parser: parseCommand(userInput) -activate Parser -Parser -> Parser : getPatternMatcher(regex, userInput) -activate Parser -Parser --> SuperTracker : commandToExecute -deactivate Parser -deactivate Parser +SuperTracker -> Parser : parseCommand(userInput) +activate Parser #cbf7f4 + +alt valid command word in userInput + Parser -> Parser : getPatternMatcher(regex, userInput) + activate Parser #a9dff5 + Parser --> Parser : commandToExecute + deactivate Parser + Parser --> SuperTracker : commandToExecute +else invalid userInput + Parser --> SuperTracker : InvalidCommand + deactivate Parser +end + SuperTracker -> User : Output @enduml \ No newline at end of file diff --git a/docs/uml-diagrams/ParserClass.png b/docs/uml-diagrams/ParserClass.png new file mode 100644 index 0000000000000000000000000000000000000000..8d31212ad4ac39df85b55fc8b4c899d795e589bd GIT binary patch literal 20956 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 literal 0 HcmV?d00001 diff --git a/docs/uml-diagrams/ParserSequence.png b/docs/uml-diagrams/ParserSequence.png new file mode 100644 index 0000000000000000000000000000000000000000..942d701f2d41c6b642e1d6b93c474649392ce871 GIT binary patch literal 17605 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 literal 0 HcmV?d00001 From 724d1670f0e1a5ad9c635ca49793602f33c3ada5 Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 24 Mar 2024 03:03:08 +0800 Subject: [PATCH 067/423] Update Parser Add input parser support for multiple character parameter flags --- src/main/java/supertracker/parser/Parser.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 1c2bc79e1a..d0ab222264 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -31,8 +31,8 @@ public class Parser { private static final String NAME_FLAG = "n"; private static final String QUANTITY_FLAG = "q"; private static final String PRICE_FLAG = "p"; - private static final String SORT_QUANTITY_FLAG = "x"; - private static final String SORT_PRICE_FLAG = "y"; + private static final String SORT_QUANTITY_FLAG = "sq"; + private static final String SORT_PRICE_FLAG = "sp"; private static final String REVERSE_FLAG = "r"; private static final String NAME_GROUP = "name"; private static final String QUANTITY_GROUP = "quantity"; @@ -126,15 +126,17 @@ private static String makeStringPattern(String inputParams, String[] paramFlags) StringBuilder flagBuilder = new StringBuilder(); for (String flag : paramFlags) { flagBuilder.append(flag); + flagBuilder.append("|"); } + flagBuilder.deleteCharAt(flagBuilder.length() - 1); String flags = flagBuilder.toString(); - String[] params = inputParams.split("(?=[" + flags + "]" + BASE_FLAG + ")"); + String[] params = inputParams.split("(?= (" + flags + ")" + BASE_FLAG + ")"); StringBuilder stringPattern = new StringBuilder(); for (String paramFlag : paramFlags) { for (String p : params) { - if (p.startsWith(paramFlag + BASE_FLAG)) { + if (p.trim().startsWith(paramFlag + BASE_FLAG)) { stringPattern.append(p.trim()); break; } From 436664c166f95126099de1212130850584c024c1 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 24 Mar 2024 05:44:04 +0800 Subject: [PATCH 068/423] Add UML diagrams for new command --- docs/uml-diagrams/NewCommand.puml | 77 +++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 docs/uml-diagrams/NewCommand.puml diff --git a/docs/uml-diagrams/NewCommand.puml b/docs/uml-diagrams/NewCommand.puml new file mode 100644 index 0000000000..8c9c7acfb8 --- /dev/null +++ b/docs/uml-diagrams/NewCommand.puml @@ -0,0 +1,77 @@ +@startuml +'https://plantuml.com/class-diagram +skinparam classAttributeIconSize 0 + +abstract class Command +class Inventory +class Item +class NewCommand +class Parser +class Ui + +Command <|. NewCommand +Item <.. NewCommand +Ui <.. NewCommand +Inventory <.. NewCommand +NewCommand <.. Parser + +interface Command { + +execute():void + +isExit():boolean +} + +class NewCommand { + -name:String + -quantity:int + -price:double + +NewCommand(name:String, quantity:int, price:double) + +execute():void + +isExit():boolean +} + +class Item { + +Item(name:String, quantity:int, price:double) +} + +class Inventory { + {static}+put(name:String, item:Item):void +} + +class Ui { + {static}+newCommandSuccess(item:Item):void +} + +class Parser { + {static}-ParseNewCommand(input:String):NewCommand +} + +@enduml + +@startuml +hide footbox +participant ":Parser" as Parser #f5e3a9 +participant ":NewCommand" as NewCommand #cbf7f4 +participant "Inventory" as Inventory <> +participant "Ui" as Ui <> + +Parser -> NewCommand : execute() +activate NewCommand #cbf7f4 + +NewCommand -> Item ** : new Item(name:String, quantity:int, price:double) +activate Item +Item --> NewCommand : :Item +deactivate Item + +NewCommand -> Inventory : put(name:String, item:Item) +activate Inventory +Inventory --> NewCommand +deactivate Inventory + +NewCommand -> Ui : newCommandSuccess(item:Item) +activate Ui +Ui --> NewCommand +deactivate Ui + +NewCommand --> Parser +deactivate NewCommand #cbf7f4 +@enduml \ No newline at end of file From 471999b31bde53bf543461d95742d41db806d5f5 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 24 Mar 2024 11:44:53 +0800 Subject: [PATCH 069/423] Add Report Command --- .../supertracker/command/ReportCommand.java | 46 ++++++++++++++++++ src/main/java/supertracker/parser/Parser.java | 47 +++++++++++++++++-- .../java/supertracker/ui/ErrorMessage.java | 3 +- src/main/java/supertracker/ui/Ui.java | 26 ++++++++++ 4 files changed, 118 insertions(+), 4 deletions(-) create mode 100644 src/main/java/supertracker/command/ReportCommand.java diff --git a/src/main/java/supertracker/command/ReportCommand.java b/src/main/java/supertracker/command/ReportCommand.java new file mode 100644 index 0000000000..3b726e0492 --- /dev/null +++ b/src/main/java/supertracker/command/ReportCommand.java @@ -0,0 +1,46 @@ +package supertracker.command; + +import supertracker.ui.Ui; +import supertracker.item.Inventory; +import supertracker.item.Item; +import java.time.LocalDate; + +import java.util.ArrayList; +import java.util.List; + +public class ReportCommand implements Command{ + private String reportType; + private int threshold; + public ReportCommand(String reportType, int threshold) { + this.reportType = reportType; + this.threshold = threshold; + } + + @Override + public void execute() { + List items = Inventory.items(); + List reportItems = new ArrayList<>(); + LocalDate currDate = LocalDate.now(); + if (reportType.equals("low stock")) { + for (Item item : items) { + if (item.getQuantity() < threshold) { + reportItems.add(item); + } + } + Ui.reportCommandSuccess(reportItems, reportType); + } + /* for (Item item : items) { + if (item.getExpiryDate() < currDate) { + reportItems.add(item); + } + } + Ui.reportCommandSuccess(reportItems, reportType); + */ + } + + @Override + public boolean isQuit() { + return false; + } + +} diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index d0ab222264..bd4a7ba1fd 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -2,15 +2,16 @@ import supertracker.TrackerException; import supertracker.command.AddCommand; +import supertracker.command.Command; +import supertracker.command.DeleteCommand; +import supertracker.command.FindCommand; import supertracker.command.InvalidCommand; import supertracker.command.ListCommand; import supertracker.command.NewCommand; import supertracker.command.QuitCommand; import supertracker.command.RemoveCommand; +import supertracker.command.ReportCommand; import supertracker.command.UpdateCommand; -import supertracker.command.DeleteCommand; -import supertracker.command.Command; -import supertracker.command.FindCommand; import supertracker.item.Inventory; import supertracker.ui.ErrorMessage; @@ -26,6 +27,7 @@ public class Parser { private static final String ADD_COMMAND = "add"; private static final String REMOVE_COMMAND = "remove"; private static final String FIND_COMMAND = "find"; + private static final String REPORT_COMMAND = "report"; private static final double ROUNDING_FACTOR = 100.0; private static final String BASE_FLAG = "/"; private static final String NAME_FLAG = "n"; @@ -40,6 +42,10 @@ public class Parser { private static final String SORT_QUANTITY_GROUP = "sortQuantity"; private static final String SORT_PRICE_GROUP = "sortPrice"; private static final String REVERSE_GROUP = "reverse"; + private static final String REPORT_TYPE_FLAG = "r"; + private static final String REPORT_TYPE_GROUP = "reportType"; + private static final String THRESHOLD_FLAG = "t"; + private static final String THRESHOLD_GROUP = "threshold"; private static final String NEW_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) " + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) "; @@ -57,6 +63,8 @@ public class Parser { private static final String REMOVE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; private static final String FIND_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) "; + private static final String REPORT_COMMAND_REGEX = REPORT_TYPE_FLAG + BASE_FLAG + "(?<" + REPORT_TYPE_GROUP + + ">.*) " + THRESHOLD_FLAG + BASE_FLAG + "(?<" + THRESHOLD_GROUP + ">.*) "; /** @@ -108,6 +116,9 @@ public static Command parseCommand(String input) throws TrackerException { case FIND_COMMAND: command = parseFindCommand(params); break; + case REPORT_COMMAND: + command = parseReportCommand(params); + break; default: command = new InvalidCommand(); break; @@ -390,4 +401,34 @@ private static Command parseFindCommand(String input) throws TrackerException { return new FindCommand(name); } + + private static Command parseReportCommand(String input) throws TrackerException { + String[] flags = {REPORT_TYPE_FLAG, THRESHOLD_FLAG}; + Matcher matcher = getPatternMatcher(REPORT_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_REPORT_FORMAT); + } + + String reportType = matcher.group(REPORT_TYPE_GROUP).trim(); + String thresholdString = matcher.group(THRESHOLD_GROUP).trim(); + + if (reportType.isEmpty() || thresholdString.isEmpty()) { + throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); + } + + int threshold; + + try { + threshold = Integer.parseInt(thresholdString); + } catch (NumberFormatException e) { + throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); + } + + if (threshold < 0) { + throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); + } + + return new ReportCommand(reportType, threshold); + } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 9ecede975e..bb0d123d1e 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -9,6 +9,7 @@ public class ErrorMessage { public static final String INVALID_NEW_ITEM_FORMAT = "Invalid new command format!"; public static final String INVALID_ADD_FORMAT = "Invalid add command format!"; public static final String INVALID_REMOVE_FORMAT = "Invalid remove command format!"; + public static final String INVALID_REPORT_FORMAT = "Invalid report command format!"; public static final String ITEM_NOT_IN_LIST_UPDATE = " does not exist in inventory. Unable to update its values. =("; public static final String ITEM_NOT_IN_LIST_DELETE = @@ -21,7 +22,7 @@ public class ErrorMessage { " Search came up empty, your item is not in our inventory. =("; public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; public static final String INVALID_NUMBER_FORMAT = "Invalid values for price/quantity"; - public static final String QUANTITY_TOO_SMALL = "Quantity should be more than 0"; + public static final String QUANTITY_TOO_SMALL = "Quantity should be more than equal to 0"; public static final String PRICE_TOO_SMALL = "Price should be more than 0"; public static final String FILE_HANDLER_ERROR = "Error setting up file handler"; public static final String INVALID_FIND_FORMAT = diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 151319d4c6..2f9c15d07a 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -2,6 +2,8 @@ import supertracker.item.Item; +import java.util.List; + public class Ui { private static final String LINE = " --------------------------------------------------------------------------"; private static final String QUANTITY_FLAG = "q"; @@ -13,6 +15,7 @@ public class Ui { private static final String FAREWELL_MESSAGE = "Goodbye!"; private static final String BASIC_ERROR_MESSAGE = "Oh no! An error has occurred in your input"; private static final String FIND_OPENING_MESSAGE = "Here are your found items:"; + private static final String REPORT_NO_ITEMS_OPENING = "There are no items that fit the criteria!"; private static String listSize(int size){ return ("There are " + size + " unique items in your inventory:"); @@ -45,6 +48,14 @@ private static String removeItemOpening(Item item, int quantityRemoved) { return quantityRemoved + " " + item.getName() + " removed from inventory!"; } + private static String reportLowStockOpening(Item reportItem, int count) { + return count + ". Name: " + reportItem.getName(); + } + + private static String reportLowStockQuantityMessage(Item reportItem) { + return " Current Quantity: " + reportItem.getQuantity(); + } + public static void printIndent(String string) { System.out.println(" " + string); } @@ -95,6 +106,21 @@ public static void removeCommandSuccess(Item item, int quantityRemoved) { printIndent(quantityMessage(item)); } + public static void reportCommandSuccess(List reportItems, String reportType) { + if (reportItems.isEmpty()) { + printIndent(REPORT_NO_ITEMS_OPENING); + } else { + int count = 1; + for (Item item : reportItems) { + if (reportType.equals("low stock")) { + printIndent(reportLowStockOpening(item, count)); + printIndent(reportLowStockQuantityMessage(item)); + } + count += 1; + } + } + } + public static void listIntro(int size) { assert size >= 0; if (size == 0) { From 3a4a13f78b63b054814e8d0e9aac30bbeddacb3a Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 24 Mar 2024 18:28:42 +0800 Subject: [PATCH 070/423] Add saving Add saving of item data to the hard disk --- .gitignore | 5 +- src/main/java/supertracker/SuperTracker.java | 8 +++ .../supertracker/storage/FileManager.java | 60 +++++++++++++++++++ .../java/supertracker/ui/ErrorMessage.java | 1 + 4 files changed, 73 insertions(+), 1 deletion(-) create mode 100644 src/main/java/supertracker/storage/FileManager.java diff --git a/.gitignore b/.gitignore index f8a2599ae0..3d859e4d18 100644 --- a/.gitignore +++ b/.gitignore @@ -18,4 +18,7 @@ text-ui-test/EXPECTED-UNIX.TXT # Log files supertracker.log -supertracker.log.lck \ No newline at end of file +supertracker.log.lck + +# Data files +/data/ \ No newline at end of file diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index f3338d7069..0196d319da 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -4,9 +4,11 @@ import supertracker.command.InvalidCommand; import supertracker.command.QuitCommand; import supertracker.parser.Parser; +import supertracker.storage.FileManager; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; +import java.io.IOException; import java.util.Scanner; import java.util.logging.FileHandler; @@ -38,6 +40,12 @@ private static void run() { Ui.greetUser(); handleCommands(); + try { + FileManager.saveData(); + } catch (IOException e) { + Ui.printError(ErrorMessage.FILE_SAVE_ERROR); + } + logger.info(EXIT_MESSAGE); } diff --git a/src/main/java/supertracker/storage/FileManager.java b/src/main/java/supertracker/storage/FileManager.java new file mode 100644 index 0000000000..215a16d772 --- /dev/null +++ b/src/main/java/supertracker/storage/FileManager.java @@ -0,0 +1,60 @@ +package supertracker.storage; + +import supertracker.item.Inventory; +import supertracker.item.Item; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; + +public class FileManager { + protected static final String DATA_PATH = "./data/"; + protected static final String FILE_NAME = "items.txt"; + protected static final String SAVE_FILE_PATH = DATA_PATH + FILE_NAME; + protected static final String SEPARATOR = ",,,"; + protected static final String PLACEHOLDER = "*&_"; + + /** + * Saves all items currently in the inventory by writing into a text file. + * + * @throws IOException if text file cannot be opened or accessed for whatever reason + */ + public static void saveData() throws IOException { + File directory = new File(DATA_PATH); + if (!directory.exists()) { + directory.mkdirs(); + } + File saveFile = new File(SAVE_FILE_PATH); + if (!saveFile.createNewFile()) { + saveFile.delete(); + saveFile.createNewFile(); + } + + List items = Inventory.items(); + FileWriter fw = new FileWriter(saveFile); + BufferedWriter writer = new BufferedWriter(fw); + + for (Item item : items) { + String itemData = getItemData(item); + writer.write(itemData); + } + + writer.close(); + fw.close(); + } + + private static String getItemData(Item item) { + String name = item.getName(); + String excess = ""; + if (name.contains(SEPARATOR)) { + excess = SEPARATOR + "e"; + name = name.replace(SEPARATOR, PLACEHOLDER); + } + String quantity = String.valueOf(item.getQuantity()); + String price = String.valueOf(item.getPrice()); + + return name + SEPARATOR + quantity + SEPARATOR + price + excess + "\n"; + } +} diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index bb0d123d1e..72fb4cebe7 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -27,4 +27,5 @@ public class ErrorMessage { public static final String FILE_HANDLER_ERROR = "Error setting up file handler"; public static final String INVALID_FIND_FORMAT = "Please ensure the name of the item you are looking for is correct"; + public static final String FILE_SAVE_ERROR = "Oops! Unable to save data due to an I/O error!"; } From 77d1fc042f536201d0b3577b044d89ea4a36d751 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 24 Mar 2024 18:55:37 +0800 Subject: [PATCH 071/423] Add developer guide info for new command --- docs/DeveloperGuide.md | 19 +++++++++++++++++++ docs/uml-diagrams/NewCommand.puml | 19 ++++++++++--------- docs/uml-diagrams/NewCommandClass.png | Bin 0 -> 29608 bytes docs/uml-diagrams/NewCommandSequence.png | Bin 0 -> 17689 bytes 4 files changed, 29 insertions(+), 9 deletions(-) create mode 100644 docs/uml-diagrams/NewCommandClass.png create mode 100644 docs/uml-diagrams/NewCommandSequence.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index b70a91328f..b9e52135d8 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -64,6 +64,25 @@ and extract out the necessary information if there is a match. This will be used by each command's respective parsing method and returns the relevant parsed `Command` object to `SuperTracker+handleCommands()` +### New Command +The following is a class diagram of the NewCommand and its relevant dependencies +![NewCommandClass](uml-diagrams/NewCommandClass.png) +The `NewCommand` class implements the `Command` interface and is responsible for handling the creation of new items in the `Inventory`. +A NewCommand instance is created by the `ParseNewCommand` method called by Parser, which ensures that the provided parameters (name, quantity, price) are valid. + +#### Dependencies +- `Item`: For creating the new item +- `Inventory`: For adding the new item into the inventory +- `Ui`: To notify the user about the successful execution of `NewCommand` + +The following sequence diagram shows the execution of a NewCommand +![NewCommandSequence](uml-diagrams/NewCommandSequence.png) +1. The `SuperTracker` class calls the `execute` method of `NewCommand` +2. A new `Item` object with the given parameters (name, quantity, price) is created and returned to `NewCommand` +3. The `put` method of the `Inventory` class is called to add the newly created item into the inventory +4. The `newCommandSuccess` method of the `Ui` class is called to notify that `NewCommand` has been successfully executed + + ## Product scope ### Target user profile diff --git a/docs/uml-diagrams/NewCommand.puml b/docs/uml-diagrams/NewCommand.puml index 8c9c7acfb8..7d9bf78af6 100644 --- a/docs/uml-diagrams/NewCommand.puml +++ b/docs/uml-diagrams/NewCommand.puml @@ -49,29 +49,30 @@ class Parser { @startuml hide footbox -participant ":Parser" as Parser #f5e3a9 +participant "SuperTracker" as SuperTracker <> #f5e3a9 participant ":NewCommand" as NewCommand #cbf7f4 -participant "Inventory" as Inventory <> -participant "Ui" as Ui <> +participant "Inventory" as Inventory <> #d5eac2 +participant "Ui" as Ui <> #e5c2ea +participant ":Item" as Item #fbffb2 -Parser -> NewCommand : execute() +SuperTracker -> NewCommand : execute() activate NewCommand #cbf7f4 NewCommand -> Item ** : new Item(name:String, quantity:int, price:double) -activate Item +activate Item #fbffb2 Item --> NewCommand : :Item deactivate Item NewCommand -> Inventory : put(name:String, item:Item) -activate Inventory +activate Inventory #d5eac2 Inventory --> NewCommand deactivate Inventory NewCommand -> Ui : newCommandSuccess(item:Item) -activate Ui +activate Ui #e5c2ea Ui --> NewCommand deactivate Ui -NewCommand --> Parser -deactivate NewCommand #cbf7f4 +NewCommand --> SuperTracker +deactivate NewCommand @enduml \ No newline at end of file diff --git a/docs/uml-diagrams/NewCommandClass.png b/docs/uml-diagrams/NewCommandClass.png new file mode 100644 index 0000000000000000000000000000000000000000..e2176d816abc79dee59c679df9f5c69b6fa12d39 GIT binary patch literal 29608 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 literal 0 HcmV?d00001 diff --git a/docs/uml-diagrams/NewCommandSequence.png b/docs/uml-diagrams/NewCommandSequence.png new file mode 100644 index 0000000000000000000000000000000000000000..dab7860a81acfeaf377269d755ec7f1363e22488 GIT binary patch literal 17689 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 K$(B5X!u}78{X@e5 literal 0 HcmV?d00001 From 6f2abb2343fb82c14dd978c0d553f73179dae908 Mon Sep 17 00:00:00 2001 From: awesomesjh <89649663+awesomesjh@users.noreply.github.com> Date: Sun, 24 Mar 2024 19:15:05 +0800 Subject: [PATCH 072/423] Fix typo in DeveloperGuide.md Co-authored-by: rismm <110659916+rismm@users.noreply.github.com> --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index b9e52135d8..780d539dab 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -68,7 +68,7 @@ object to `SuperTracker+handleCommands()` The following is a class diagram of the NewCommand and its relevant dependencies ![NewCommandClass](uml-diagrams/NewCommandClass.png) The `NewCommand` class implements the `Command` interface and is responsible for handling the creation of new items in the `Inventory`. -A NewCommand instance is created by the `ParseNewCommand` method called by Parser, which ensures that the provided parameters (name, quantity, price) are valid. +A NewCommand instance is created by the `parseNewCommand` method called by Parser, which ensures that the provided parameters (name, quantity, price) are valid. #### Dependencies - `Item`: For creating the new item From 4cbaa6d39f08b3a17b3942f1b732f474845d979f Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 24 Mar 2024 21:14:11 +0800 Subject: [PATCH 073/423] Add basic expiry date --- .../java/supertracker/command/AddCommand.java | 2 +- .../java/supertracker/command/NewCommand.java | 9 +++++++-- .../supertracker/command/RemoveCommand.java | 2 +- .../supertracker/command/UpdateCommand.java | 2 +- src/main/java/supertracker/item/Item.java | 10 +++++++++- src/main/java/supertracker/parser/Parser.java | 20 ++++++++++++++++--- src/main/java/supertracker/ui/Ui.java | 5 ++++- 7 files changed, 40 insertions(+), 10 deletions(-) diff --git a/src/main/java/supertracker/command/AddCommand.java b/src/main/java/supertracker/command/AddCommand.java index 2d5346e4a1..a465ba31d8 100644 --- a/src/main/java/supertracker/command/AddCommand.java +++ b/src/main/java/supertracker/command/AddCommand.java @@ -20,7 +20,7 @@ public void execute() { Item oldItem = Inventory.get(name); int newQuantity = oldItem.getQuantity() + quantity; - Item newItem = new Item(name, newQuantity, oldItem.getPrice()); + Item newItem = new Item(name, newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); Inventory.put(name, newItem); Ui.addCommandSuccess(newItem, quantity); } diff --git a/src/main/java/supertracker/command/NewCommand.java b/src/main/java/supertracker/command/NewCommand.java index c791571b2b..5cd21f3251 100644 --- a/src/main/java/supertracker/command/NewCommand.java +++ b/src/main/java/supertracker/command/NewCommand.java @@ -4,15 +4,20 @@ import supertracker.item.Inventory; import supertracker.item.Item; +import java.time.LocalDate; + public class NewCommand implements Command { private String name; private int quantity; private double price; - public NewCommand(String name, int quantity, double price) { + private LocalDate expiryDate; + + public NewCommand(String name, int quantity, double price, LocalDate expiryDate) { this.name = name; this.quantity = quantity; this.price = price; + this.expiryDate = expiryDate; } @Override @@ -21,7 +26,7 @@ public void execute() { assert quantity >= 0; assert price >= 0; - Item item = new Item(name, quantity, price); + Item item = new Item(name, quantity, price, expiryDate); Inventory.put(name, item); Ui.newCommandSuccess(item); } diff --git a/src/main/java/supertracker/command/RemoveCommand.java b/src/main/java/supertracker/command/RemoveCommand.java index 7d2e7faf94..61b63d9c48 100644 --- a/src/main/java/supertracker/command/RemoveCommand.java +++ b/src/main/java/supertracker/command/RemoveCommand.java @@ -22,7 +22,7 @@ public void execute() { int newQuantity = oldItem.getQuantity() - quantity; newQuantity = Math.max(newQuantity, 0); int quantityRemoved = oldItem.getQuantity() - newQuantity; - Item newItem = new Item(name, newQuantity, oldItem.getPrice()); + Item newItem = new Item(name, newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); Inventory.put(name, newItem); Ui.removeCommandSuccess(newItem, quantityRemoved); } diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index 4b76db0375..ccd8ed0d63 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -30,7 +30,7 @@ public void execute() { assert newQuantity >= 0; assert newPrice >= 0; - Item newItem = new Item(name, newQuantity, newPrice); + Item newItem = new Item(name, newQuantity, newPrice, oldItem.getExpiryDate()); Inventory.put(name, newItem); Ui.updateCommandSuccess(newItem); } diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java index 105d88db61..a29ee7d2b4 100644 --- a/src/main/java/supertracker/item/Item.java +++ b/src/main/java/supertracker/item/Item.java @@ -1,14 +1,18 @@ package supertracker.item; +import java.time.LocalDate; + public class Item { private String name; private int quantity; private double price; + private LocalDate expiryDate; - public Item(String name, int quantity, double price) { + public Item(String name, int quantity, double price, LocalDate expiryDate) { this.name = name; this.quantity = quantity; this.price = price; + this.expiryDate = expiryDate; } public String getName() { @@ -23,6 +27,10 @@ public double getPrice() { return price; } + public LocalDate getExpiryDate() { + return expiryDate; + } + public String getPriceString() { return "$" + String.format("%.2f", price); } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 74ba493fc6..fa02946189 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -17,6 +17,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.time.LocalDate; + public class Parser { private static final String QUIT_COMMAND = "quit"; private static final String NEW_COMMAND = "new"; @@ -31,12 +33,15 @@ public class Parser { private static final String NAME_FLAG = "n"; private static final String QUANTITY_FLAG = "q"; private static final String PRICE_FLAG = "p"; + private static final String EX_DATE_FLAG = "e"; private static final String NAME_GROUP = "name"; private static final String QUANTITY_GROUP = "quantity"; private static final String PRICE_GROUP = "price"; + private static final String EX_DATE_GROUP = "expiry"; private static final String NEW_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) " - + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) "; + + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) " + + "(?<" + EX_DATE_GROUP + ">(?:" + EX_DATE_FLAG + BASE_FLAG + ".*)?) "; private static final String UPDATE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + ".*)?) " + "(?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) "; @@ -193,7 +198,7 @@ private static Command parseUpdateCommand(String input) throws TrackerException } private static Command parseNewCommand(String input) throws TrackerException { - String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG}; + String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG}; Matcher matcher = getPatternMatcher(NEW_COMMAND_REGEX, input, flags); if (!matcher.matches()) { @@ -208,6 +213,14 @@ private static Command parseNewCommand(String input) throws TrackerException { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } + CharSequence dateString = null; + + boolean hasExpiry = !matcher.group(EX_DATE_GROUP).isEmpty(); + + if (hasExpiry) { + dateString = matcher.group(EX_DATE_GROUP).trim().substring(2); + } + if (Inventory.contains(name)) { throw new TrackerException(name + ErrorMessage.ITEM_IN_LIST_NEW); } @@ -231,7 +244,8 @@ private static Command parseNewCommand(String input) throws TrackerException { throw new TrackerException(ErrorMessage.PRICE_TOO_SMALL); } - return new NewCommand(name, quantity, price); + LocalDate expiryDate = LocalDate.parse(dateString); + return new NewCommand(name, quantity, price, expiryDate); } private static Command parseListCommand(String input) throws TrackerException { diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 75116509f8..6b9f26d8c2 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -26,7 +26,9 @@ private static String quantityMessage(Item item) { private static String newItemOpening(Item item) { return item.getName() + " has been added to the inventory!"; } - + private static String ExpiryDateMessage(Item item) { + return "Expiry Date: " + item.getExpiryDate(); + } private static String updateItemOpening(Item item) { return item.getName() + " has been successfully updated!"; } @@ -69,6 +71,7 @@ public static void newCommandSuccess(Item item) { printIndent(newItemOpening(item)); printIndent(quantityMessage(item)); printIndent(priceMessage(item)); + printIndent(ExpiryDateMessage(item)); } public static void updateCommandSuccess(Item item) { From 235b65d5edc9024cc75c5d4daaace35f08efe4b6 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 24 Mar 2024 21:27:50 +0800 Subject: [PATCH 074/423] Add JUnit tests for list command --- .../supertracker/command/ListCommand.java | 14 ++ .../supertracker/command/ListCommandTest.java | 161 ++++++++++++++++++ 2 files changed, 175 insertions(+) create mode 100644 src/test/java/supertracker/command/ListCommandTest.java diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index 7b9a64c434..b9e5451e06 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -26,6 +26,9 @@ public ListCommand(boolean hasQuantity, boolean hasPrice, String firstParam, Str @Override public void execute() { + assert isValid(firstParam); + assert isValid(sortBy); + int index = 1; List items = Inventory.items(); Ui.listIntro(items.size()); @@ -56,4 +59,15 @@ public void execute() { public boolean isQuit() { return false; } + + /** + * Checks if the provided string is valid. + * + * @param s The string to be validated. + * @return {@code true} if the string is equal to "q" or "p", + * or if the string is empty; {@code false} otherwise. + */ + private boolean isValid(String s) { + return s.equals(QUANTITY_FLAG) || s.equals(PRICE_FLAG) || s.isEmpty(); + } } diff --git a/src/test/java/supertracker/command/ListCommandTest.java b/src/test/java/supertracker/command/ListCommandTest.java new file mode 100644 index 0000000000..f8d83c48d9 --- /dev/null +++ b/src/test/java/supertracker/command/ListCommandTest.java @@ -0,0 +1,161 @@ +package supertracker.command; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import supertracker.TrackerException; +import supertracker.item.Inventory; +import supertracker.parser.Parser; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ListCommandTest { + private static final String LINE_SEPARATOR = "\r\n"; + private static final String LIST_INTRO = " There are 3 unique items in your inventory:" + LINE_SEPARATOR; + private static final String INDEX_1 = " 1."; + private static final String INDEX_2 = " 2."; + private static final String INDEX_3 = " 3."; + private static final String A_NAME = " Name: Apple"; + private static final String B_NAME = " Name: Berry"; + private static final String C_NAME = " Name: Cake"; + private static final String A_QUANTITY = " Quantity: 3"; + private static final String B_QUANTITY = " Quantity: 2"; + private static final String C_QUANTITY = " Quantity: 1"; + private static final String A_PRICE = " Price: $2.00"; + private static final String B_PRICE = " Price: $1.00"; + private static final String C_PRICE = " Price: $3.00"; + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + private final PrintStream originalOut = System.out; + + @BeforeAll + public static void setUp() { + Inventory.clear(); + Command[] commands = { + new NewCommand("Apple", 3, 2.00), + new NewCommand("Berry", 2, 1.00), + new NewCommand("Cake", 1, 3.00) + }; + for (Command c : commands) { + c.execute(); + } + } + + @BeforeEach + public void setUpStreams() { + System.setOut(new PrintStream(outContent)); + } + + @Test + public void listCommand_validData_correctlyConstructed_alphabetical_ascending() throws TrackerException { + String userInput = "list"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + A_NAME + LINE_SEPARATOR + + INDEX_2 + B_NAME + LINE_SEPARATOR + + INDEX_3 + C_NAME + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void listCommand_validData_correctlyConstructed_alphabetical_descending() throws TrackerException { + String userInput = "list r/"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + C_NAME + LINE_SEPARATOR + + INDEX_2 + B_NAME + LINE_SEPARATOR + + INDEX_3 + A_NAME + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void listCommand_validData_correctlyConstructed_quantity_ascending() throws TrackerException { + String userInput = "list q/ sq/ sp/"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + C_NAME + C_QUANTITY + LINE_SEPARATOR + + INDEX_2 + B_NAME + B_QUANTITY + LINE_SEPARATOR + + INDEX_3 + A_NAME + A_QUANTITY + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void listCommand_validData_correctlyConstructed_quantity_descending() throws TrackerException { + String userInput = "list q/ sq/ sp/ r/"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + A_NAME + A_QUANTITY + LINE_SEPARATOR + + INDEX_2 + B_NAME + B_QUANTITY + LINE_SEPARATOR + + INDEX_3 + C_NAME + C_QUANTITY + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void listCommand_validData_correctlyConstructed_price_ascending() throws TrackerException { + String userInput = "list p/ sp/ sq/"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + B_NAME + B_PRICE + LINE_SEPARATOR + + INDEX_2 + A_NAME + A_PRICE + LINE_SEPARATOR + + INDEX_3 + C_NAME + C_PRICE + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void listCommand_validData_correctlyConstructed_price_descending() throws TrackerException { + String userInput = "list p/ sp/ sq/ r/"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + C_NAME + C_PRICE + LINE_SEPARATOR + + INDEX_2 + A_NAME + A_PRICE + LINE_SEPARATOR + + INDEX_3 + B_NAME + B_PRICE + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void listCommand_validData_correctlyConstructed_quantity_before_price() throws TrackerException { + String userInput = "list q/ p/ q/"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + A_NAME + A_QUANTITY + A_PRICE + LINE_SEPARATOR + + INDEX_2 + B_NAME + B_QUANTITY + B_PRICE + LINE_SEPARATOR + + INDEX_3 + C_NAME + C_QUANTITY + C_PRICE + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void listCommand_validData_correctlyConstructed_price_before_quantity() throws TrackerException { + String userInput = "list p/ q/ p/"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + A_NAME + A_PRICE + A_QUANTITY + LINE_SEPARATOR + + INDEX_2 + B_NAME + B_PRICE + B_QUANTITY + LINE_SEPARATOR + + INDEX_3 + C_NAME + C_PRICE + C_QUANTITY + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @AfterEach + public void restoreStreams() { + System.setOut(originalOut); + } + +} From 16c40b465aaa8161bb4c00600f41ee98a288ab7c Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 24 Mar 2024 21:46:07 +0800 Subject: [PATCH 075/423] Change \r\n to System.lineSeparator() --- src/test/java/supertracker/command/ListCommandTest.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/test/java/supertracker/command/ListCommandTest.java b/src/test/java/supertracker/command/ListCommandTest.java index f8d83c48d9..8865f8a482 100644 --- a/src/test/java/supertracker/command/ListCommandTest.java +++ b/src/test/java/supertracker/command/ListCommandTest.java @@ -14,7 +14,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class ListCommandTest { - private static final String LINE_SEPARATOR = "\r\n"; + private static final String LINE_SEPARATOR = System.lineSeparator(); private static final String LIST_INTRO = " There are 3 unique items in your inventory:" + LINE_SEPARATOR; private static final String INDEX_1 = " 1."; private static final String INDEX_2 = " 2."; @@ -157,5 +157,4 @@ public void listCommand_validData_correctlyConstructed_price_before_quantity() t public void restoreStreams() { System.setOut(originalOut); } - } From b3a9ac9bddcd27a49d2443232e3b32e80edb6620 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 24 Mar 2024 21:53:05 +0800 Subject: [PATCH 076/423] Rename test cases --- .../supertracker/command/ListCommandTest.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/test/java/supertracker/command/ListCommandTest.java b/src/test/java/supertracker/command/ListCommandTest.java index 8865f8a482..b29f666ec2 100644 --- a/src/test/java/supertracker/command/ListCommandTest.java +++ b/src/test/java/supertracker/command/ListCommandTest.java @@ -50,7 +50,7 @@ public void setUpStreams() { } @Test - public void listCommand_validData_correctlyConstructed_alphabetical_ascending() throws TrackerException { + public void listCommand_alphabeticalAscending_correctlyConstructed() throws TrackerException { String userInput = "list"; Command c = Parser.parseCommand(userInput); c.execute(); @@ -63,7 +63,7 @@ public void listCommand_validData_correctlyConstructed_alphabetical_ascending() } @Test - public void listCommand_validData_correctlyConstructed_alphabetical_descending() throws TrackerException { + public void listCommand_alphabeticalDescending_correctlyConstructed() throws TrackerException { String userInput = "list r/"; Command c = Parser.parseCommand(userInput); c.execute(); @@ -76,7 +76,7 @@ public void listCommand_validData_correctlyConstructed_alphabetical_descending() } @Test - public void listCommand_validData_correctlyConstructed_quantity_ascending() throws TrackerException { + public void listCommand_quantityAscending_correctlyConstructed() throws TrackerException { String userInput = "list q/ sq/ sp/"; Command c = Parser.parseCommand(userInput); c.execute(); @@ -89,7 +89,7 @@ public void listCommand_validData_correctlyConstructed_quantity_ascending() thro } @Test - public void listCommand_validData_correctlyConstructed_quantity_descending() throws TrackerException { + public void listCommand_quantityDescending_correctlyConstructed() throws TrackerException { String userInput = "list q/ sq/ sp/ r/"; Command c = Parser.parseCommand(userInput); c.execute(); @@ -102,7 +102,7 @@ public void listCommand_validData_correctlyConstructed_quantity_descending() thr } @Test - public void listCommand_validData_correctlyConstructed_price_ascending() throws TrackerException { + public void listCommand_priceAscending_correctlyConstructed() throws TrackerException { String userInput = "list p/ sp/ sq/"; Command c = Parser.parseCommand(userInput); c.execute(); @@ -115,7 +115,7 @@ public void listCommand_validData_correctlyConstructed_price_ascending() throws } @Test - public void listCommand_validData_correctlyConstructed_price_descending() throws TrackerException { + public void listCommand_priceDescending_correctlyConstructed() throws TrackerException { String userInput = "list p/ sp/ sq/ r/"; Command c = Parser.parseCommand(userInput); c.execute(); @@ -128,7 +128,7 @@ public void listCommand_validData_correctlyConstructed_price_descending() throws } @Test - public void listCommand_validData_correctlyConstructed_quantity_before_price() throws TrackerException { + public void listCommand_quantityBeforePrice_correctlyConstructed() throws TrackerException { String userInput = "list q/ p/ q/"; Command c = Parser.parseCommand(userInput); c.execute(); @@ -141,7 +141,7 @@ public void listCommand_validData_correctlyConstructed_quantity_before_price() t } @Test - public void listCommand_validData_correctlyConstructed_price_before_quantity() throws TrackerException { + public void listCommand_priceBeforeQuantity_correctlyConstructed() throws TrackerException { String userInput = "list p/ q/ p/"; Command c = Parser.parseCommand(userInput); c.execute(); From 7d8c1f886433d83f03f0461d3baa6f82a2dc584b Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 24 Mar 2024 22:07:47 +0800 Subject: [PATCH 077/423] Made expiry date optional for items and done format for input and output to be follow "dd/mm/yyyy" --- src/main/java/supertracker/parser/Parser.java | 7 +++++-- src/main/java/supertracker/ui/Ui.java | 9 +++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index fa02946189..33277531cc 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -14,6 +14,7 @@ import supertracker.item.Inventory; import supertracker.ui.ErrorMessage; +import java.time.format.DateTimeFormatter; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -213,12 +214,14 @@ private static Command parseNewCommand(String input) throws TrackerException { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } - CharSequence dateString = null; + String dateString = null; + LocalDate expiryDate = LocalDate.parse("01/01/99999", DateTimeFormatter.ofPattern("dd/MM/yyyyy")); boolean hasExpiry = !matcher.group(EX_DATE_GROUP).isEmpty(); if (hasExpiry) { dateString = matcher.group(EX_DATE_GROUP).trim().substring(2); + expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("dd/MM/yyyy")); } if (Inventory.contains(name)) { @@ -244,7 +247,6 @@ private static Command parseNewCommand(String input) throws TrackerException { throw new TrackerException(ErrorMessage.PRICE_TOO_SMALL); } - LocalDate expiryDate = LocalDate.parse(dateString); return new NewCommand(name, quantity, price, expiryDate); } @@ -381,4 +383,5 @@ private static Command parseFindCommand(String input) throws TrackerException { return new FindCommand(name); } + } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 6b9f26d8c2..8b30def5aa 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -2,6 +2,9 @@ import supertracker.item.Item; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + public class Ui { private static final String LINE = " --------------------------------------------------------------------------"; private static final String EMPTY_LIST_MESSAGE = "Nothing to list! No items in inventory!"; @@ -27,7 +30,7 @@ private static String newItemOpening(Item item) { return item.getName() + " has been added to the inventory!"; } private static String ExpiryDateMessage(Item item) { - return "Expiry Date: " + item.getExpiryDate(); + return "Expiry Date: " + item.getExpiryDate().format(DateTimeFormatter.ofPattern("dd/MM/yyyy")); } private static String updateItemOpening(Item item) { return item.getName() + " has been successfully updated!"; @@ -71,7 +74,9 @@ public static void newCommandSuccess(Item item) { printIndent(newItemOpening(item)); printIndent(quantityMessage(item)); printIndent(priceMessage(item)); - printIndent(ExpiryDateMessage(item)); + if (!item.getExpiryDate().isEqual(LocalDate.parse("01/01/99999", DateTimeFormatter.ofPattern("dd/MM/yyyyy")))) { + printIndent(ExpiryDateMessage(item)); + } } public static void updateCommandSuccess(Item item) { From 80c26700c9809cabb736628050a40be3d068f126 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 24 Mar 2024 22:14:20 +0800 Subject: [PATCH 078/423] Fix formatting issue --- docs/DeveloperGuide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 780d539dab..bb730830d7 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -67,6 +67,7 @@ object to `SuperTracker+handleCommands()` ### New Command The following is a class diagram of the NewCommand and its relevant dependencies ![NewCommandClass](uml-diagrams/NewCommandClass.png) + The `NewCommand` class implements the `Command` interface and is responsible for handling the creation of new items in the `Inventory`. A NewCommand instance is created by the `parseNewCommand` method called by Parser, which ensures that the provided parameters (name, quantity, price) are valid. @@ -77,6 +78,7 @@ A NewCommand instance is created by the `parseNewCommand` method called by Parse The following sequence diagram shows the execution of a NewCommand ![NewCommandSequence](uml-diagrams/NewCommandSequence.png) + 1. The `SuperTracker` class calls the `execute` method of `NewCommand` 2. A new `Item` object with the given parameters (name, quantity, price) is created and returned to `NewCommand` 3. The `put` method of the `Inventory` class is called to add the newly created item into the inventory From 803f214e6b7cf73eda4eed00dd1be7c5014bb86f Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 24 Mar 2024 22:47:18 +0800 Subject: [PATCH 079/423] exception handling for invalid date --- src/main/java/supertracker/parser/Parser.java | 16 ++++++++++++---- src/main/java/supertracker/ui/ErrorMessage.java | 1 + 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 33277531cc..21ed7ab59d 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -15,6 +15,7 @@ import supertracker.ui.ErrorMessage; import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -39,6 +40,9 @@ public class Parser { private static final String QUANTITY_GROUP = "quantity"; private static final String PRICE_GROUP = "price"; private static final String EX_DATE_GROUP = "expiry"; + private static final String EX_DATE_FORMAT = "dd/MM/yyyy"; + private static final String INVALID_EX_DATE_FORMAT = "dd/MM/yyyyy"; + private static final String INVALID_EX_DATE = "01/01/99999"; private static final String NEW_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) " + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) " @@ -215,13 +219,17 @@ private static Command parseNewCommand(String input) throws TrackerException { } String dateString = null; - LocalDate expiryDate = LocalDate.parse("01/01/99999", DateTimeFormatter.ofPattern("dd/MM/yyyyy")); + LocalDate expiryDate = LocalDate.parse(INVALID_EX_DATE, DateTimeFormatter.ofPattern(INVALID_EX_DATE_FORMAT)); boolean hasExpiry = !matcher.group(EX_DATE_GROUP).isEmpty(); - if (hasExpiry) { - dateString = matcher.group(EX_DATE_GROUP).trim().substring(2); - expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern("dd/MM/yyyy")); + try { + if (hasExpiry) { + dateString = matcher.group(EX_DATE_GROUP).trim().substring(2); + expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); + } + } catch (DateTimeParseException e) { + throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); } if (Inventory.contains(name)) { diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 9ecede975e..d84b9a9dfb 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -21,6 +21,7 @@ public class ErrorMessage { " Search came up empty, your item is not in our inventory. =("; public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; public static final String INVALID_NUMBER_FORMAT = "Invalid values for price/quantity"; + public static final String INVALID_DATE_FORMAT = "Invalid date. Follow \"dd/mm/yyyy\" format"; public static final String QUANTITY_TOO_SMALL = "Quantity should be more than 0"; public static final String PRICE_TOO_SMALL = "Price should be more than 0"; public static final String FILE_HANDLER_ERROR = "Error setting up file handler"; From c1191185de113b2c7a2c1ed77397a3fc977cfb38 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 24 Mar 2024 23:36:14 +0800 Subject: [PATCH 080/423] Edit JUnits that threw error due to changes when implementing expiry date --- .../supertracker/command/AddCommandTest.java | 6 +++- .../command/DeleteCommandTest.java | 6 +++- .../supertracker/command/ListCommandTest.java | 16 +++++++++-- .../supertracker/command/NewCommandTest.java | 28 ++++++++++++++++--- .../command/RemoveCommandTest.java | 9 ++++-- .../command/UpdateCommandTest.java | 15 +++++++--- .../java/supertracker/parser/ParserTest.java | 11 ++++++++ 7 files changed, 76 insertions(+), 15 deletions(-) diff --git a/src/test/java/supertracker/command/AddCommandTest.java b/src/test/java/supertracker/command/AddCommandTest.java index 45aaca45b7..6e86638117 100644 --- a/src/test/java/supertracker/command/AddCommandTest.java +++ b/src/test/java/supertracker/command/AddCommandTest.java @@ -7,6 +7,9 @@ import supertracker.item.Item; import supertracker.parser.Parser; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -23,11 +26,12 @@ public void addCommand_validData_correctlyConstructed(){ String name = "Milk"; int quantity = 100; double price = 5.00; + LocalDate date = LocalDate.parse("01/01/2113", DateTimeFormatter.ofPattern("dd/MM/yyyy")); int quantityToAdd = 50; int newQuantity = quantity + quantityToAdd; - Command newCommand = new NewCommand(name, quantity, price); + Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); Command addCommand = new AddCommand(name, quantityToAdd); addCommand.execute(); diff --git a/src/test/java/supertracker/command/DeleteCommandTest.java b/src/test/java/supertracker/command/DeleteCommandTest.java index 6ee62936bc..8f87704b7a 100644 --- a/src/test/java/supertracker/command/DeleteCommandTest.java +++ b/src/test/java/supertracker/command/DeleteCommandTest.java @@ -7,6 +7,9 @@ import supertracker.item.Item; import supertracker.parser.Parser; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -19,8 +22,9 @@ public void setUp() { int quantity = 100; double price = 5.00; + LocalDate date = LocalDate.parse("01/01/2113", DateTimeFormatter.ofPattern("dd/MM/yyyy")); - Command newCommand = new NewCommand(NAME, quantity, price); + Command newCommand = new NewCommand(NAME, quantity, price, date); newCommand.execute(); } diff --git a/src/test/java/supertracker/command/ListCommandTest.java b/src/test/java/supertracker/command/ListCommandTest.java index b29f666ec2..3aaffbc980 100644 --- a/src/test/java/supertracker/command/ListCommandTest.java +++ b/src/test/java/supertracker/command/ListCommandTest.java @@ -10,6 +10,8 @@ import java.io.ByteArrayOutputStream; import java.io.PrintStream; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -28,16 +30,24 @@ public class ListCommandTest { private static final String A_PRICE = " Price: $2.00"; private static final String B_PRICE = " Price: $1.00"; private static final String C_PRICE = " Price: $3.00"; + private static final String A_EX_DATE = " Expiry Date: 01/01/2113"; + private static final String B_EX_DATE = " Expiry Date: 13/03/2023"; + private static final String C_EX_DATE = " Expiry Date: 22/08/2013"; + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); private final PrintStream originalOut = System.out; @BeforeAll public static void setUp() { Inventory.clear(); + LocalDate dateA = LocalDate.parse("01/01/2113", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + LocalDate dateB = LocalDate.parse("13/03/2023", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + LocalDate dateC = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + Command[] commands = { - new NewCommand("Apple", 3, 2.00), - new NewCommand("Berry", 2, 1.00), - new NewCommand("Cake", 1, 3.00) + new NewCommand("Apple", 3, 2.00, dateA), + new NewCommand("Berry", 2, 1.00, dateB), + new NewCommand("Cake", 1, 3.00, dateC) }; for (Command c : commands) { c.execute(); diff --git a/src/test/java/supertracker/command/NewCommandTest.java b/src/test/java/supertracker/command/NewCommandTest.java index 4eb05a72a1..5731bc00a9 100644 --- a/src/test/java/supertracker/command/NewCommandTest.java +++ b/src/test/java/supertracker/command/NewCommandTest.java @@ -7,6 +7,9 @@ import supertracker.item.Item; import supertracker.parser.Parser; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -23,8 +26,8 @@ public void newCommand_validData_correctlyConstructed() { String name = "Milk"; int quantity = 100; double price = 5.00; - - Command command = new NewCommand(name, quantity, price); + LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + Command command = new NewCommand(name, quantity, price, date); command.execute(); assertTrue(Inventory.contains(name)); @@ -52,11 +55,13 @@ public void newCommand_itemAlreadyInList() { String name = "Milk"; int quantity = 100; double price = 5.00; + LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + + Command newCommand = new NewCommand(name, quantity, price, date); - Command newCommand = new NewCommand(name, quantity, price); newCommand.execute(); - String userInput = "new n/milk q/100 p/5.00"; + String userInput = "new n/milk q/100 p/5.00 e/22/08/2013"; assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); } @@ -69,6 +74,21 @@ public void newCommand_quantityOrPriceLessThanZero() { assertThrows(TrackerException.class, () -> Parser.parseCommand(invalidPriceInput)); } + @Test + public void newCommand_invalidExpiryDate() { + String invalidExpiryDateInput = "new n/milk q/100 p/5.33 e/hello"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(invalidExpiryDateInput)); + + String invalidExpiryDateInputNumber = "new n/milk q/100 p/5.33 e/5.33"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(invalidExpiryDateInputNumber)); + + String invalidExpiryDateYearFormat = "new n/milk q/100 p/5.33 e/22/11/22331"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(invalidExpiryDateYearFormat)); + + String invalidExpiryDateOrder = "new n/milk q/100 p/5.33 e/2113/11/13"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(invalidExpiryDateOrder)); + } + @Test public void newCommand_priceRoundedTo2Dp() throws TrackerException { String name = "Milk"; diff --git a/src/test/java/supertracker/command/RemoveCommandTest.java b/src/test/java/supertracker/command/RemoveCommandTest.java index 82dc388e70..b672e4f80d 100644 --- a/src/test/java/supertracker/command/RemoveCommandTest.java +++ b/src/test/java/supertracker/command/RemoveCommandTest.java @@ -7,6 +7,9 @@ import supertracker.item.Item; import supertracker.parser.Parser; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertThrows; @@ -26,8 +29,9 @@ public void removeCommand_validData_correctlyConstructed(){ int quantityToRemove = 50; int newQuantity = quantity - quantityToRemove; + LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); - Command newCommand = new NewCommand(name, quantity, price); + Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); Command removeCommand = new RemoveCommand(name, quantityToRemove); removeCommand.execute(); @@ -71,8 +75,9 @@ public void removeCommand_exceedCurrentQuantity() { int quantityToRemove = 100; int newQuantity = 0; + LocalDate date = LocalDate.parse("22/08/2033", DateTimeFormatter.ofPattern("dd/MM/yyyy")); - Command newCommand = new NewCommand(name, quantity, price); + Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); Command removeCommand = new RemoveCommand(name, quantityToRemove); removeCommand.execute(); diff --git a/src/test/java/supertracker/command/UpdateCommandTest.java b/src/test/java/supertracker/command/UpdateCommandTest.java index 5468541f32..5695fecfcb 100644 --- a/src/test/java/supertracker/command/UpdateCommandTest.java +++ b/src/test/java/supertracker/command/UpdateCommandTest.java @@ -7,6 +7,9 @@ import supertracker.item.Inventory; import supertracker.item.Item; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -22,11 +25,12 @@ public void updateCommand_validData_correctlyConstructed(){ String name = "Milk"; int quantity = 100; double price = 5.00; + LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); int newQuantity = 200; double newPrice = 3.00; - Command newCommand = new NewCommand(name, quantity, price); + Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); Command updateCommand = new UpdateCommand(name, newQuantity, newPrice); updateCommand.execute(); @@ -44,8 +48,9 @@ public void updateCommand_invalidInput() { String name = "Milk"; int quantity = 100; double price = 5.00; + LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); - Command newCommand = new NewCommand(name, quantity, price); + Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); String userInput = "update n/Milk p/-1"; @@ -57,8 +62,9 @@ public void updateCommand_emptyParamInput() { String name = "Milk"; int quantity = 100; double price = 5.00; + LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); - Command newCommand = new NewCommand(name, quantity, price); + Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); String userInput = "update n/Milk p/"; @@ -70,8 +76,9 @@ public void updateCommand_itemNotInList() { String name = "Milk"; int quantity = 100; double price = 5.00; + LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); - Command newCommand = new NewCommand(name, quantity, price); + Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); String userInput = "update n/apple q/20 p/3"; diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java index cc1fc9b081..73bcc4173d 100644 --- a/src/test/java/supertracker/parser/ParserTest.java +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -25,6 +25,17 @@ public void parseCommand_validNewCommandInput_newCommand() throws TrackerExcepti } } + @Test + public void parseCommand_validNewCommandInput_newCommand_withExpiry() throws TrackerException { + String[] inputs = {"new n/apple q/50 p/99.5 e/22/06/2024", "new e/12/11/2033 p/99.5 q/23 n/ball", + "new q/88 e/02/12/2024 n/cookie p/1.50"}; + + for (String input : inputs) { + Command resultCommand = Parser.parseCommand(input); + assertInstanceOf(NewCommand.class, resultCommand); + } + } + @Test public void parseCommand_validUpdateCommandInput_updateCommand() throws TrackerException { Command newItem = Parser.parseCommand("new n/banana milkshake q/11 p/12.2"); From 3f8a63739a927fe3e86ae955335429a8d24ef390 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Mon, 25 Mar 2024 00:09:44 +0800 Subject: [PATCH 081/423] Fix checkstyle errors --- src/main/java/supertracker/ui/Ui.java | 4 ++-- src/test/java/supertracker/parser/ParserTest.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 1513031e44..7749933dc9 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -34,7 +34,7 @@ private static String quantityMessage(Item item) { private static String newItemOpening(Item item) { return item.getName() + " has been added to the inventory!"; } - private static String ExpiryDateMessage(Item item) { + private static String expiryDateMessage(Item item) { return "Expiry Date: " + item.getExpiryDate().format(DateTimeFormatter.ofPattern("dd/MM/yyyy")); } private static String updateItemOpening(Item item) { @@ -88,7 +88,7 @@ public static void newCommandSuccess(Item item) { printIndent(quantityMessage(item)); printIndent(priceMessage(item)); if (!item.getExpiryDate().isEqual(LocalDate.parse("01/01/99999", DateTimeFormatter.ofPattern("dd/MM/yyyyy")))) { - printIndent(ExpiryDateMessage(item)); + printIndent(expiryDateMessage(item)); } } diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java index 73bcc4173d..533feedbd9 100644 --- a/src/test/java/supertracker/parser/ParserTest.java +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -26,9 +26,9 @@ public void parseCommand_validNewCommandInput_newCommand() throws TrackerExcepti } @Test - public void parseCommand_validNewCommandInput_newCommand_withExpiry() throws TrackerException { + public void parseCommand_validNewCommandInputWithExpiry_newCommand() throws TrackerException { String[] inputs = {"new n/apple q/50 p/99.5 e/22/06/2024", "new e/12/11/2033 p/99.5 q/23 n/ball", - "new q/88 e/02/12/2024 n/cookie p/1.50"}; + "new q/88 e/02/12/2024 n/cookie p/1.50"}; for (String input : inputs) { Command resultCommand = Parser.parseCommand(input); From 2dbd8c68f69fadea2a62539fc438bcb2611ef989 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Mon, 25 Mar 2024 00:25:38 +0800 Subject: [PATCH 082/423] Change input date format and add author tag --- src/main/java/supertracker/parser/Parser.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index a74e5b1c86..2b4aefe528 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -42,9 +42,9 @@ public class Parser { private static final String QUANTITY_GROUP = "quantity"; private static final String PRICE_GROUP = "price"; private static final String EX_DATE_GROUP = "expiry"; - private static final String EX_DATE_FORMAT = "dd/MM/yyyy"; - private static final String INVALID_EX_DATE_FORMAT = "dd/MM/yyyyy"; - private static final String INVALID_EX_DATE = "01/01/99999"; + private static final String EX_DATE_FORMAT = "dd-MM-yyyy"; + private static final String INVALID_EX_DATE_FORMAT = "dd-MM-yyyyy"; + private static final String INVALID_EX_DATE = "01-01-99999"; private static final String SORT_QUANTITY_FLAG = "sq"; private static final String SORT_PRICE_FLAG = "sp"; private static final String REVERSE_FLAG = "r"; @@ -318,6 +318,7 @@ private static Command parseListCommand(String input) throws TrackerException { return new ListCommand(hasQuantity, hasPrice, firstParam, sortBy, reverse); } + //@@vimalapugazhan private static Command parseDeleteCommand(String input) throws TrackerException { String[] flags = {NAME_FLAG}; Matcher matcher = getPatternMatcher(DELETE_COMMAND_REGEX, input, flags); From 1ba2f9b3ebd0f2c7b879e6d9962ea962c7e8b8b1 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Mon, 25 Mar 2024 00:29:04 +0800 Subject: [PATCH 083/423] Fix expiry date format in JUnit ParserTest --- src/test/java/supertracker/parser/ParserTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java index 533feedbd9..ecf5303819 100644 --- a/src/test/java/supertracker/parser/ParserTest.java +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -27,8 +27,8 @@ public void parseCommand_validNewCommandInput_newCommand() throws TrackerExcepti @Test public void parseCommand_validNewCommandInputWithExpiry_newCommand() throws TrackerException { - String[] inputs = {"new n/apple q/50 p/99.5 e/22/06/2024", "new e/12/11/2033 p/99.5 q/23 n/ball", - "new q/88 e/02/12/2024 n/cookie p/1.50"}; + String[] inputs = {"new n/apple q/50 p/99.5 e/22-06-2024", "new e/12-11-2033 p/99.5 q/23 n/ball", + "new q/88 e/02-12-2024 n/cookie p/1.50"}; for (String input : inputs) { Command resultCommand = Parser.parseCommand(input); From ccdfe8515bcf7af11704c751bc26cd7b0e362ffb Mon Sep 17 00:00:00 2001 From: vimalapugazhan <111181615+vimalapugazhan@users.noreply.github.com> Date: Mon, 25 Mar 2024 00:34:39 +0800 Subject: [PATCH 084/423] Update src/main/java/supertracker/parser/Parser.java Co-authored-by: rismm <110659916+rismm@users.noreply.github.com> --- src/main/java/supertracker/parser/Parser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 2b4aefe528..90885adb11 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -247,7 +247,7 @@ private static Command parseNewCommand(String input) throws TrackerException { try { if (hasExpiry) { - dateString = matcher.group(EX_DATE_GROUP).trim().substring(2); + dateString = matcher.group(EX_DATE_GROUP).trim().replace(EX_DATE_FLAG + BASE_FLAG, ""); expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); } } catch (DateTimeParseException e) { From cef50a944ccc07e76e29dd9c97f84a79e2540144 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Mon, 25 Mar 2024 01:30:39 +0800 Subject: [PATCH 085/423] change invalid date to null --- src/main/java/supertracker/command/NewCommand.java | 1 - src/main/java/supertracker/parser/Parser.java | 6 ++---- src/main/java/supertracker/ui/Ui.java | 9 +++++++-- .../java/supertracker/command/RemoveCommandTest.java | 3 +-- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/main/java/supertracker/command/NewCommand.java b/src/main/java/supertracker/command/NewCommand.java index 5cd21f3251..0ac6ce6fcf 100644 --- a/src/main/java/supertracker/command/NewCommand.java +++ b/src/main/java/supertracker/command/NewCommand.java @@ -10,7 +10,6 @@ public class NewCommand implements Command { private String name; private int quantity; private double price; - private LocalDate expiryDate; public NewCommand(String name, int quantity, double price, LocalDate expiryDate) { diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 90885adb11..aa14d0c2d1 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -43,8 +43,6 @@ public class Parser { private static final String PRICE_GROUP = "price"; private static final String EX_DATE_GROUP = "expiry"; private static final String EX_DATE_FORMAT = "dd-MM-yyyy"; - private static final String INVALID_EX_DATE_FORMAT = "dd-MM-yyyyy"; - private static final String INVALID_EX_DATE = "01-01-99999"; private static final String SORT_QUANTITY_FLAG = "sq"; private static final String SORT_PRICE_FLAG = "sp"; private static final String REVERSE_FLAG = "r"; @@ -240,8 +238,8 @@ private static Command parseNewCommand(String input) throws TrackerException { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } - String dateString = null; - LocalDate expiryDate = LocalDate.parse(INVALID_EX_DATE, DateTimeFormatter.ofPattern(INVALID_EX_DATE_FORMAT)); + String dateString; + LocalDate expiryDate = null; boolean hasExpiry = !matcher.group(EX_DATE_GROUP).isEmpty(); diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 7749933dc9..773e059ae2 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -1,5 +1,6 @@ package supertracker.ui; +import supertracker.TrackerException; import supertracker.item.Item; import java.time.LocalDate; @@ -87,8 +88,12 @@ public static void newCommandSuccess(Item item) { printIndent(newItemOpening(item)); printIndent(quantityMessage(item)); printIndent(priceMessage(item)); - if (!item.getExpiryDate().isEqual(LocalDate.parse("01/01/99999", DateTimeFormatter.ofPattern("dd/MM/yyyyy")))) { - printIndent(expiryDateMessage(item)); + try { + if (!item.getExpiryDate().isEqual(null)) { + printIndent(expiryDateMessage(item)); + } + } catch (NullPointerException e) { + } } diff --git a/src/test/java/supertracker/command/RemoveCommandTest.java b/src/test/java/supertracker/command/RemoveCommandTest.java index b672e4f80d..f5fcdf9481 100644 --- a/src/test/java/supertracker/command/RemoveCommandTest.java +++ b/src/test/java/supertracker/command/RemoveCommandTest.java @@ -29,9 +29,8 @@ public void removeCommand_validData_correctlyConstructed(){ int quantityToRemove = 50; int newQuantity = quantity - quantityToRemove; - LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); - Command newCommand = new NewCommand(name, quantity, price, date); + Command newCommand = new NewCommand(name, quantity, price, null); newCommand.execute(); Command removeCommand = new RemoveCommand(name, quantityToRemove); removeCommand.execute(); From 27e9c8a45ec1258d0e213f227d372118e1b5013b Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 25 Mar 2024 22:35:01 +0800 Subject: [PATCH 086/423] add UML diagram and sequence diagram --- docs/uml-diagrams/NewCommand.puml | 2 +- docs/uml-diagrams/UpdateCommand.puml | 92 ++++++++++++++++++++++++++++ 2 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 docs/uml-diagrams/UpdateCommand.puml diff --git a/docs/uml-diagrams/NewCommand.puml b/docs/uml-diagrams/NewCommand.puml index 7d9bf78af6..55ee1140af 100644 --- a/docs/uml-diagrams/NewCommand.puml +++ b/docs/uml-diagrams/NewCommand.puml @@ -30,7 +30,7 @@ class NewCommand { } class Item { - +Item(name:String, quantity:int, price:double) + +Item(name:String, quantity:int, price:double, expiryDate: LocalDate) } class Inventory { diff --git a/docs/uml-diagrams/UpdateCommand.puml b/docs/uml-diagrams/UpdateCommand.puml new file mode 100644 index 0000000000..7bb330671d --- /dev/null +++ b/docs/uml-diagrams/UpdateCommand.puml @@ -0,0 +1,92 @@ +@startuml +'https://plantuml.com/class-diagram +skinparam classAttributeIconSize 0 + +interface Command +class Ui +class Inventory +class Item +class UpdateCommand +class Parser + +UpdateCommand <.. Parser +Command <|.. UpdateCommand +Ui <.. UpdateCommand +Inventory <.. UpdateCommand +Item <.. UpdateCommand + +interface Command { + +execute():void + +isExit():boolean +} + +class UpdateCommand { + -name:String + -newQuantity: int + -newPrice: double + +UpdateCommand(name: String, newQuantity: int, newPrice: double) + +execute(): void + +isQuit(): boolean +} + +class Item { + +Item(name: String, quantity: int, price: double, expiryDate: LocalDate) +} + +class Ui { + {static}+updateCommandSuccess(item:Item): void +} + +class Parser { + {static}-ParseUpdateCommand(input:String):NewCommand +} + +class Inventory { + {static}+get(name:String):Item + {static}+put(name:String, item:Item):void +} + +@enduml + +@startuml +hide footbox +participant "SuperTracker" as SuperTracker <> #f5e3a9 +participant ":UpdateCommand" as UpdateCommand #cbf7f4 +participant "Inventory" as Inventory <> #d5eac2 +participant "Ui" as Ui <> #e5c2ea +participant "oldItem:Item" as Item #fbffb2 + +SuperTracker -> UpdateCommand : execute() +activate UpdateCommand #cbf7f4 + +UpdateCommand -> Inventory : get(name:String) +activate Inventory #d5eac2 +Inventory --> UpdateCommand : oldItem:Item +deactivate Inventory + +alt newQuantity == -1 + UpdateCommand -> Item: getQuantity() + activate Item #fbffb2 + Item --> UpdateCommand: oldItemQuantity + deactivate Item + UpdateCommand -> UpdateCommand: newQuantity = oldItemQuantity +end +alt newPrice == -1 + UpdateCommand -> Item: getPrice() + activate Item #fbffb2 + Item --> UpdateCommand: oldItemPrice + deactivate Item + UpdateCommand -> UpdateCommand: newPrice = oldItemPrice +end + +UpdateCommand -> Inventory : put(name:String, item:Item) +activate Inventory #d5eac2 +Inventory --> UpdateCommand +deactivate Inventory + +UpdateCommand -> Ui : updateCommandSuccess(item:Item) +activate Ui #e5c2ea +Ui --> UpdateCommand +deactivate Ui + +@enduml \ No newline at end of file From 02fa6d85c3c69af02515b674d262cd53eac84c16 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 25 Mar 2024 22:39:20 +0800 Subject: [PATCH 087/423] Add pictures of uml diagram and sequence diagram --- docs/uml-diagrams/UpdateCommandClass.png | Bin 0 -> 60080 bytes docs/uml-diagrams/UpdateCommandSequence.png | Bin 0 -> 47255 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/uml-diagrams/UpdateCommandClass.png create mode 100644 docs/uml-diagrams/UpdateCommandSequence.png diff --git a/docs/uml-diagrams/UpdateCommandClass.png b/docs/uml-diagrams/UpdateCommandClass.png new file mode 100644 index 0000000000000000000000000000000000000000..ce07a6179e8a3b6b5f61150815d89446a99acd66 GIT binary patch literal 60080 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­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

Mbnq&t-jGK$c)$viZ+b&I`mM+fqaPM! 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 literal 0 HcmV?d00001 diff --git a/docs/uml-diagrams/UpdateCommandSequence.png b/docs/uml-diagrams/UpdateCommandSequence.png new file mode 100644 index 0000000000000000000000000000000000000000..7a92d8d810f770601ccc0e64a05662692894e0ac GIT binary patch literal 47255 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 literal 0 HcmV?d00001 From fb87539274fb7c80747fb6b1a4d230508d8ba49c Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 25 Mar 2024 22:43:11 +0800 Subject: [PATCH 088/423] Add updated NewCommand UML diagram --- docs/uml-diagrams/NewCommandClass.png | Bin 29608 -> 50353 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/uml-diagrams/NewCommandClass.png b/docs/uml-diagrams/NewCommandClass.png index e2176d816abc79dee59c679df9f5c69b6fa12d39..2a41161fa36cae4b4ad439b1e011cdb40ea67047 100644 GIT binary patch literal 50353 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

el-_X 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 UydrQL|IM9eH7{tCs9A>oAA`h9Hvj+t literal 17689 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 K$(B5X!u}78{X@e5 From 6e60bd8abf72da5e54e1d8a93e2c5e2d9d3f81a8 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 25 Mar 2024 23:12:10 +0800 Subject: [PATCH 090/423] Update sequence diagram for UpdateCommand --- docs/uml-diagrams/UpdateCommand.puml | 7 +++---- docs/uml-diagrams/UpdateCommandSequence.png | Bin 47255 -> 39910 bytes 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/uml-diagrams/UpdateCommand.puml b/docs/uml-diagrams/UpdateCommand.puml index 7bb330671d..6bf1d199de 100644 --- a/docs/uml-diagrams/UpdateCommand.puml +++ b/docs/uml-diagrams/UpdateCommand.puml @@ -64,19 +64,18 @@ activate Inventory #d5eac2 Inventory --> UpdateCommand : oldItem:Item deactivate Inventory -alt newQuantity == -1 +opt newQuantity == -1 UpdateCommand -> Item: getQuantity() activate Item #fbffb2 Item --> UpdateCommand: oldItemQuantity deactivate Item - UpdateCommand -> UpdateCommand: newQuantity = oldItemQuantity end -alt newPrice == -1 + +opt newPrice == -1 UpdateCommand -> Item: getPrice() activate Item #fbffb2 Item --> UpdateCommand: oldItemPrice deactivate Item - UpdateCommand -> UpdateCommand: newPrice = oldItemPrice end UpdateCommand -> Inventory : put(name:String, item:Item) diff --git a/docs/uml-diagrams/UpdateCommandSequence.png b/docs/uml-diagrams/UpdateCommandSequence.png index 7a92d8d810f770601ccc0e64a05662692894e0ac..343057294aa183f81e409fd2f7e5636163d01634 100644 GIT binary patch literal 39910 zcmafbby!^AvLzvqAVC5l1Oma`-CY~^-~okhHi892~qf9Ndcmq*uT@KKQ+g zz{?9K6)91;@==04-~ho)L|z0At|}V!-VhNuMz)vMa)N_H|MmRyqR+0-1bEZXLQT_I z)z-pZ-qhL9#L(Fgcn=QFi`3ZK!d}VF!q(Y|lvl@#)SZ-mOwx{&**a9TdKX-nreE@l)hGf}0x^cW1`h z@$oTw=Q2YhHgV%?B=k=3)5HGPsJ0&40eH8XRj)CAzGVTv$(n|98+8{KxHLkN08CLN zk`-^WRxIE(0Mq|kJLZ#sCpnd3W&$pg{s)dND{OLUOi&zoXaEY%U?E9>x9n&J9~GDF z60;1sOae8QkdJrnmKT2>kx+wg$m%+wU#;af7LSj44MYwf1phk6Z%^m+Z2BXQ<3 zY`iK84x`}|mS{VtVkUoVxd0z19imL(9WXA*(B!t0t;_GA*X(*oLLwT#Y$^2Su1cyP zGmhI*B@~nQyRwzuF@GyrL3vh;f&lMbF>tkC!NT9S%`alECJQAsa)Z3BBo*cv(NeGT zDMDlHx+~xMQ|PUTyE?p^DI}r1KE9`e&1NO#N9ugwAo|+9_BM`8Sw9qW=5C{ZYZU5c zGPHL&*(hP08+1eE{Uc;eLpFoHTA9@6#S+F6u4sS5dgmtWofHw=!}rHiwCH1@D{2P> z`?f~g4WUz#7)&SehSXK~YyYY*0p5Jv!`GWP^}hUdM7Ou6P$jgt&!*)T@e_Zx@CE`R z*0a?^u-{4lV|)cA;{VTp8!x|v5^*Z6CLgFWX#l2`Qj-#RzV&OcGHH9Z=7VUpZ6AKF zc)#y2160VO+o%4_mjx7tOXiYjBmpThaRP_I`k=kC1J>Ou) zsQCUMtYkCqBUk?D)K>@|n%GRPJ=#j4d%l`CkNzSw{*nK0^5MLz(kCHLqp2_gK4%rt zU}PExtX3RpGex}^J>SD*D0-InP74~$@8?3>(YK{W*CF6cMbJ^p#U@qUNc^XvlG%!_ zHG|hCeVsOEy8~po8e3!W!Q{^U%vevp$PxH37XxmJ#j7VnJHGql^Nw~Rq~fF3^#ei; z<#=^=JU&-UHhkdI1Z6RPG$G*mTD>UQ_i2mQ;a*R)HYK)Iy z)mdbcE#p@2QaLmr41zpeh=Nat8#tG?p*u8K%97hIa z(uVpp2>3pV;y+F5TPE5vZUzmOKgU+w=HxPXDoKQgPDN-fEAxy2gYyYgDI$K+r*2g#xraZN`)-J8}h;4*Zj6 zIu}8r(qfE8qYeGZ@9~F1^i;di)@M(!I9yJbS-*PWn#XvL-R9+pCs$H)hSflX>2HWh zuF+(*0o$`-7&OmY%A->`L>Zr)v}QvuZ~nmVjeJa-vgK7F4ZvW)AQFm4se3Jx%`as6 zQCx98^&!vlmY~{7UTD6p9tr`yRg{$1E<3`M7Ro=nt7HCpW{JZn)qs)A0dhzEukL;tYW&br&QxNbMo!@y<3I$R>J6b~uclB44! zYCaDJ*63qgQcsW#jAw36!(X0lTcrqC#LoEAjhjV!aVGpVZ2x?qRE9oHZkKew@M=P} zO%I30pfIO2trj$+xI#~ZT@VLCr8I}F#|Klm#IZL=@ggM?I$aNbHw-t09WFawP2$ai z-IMF>=9)$y^&Ul&qV#E0VZ$*iBQQ|bX?GN zj9JrH=CL`lC#M3yeeGY$rc|59&0rs#jv%VUyJBx$9&oAD>7vut`qh{F; zOsTdtUw@O(Xb}6$)r3?1W|cr9Imy*I5V>1^^;WGxSGH(&0~eIU8e4Cpc^b^`bth-Z zQ4TR>w%5glT^riy33>hvfJn!y&0293lRIfdPc%YawnXB>b8nkZC9lEN-rT))e^EO7#|+ z2l{H9nrP>@Big*Ks}G0F(tf9{qoij85G)4^Ya|8r6 zd~U}HI}P>Hy+o^b_E7RgSE6L2M9+adAu8#tY}D=k)9`9X1*%;2sj?v9L#<8i4;*$) zCb&EUtQ>KwUXrpA=Bu(TpV&+mmPTA1u=R{2qYDk>N;nB(tbFBTV@SU5dts(cf!FwX zOmIaw=yqcLmaY2TRuRYRf16dv%sx7q-Y$USsJv)XxNBp@Z&nVnknb0aA|ChC*juZ* zL8_l$xl}N2%b0LzLkYal(-VKjI!gZ;PKiv#IKQiVz+G$gaNOHhKi#vT(m=>snqx7N z&O6(t_|oxBKe7AB`D9URaB9#h!Mm?LBRDTg@0|@_yIe1NCM{KTW+DhR_(Rzhc%cUy zVQhRrAR@Iv_W{GCDgSQHMX z1aAdCw3MCfD#S5pvB132K8t`qk?tnl*O=3U$i)M~?X za)+XZVv78?D{7=nS7HJsOOoB2t#J7_z1$xvUA9gRe1{abeG(%` z#1mwFN)vTHeY`wXcclSH??qSr=OB;qcm1)dQV^Mm;>lbKyAwe^uiJ==kE=Q})&>kb ztXm0&gpvc-hR|8g@m59bI`ha~c5M|LSxSM_%cM9DnU7_HDa}4{wI?ex)Zp~M--?LXH6wiDfJtCs>gZBW> zf3{+l>k2|6`30MrIP(uyG?{{^PgZJ>%vWB9)E={{j}m^Mv*IF*+m8$y@{{)`_f)IE za2OLgpDwF6RyV*Al2X)7nv`I(SnL&wlFn=PcZS|N<|k2BGUEnoGM$$YbI z!SE`xa?e=N<_<*oG<~7oX-LpQJ2&_EdS?mG^dYQFrPccdvh`DWSAAqjU9#N#Z&0wH zJ`2Yp*HLVgJZ!KwkIdxp!qoAu+XIg$HyXiVy=6oXey>ii+oUK)B*=xp^vM>D7J9D% zLT41D^@D#kd3C3EAoD}XFwcOl;s+!+nyA0~b~Dd)zPZ}v{*X%K1st$vyew85OWvZjBk_Z-jeky9qkf*x+)iZ5oImI>b- zROD8B9+6utu@^kNj?O~DsDE?gOTc1X^KRHcHjYZsaLOmu&J*`9Nufc_&--?hmgYgD zo)BssR{}O|2`s9JYzN6k?(woGejK)J(O1{&`YmoxvD%@e5*K&s&V!7Oy$X6{Lgb-k z+woV9{xingcOzcfqnSKS;*kXUpM*T}9TXxL6=IHBqOEjt5Ln1ZFdXX8(s`bu>zUFQ zB+&`#g(41j*xZatDoCSr*H55NNlH)QAcrl(HJ{D)%|~qL%l5_MDH<|5-11q?9P_8} z;@p0@4T^{|vgzTI`gJg6KX1zqWIWo&=Goz!T;CI+m^G5`vH>CMb>5E`6p`363Bw0Z z_e&|^lSNtvO)kHz)NFf8EhtnHkj^d!RO{T`Y&evzj_yW9}6@xk$ex130WtzydBQ_jZc-p?!#Jf*26YgZO7K+u@jV30~w)>B@=&6 z*@fzbBOMym2Z|M%c?eZl#o=Sl*%?o;^m@e;F4<^g+$D(qZ$auPUBm6-)jW%H-FH$3 za2GUp@4<&CtM>|O6+dJVF?OelTbJs>3FGfLP|UwL_j;F6h^@?=^_4@XmR~h|2pEhm zYHKG)*^w<^5#MuaNVqp`F1BKnsGh^3j+xyi+2yl~nu=p|qodJmZ-ER<=o&pS#i`L} z$md8PGiB%`$A`JR+Vf(=wI&OW%AD1t{>EJx`U~HJe{$Uz*Thec8WH1a^$BljB$4hj zxe9$nBm9Qe+CQ@=Q8XBM^u2E=<9DOH{O$G1OTE{LR>?Cb^(s7;(gTOnrmIn6`?mh! zQZH*&y?ThYhqEL$L&D5TD5t}?l8$X&$!=_&wv`?7oSVj$HnCcIMXJc>+5e%%BGX`} z(Po5-N8wLAZk8vpm#v7b>QK5d@I3C&L>nLa2 znC0wM;56^PBLn+KO44t{Ey9<1-PB9#}BLq%DfipE)`+9bj4) z4Ngp-t_JP(_T(+EamLa6INHgotBVnCT3b0qz?>>`Mz+R~P+kfsWysww72>qnm-|XsKRMB~> z;-=YkB==|M;!YtZ^MmMdq~JUvx`L1`a6ju4DL_!T&t@fHt|D8(kgBamX!Leo+h{HA ziwH*;Y|thYi>6dNj6fvJ532CUKyn0=jVCS7y8U@K(-Y+7w%@}BI#rd-4RS}3ayyCb z7WsZVh$gGMAeh!o-9EF5-Ijpbd)4 zW40}p?=S`v`-%=12+GaDAq&j4bIS4JXoP9r;Vb;`D*9ECeZb`d??`cheP} zdp_S&-kA4+(MRsWHg>B$oL8dlZ^T|7#c42jeautb+_CYv$x9HFhp$6Q*+A+JdEco+ z@S+N^`<~FivlXMk;O5hE`j80&+VFji0`(68g zB4%EECk1yZMl(ry=~`l_mYT~A|6w3WP&O6#AQG-%L_LM#QR3$Tp_g<@sU{W_THm(> z@80;$=X1k{5Xoe)mo@01X>K6LNxuSFd#dKA~}4A4}F%4x{?1gKv0(W0k&2}uU(}R6sf}qWm;a($iCBY z*qi~+*B{)xPIkhr_^8v2F}xoQ76M;&6`uMMEY<5BFSpwytT>+UtMfFwRVX`VK*uuU zQK=O1@|b>wn~j;APnxn?-5_akcttJU?GWYmc=G%FRYJc%<;-P1)#3NJSHl({b>g_a zA{M)9&pmm1>- z8fg88GTDqjxe(zdTV6J(7S}4{#?pxYYsCxh&*klO%=f65sP9x_w}yLrWFdN{71k|T zztWX+O&p<*l6#xFykJS~1R67daRvp3L%y^Iu;v(3&9_+841Zu%lOcZ)Ns>#kv^HcI zB@|-3Ji}#|>8^0tyT>WguP$0@emsJr{*l+A{oU8hnelyE6Y7+qX7_oT`W9kQ(OYf5 z46k*Qq-}NtoB&L%8jQ!f7 zP#i_SG8ULQD^7&vnVyF>ALBY`5!W5EYYo01A`NbM6Z>3A3mm+XZm7q}(}IB<53ZoS z8V1R6fxdB@Et31+2P`^kmF3$G7C6CA^g~;VPG^4&d9IUZ`Q6*s|BmWSW^1Dr{myQq z=e;Xd7)eJGN#o7n+0Qat)?&*mo^?&#|_#H zL?Y{D2RRKpZfZ84RnofDs07aC{DC~WhT0JX+p7BI0@=u3GUvDjKJ@%wE@>DC5%=I= zhJ;sTeQoC}*M2mzo)}s`<5y>FShUAp>o&PcT^r<1*x%Omd`RK&E#V$+C&eHVNc1C1 z-t}NVVIF|tr#HDilpjCsp2|u__Mg?kF77Qk@kpF-ZO*FKIt}-rycH`?>>SBUg?71a*BM<-%l2K%BOIeSMqyoU0S`AJ6=@u z8I0GVWiPdxa#zk)eo3QogxlnMa8z+4w&*6kN;%>zRLLp;zIPR}AJOA?(e8CQDcTWm z+cIwx+9k7&K5z5-J%j+>=|xN7asHvp?VxhUVMD2BIUNg5JHjA^J@#H7mMxAEaO%Pa zw<;cBrb;CutavvkZ(PZq(zuLQ# zx9pcQCF)oDS+I-6gh2yKlNT&g4xdM7+5ZUtDlYGQX4m5$d|F%;h|B%wl&l~!&SkFI zE&Sf)Pub#tkp1B%EFcjPnt{tgWxG?pllW{uY`_+x{1eWyfk==;I^vj{-%5 z{vQ+iV_lD6-2QpCS?7o0y%Nj$PKRcfl%roRT;?65JmCFe=Y3|eYa!1q8G)6HqK|pn zI2D`A&D*B*eg%0_4Lpv=hb<(Si;p+54Ej=0x(RQ8C4H>B8e2RpQ>j@{s&iz}{i`8G z@N`fumsTyJ7g}e9p6ux&RV1rKz3jyO-Vy0miV5B13SZJ*Be;bg zad8m4Wo=>|)pv~hn6zcz)LTnVMScWuk@F>lq z2om?_9i?M_ifk9OdXPKMRZdpR@hme+SAM|~R3S(HKpk`ZQI+X%rBZo+Ym|yaEHEkJ z%D6Ld=I0kfkK2tvl$e)`^|JL{fe~#m$gje;aWq-8=~|c$+&j_}xuAutn!!87@U2;I zL=IQvVSG-})OU2*PjjIv`7z3R%`!*29wtN8+szM|@@WvWhoEK#gvrKFZIB11X>x@P zax8Xt`(>_`r?XopP#kBZ-0r;W`$a^Ij=FWtbyCSGt6moT_q3#D(GPh?A8{Gu>Jv-$ zAEc87(oiaRJ6o>wWzY1fasD( z9~hwTtROYJ!7#yyH@mDd%Z`+&N1~P|qheUp_QcN>XY&Db27t|bri;DHDh0Z9IJ{qu zw( z7gkMY*E1vsPHIfgl?M{C^APHU?3}h0D7;*=;<6^|{=O%R5@r?_Hod2*3P8rz#h)fJ zuDwC1S?UXUD>7@`6GqoJfd%;zmt0+j(ik4M)d|6@^I1FG%#w;q*3Vcd*Y zhr#b0AV+qpE=eB-tYn%}UvB-KK<$0s{*rCu zxu}$RH%OiP`kpp)Q!2Sib=Fd6Oav?5B$y!gWBsxO38CIM zrS!2ad^lzNEQ4oOP%@*~!*pXjXfhu}Q^zmzH zSKf+Feeh3=k6tlon{|HsqNxE|X}k3J871L>@%CsZyuGtk0Mq6nm?;Ta3|}UmR|2Au z$j|C#M29B?F4J|bbWLQ4mB^1Ur*Gp`%ReJY?x41>q_3ZJ+v%ru8WMs8nnAI&iFu%t z%s6rv%eqSO5G;vFlM&KRvB1gtFC?P<{ZSctM!7*Ni^fo{a$V)2+1y|Zb#d{iPs?*K zm>+Sc&zft=bbVw(sk&-!xgG=8Ne&nUmnvlJ~ z*k{qO5WBFtej#Y`Cu>21$=|OcmN{){j34WW+g_nEB8L(!i){_R?NXYD8 z*JdFCr|FHzE23C^jW3!x#N9bP5jm!3N4s-A&G*1M&c#P1vEtcbGP+sk_)6Eo6;NPEEM{!g(}6)Uz^<5gCg*&M12hAH1IhYb9Mw>BvJQf&HR>Hc1#KU zdaOG)t~}ExHt~zOOU+K=IgbXVcgk@n#Cp4{-J)To8H}jpaww=I4$d%po_gcPH;4Lq z$4g#6jRq##E@+rptO2zzGVUQu(3q9S{wBTrM8I8=QMbK_k;%!g#OjHp!Zn80gFqcx z9>=+@bG;T_v|)8W)wSI+)vT7cf?20v7=X|1ywz$Voi^U*A&P)Anl?%u+P>43_i_I# zyPu}F?Gp#5*#zgwIT7pErmzD4D{$%;qb0kr2XE_M+-$NNN9S}TtPU)rI7->Cb-U?2 zu5wXC{NyyOUn`&Pz>89QP9|J4;?+1b^b}SzN+pwp3VIOrCKOr(edw7Z75CZwo+=M` zD}-RNL9uzdtU&feQoeRI>O_b*TQs=-X%dY(n#kj!#yjM|l?0(gkuul`{Vgp7GMGNV zIE?;*gEUmNfOSS(G#G=*0h@|bhLq$e=V-blS#ki?$tzv4(0=_;lsPm>q@Ou^ds?>Q z2vwt$m?sP;Hcz!+;O`Y-o<*n%?YCjq7;1GHWBDzZbnFF=DE2Idtd=FLDHSr7@=KHK zF_2uSH3JT3hFCM$-dAKG4AC@j9iFfCuc*Sf5BlM;|)ELWY!_Jz<#%RBlF#2@O33kipTkokQWbj|jY8&TMFZ=$6Hh6)u~V5N}p4-M3=5skqS_MmkNq6?ci+BAbISVS3foaQtyeNlKru zCyzS}9j@xU_fOr3QwzR)25GrTO*pla#d0C!URwZK|FZE?F!)R7O8ZH_0WO6_zNBSJ zm;D1Ee}l@iR6msIGuC(b!Q(C9P!Pg(Iu>bb#fAkDsPNZ;g$z*ACGSqRJk zRsPI!Me_j><9}MYzN6Ud&xJh|TlK{fqwj<B z@h91sl0lB7OK8@xRgjGtroSIJfB1*8&+t{v_2f^l&jYH>31PVbLifZ}=mhL5>(~+L zV!F|ILw><=WZa5<+}Rx>tC>`PPkSt&f@bi1A;OqzFAZvk3dUksizWx7IIJil^xQj1 z-wzDz<4}*cWEtr4>85gXmQN#;OK(7t4ljiKo^a#uC7k+~7q7R+UiubY76NiP7QH+3 z!^DfpuW~ea)sRztZP#)p50s};n+}iFj$7FK)@t7*cs}r0S7MNp!@VC?w_zG4iNCBM z>~_8Nk=I+rR=0)10~Pwvxk-cssBZioSK|6mk86?#K>fku6*te_^6jWW98+>vAn;2Y zx}6Vm*9oDbr|k588)O785_i>i6DJ^ra*_w`J5y;n*2z9>6$){WzxH;yLm|LrY&hgm z^(5kI(1TM*U69-8i7sC3Xxok0bZP#WjDYp{IygcrUt}igr&v4c-;4m1y-Nvn<d6gemdG9t3t72>EKv!Z$r=G&{I zf?B}W*$v|$Yh19D;?0{u+j)zyUhEV#ns~iet`&y3(VtDXAc@+^+=g!+#`7x;qCFlZ zP$9|2R7}1TX?wJoA48HIzCO*A#dWOw>E9!hisYDxHFE#<>pPZ^2dfJqkB>+e&)wBI zi}5ZqjZ${&8+~pAsZ7(+EX6XKs3f}cw#qJHX=2ycH}99}6!jdf@-+zE zl+48547B=OX55{Z5j`BTJmE;o2%>jmicbs%el$6%9@(FPUndKQKRE(KzE#=NGsM

HH8H3UcMR91mzRyGa{oBY1T4E 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%0Dg)W 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 From 5a9916db86077a2357103c44eea83b03ad7342ba Mon Sep 17 00:00:00 2001 From: DavidTay Date: Tue, 26 Mar 2024 10:26:35 +0800 Subject: [PATCH 091/423] Update Developer guide to reflect newly added UpdateCommand UML --- docs/DeveloperGuide.md | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index bb730830d7..f8cc2d5619 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -69,7 +69,7 @@ The following is a class diagram of the NewCommand and its relevant dependencies ![NewCommandClass](uml-diagrams/NewCommandClass.png) The `NewCommand` class implements the `Command` interface and is responsible for handling the creation of new items in the `Inventory`. -A NewCommand instance is created by the `parseNewCommand` method called by Parser, which ensures that the provided parameters (name, quantity, price) are valid. +A NewCommand instance is created by the `parseNewCommand` method called by Parser, which ensures that the provided parameters (name, quantity, price, expiry date) are valid. #### Dependencies - `Item`: For creating the new item @@ -80,10 +80,36 @@ The following sequence diagram shows the execution of a NewCommand ![NewCommandSequence](uml-diagrams/NewCommandSequence.png) 1. The `SuperTracker` class calls the `execute` method of `NewCommand` -2. A new `Item` object with the given parameters (name, quantity, price) is created and returned to `NewCommand` -3. The `put` method of the `Inventory` class is called to add the newly created item into the inventory +2. A new `Item` object with the given parameters (name, quantity, price, expiry date) is created and returned to `NewCommand` +3. The `put` method of the `Inventory` class is called to add the newly created item into the `inventory` 4. The `newCommandSuccess` method of the `Ui` class is called to notify that `NewCommand` has been successfully executed +### Update Command +The following is a class diagram of the UpdateCommand and its relevant dependencies +![UpdateCommandClass](uml-diagrams/UpdateCommandClass.png) + +The `UpdateCommand` class implements the `Command` interface and is responsible for updating existing items in the +`Inventory`. A UpdateCommand instance is created by the `parseUpdateCommand` method called by Parser, which ensures +that the provided parameters (name, quantity, price) are valid. While it is optional to include quantity and price, one +of the aforementioned parameters must be provided. + +#### Dependencies +- `Item`: For getting the quantity and price of the to be updated item +- `Inventory`: For updating the item in the inventory +- `Ui`: To notify the user about the successful execution of `UpdateCommand` + +The following sequence diagram shows the execution of a UpdateCommand +![UpdateCommandSequence](uml-diagrams/UpdateCommandSequence.png) + +1. The `SuperTracker` class calls the `execute` method of `UpdateCommand` +2. The item object of the item to be updated is obtained from `inventory` +3. There is an optional check for newQuantity being -1 (an invalid value that indicates that quantity should not be +updated). If the condition holds true it retrieves the item's previous quantity. +4. There is another optional check for newPrice being -1 (an invalid value that indicates that price should not be + updated). If the condition holds true it retrieves the item's previous price. +5. A new `Item` object with the given parameters (name, new quantity, new price, old expiry date) is created and returned to `UpdateCommand` +6. The `put` method of the `Inventory` class is called to update the item in the `inventory` +7. The `UpdateCommandSuccess` method of the `Ui` class is called to notify that `UpdateCommand` has been successfully executed ## Product scope ### Target user profile From 191c008786bff538adcf52c724540c52dd6fa6ce Mon Sep 17 00:00:00 2001 From: rismm Date: Tue, 26 Mar 2024 12:43:14 +0800 Subject: [PATCH 092/423] Add data loading --- src/main/java/supertracker/SuperTracker.java | 6 ++ .../supertracker/storage/FileManager.java | 98 ++++++++++++++++++- .../java/supertracker/ui/ErrorMessage.java | 9 +- 3 files changed, 105 insertions(+), 8 deletions(-) diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index 0196d319da..2ce46a5a82 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -37,6 +37,12 @@ private static void run() { setupLogger(); logger.info(START_MESSAGE); + try { + FileManager.loadData(); + } catch (IOException e) { + Ui.printError(ErrorMessage.FILE_CORRUPTED_ERROR); + } + Ui.greetUser(); handleCommands(); diff --git a/src/main/java/supertracker/storage/FileManager.java b/src/main/java/supertracker/storage/FileManager.java index 215a16d772..b32b3e4c5e 100644 --- a/src/main/java/supertracker/storage/FileManager.java +++ b/src/main/java/supertracker/storage/FileManager.java @@ -2,12 +2,18 @@ import supertracker.item.Inventory; import supertracker.item.Item; +import supertracker.ui.ErrorMessage; +import supertracker.ui.Ui; -import java.io.BufferedWriter; import java.io.File; -import java.io.FileWriter; import java.io.IOException; +import java.io.FileWriter; +import java.io.BufferedWriter; + +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.List; +import java.util.Scanner; public class FileManager { protected static final String DATA_PATH = "./data/"; @@ -15,6 +21,16 @@ public class FileManager { protected static final String SAVE_FILE_PATH = DATA_PATH + FILE_NAME; protected static final String SEPARATOR = ",,,"; protected static final String PLACEHOLDER = "*&_"; + protected static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + protected static final String NO_DATE = "no date"; + protected static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + protected static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); + protected static final int MAX_NUMBER_OF_PARAMS = 5; + protected static final int NAME_INDEX = 0; + protected static final int QUANTITY_INDEX = 1; + protected static final int PRICE_INDEX = 2; + protected static final int DATE_INDEX = 3; + protected static final int EXTRA_INDEX = 4; /** * Saves all items currently in the inventory by writing into a text file. @@ -45,16 +61,90 @@ public static void saveData() throws IOException { fw.close(); } + /** + * Loads and reads data from a designated text file from the path specified in the class. + * Parses each line of data into an Item class and adds to the item list in the Inventory class. + * If data is corrupted, prints to the UI the number of corrupted lines. + * + * @throws IOException if specified path is unable to be opened or found + */ + public static void loadData() throws IOException { + File directory = new File(DATA_PATH); + if (!directory.exists()) { + directory.mkdirs(); + return; + } + + File saveFile = new File(SAVE_FILE_PATH); + if (!saveFile.exists()) { + return; + } + + Inventory.clear(); + Scanner s = new Scanner(saveFile); + String itemData; + int corruptedData = 0; + while (s.hasNext()) { + try { + itemData = s.nextLine(); + Item item = parseItemData(itemData); + Inventory.put(item.getName(), item); + } catch (Exception e) { + corruptedData++; + } + } + if (corruptedData != 0) { + Ui.printError(ErrorMessage.FILE_CORRUPTED_ERROR); + } + s.close(); + } + private static String getItemData(Item item) { String name = item.getName(); String excess = ""; if (name.contains(SEPARATOR)) { - excess = SEPARATOR + "e"; + excess = "e"; name = name.replace(SEPARATOR, PLACEHOLDER); } + String quantity = String.valueOf(item.getQuantity()); String price = String.valueOf(item.getPrice()); - return name + SEPARATOR + quantity + SEPARATOR + price + excess + "\n"; + LocalDate exDate = item.getExpiryDate(); + String date = NO_DATE; + if (!exDate.isEqual(DATE_NOT_EXIST)) { + date = exDate.format(DATE_FORMAT); + } + + return name + SEPARATOR + quantity + SEPARATOR + price + SEPARATOR + date + SEPARATOR + excess + "\n"; + } + + private static Item parseItemData(String itemData) throws Exception { + String[] data = itemData.split(SEPARATOR, MAX_NUMBER_OF_PARAMS); + + if (data.length < MAX_NUMBER_OF_PARAMS) { + throw new Exception(); + } + assert data.length == MAX_NUMBER_OF_PARAMS; + + String name = data[NAME_INDEX].trim(); + if (data[EXTRA_INDEX].equals("e")) { + name = name.replace(PLACEHOLDER, SEPARATOR); + } + + int quantity; + double price; + quantity = Integer.parseInt(data[QUANTITY_INDEX].trim()); + price = Double.parseDouble(data[PRICE_INDEX].trim()); + if (quantity < 0 && price < 0) { + throw new Exception(); + } + + LocalDate date = DATE_NOT_EXIST; + if (!data[DATE_INDEX].equals(NO_DATE)) { + date = LocalDate.parse(data[DATE_INDEX], DATE_FORMAT); + } + + return new Item(name, quantity, price, date); } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 9579fea750..d951313f3b 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -14,12 +14,10 @@ public class ErrorMessage { " does not exist in inventory. Unable to update its values. =("; public static final String ITEM_NOT_IN_LIST_DELETE = " does not exist in inventory. Unable to delete something that does not exist. =("; - public static final String ITEM_NOT_IN_LIST_ADD= + public static final String ITEM_NOT_IN_LIST_ADD = " does not exist in inventory. Unable to increase its quantity. =("; - public static final String ITEM_NOT_IN_LIST_REMOVE= + public static final String ITEM_NOT_IN_LIST_REMOVE = " does not exist in inventory. Unable to decrease its quantity. =("; - public static final String ITEM_NOT_IN_LIST_FIND= - " Search came up empty, your item is not in our inventory. =("; public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; public static final String INVALID_NUMBER_FORMAT = "Invalid values for price/quantity"; public static final String INVALID_DATE_FORMAT = "Invalid date. Follow \"dd/mm/yyyy\" format"; @@ -29,4 +27,7 @@ public class ErrorMessage { public static final String INVALID_FIND_FORMAT = "Please ensure the name of the item you are looking for is correct"; public static final String FILE_SAVE_ERROR = "Oops! Unable to save data due to an I/O error!"; + public static final String FILE_LOAD_ERROR = "Oops! Unable to load your previous data due to an I/O error!"; + public static final String FILE_CORRUPTED_ERROR = + "Oops! Unable to load some of your previous data as the data in the save file has been corrupted!"; } From 21cb93f7caa573a058a427121d06d19a6112d0b3 Mon Sep 17 00:00:00 2001 From: rismm Date: Tue, 26 Mar 2024 12:48:23 +0800 Subject: [PATCH 093/423] Update file saving Add automatic saving whenever there is a change to the list --- src/main/java/supertracker/SuperTracker.java | 6 ------ src/main/java/supertracker/command/AddCommand.java | 10 ++++++++++ src/main/java/supertracker/command/DeleteCommand.java | 10 ++++++++++ src/main/java/supertracker/command/NewCommand.java | 9 +++++++++ src/main/java/supertracker/command/RemoveCommand.java | 10 ++++++++++ src/main/java/supertracker/command/UpdateCommand.java | 10 ++++++++++ 6 files changed, 49 insertions(+), 6 deletions(-) diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index 2ce46a5a82..334f2abda1 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -46,12 +46,6 @@ private static void run() { Ui.greetUser(); handleCommands(); - try { - FileManager.saveData(); - } catch (IOException e) { - Ui.printError(ErrorMessage.FILE_SAVE_ERROR); - } - logger.info(EXIT_MESSAGE); } diff --git a/src/main/java/supertracker/command/AddCommand.java b/src/main/java/supertracker/command/AddCommand.java index a465ba31d8..40cec69bae 100644 --- a/src/main/java/supertracker/command/AddCommand.java +++ b/src/main/java/supertracker/command/AddCommand.java @@ -2,8 +2,12 @@ import supertracker.item.Inventory; import supertracker.item.Item; +import supertracker.storage.FileManager; +import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; +import java.io.IOException; + public class AddCommand implements Command { private String name; private int quantity; @@ -23,6 +27,12 @@ public void execute() { Item newItem = new Item(name, newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); Inventory.put(name, newItem); Ui.addCommandSuccess(newItem, quantity); + + try { + FileManager.saveData(); + } catch (IOException e) { + Ui.printError(ErrorMessage.FILE_SAVE_ERROR); + } } @Override diff --git a/src/main/java/supertracker/command/DeleteCommand.java b/src/main/java/supertracker/command/DeleteCommand.java index 706397d639..3a8557b5ba 100644 --- a/src/main/java/supertracker/command/DeleteCommand.java +++ b/src/main/java/supertracker/command/DeleteCommand.java @@ -1,8 +1,12 @@ package supertracker.command; import supertracker.item.Inventory; +import supertracker.storage.FileManager; +import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; +import java.io.IOException; + public class DeleteCommand implements Command { private String name; @@ -17,6 +21,12 @@ public void execute() { Inventory.delete(name); Ui.deleteCommandSuccess(name); + + try { + FileManager.saveData(); + } catch (IOException e) { + Ui.printError(ErrorMessage.FILE_SAVE_ERROR); + } } @Override diff --git a/src/main/java/supertracker/command/NewCommand.java b/src/main/java/supertracker/command/NewCommand.java index 5cd21f3251..2f4e53d733 100644 --- a/src/main/java/supertracker/command/NewCommand.java +++ b/src/main/java/supertracker/command/NewCommand.java @@ -1,9 +1,12 @@ package supertracker.command; +import supertracker.storage.FileManager; +import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; import supertracker.item.Inventory; import supertracker.item.Item; +import java.io.IOException; import java.time.LocalDate; public class NewCommand implements Command { @@ -29,6 +32,12 @@ public void execute() { Item item = new Item(name, quantity, price, expiryDate); Inventory.put(name, item); Ui.newCommandSuccess(item); + + try { + FileManager.saveData(); + } catch (IOException e) { + Ui.printError(ErrorMessage.FILE_SAVE_ERROR); + } } @Override diff --git a/src/main/java/supertracker/command/RemoveCommand.java b/src/main/java/supertracker/command/RemoveCommand.java index 61b63d9c48..3c308af810 100644 --- a/src/main/java/supertracker/command/RemoveCommand.java +++ b/src/main/java/supertracker/command/RemoveCommand.java @@ -2,8 +2,12 @@ import supertracker.item.Inventory; import supertracker.item.Item; +import supertracker.storage.FileManager; +import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; +import java.io.IOException; + public class RemoveCommand implements Command { private String name; private int quantity; @@ -25,6 +29,12 @@ public void execute() { Item newItem = new Item(name, newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); Inventory.put(name, newItem); Ui.removeCommandSuccess(newItem, quantityRemoved); + + try { + FileManager.saveData(); + } catch (IOException e) { + Ui.printError(ErrorMessage.FILE_SAVE_ERROR); + } } @Override diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index ccd8ed0d63..ca89b5ca28 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -1,9 +1,13 @@ package supertracker.command; +import supertracker.storage.FileManager; +import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; import supertracker.item.Inventory; import supertracker.item.Item; +import java.io.IOException; + public class UpdateCommand implements Command { private String name; private int newQuantity; @@ -33,6 +37,12 @@ public void execute() { Item newItem = new Item(name, newQuantity, newPrice, oldItem.getExpiryDate()); Inventory.put(name, newItem); Ui.updateCommandSuccess(newItem); + + try { + FileManager.saveData(); + } catch (IOException e) { + Ui.printError(ErrorMessage.FILE_SAVE_ERROR); + } } @Override From 73a4667dc26c9cf5d82c0b54a7e40a6cd03620b3 Mon Sep 17 00:00:00 2001 From: rismm Date: Tue, 26 Mar 2024 13:20:50 +0800 Subject: [PATCH 094/423] Fix command input bugs Input command: new n/new apple works as intended now --- src/main/java/supertracker/parser/Parser.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 90885adb11..64a193ba6e 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -90,6 +90,13 @@ private static String getCommandWord(String input) { return input.substring(0, input.indexOf(" ")); } + private static String getParameters(String input) { + if (!input.contains(" ")) { + return ""; + } + return input.substring(input.indexOf(" ")).trim(); + } + /** * Parses a Command accordingly from the user input string * @@ -98,7 +105,7 @@ private static String getCommandWord(String input) { */ public static Command parseCommand(String input) throws TrackerException { String commandWord = getCommandWord(input); - String params = input.replace(commandWord, "").trim(); + String params = getParameters(input); Command command; switch (commandWord) { From 9d3dd855d8f1a149d2b371e95b0e928281febcc5 Mon Sep 17 00:00:00 2001 From: rismm Date: Tue, 26 Mar 2024 13:56:50 +0800 Subject: [PATCH 095/423] Update DG Update DG to show dependencies on new FileManager class for file saving in the NewCommand implementation. Change Inventory.items() method to Inventory.getItem() to better reflect what the method does --- docs/DeveloperGuide.md | 2 ++ docs/uml-diagrams/NewCommand.puml | 21 ++++++++++++++---- docs/uml-diagrams/NewCommandClass.png | Bin 29608 -> 36917 bytes docs/uml-diagrams/NewCommandSequence.png | Bin 17689 -> 22904 bytes docs/uml-diagrams/Parser.puml | 7 +++--- docs/uml-diagrams/ParserSequence.png | Bin 17605 -> 20090 bytes .../supertracker/command/FindCommand.java | 2 +- .../supertracker/command/ListCommand.java | 2 +- .../supertracker/command/ReportCommand.java | 2 +- .../java/supertracker/item/Inventory.java | 2 +- .../supertracker/storage/FileManager.java | 2 +- 11 files changed, 27 insertions(+), 13 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index bb730830d7..4db4632f0b 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -75,6 +75,7 @@ A NewCommand instance is created by the `parseNewCommand` method called by Parse - `Item`: For creating the new item - `Inventory`: For adding the new item into the inventory - `Ui`: To notify the user about the successful execution of `NewCommand` +- `FileManager`: To save the new item added onto the hard disk The following sequence diagram shows the execution of a NewCommand ![NewCommandSequence](uml-diagrams/NewCommandSequence.png) @@ -83,6 +84,7 @@ The following sequence diagram shows the execution of a NewCommand 2. A new `Item` object with the given parameters (name, quantity, price) is created and returned to `NewCommand` 3. The `put` method of the `Inventory` class is called to add the newly created item into the inventory 4. The `newCommandSuccess` method of the `Ui` class is called to notify that `NewCommand` has been successfully executed +5. The `saveData` method of the `FileManager` class is called to save the new item added onto the hard disk ## Product scope diff --git a/docs/uml-diagrams/NewCommand.puml b/docs/uml-diagrams/NewCommand.puml index 7d9bf78af6..098300c690 100644 --- a/docs/uml-diagrams/NewCommand.puml +++ b/docs/uml-diagrams/NewCommand.puml @@ -8,12 +8,15 @@ class Item class NewCommand class Parser class Ui +class FileManager Command <|. NewCommand -Item <.. NewCommand +Item <... NewCommand Ui <.. NewCommand Inventory <.. NewCommand -NewCommand <.. Parser +NewCommand <... Parser +FileManager <.. NewCommand +Inventory <.. FileManager interface Command { +execute():void @@ -42,7 +45,11 @@ class Ui { } class Parser { - {static}-ParseNewCommand(input:String):NewCommand + {static}-parseNewCommand(input:String):NewCommand +} + +class FileManager { + {static}+saveData():void } @enduml @@ -51,10 +58,10 @@ class Parser { hide footbox participant "SuperTracker" as SuperTracker <> #f5e3a9 participant ":NewCommand" as NewCommand #cbf7f4 +participant "FileManager" as FileManager <> #bcf7cf participant "Inventory" as Inventory <> #d5eac2 participant "Ui" as Ui <> #e5c2ea participant ":Item" as Item #fbffb2 - SuperTracker -> NewCommand : execute() activate NewCommand #cbf7f4 @@ -73,6 +80,12 @@ activate Ui #e5c2ea Ui --> NewCommand deactivate Ui +NewCommand -> FileManager : saveData() +activate FileManager #bcf7cf +FileManager -> Inventory : getItems() +FileManager --> NewCommand +deactivate FileManager + NewCommand --> SuperTracker deactivate NewCommand @enduml \ No newline at end of file diff --git a/docs/uml-diagrams/NewCommandClass.png b/docs/uml-diagrams/NewCommandClass.png index e2176d816abc79dee59c679df9f5c69b6fa12d39..842734a710d30a1ea4ea50a408bb21c3ae85ec41 100644 GIT binary patch literal 36917 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 FzW}Op3Az9P literal 29608 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 diff --git a/docs/uml-diagrams/NewCommandSequence.png b/docs/uml-diagrams/NewCommandSequence.png index dab7860a81acfeaf377269d755ec7f1363e22488..cc0bf419c9e78b5c3125389f8ec33381ea23c4f0 100644 GIT binary patch literal 22904 zcmb@uWmMJA7dI+h(%m7AgfvJBh%`q~y1N9VTR@~lK%_z700NQ%(p}QsA>G{#cTj)z zf1Y*U-0KU@T8HC&XZD`i`xA2rR#ucoMRmJ-C#_uAmY*em0nPp|ESqdI%(-u4_;nlu+ z>Ht%NC<=3W3Y~Kjj&Cp#X`{Zy`?zR(#yMir@nZC~618>+cYT*MwKp4@wtZ{4t)}jl zTqaFDuG=%6Y{cjh(=nXzNTsf}b}76;-r`o<49u2qK@ln6i;L86auqNw`Faky4I8=L zaqF9j_V5Er#@9L7@~kUbPw5+K$X=Lt>FHqW%*&BF;juqb%!{=2K=&a#k8~!KGbv2t ze6F8l5lgVv0Z%cN>hh|@G`NgA%q+p-XLPg=4zugC zpqwUPct*J5P$P?(U3{(A?TzP1nmB^XZEl%^fBzNKo4bnGdF5#nnF`VL6Ca}R3wxjY z9b-IOqAnU{-_<4Zld+NG^DOFfN?LY{>1_G093AaTUC(sWGVJnM?YY0A56AwY~crQ#6Z7yF<8xrzF zRe9JfZ(K`W5+Q6LLfssqhbQ-*l?swR5JzG3p4|`)`lzgCPxN(EqW#Ja$5!t`@6W^Q zq(1N7&y@~lz44Dv%Uxm&U-(iX`%y6)&|%!Y2BoED-@ShIh5CWlY{U>$@Cqd{gjC*G ztv5|{9Db?gJUym1zpz=GUJpjX+`@l>nPb4FQ_pEIFg$RmBHbe=E|(O``D!O49K-t| z+fcJMYqgNgE6vI7rC_c$^|y2i@zDqSja~~vlq+LhChHasSqyziyr%DXA6m4%|D=I* zLXKxu7dqn8(9=Yp4NWgMD5F5^&E zjiVQR2vIFHIdF@oW@LUEzfw>h;0tZyJ~s%4LRq8wy6%fZ9(8iN)Uw{k!~fEODTjw| z6Yr^OiX0LG`BJ%QW00E7q2R3!%{K2^I^>j4R(;ReqhpH(Clz3E(2OG`r9}^B=La?X zWU=F}Ma0M~A4M6%$UMn;Uek?*ho3I*FgDdB1~EvuDw2c@#B{8hyi3g{GD)cZNdS^N zv=m4e5>j?I!R!S%>ho0!MvZD_iWB*B?7VfbygsP$4FU;1<8(99G3#Ux#h3GTZ*Z2iq7B+ zu(kE3IY*5`cD+jc;gJ-`1-bay`jqc5&|;UFn+ntX?d>fs$rQbCOd;w#}ciRY%7cp9Z|vHrRHgOpMIjsL@)%j8%4|ER)kRb|sniOSjp;dW!f8=d$WTB#V2! z#o<4Hy44zQc%YG7tQq_1i=^FbDiR2}Ue~-q4108LkfW_ikmp%Dr4k+m=6`kUT>kEu zu)zI#Exh_2UHvmPhHw|#sQsUwc9Slzc$l5q(+bPTMeEIWLYO}P+{u99-+kq?*%A;Q zlNUcfPe%xkhJ13}$1s7Z8(M6k{Bx-!20OZ3S8rl-KdYSu{qxToC;tm{wVJw(DIL)d zZja&%6syYC>kMu@<{T|Y+@>RjRi^4L4EoObzU1vWpVFf@Fu7V?hEwXO3mb*SR>#U? zJ#6PY6FXtpbLXfILX`TI09@$7aU{O)O_c;?ug%gb2CDcX7rjUiVo6( z$HvC3oo945?)X6KMC6$+#W7(YP6`7Ta!kzCQFrMoJ$-9m!cmQ5Zsf1?olVEQ>r*|% z)z7dPbt**a=KrMsjD_pRk&=7x8RaJmN5`)co_u}pw7jPuY`{C`EiN3X!LgqX$kB(8 zaQN%9E0UaSJzN-~{EK@ad51cYoDU)3@fjSsnEoZZfGY>y7pq0uyOcH^JGwHf1 z$d8W5Gj!qUlN2^AC)me=mBVy()n@)o4tlse`iPBB-&1m*%%VJKs}*`>>F3BYv{W+6 zz?`z;xw4C2^uVD!B}U3w6>;xgxVvISdlxdoimAid2zRt#FwI}s4r@wy6j>fnUb5Vtz zcjy|`z_<5&cU4h>6%uSsiIy7}R5q~3{J!}K{HLeGL@nucz361>$?xMt3%U-K%GR&> zx6ov92iV?~YSgfF@jXl(YM_uiEy%nZS3|n|Est$gm9dI?=ohFFvFSnc^R#SkTU>

XtPZ_LSONNo2;Y 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 Hzbfs2Ujf92 literal 17689 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 K$(B5X!u}78{X@e5 diff --git a/docs/uml-diagrams/Parser.puml b/docs/uml-diagrams/Parser.puml index b6f4f24afa..64040749c4 100644 --- a/docs/uml-diagrams/Parser.puml +++ b/docs/uml-diagrams/Parser.puml @@ -33,16 +33,15 @@ class Parser { @startuml hide footbox actor User as User -participant ":SuperTracker" as SuperTracker #f5e3a9 -participant ":Parser" as Parser #cbf7f4 +participant "SuperTracker" as SuperTracker <> #f5e3a9 +participant "Parser" as Parser <> #cbf7f4 -activate SuperTracker #f5e3a9 User -> SuperTracker : userInput SuperTracker -> Parser : parseCommand(userInput) activate Parser #cbf7f4 alt valid command word in userInput - Parser -> Parser : getPatternMatcher(regex, userInput) + Parser -> Parser : getPatternMatcher(regex, userInput, paramFlags) activate Parser #a9dff5 Parser --> Parser : commandToExecute deactivate Parser diff --git a/docs/uml-diagrams/ParserSequence.png b/docs/uml-diagrams/ParserSequence.png index 942d701f2d41c6b642e1d6b93c474649392ce871..e4dcac6d3c4e0d99a8931742f27606321c2d23ae 100644 GIT binary patch literal 20090 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 z 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 UnIX>ykpLknDtGs@$o=R42mOw`o&W#< literal 17605 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 diff --git a/src/main/java/supertracker/command/FindCommand.java b/src/main/java/supertracker/command/FindCommand.java index d9360145bd..e19c444174 100644 --- a/src/main/java/supertracker/command/FindCommand.java +++ b/src/main/java/supertracker/command/FindCommand.java @@ -17,7 +17,7 @@ public FindCommand(String name) { public void execute() { int index = 1; boolean isFound = false; - List items = Inventory.items(); + List items = Inventory.getItems(); Ui.findIntro(); for (Item item : items) { diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index b9e5451e06..3363cd1cec 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -30,7 +30,7 @@ public void execute() { assert isValid(sortBy); int index = 1; - List items = Inventory.items(); + List items = Inventory.getItems(); Ui.listIntro(items.size()); switch (sortBy) { diff --git a/src/main/java/supertracker/command/ReportCommand.java b/src/main/java/supertracker/command/ReportCommand.java index 3b726e0492..70d22b4145 100644 --- a/src/main/java/supertracker/command/ReportCommand.java +++ b/src/main/java/supertracker/command/ReportCommand.java @@ -18,7 +18,7 @@ public ReportCommand(String reportType, int threshold) { @Override public void execute() { - List items = Inventory.items(); + List items = Inventory.getItems(); List reportItems = new ArrayList<>(); LocalDate currDate = LocalDate.now(); if (reportType.equals("low stock")) { diff --git a/src/main/java/supertracker/item/Inventory.java b/src/main/java/supertracker/item/Inventory.java index 68830c38af..1416dbd490 100644 --- a/src/main/java/supertracker/item/Inventory.java +++ b/src/main/java/supertracker/item/Inventory.java @@ -28,7 +28,7 @@ public static void clear() { itemMap.clear(); } - public static List items() { + public static List getItems() { Collection items = itemMap.values(); return new ArrayList<>(items); } diff --git a/src/main/java/supertracker/storage/FileManager.java b/src/main/java/supertracker/storage/FileManager.java index b32b3e4c5e..7374ef06af 100644 --- a/src/main/java/supertracker/storage/FileManager.java +++ b/src/main/java/supertracker/storage/FileManager.java @@ -48,7 +48,7 @@ public static void saveData() throws IOException { saveFile.createNewFile(); } - List items = Inventory.items(); + List items = Inventory.getItems(); FileWriter fw = new FileWriter(saveFile); BufferedWriter writer = new BufferedWriter(fw); From 5bd31251081d1fb4a40c94405f012fc94fb1a4c5 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Tue, 26 Mar 2024 14:57:20 +0800 Subject: [PATCH 096/423] Create 2 UML diagrams FindCommandSequence and FindCommandClass --- docs/uml-diagrams/FindCommand.puml | 90 ++++++++++++++++++ docs/uml-diagrams/FindCommandClass.png | Bin 0 -> 29689 bytes docs/uml-diagrams/FindCommandSequence.png | Bin 0 -> 27199 bytes .../supertracker/command/FindCommand.java | 2 +- src/main/java/supertracker/ui/Ui.java | 2 +- 5 files changed, 92 insertions(+), 2 deletions(-) create mode 100644 docs/uml-diagrams/FindCommand.puml create mode 100644 docs/uml-diagrams/FindCommandClass.png create mode 100644 docs/uml-diagrams/FindCommandSequence.png diff --git a/docs/uml-diagrams/FindCommand.puml b/docs/uml-diagrams/FindCommand.puml new file mode 100644 index 0000000000..df42cb57ff --- /dev/null +++ b/docs/uml-diagrams/FindCommand.puml @@ -0,0 +1,90 @@ +@startuml +'https://plantuml.com/sequence-diagram +skinparam classAttributeIconSize 0 + +abstract class Command +class Inventory +class Item +class FindCommand +class Parser +class Ui + +Command <|. FindCommand +Inventory <.. FindCommand +Item <.. FindCommand +Ui <.. FindCommand +FindCommand <.. Parser + +interface Command { + +execute():void + +isExit():boolean +} + +class FindCommand { + -name:String + +FindCommand(name:String) + +execute():void + +isExit():boolean +} + +class Item { + +Item(name:String, quantity:int, price:double) +} + +class Inventory { + {static}+put(name:String, item:Item):void +} + +class Ui { + {static}+findItem(item:Item, index:int):void + {static}+noItemFound(name:String):void +} + +class Parser { + {static}-parseFindCommand(input:String):FindCommand +} +@enduml + +@startuml +hide footbox +participant "SuperTracker" as SuperTracker <> #f5e3a9 +participant ":FindCommand" as FindCommand #cbf7f4 +participant "Inventory" as Inventory <> #d5eac2 +participant "Ui" as Ui <> #e5c2ea + +SuperTracker -> FindCommand : execute() +activate FindCommand #cbf7f4 + +FindCommand --> FindCommand : isFound = 0 + +FindCommand -> Ui : findIntro() +activate Ui #e5c2ea +Ui --> FindCommand +deactivate Ui + +FindCommand -> Inventory : items() +activate Inventory #d5eac2 +Inventory --> FindCommand : items +deactivate Inventory + +loop item:items + alt check if item contains the word + else word found + FindCommand -> Ui : foundItem(item:String, index: int) + activate Ui #e5c2ea + Ui --> FindCommand + deactivate Ui + FindCommand --> FindCommand : isFound = 1 + end +end + +opt word not found in items +FindCommand -> Ui : noItemFound(name:String) +activate Ui #e5c2ea +Ui --> FindCommand +deactivate Ui +end + +FindCommand --> SuperTracker +deactivate FindCommand +@enduml \ No newline at end of file diff --git a/docs/uml-diagrams/FindCommandClass.png b/docs/uml-diagrams/FindCommandClass.png new file mode 100644 index 0000000000000000000000000000000000000000..2141235118688a1078bffa5e862e39d1cd7b1cb9 GIT binary patch literal 29689 zcmbrmWmuKl_XWBU0TCrcK}i8ADWxR^1e6A8>F$zF6%Zv=QaYr&L>dG^K)R8V?(V#E z>-io3b)Wm;o-fB|v)}cum}|xuWA3+dGU8V+6J16i5Lcf(ex!gvptd3qD1MhNz$f#H zdY7dqacUdM>w3?Couy^RTekSm;{WJ6KvU>swno zcC?bi5a*_fs`mf+9DxGkILEFkNm`FQ#I0G+k9sDA`A&>3D~DtOb>xwdu)}wcLW~N3 z{^gYp1(UB{>oT;X!#?Bpjuobfz&8YEWyQB%6=rOyq-@N`Yt*1xULSWXGjRTfA zJo;Jz_#%t88&bR>dCGHQnIl)rtWQ%m&~I2B(~{K-vURk7%%ooT;3#EnT!`SQ7a`xs zdgw{`rT!7ox_wG1hp8c(XVrbiG~d!&W(vFxkQN`(BZ#ywjGAz^MVKUy=KG?Gy z43DrQ-ngdqs;cmp<()B2;a^g(v*gGpu?2Wyr5U+(*=sn$J)v zo(r^SN`xG{Mw2{Azs_YypF0qJvB^-GUhpz(+66S6>MO80}-|QW)_g$iA zVi5|8PH~>t+qXQQDDzPET%Yg7P)*rxy5_#3t*wc3+<;b8v-o52+F8-Yt%rKTC3sc(wV6`T0Ksi zt*#5XJKKuK{VVr*GBM-RmWY`hzN;$W$4Ic@{UE2UmR%C+y}J;OOVLt#>E%y<7G*CK zy)qfnwb86=2!yTIlSe{|&RQ#Dn2Og`#yM@S%hmBG3ymhf<$ZN|>8AYXo9_Gg^Gf#v z;u%xKLT?7$#0@eElz$~Peo;d%xgIT$QR2;|yZ%q4Vh5@9CS_SwWp`wbY_Lava*uO#8Udm+E3-RtE)ZYyL{s*VG z^Ht?a+JNd@$!1Z-auW-4BZ}5%z80zdx3i zzEN>)iUYah2r8?`dU-RDCYn z+S)q&wS9_;8j+_h^L}KMoN1MKL2x@&t*p%|K>EdW;cczj^Rr_HGbp{mc>8!BI$`L0E4ZM-B&Q##L}p$0GlugF&xwcUfjDf9bBu*f>so|_ zk@>Y}>KX{nWG<}~ZhT`-N=lB1`Kj&!?kX4mETUba=5UTUy2fF7p#1rK z$+H*H53A4%K8(7oT!ga@!_8lQ>5YMdeT(zakAd`JF+Ns*;d^MyTBt`mD}w>Tob9e0 zyVuOnuaZU;3yNDP3h`=rSGQoIY>qHibf%mYm~i@Os#iBF$W*VFE|h1?`*x9#5kJBF z^1Q6$EylP$HSxY>O}eG|1Fg7L!b7|pu=@d+=ZftgcvTjpH&2Qee+?ax7Wo}LCwIP za^Sz`y0cKGFzwSt!p--Raho=*PB7H5BL|RN;9ge z_$XQR>grJPbGSfVQ59>Sb*h!Y`1skq*SCUmBgx)p+a zVNx3wGm#Enbn(qeH-nDCYc`$IwG(E826 zc7c1<`TVKlfv*@3)hSN8D@b`9afy}Qp|VevzMt`V;jAfYU@-IL?KBffDC^FwFH68x zq3VB*=UK*a$Y&earte*;ViuR`uE3ae6BF8=`xS#P1j1aWSqEDPFaKH}bjm;8!y{JW zwwXk5C@Cm>m2_Mk5v3l?*XE+o`k4@mi<|Ei852XyeXq;^K0RFMy}6YeG2Ta_f9CEd z*POm){S8ckC-4><4YOuocX7mzq`seHwat|nWd$Dsd)0~~tGiN-2bsvz z>C9`wiMZSi-V9}Y6+GJvLBC35U~nS9x2Ju6Gzjl6G;K6@3x!kKwZ6;1ARbIq&Zq0U zu`;+_W`DXh`EJt84=p2np6m5o;f+6sq$#8s&r`EEpWA-go%))Yn?RGjD>9A%tOEDO zjZ&Rq;a@!Ov^MJBbtU!XYmRBq8|=H;Jgk(dVgGrgwLX)=8_r=YCa^Ct!=RUQ&D7pD8kIHe`N>D{{nzfkQ^ZEpg2=L*%eDy(N@3gqSN>y1B8DZ=()%ZEdZlrUnnMHbhV-k7G*V2E(VWDw|)zWaVt+QFwgfs3*~#ehPI}2$pWiO0A}^6ymULn%0A15& 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

Q8rEl-8 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 BWK#eD literal 0 HcmV?d00001 diff --git a/src/main/java/supertracker/command/FindCommand.java b/src/main/java/supertracker/command/FindCommand.java index d9360145bd..5499846e89 100644 --- a/src/main/java/supertracker/command/FindCommand.java +++ b/src/main/java/supertracker/command/FindCommand.java @@ -22,7 +22,7 @@ public void execute() { Ui.findIntro(); for (Item item : items) { if(item.getName().contains(name)) { - Ui.findItem(item, index); + Ui.foundItem(item, index); index++; isFound = true; } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 7749933dc9..e4484883d3 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -171,7 +171,7 @@ public static void printError(String errorMessage) { printIndent(errorMessage); } - public static void findItem(Item item, int index) { + public static void foundItem(Item item, int index) { String stringToPrint = index + ". Name: " + item.getName(); String quantityString = " Quantity: " + item.getQuantity(); String priceString = " Price: " + item.getPriceString(); From be820071285adeea94de6e7375a0342a9b313773 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Tue, 26 Mar 2024 15:42:59 +0800 Subject: [PATCH 097/423] Update DG with FindCommand --- docs/DeveloperGuide.md | 22 ++++++++++++++++++++++ docs/uml-diagrams/FindCommand.puml | 20 +++++--------------- docs/uml-diagrams/FindCommandClass.png | Bin 29689 -> 23348 bytes docs/uml-diagrams/FindCommandSequence.png | Bin 27199 -> 27031 bytes 4 files changed, 27 insertions(+), 15 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 4db4632f0b..d75f29fc97 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -87,6 +87,28 @@ The following sequence diagram shows the execution of a NewCommand 5. The `saveData` method of the `FileManager` class is called to save the new item added onto the hard disk +### Find Command +The following is a class diagram of the FindCommand and its relevant dependencies +![FindCommandClass](uml-diagrams/FindCommandClass.png) + +The `FindCommand` class implements the `Command` interface and is responsible for searching for name in items provided by `Inventory`. +A FindCommand instance is created by the `parseFindCommand` method called by Parser, which ensures that the provided parameter (name) is valid. + +#### Dependencies +- `Inventory`: For getting the inventory list of items +- `Ui`: To notify the user about the successful execution of `FindCommand` + +The following sequence diagram shows the execution of a NewCommand +![FindCommandSequence](uml-diagrams/FindCommandSequence.png) + +1. The `SuperTracker` class calls the `execute` method of `FindCommand` +2. A boolean variable `isFound` is assigned a false value +3. The `getItem` method of the `Inventory` class is called to get the list of items in the inventory +4. The `FindCommand` class will loop through each item of the list of items +5. On every iteration, the item will be checked if it contains the word that is to be found +6. If the item contains the word, the `foundItem` method of the Ui class is called and the `isFound` variable is assigned a true value +7. After the loop ends, if the `isFound` variable is still false, the `noItemFound` method of the Ui class is called to notify that no item has been found containing the word + ## Product scope ### Target user profile diff --git a/docs/uml-diagrams/FindCommand.puml b/docs/uml-diagrams/FindCommand.puml index df42cb57ff..775ebc5679 100644 --- a/docs/uml-diagrams/FindCommand.puml +++ b/docs/uml-diagrams/FindCommand.puml @@ -4,14 +4,12 @@ skinparam classAttributeIconSize 0 abstract class Command class Inventory -class Item class FindCommand class Parser class Ui Command <|. FindCommand Inventory <.. FindCommand -Item <.. FindCommand Ui <.. FindCommand FindCommand <.. Parser @@ -27,12 +25,8 @@ class FindCommand { +isExit():boolean } -class Item { - +Item(name:String, quantity:int, price:double) -} - class Inventory { - {static}+put(name:String, item:Item):void + {static}+getItems():items: ArrayList } class Ui { @@ -55,26 +49,22 @@ participant "Ui" as Ui <> #e5c2ea SuperTracker -> FindCommand : execute() activate FindCommand #cbf7f4 -FindCommand --> FindCommand : isFound = 0 +FindCommand --> FindCommand : isFound = false -FindCommand -> Ui : findIntro() -activate Ui #e5c2ea -Ui --> FindCommand -deactivate Ui -FindCommand -> Inventory : items() +FindCommand -> Inventory : getItems() activate Inventory #d5eac2 Inventory --> FindCommand : items deactivate Inventory -loop item:items +loop until every item in items are checked alt check if item contains the word else word found FindCommand -> Ui : foundItem(item:String, index: int) activate Ui #e5c2ea Ui --> FindCommand deactivate Ui - FindCommand --> FindCommand : isFound = 1 + FindCommand --> FindCommand : isFound = true end end diff --git a/docs/uml-diagrams/FindCommandClass.png b/docs/uml-diagrams/FindCommandClass.png index 2141235118688a1078bffa5e862e39d1cd7b1cb9..ed315c234b5f4335e86f5da7ea58af8477c91f43 100644 GIT binary patch literal 23348 zcmb5WbzGEdyEZ(apooYxf)dg#4N6Lvw1k9|gc8Egseni+-AFf5g1}G~NQlA!f`lmP z5F#!8orA9D+0TCWet++`{#feF+*h908OL#4cevIKC89GlXAlSkk&3ds4g!HIg+Snh zoyLVvr2RjQ!5^GR1w*8jvy1mVn>$E^l8uv%s|C`=n!(bW!48RZal6XL=W@@&3F+>5 zkJrlC(c@z`Jv1?EuV;w-=W_%OwBwbrtf%2TDs#SNr84DKv<^eGmY$J#%*#H~2O$eF zdzQpV3g6EYmvrsA16Q~`9y8XP`GoU*P4#we-LemRRySSRIn+e|q2TG>fxs}iM9Uzh z|5ItMeDbE${<}qlv-CuX#y4W-M)z*ru}z|wX0A&}nLM4WiYc%y(yd_p^@TFDP<`lg zh=}sNiHhp?k7{(^nOu8X!B44J!g^LT(1-1p6=wq`Q;~8mvCLiST^eWi`Mg^g@~piO zHoP^{ZT_F{PWxM<_j$! z%nW?vBCX?p@_p_k>v%)h6%u&1{v&2$&?~^AC*Y$U7l!9ou1v&RjO1g&`fBdtA#|*a zNKnVitF(oW=(vXNN|k-)39fHBN21^Uo_yJNtc+2IlDzbhQgv&|FOAS6wb1onQoMI` zN3z#DNd118nwk;$1hdq%KB3%D-lBTY{H&mhWQ2S~yMK6xy!m;?xC^VASf_sHCHEpx znpOjH7ygr6s4RDe3zF9?X=?~S=W0p1u6)^!hX&@DH&IF}(1{4g7pU1R^LN=U-p-Jq;tK zuP|wJ-C3JmIf1CXzcj+%AIo5h_|a9WU*`0+*&Y{R$I8XUB`Im@!lF!t*p)R^?&rfn z=vP~|pLv~#{pBfWliDtj%bsVlBsZBL;sgve`|1NE<}KA;>yK+y=E_HX9QOyLyOqaH8hG~7 z`F^Cow_B-_y5=TD_5vpl_sIL`W95;tnRC| zD*8bL;P>12LS&bwv`!I{S5 z59?Vyp{lEL94ak^AD{95c`h*{-0iImN|`!cADN@iwepJL2P*h=Y~RiqQX zN{cZpMsoLOuq;isO}4kshS3L{X9~)^5`pyp_4<@$KcblRhZDK8Ru~S(_52_n!PB$J zM{SAj0iU8g%~$%K=ar@3ZQ0$t>aj9IwJ<5!5GF)4>*I6VyoP}$k%5Yha&16Ux_|3n zZ@YxA!U<;t7q*B**?=e;{#yxZ&2^$!4)=08PjEK;W_>oDsjmkUPM#^TCNZN8EdBVt zNq_N4cMR?me6)>dahSqafxyFk+2B(jWuqyySRLr zsW@5G@$l?UdFT$Q9&5a3WLO5sf z^ULtR(SK{(`Q`DNDCy9i zsOi!I_Prgwpy}CAmd-_B_$fg4`PgosQ{?*=9nGb+dlP|a#r7A3o*q-(&(Fo#y^?-QZ*PcRT)Ixi*DFK2Fkwdw9BCn6e=Y>Rk<#U#1Buop@X3$mmvG~@C5?QEPT zP@COcm9_W2pnH3tYov=rQu0g%S{eN9>$*S6DDqCES&sJ`rcKOT^Jbx4tpK_y%W-~Y z<|ID;=SuT7gGw{oj~O|?-o2AwyNGe4x9W(xAmt}Ec0*bD$6$$Wi_fN?pP!|b6<%B1 zEhZDrx40@XbG_+Gik;*aOkUg}BAhP-&-3u%Lw1j)k?IMQ`*gK@mXv>?re}@l8(EYC z0#-N}pUAioBlmi<){nCCDe=>&;x$hat!Nokxi#$Mni10|n}p6+oY)hvda-I$U5L$- znpskpXlQ6Cw-)o`=>zv;YuT<{OSftC-+S5AwDEqmX?{hiEfo~+u9NDTU!r0?iU zM_Mv6raJC=#r(oToxv|JY%BF%;TEZSFWs;KKs=l$u9>R$;73GeBAmwrw(fjKi0 zT|@pj3Wy(X_I7)5r+4IKgzygWBT?tC`QHaSqG`Q5GsNAL$-juGX_j_ag`K;!3p@HN zK`4J(`y+0CS;u)Qs_i!^R5g+E{sP-w5=T2#^I`8hI^bZv4ni7*PnDA_lhKuB2wUpJ zRg@W2s^%%{+4=5mEl1M`TRxpZ8~&P2HZP23QhK6=OH4pSE0TYnCaL6ByqbZ91!HKR zS7ey=ojW?6FkP?Ro@BoD5m;6cr}30--J3V(mX{A!-_x(N+v1@0t+LZy-h>eFMeR6t zbd|OUEI-9CDN0@oc;oeSi@yzp%9(x^%=Oz$%*WT!v+3t^4yQyIU3V7cC5cJ>#JLQqHILWaAywTbVQCfU< zMUR};5)44->%wT=;?kEF-X5G5u*J%*s;a7X&2=_Cly31i@;}=l6~-2aE89GlX*936 zFAOH}+$t<8GH>>}-#dExVOHHGe8_ioX1awrGpdyc2pB8!WQU%irX zc6Qz^bUgEV^xTb8`8}%S^T!K~Y38MVmYE(b{5Zt)yD1?@bEryhs7*Tu%^1I8By`4RGoGwry@J~U5r~i-E zr^wNXDJdf_9dEU!)HTkQ4v|oHehyQJq*PE+df~Vju{>z#*}e6gW3l_y>9c3YTm74; z9ZqnDYKz~+cF>Vrp_a@WYv;ee`aYS@yw!E~Oz3!9V3r8CzkXq@eauS+PK`&=;|=$x ztKZXI^WPO3OQamTe~O}SUcJ}CSL4f*4gq#LBy6H73Rxmh>7jQf&k*tGK|bM&TR|j! zfo91+5=cKZIypJ6^te3HR8MXEVEPb}o*qL(UUIAa|yS4NsTQ)c*CMGvG_syH@SA~|*+l_AX zhN_%8etr_7#h+yHN@ue#j@|9HF7z6%F!hC{q2e}th0YMW|1hG~aZKbTmx9%We1i@J z*ZUBt1n*DDxAv&0tKa)lQ-D;tuBs9$s-N+(*?YaXR__kyPMYvtFB*G`!B56#usb=e zX5iq!8JZ>OyQPXJQBcdjFi@l^EBhKVP$VZO_x8;j!wv&;|3sQ((|zs8%lxrSy}`@s7Yf6tTC?YVKPKqPbdQCOI6O;+Gx2T25bK0LsT>hAO4Lb726eQ1_qVUk~&i1Df_4-b(@l>eRxN8fSK>rUW+^mz#x7Z<0jJN*0>TYa|cXI!vU`6xcqH5YHI zTIWeAN(INT^mN)yTjvRs0#6S%!c>TU^$H$~y%jTBR2Y-S=s@P(2|+wv_-@BbBcBSD z!GWTQ=4OdjHN5PPzgMTGVK>T20C+F)i%)Na{5qy(Mxj-aeW^`6b^bm~o6~=12K#mI_6r5j)t}1@FF) zFt~GvwVtV-p)PQylO%_^{9gHeJ&CDkTG9L_J%q!Qz1(Qv@b~O-nj+(K-Ldo&xoJ9l zboW=jO6r87+!xU@F}75FI{2+T2IpuN8dG-4-2a5f%l-w+jB<~f_t$!AWm&W(E^(Hs z=ujuVm}9(%J)lFprt|cxU2It~i|E^-VO1yBL=?VKS3BBUeikxm_KKZH^O}}#io1M6 z@DWUZe;an)%-f^2N6{1=7>pESukR>H3U-}QO1`CA!m&9;g3YolQp?J?qC31iaCmIa zzbsHzGR4hTgjp2I#Z#hxL=$Q9#PPNtcb}{sbHhVBOPq1sLFU!gqV6)foqyP)^KG4w z;?k+qgaqsbV{$hoa*r>8rh~QyAAV#9ADTZ> z((92G7x|pvv#NZfc#|5UL<9v_nvnfveL@c7?%O&jv8dUeJciJn?^jdr!U(;;2F3xaH=Hk?t4PcB`X(^*Zf zr2dXLnLJ&rPG+I!-S1F}?B9Zl!MM&LF*a5eL>QRxrl2g$-5I5sz!OpSjMEVCQO8x*yiGhlgRO|>k@hUB$P+&|oIBR+Gc^j7`P z65XPAVgyT?w>M)rNlb2B(>JT7;Wi!Q3S6!mP7`(h`ST|o1%=Je?_QRxQ|%Cr_8l)p zy?ghLPSQtfc;xL{CNVKF4vz59vWway(NCWiMRA)v>z6&HuU@h)D~@)dxXUSQBcLnM zeIreFlAFl=TQMeZd&0B#QgOFHN&@e>yO|ygbg_E&)F^GGqtDg-N zduFbwYeTqT%hQf2h^(0YkSh2^A_z_$U=>Db>i4&TyFU2gVJP&}vn^w0hXlr~HW!8l zd0gGy9Vbx2(M?9#SH84c2h4?(826NbC-S5bb;?Lhy+A_3fA=%DJ^3}Kn>Q&5XcHr@ znyao{y`&EkLIP_+7cc9&AX|v3WDmzh zK(@vCnPa#4cvKcZPJc08Z`{WIZH?qUbALpM##c#pN^n8Vt!qe@=N)W za~&nI(3{G2mRQu2GJ;Cu41gF~p4L#mSlUHT@62aSHo6s2FYIec-@2dn;-gqSvO4fc z>R>~cZVj@u8ta7@^yJS~(yx2t^5B$%gcA#FsPUGC#;qD~!;_ zT62MBTGh1cs@B=qxTK`H@84hhc*upF^Pf#LF#HXPznxv@%d!MsH(SOwJKP~IQ-G%~ zJWQuHMTImH`VHqr41 z7lO_3)p&}PlN(>emsoj1zS!R@DdoG zJ=2CEm}Y*d#uT@)u>prf#Bmfk(-~W+l*jvh$d(h_LRrQ_%uQ{xVWq+6LED@&0!$%& zvS1YEeya*JeCUFaDvJ|*1RUo%ZmO!DA?ml2QIT_0AiQYbFlE%qmxjRRT2@HR6uXG% z(!u3hFYkS4besQZ(=})-&Hm9KM#OvV-D7d^}Gy}fkbd_y`{fEb{z^Z_4$j?=0;M|~xz))s0R?sv>Dvgvpw33n98f{@~u z-aO~ZWHGYRYOdzF?*FEkqL^Hzn!lRqBadle#CstC4m5&!95&OTpc@Z9r=0(#4a0 zjj%nEwV+Tnc_S^|jeX1_so+Bjznr?YbAA!ihd80r3JMCa$B>udP0T~YU72i?4%B$w zfhu-=W0_d2NnMAVc-dZpqwKy9Cikw=6Iq@*$lt0g-WE%`dT#`f#HW5CKD*b&+ew~{C>-MWNu6ulhxM^$R?{>(5bEVw%5Pv!$t7to36Y3QiWg38v(!0r=1k}9`}eD3;{uKIt&ZSGyn05>3d&al`3_zhbrvImg_Yn*~UYXN8TSnKLh#^`qEtu*?|M zX533Oh{`ljQ6Wf-NMmh(9dBt`wX{|eql3|r;7BZ~U|lCu+%$3M;iWb}nIQTIzkhY3 z#Kcur=ij$rZsn=Fmwe%YL;=zVzs`meFFq+^MYTXJAdQpoT9>U#n&2CALYl`s@<9EbQ&-V^(VBX^XT2A+Q&sJFBdcIygI^lm z*b?Ijf|_~NYXnX+&Z!m)3?(j?s#6PN>aZ&qfm|M~i+qH(#024Fr)%15IrRo-98Eu! zrUYo)!W<)DZ$_60+-g?EJ-GCRlNiisFTxvxHpJp2_MtFKSd`)%|q%}`HGV6H6jnih;w zDhi~gj^CM%lJQo3qWap^)m6E=SmUCY3qx0sxGp-cn0qO|l{sbbabrmcr_oH4am9$| zq`y+c+Mupxzc?BbFV~wP9^Z!kkgrFz*27Mu&5_fsXRt|-$J&D32PnmF8}1(*WCiTn zOG~#U1I6bq> z@`zUjH%RXHqWKXDV6cFLUH2b--}wS}BB_ZWtfox29qqM2;OX%^I#>z(lqxt61#BEM zVuVbm{KJP2RAyc|FkUGsspq%qpIxzdm~uMk41?(_Zs?CH7*QpvUVXUOb{N@Vhy{BE z`S9)O#2HppGC zT={j(EFt-+Ct~;+skWV=BAn;(( z9AW^O98T4lsBf}hM*pynK@}#geyNWzmh6ZmSTe+q_plbe8$a%EF6cwgYT)?782mq9 zK;Zih4M0`dej33Ic-9gz=CgCadODOc;Uw9VO#VY;2oYF-bKigT=MA4_l?=6{G{bc#1{N|V-9$Pz}it6ue~yWdciY{t=O;&)!UiC?=OD8&#G}=NmATFRbFz&OA1C;Mf#d@R zFsQTdpj-l%)poFTiyxO7f2*_zz%1CiOR&CHvB}B9FKjZYyi|Jrk5fI&X%2%lQbA{g&JD&Ylh$o z2++HDXT%`ZkT}94Bi}O79{&TZDC6wEj7jGCowtvO%5FXcIYk@qEjN&DHpp?%Zlr@03Y>MlXlUV{6F>_RbdQc6mA}KX4@7 zfM~Q42d#>EETwq$JRAi>eOzu_w*a^oE8?um&6_uUd{AD)4~@a(9&5e7d5;Hig_P@N z`S}%NtsXD|u=Xor^Z~zf{`n1@et^kwl&Q}1mm?FCljrB=KW6Ot96hdb3YchaX~8r( z%eUFPne~2cYg)2MO~Dz|f^C5DL~)p!FYV>7yb54EkSltpam3Da-|hR$CFj;`=h4EL zn1Gy?x4TOpcGN%MJ77^~4DMyc_=^8KpYK5V=ZBBtc+t=M`>pV$sS>x|BO6T!=v4)O zH!?B>?A^1sFR?p4$na+nXIV`7o!ifP^K!25&%5U6>}#p&RF=FbihLwPgp0;wFqL^H zhK5-U3+5XvgqOa*g(fc8CO+4>ds$7WC>8kgriO-nkTzI`aB>f8N*^#Qib*S86IQ0e zE>*Cy0igI^)(!hd&&$_+?=2?q6N=dS3Fy##MFFNASIc-;%F-s1x4Mx zFRt$%lQcFqQt_Dq^2Y~U$KD6QPmjGbPQsqk#PBj$p2wuM-9FsF6U38^FrrX$wEJJF z{QmBgJqs z9>~T#1L?tNU(^fn>ka#I-c5V%RM9sd)lJZm78lHY*TIa|JJa{nxG&xm6&0mP7zbid zku(3y_$aM&^XpMhQsU7DB!={9oa_3W2F*Pc!H=neMSu<5OTY9a;nA|w*vn{-^|iI% zyq8+amxi|=*=cgH@bE<6h(Cz7Z7*4kS%9=Gp@5J}I<}v!-nT;*-HgtaIh@cN2f@xDU=w$_W`?D3MPkq(WDjI=nO53s{{}cotc| zvLH?E5X-yseWr;^UT&@zd9Z@EB2d>r zI9ZI%onxCEN?8NL)462)@}5y5<)CKoX~=W(d+hsqO^I~&2r0Q!_C89;q69t#eibd1 z76$!C1@mpmJ-j-nMY$#(x@}d-YPB?1hw+X2sjr}c=%B>pE+a|B z)wQ)LZK2j2(?geipeC%Wtab#${@}SRM0p$$0^RfjS`rymW&E??@l8!lReS+8JjPH0 z58CTg2|0`IoJ6kU-8N(}y%Fs6(;;S*kDZ+w)D$VpWM&?mh1n}nb`g%_Ya*&$F$H&(hYDw2QD2bXQ9<@I}>l+(CtK$kB zU71|i-uUKZdZN=C7dg~1BPguHGWwmm-BJ6dPp z>w5@GVYNIK3xNFB7T=X!-6WF?J*huRht>D*WP9a~TRlX(Z+|Li%OWTHMvp?iJ{QO3 zMjx?!VZ_%=z1(ksKuaEmRFU&@W;rASU+VC~H*4C3KrjsNZ);t+b-V8sKU%1Va`|!8#r!pi5eR7=PcHS) zvEKP~fnGYmM14l0d99lZqFpn!F$JozjH0fR7#T)RP7d4%11Bfvl`DN?W9hB->DSp! zW)E?M&mK>pNoDwFRB+Dg6SKjko>ui?TQurf_(bC>wIje6k%m}X9K7xAeFNku(#hT6fs!tD`XVNmq0^{RJ? z3F`MeLDmyyAQ!j1*EekjJt?Ep)ZsiJ-Q5eW>7SmjydVjB256h!cZpw9^Aj)>UmM-R zLd{Xg@N@MxJxL(5XlQEM{?R|Zff-PGO1C^*X%0u>V1K_A(q}c@G)}YCK8Qa+2Mv(e zGk8IHOlhX0b6pYYF?=E#c}2URl+4UtH~-Bc5Uf~OKZh8}{3?M#P%!?z1J?R-w{ZH% z{w|0?ThS>N{}{eu=0ok|3Zg(UG3(Cr{l#767cYJoJ|E{c^)4K0d2C@f-sqY7{OS(0cZHFjek=meG=Fw2;vnzq1j2{Rk z%IfB3rgWeb;SnGZot>{9oPeMc5fPynMcx1WmMEoy4O6D?davlGEa|NH_<_RS${r7F z;Wsw;_`k0;9C{s5@-E@@OnGZ_Ru# zEH5?G(}YT3OZ*J39UB>O(6b+Ngs-YbG*HjHa(kZ*($A*7lU_h?DvUlAx8%w zJ2xzO)ot!<`x;AEIMh;Zn9D8RtL;?Y3TMw^y7?y<#s>td&)^PHDrsUJbu6IrPNor)pgrjA|R_ z3NuJVhI*-jEUMFy?kjf&in*+ML?1kuD!vO?18>~W`biL(X;+#_+INDp4kM!NczMlZ zsR5z|9pDH}0S7*wyCujuOc6x47U!ykaJ%L0?Nqf^1BMtCK_RfjbGp8 zB6SK23*&UqqL-Y2Fa$;uiNt*WJ@82VXyj=K6|YIQiEg1f2QTl(&Q7m|k|Op9d`IpA zh5tU#tH|PP&&O|?D^#Yb8ak;->3B5a(+}Oeyh5g$d1-D#B&~!T5;}16^xR%wPZzX3 zM{mD8R$mDof_w-BH9D<(+bb`AJ(WIefZT4pv&N>!XKSg;b24CWxhN|j&GD|L(aoD8 z_Go6#V5nNax2Op8UH~M8m?E5tm4gFo=Lz>A&!2IveO=q91FoFQfgT~*|JS_we_P2I z=I=Yw7)vdZNz)1`FFVq_%Fp}HosaCC$Qt9SsxMf%GM;t60Fq~~J(EP3>*t}?bxWt` z*0&9hGm9k-(|5PlEyK=Lf9qZKHWGaw_2fz9+w|!&Met9kt+G&HF|_j(>+Jg93=P!* z!U*-${0cwG=VsCO@YhO{#)qVOK;(}cI%`aP_=fjEV?up2|Z%&pE7Z6O0 z4=s!iXEk}Q?Ed~Oub@CdNofXZ6gW+)%E}|n-hz=smreI$FMgB%bE=I{>J$qUw6wGr z2Yq*@^cqd7HO)Fcb*W@+Vg^o?aoH=0dJY-xsZ#@@`>)D{PfAikT>Q(YPfv0G)*0== zHeXtNJ;7(v3fY|}CB1INs&lCus*+w-+AGQ-R{@cQ14+t;$|GNifA|nrz|h2mTTzd} zU*PfW2jyp>l$Vv2wUz+c{BCegw@UxFdvhOBg_>dC>BU`{3G&tSQKv7493QoVg2>l5 z4bCjm^KVDnaD<0>1h`6xPR~agiFu0X<+ zKtbv2>uY=Gj#-0?1z`Hmjq4sF^{I~I=94&HvYQ4qqTpRSMs1((xBBmm`~>07#Q69O z>0kD@G~I?#-%1+**gVs(!8xWiGI?bXZu&YO%|z4YFy6olM7QAls|+>V>H8K%Dhefp z^JFW0eAQ=z{Zqm3U`E36y1U8eFDLTus9;r-kL=KmGtR9$h2vsRDOIW}J{W}M zvaj-O#`45A5Yr&H0r{xSgu-N+jgOB{Cjp!hO2Q}Wu_fhUE}zqb76k<#`8y$+yOa#m zknK3P9eBvgpCo#7v)u6Y8+}k~&IL3gyEG#@LThEGm7hgEGIyPpq5m(5b*bUrJWJJi z`^Zn8fu*ko2G-lD%=0Y2nX%PNy60V8J-J+~o?%{}qZvqEszXzos$a0UJ$aBTpyO;V-$EAeEdbRvPJ%YQHo zsh&DTU<0btZ1P?vvj0^X;0ODOz3(8(Gnx*CVy%ntPgx@TxwY};AyDEK6%`N>09Cu8 zrnbJhS*Hi5rA%A&?&o`8NJ|rm`4>QjV%?R0TLv zR+zUPLiPMcmM4){x7~^cJa6G^%1i9x;yd7bJ-s(haP(a`-jf&TP>S@kq0jD;w>YPR zE(V@zX=$;aA*Z9e@w}M=t-#F6x&=@!;PrHLbgy5(hKd_){h{+;Tnb2+gA^6O;?g1H zLO+J8y6snU_2MAdp!5R7zMjFL0*?+s6Q`^-F);zbQ87YU`<~Y+q~dWRUyckHB`kI- zcN=ay+^n?J($C(i!-{KuxobT5XgE)p%?cMRXt-Ssj#&Tz@B3xsqsq<QF6wqHUl0x4I|OjDx0po+m4V;bRLV{XXn_Nr zt2v^MNI7}n)r5Ye<$VUz>^Tsd#_$$dfS6&FA`-622onQV!)2N>Y{PEmyIkk7JQ{lr zgj7F21s=XIw3u7HdA)y~BSxX+>F6nZ#ZTf-UR9+e@>XY^D5Z@;A#VSvQeOp{BCcTJ zv00%`=;)CwN~TxtCt>zW>`K5072aZd&VexlQ141p+fZim=aY6Sncl*iYQwn-k-2$! zUp#K#{sys}>-|{BKGE#;gaS25qnQemx1|S{9&rxK;w|#V>M~@cZLpT}8yaAA1`ql# znL_7dB@mi{W51N5q56`6$S*Ap|_0U~XK7V+yXHa3HEo5h}ec^Ls+5TiD zXLZHa7ZsIMeyc|+n^%h&Omcz0JNW6@2KM{hpz;~S!Szqlppc907SF)Pln{vK$O0w{ zfn5)nP!m(rbkLl)1s*Le-J>j6{ajapE-2p1b8kgBkbYK9?ie$$<>nbe7pP&idY)Zh z{whLMrr5c8IOQOcRcsmk{x_b6wo~#UcTfRohPdUs$501HQt@Hy3JBM;iz-(yp>@fe zt~0r8|1_ni&jJPxAo2x%Kgi;N&4Pj4sh)E%R|Slc+FE?!u=sE6%WZ0g+I~>Dut{1( zXN!-0}^bB=-T3h zd!NgV2BY1f!jIzM;AkEh?T4bY%s=^*Ol=~6bh%&y#86&JU^lny1Kf6B-H!;M>(}_Y3S+jMx)qL{-D8F)k$E5 z@V}@HURPGIJix0Fu(q+m!^4YR-Pk}zC*IfHtyjhTJRw~c~N~7YjO-xaij?x}@ znHdzT(H=XG3dms{K@OYbzB9Bu5S0B_vD!rqK)Bah7u%PY8!}iSYU9PD-Wf3Q8GFdk z3zq+Yg5Zi4--Hr^pBgkQzg2(3>HCm@Im@b5m-6W@0}8(Es}O-hAdEyc!u4ipjB zJuTAAI!8oAL`Z1W^}#e3mQzysFQ>PFQ#Fzb%3PA#p`tpa9LLWq6CM}g`S@)E1I+k znM-!%8(^url|a12S9}0pd#lcYrKK+akUjfvDt%ca7e8}9EKG~O6x4@)o`6QfgqZqs zACT7_E*N!|l@J-X1xP-%JiVM(%eRAm0yd?cBWjXdm}x_;CTa?m|p3NVn=@ z&-D^SyGfxllTezcDJQDQYg}>Ey4#bNZ&!j_K_t}oSDUM3%S61)QIKCy&~IOJWK}LE zyrW_F@wDcv82b9|xU%05RXpkk{+%!gndLuW`cz=J#~o8^bh@MlUGlTox!bK}XD(f5 zS|^aa?>G^bL3zawR$0g;cSn=A(}}yvpSJEwQ6&KYmub8BRz0tcy2Tb6fRR~0JFs}1k(Ga06HIk#7swQ%-cU(0h1A1qK)qc|PbbbtC0GWm&< zcK80iAIeMi>t;V(;+Az@D&Pz$B$2=iD?kk zE_bxFQM~4@+#$sVSIe%^D6N@1G%x<0cbr|~q1)5*HKle!oH!N)*Uk^*Db7IAE)nzE zAWjkrT=!XUkUQqBAYnN7DF$^?Hd7;@vL{ouU25@{>Jk2xlC8C3j(g(`{D~P7F}qRa z@nr=QGw6b;TpFyKDE5ypcMw~X@TMYyuPT9)+qm}eMqB~;l3>WOc!Yf=0la`pblJbhuHEckvZr{^ z0NlLF3322R9zOmPI>|JYGt~MPj?t==Zqn2O&hx}%Y|PBR;;N*$SDe#IYc$PdC$8Fm zgM6p=;N^|~RQEc42v|KI@O%M#CuWYWCqO_|Mdf?folnnr+Jf|Rk2gzV{3=GLO+Gd@ z7NWmI#Oqw4n-7o%U(4@mdSer^@N+!3UY7s&`RH|lQ!2?Q7iHKMh%Y~T{c$5{4ZUyu zy)SRvdNZ#X7<*9!4*speNB|40kKR;?XBzyN?KEG;d8Pg;+Qxri1inE(u_A**X)OwSRK;Dp2j zQoFc=UCn<K=4?R6uV{o z+dCdI7iH*aVqwrumG9{r5FjOv8|}qTWU9j{qOe-_{D;l;3nAwdNpC!pXmnrvEHsjP zA~qNt?KJPx00v?GEhU`eoY7Y`xnxRw4J#%V9r#B~+@%-$jK+WWjy>FXy8dZMNNCS1E+RF?L;Q%tI|V3R1#yUO(^X0O=eBbUWJm+Y-xGfwBE@Sdl6`E>HYin z1H76YbFoWbThf=iTVlKA+OuDgvEBIf3V^qi6zW535mBeodk^q4D_gdV*XMd6skBFE z_s~BvxYs_&MRiz<{#97Bqg@Qv{&=IZ>VS z`H=LgB)JoPAWE%rbpK;*B`u(lF==oCmG8Z4SFXf-iW6Z)HQwbZ@egKbA-GEmS*~!j zY$PCfk&*VNm91o@WN%H-yJLw1hdQJ<6{->NgC8eU;J##way6toSg;FKFdMEE|K#80 zh4$X7Z^zX)HlLjsr>G-7`{daBNEWCaX2&kuRhRgG;oU(!{VG3TbbvUCF!`d8o9`wt!|V2U5ezP*7pLc z$;ity&cecBQ}=m{J=6+ht7-l`rC;f9mFwkPd|UhJ`!jl|`$?1(oqr&ZBBToKDgb(W zySpe9>ZQ|!59HQsCw25FH{$NxFFC7L4g(!vx(i4rV_lw{#OgaTI3iQkoLtf+@&s%) zPAbfsn@Qvbf}~jNzU*M39j#+DI9<*6uP*LCMp95w4VUQJcE!Q*W&vntwu~_)o;Q96 zuO;7T<}O~BfrLP+xku!R$B#bQ``&DciCKEN`C(c{q$>U`EbT*4C;uSu)`~CncUk6Y zQmXpcwfwo>$v?If;H6BQYs*LEHDr8z zb^+HcSy6w+r^%qynw?z23F1yKYaP?MFryg0XZaPHoZ74^1o}zxyIrH3Nzgz=L>=Fc zYWeKyz8`^F&0I6{mJ<$+G7RJaT+06pUjyYu zdh}ZBpJn1yyKL0*HI95@T)%p&k(A5BM9(_iCV3l{sWaX8k;`+3q3d~no0rRv9CrtV z6|%a*B+LEZtDqS}AGwEwO@rvzS)eUDxwa0KU3)V|p~s2;E{K3XbarNcwuaNrEV4i8 z{%5mUgzA~&h8B5L{zOrVFCwX!GdptSV`BwN0+QU}RS*sw`I#}$hUC+u zPvU|sWv`d-2TSeJTHQl#V~@z?xtSTQlH&W!1UYk0=k<+tR9IBSLK<0O%WpZWL_pSM zx||;G7{3z`?n4Rd|KShf7LB}crs$SOj|1%4=BOx}DXU=3b2J}+a(hUq;seg(a|ZVn zSZ)9QX1>&au~<^_8OhZA>b~L$DjGbUKl+e+3B24woaO-^wqVZWe`E!; z1%!mr0!vMO>@gsf0$oHdJD4i@@S=bU&3$g6?y42A1<+Mto6JStZ_zfX?9ns21Bdjz z8H|AAk3=N`dvmFolaq{+M)-?;jy41E?^r#6BIeEYyeBX!-LxDqcCM`CuAzg1U*hes(*%@p@x#-0c9LC2LH$2)r8-`B~9uK{j!_ko;<}i z*ng`~JwqZM%`Oa;K~XnlO6UM@0AW~zEESNP$3*y5lv0w2k&p0N3rcRoUp;(nkN-Z1 zwXU)tNkbG8NFqnfttiCJYPi~sWrwB?&NyIS?s2gbVn2X5*e?+y*eeT4tIz^+VK6*D zvUQb~3gLmhh?)liO;FihQlau6cnKQJDoW5kJ-N)z-nmCo%cFP#Q4T8tf=!U3WcfkS z1zZe>eK$15$SEDMDc^-w@mA_3xHCh@e@lhE5!HhDRx|kA47%u)*n|QXX|!f4zl0X$2Qi4mz`-%pDN%6*TE!cFm2r z5wAcUiV&le1%cyB0A^lQ-!_#;EMafX{>KYe{x9!dapCq7qeC?Pd015d;Q<&>kQG?P zZIH!5)399s4Aljj{q+SnotYgNJ2*M_v?WdEiNJ`R7>r$2(Juvm zzV)m0)pS1nXqZtM-wpVz44O#CXUVW88abp{g;kBKQ^f%wQG{To3_#>eK zLvO?E#512Xz3}P;;yI#j4 zgiYdeDZ3rDrwWMW$q*w1%E<-TyXffI{1~U`Cv+f!E3TC;?3q>lt(Err6VZj$FI(hEm`#NwyK{(ixHJz}$5=sE zqV)e${8c4}MH*2kDX(9PCnEkpSRe{>2F(l5saW-2Zybo($;pBG zX@UD+f6_>u4uCn}9(x9@=JEY+vVzss)$r(O9H zmnZGNt;}oEUiD~*iCcT55E8D)#iTq8n%f&PEwWqXU2j`Q1{bzqWT*+wN8 zX`Y|eC3$+r?$;n(ss}QnrWnNZzka!Z!70MaJMN9d#2xIf|9`EVdovl@0vw623;jAWv0F`^;2nMOp~q)6`Lkd<6=Pi~ECR%b_UT`=V~53wYd z$R$Z5&*#@r?Q@>np7Z=S#~Ej4e!t)M`~7@A@7MeN7~cY5lYI%aWh<7yJ2W_vChY2g zO!F%JmO21Uu#ebpl@JE9`Zyjqa6XXxR4qrO{QVW3@ga&rV30KZ-CGI3>~hyBTUcAS z!R_>4fIB%fI{I!fLZiKL6tt4<+O#z1i7EAgy+(roKR}O+fL1+aqm420%9#K@w1e&A zd7ujrwmBz-a1e#DvOGt(egT*<>i#2OHjoa?q)iM=&qxcL2u$}RNW0|Bh=UpG;Z?pP z>sPfMEkj|IEeK`2`lBAKB=JPwUPCHId&%adZFTrDE zGE(n?ijHM|vta|#(o$Q|5gunrO{eqO*{-0FAQR)Jico=Nm|JwLf3?j=Jj0v6Trf{w zyTHVG_ug|#c10?B5uFdhjE%_ew8c@#z6!P0buci>f6lF`#N`H(h?#G{5lyd2*Fn)B z?P%pq%5W((uKLSWn{X9(q(F#tkLj` zP7DnX8yXp1GQRi#1lo>~BcwWW#cjO|Ki8Q_;tTa_+cdpUoWW(a=O1H1f#LWcp)x$*nD5o27r zAaI0`p;~+B(*1dx)u<5)`k6F)o<{{=6mm4)Uufqz7&e1IsKgg&OUfD=m_0c=aeY~Y z#Gtp;{qGhRpXJ*|6H=6{h31S@!M)~Br+Kb z!ZZL#6;)LLp45Q!2nDmM8G#YE&+=zMD2bM<5If1J^(jVhfp3=jC9qiG`nL5B!$VDR zb~4kTRz+OF%G2@g#D66toqLhw`a9n8!W@^S?$}d(=CoGm3C&KH_het~_#c0Kheq2T zK5P=XfJAmgN8j+A|B)xiM=?#@3FvpSqI=?KMH!(V*z{6t)}nCP z99PL3B2owqk!1fua^B$_VYm0gq;0GNX8QU#T{}LjIi!}ipGku0}sI*LVXhzOav(q%x$6_Iw`UV&-4#|- zytXvN)&gkG9dU87G&kS1!TH)5aHXkSsoam#a%tWSI07fmB`hNY0h914*9aDCrDG(; z?rxWn@pLnLBX+Vax6LcWGP0o9nP-yFX_gfpN^z<#SOQ2R>lJct)`#;ilRL>Wu_SQJ znlXZUqopIWHT`FtPoJJ@Z8cX}76?F`7Sn>m#e)#&5ietaljl);h>;v{(|kOr30V=I z=VTDa5HwjPvHY;IGAxj6^KVft9EI?qa0W32Cub2n@<@8@NlfRo#F#3u0#`luh{A%*LIPOa+4}oUu@xmA4BTyTgaQ#H zuNb>#7=gOesF7xv&EPM1_uvqrsokfL8Gjs2PH3j0?1-$KhijHcGZcZ{)?Mo5VqCm3tFl=;l+(PYB+eGk`)$^4MvXqDe=`WU+HHpa;%X)!c^#xK5+ zx;a>PPm*3rpxp_xR~W07+~Vb`lNakV${cpzD?H3GU;nOS9t3whX8X|e{(D;(lRQ%e zXYsP*4F9ZCI>Phsd*L8t-Udi##%B|xzl|)@MH{1(AQ;0Tp-S^9ulH&g5E3g3B>%*N zYk&s%y#-C4HFs&B1pVENi=CZaRraUUf`^q~(+3X~QVi90i03s3A`pVykKJ+72Y{(D z3@NO_DL24tVitAE@w!28$1RIfPxH_TNsD*M6xau345f)Z!$dWkajEUwTV&T}c>fG_ znA>?1>v-!A%awxz7X^1BGJDHPHjL_pjp$!!M~cH?=-3ZH1~dXB(bCe=UiRt7zHM!8 z0pJq`BWBzo?6RV=o?h_W%Qo!b&18jA=alpX`k_|!BEOG&#Sk;pXh){&)Ol1NMA!MecLFsBwOeET%X`_k_eNz=9|40vse~cqsAP%Y8uU7#ZE(t4LN`d^qII{me`jCA z)I#5bwopCchNr9XXU(OVfGGu}8G@KHC-LlpR7aU~pKo>*@1eG)c}h6OfsZ6+XBB>N zDe~cXPi+93mll|qF$7+H!8v9;ba|cki*&pgbYv-)9bw7&kcv1=i zB`p970Bmc?T0oWZh%Hghw^2rbbHe zw*{E;L2~8IqcACJYHrpI;#YK4plo+I-kpgG=Ks=gbhi-dH=n-XB2t%f+^=t literal 29689 zcmbrmWmuKl_XWBU0TCrcK}i8ADWxR^1e6A8>F$zF6%Zv=QaYr&L>dG^K)R8V?(V#E z>-io3b)Wm;o-fB|v)}cum}|xuWA3+dGU8V+6J16i5Lcf(ex!gvptd3qD1MhNz$f#H zdY7dqacUdM>w3?Couy^RTekSm;{WJ6KvU>swno zcC?bi5a*_fs`mf+9DxGkILEFkNm`FQ#I0G+k9sDA`A&>3D~DtOb>xwdu)}wcLW~N3 z{^gYp1(UB{>oT;X!#?Bpjuobfz&8YEWyQB%6=rOyq-@N`Yt*1xULSWXGjRTfA zJo;Jz_#%t88&bR>dCGHQnIl)rtWQ%m&~I2B(~{K-vURk7%%ooT;3#EnT!`SQ7a`xs zdgw{`rT!7ox_wG1hp8c(XVrbiG~d!&W(vFxkQN`(BZ#ywjGAz^MVKUy=KG?Gy z43DrQ-ngdqs;cmp<()B2;a^g(v*gGpu?2Wyr5U+(*=sn$J)v zo(r^SN`xG{Mw2{Azs_YypF0qJvB^-GUhpz(+66S6>MO80}-|QW)_g$iA zVi5|8PH~>t+qXQQDDzPET%Yg7P)*rxy5_#3t*wc3+<;b8v-o52+F8-Yt%rKTC3sc(wV6`T0Ksi zt*#5XJKKuK{VVr*GBM-RmWY`hzN;$W$4Ic@{UE2UmR%C+y}J;OOVLt#>E%y<7G*CK zy)qfnwb86=2!yTIlSe{|&RQ#Dn2Og`#yM@S%hmBG3ymhf<$ZN|>8AYXo9_Gg^Gf#v z;u%xKLT?7$#0@eElz$~Peo;d%xgIT$QR2;|yZ%q4Vh5@9CS_SwWp`wbY_Lava*uO#8Udm+E3-RtE)ZYyL{s*VG z^Ht?a+JNd@$!1Z-auW-4BZ}5%z80zdx3i zzEN>)iUYah2r8?`dU-RDCYn z+S)q&wS9_;8j+_h^L}KMoN1MKL2x@&t*p%|K>EdW;cczj^Rr_HGbp{mc>8!BI$`L0E4ZM-B&Q##L}p$0GlugF&xwcUfjDf9bBu*f>so|_ zk@>Y}>KX{nWG<}~ZhT`-N=lB1`Kj&!?kX4mETUba=5UTUy2fF7p#1rK z$+H*H53A4%K8(7oT!ga@!_8lQ>5YMdeT(zakAd`JF+Ns*;d^MyTBt`mD}w>Tob9e0 zyVuOnuaZU;3yNDP3h`=rSGQoIY>qHibf%mYm~i@Os#iBF$W*VFE|h1?`*x9#5kJBF z^1Q6$EylP$HSxY>O}eG|1Fg7L!b7|pu=@d+=ZftgcvTjpH&2Qee+?ax7Wo}LCwIP za^Sz`y0cKGFzwSt!p--Raho=*PB7H5BL|RN;9ge z_$XQR>grJPbGSfVQ59>Sb*h!Y`1skq*SCUmBgx)p+a zVNx3wGm#Enbn(qeH-nDCYc`$IwG(E826 zc7c1<`TVKlfv*@3)hSN8D@b`9afy}Qp|VevzMt`V;jAfYU@-IL?KBffDC^FwFH68x zq3VB*=UK*a$Y&earte*;ViuR`uE3ae6BF8=`xS#P1j1aWSqEDPFaKH}bjm;8!y{JW zwwXk5C@Cm>m2_Mk5v3l?*XE+o`k4@mi<|Ei852XyeXq;^K0RFMy}6YeG2Ta_f9CEd z*POm){S8ckC-4><4YOuocX7mzq`seHwat|nWd$Dsd)0~~tGiN-2bsvz z>C9`wiMZSi-V9}Y6+GJvLBC35U~nS9x2Ju6Gzjl6G;K6@3x!kKwZ6;1ARbIq&Zq0U zu`;+_W`DXh`EJt84=p2np6m5o;f+6sq$#8s&r`EEpWA-go%))Yn?RGjD>9A%tOEDO zjZ&Rq;a@!Ov^MJBbtU!XYmRBq8|=H;Jgk(dVgGrgwLX)=8_r=YCa^Ct!=RUQ&D7pD8kIHe`N>D{{nzfkQ^ZEpg2=L*%eDy(N@3gqSN>y1B8DZ=()%ZEdZlrUnnMHbhV-k7G*V2E(VWDw|)zWaVt+QFwgfs3*~#ehPI}2$pWiO0A}^6ymULn%0A15& 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

Q8rEl-8 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 BWK#eD From 77925200085edf7010a6747f7fbeaa6cf3038b4d Mon Sep 17 00:00:00 2001 From: Timothy Lau Kah Ming <110795904+TimothyLKM@users.noreply.github.com> Date: Wed, 27 Mar 2024 01:45:16 +0800 Subject: [PATCH 098/423] Update docs/DeveloperGuide.md Co-authored-by: rismm <110659916+rismm@users.noreply.github.com> --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index d75f29fc97..76d5353c4e 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -103,7 +103,7 @@ The following sequence diagram shows the execution of a NewCommand 1. The `SuperTracker` class calls the `execute` method of `FindCommand` 2. A boolean variable `isFound` is assigned a false value -3. The `getItem` method of the `Inventory` class is called to get the list of items in the inventory +3. The `getItems` method of the `Inventory` class is called to get the list of items in the inventory 4. The `FindCommand` class will loop through each item of the list of items 5. On every iteration, the item will be checked if it contains the word that is to be found 6. If the item contains the word, the `foundItem` method of the Ui class is called and the `isFound` variable is assigned a true value From e98a3c9532b293571e46dc3da0ad7a69a632cbdd Mon Sep 17 00:00:00 2001 From: Timothy Lau Kah Ming <110795904+TimothyLKM@users.noreply.github.com> Date: Wed, 27 Mar 2024 01:45:29 +0800 Subject: [PATCH 099/423] Update docs/uml-diagrams/FindCommand.puml Co-authored-by: rismm <110659916+rismm@users.noreply.github.com> --- docs/uml-diagrams/FindCommand.puml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/uml-diagrams/FindCommand.puml b/docs/uml-diagrams/FindCommand.puml index 775ebc5679..9748e589ea 100644 --- a/docs/uml-diagrams/FindCommand.puml +++ b/docs/uml-diagrams/FindCommand.puml @@ -26,7 +26,7 @@ class FindCommand { } class Inventory { - {static}+getItems():items: ArrayList + {static}+getItems():ArrayList } class Ui { From 3ecaa56b73289e28cb3b6346038f5ec6b12af799 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Wed, 27 Mar 2024 01:50:35 +0800 Subject: [PATCH 100/423] no message --- docs/DeveloperGuide.md | 2 +- docs/uml-diagrams/FindCommand.puml | 8 ++------ docs/uml-diagrams/FindCommandClass.png | Bin 23348 -> 23692 bytes docs/uml-diagrams/FindCommandSequence.png | Bin 27031 -> 23476 bytes 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 45a8c857a2..6a20e45d5e 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -129,7 +129,7 @@ The following sequence diagram shows the execution of a NewCommand 1. The `SuperTracker` class calls the `execute` method of `FindCommand` 2. A boolean variable `isFound` is assigned a false value -3. The `getItem` method of the `Inventory` class is called to get the list of items in the inventory +3. The `getItems` method of the `Inventory` class is called to get the list of items in the inventory 4. The `FindCommand` class will loop through each item of the list of items 5. On every iteration, the item will be checked if it contains the word that is to be found 6. If the item contains the word, the `foundItem` method of the Ui class is called and the `isFound` variable is assigned a true value diff --git a/docs/uml-diagrams/FindCommand.puml b/docs/uml-diagrams/FindCommand.puml index 775ebc5679..96f5c53860 100644 --- a/docs/uml-diagrams/FindCommand.puml +++ b/docs/uml-diagrams/FindCommand.puml @@ -26,7 +26,7 @@ class FindCommand { } class Inventory { - {static}+getItems():items: ArrayList + {static}+getItems():ArrayList } class Ui { @@ -49,9 +49,6 @@ participant "Ui" as Ui <> #e5c2ea SuperTracker -> FindCommand : execute() activate FindCommand #cbf7f4 -FindCommand --> FindCommand : isFound = false - - FindCommand -> Inventory : getItems() activate Inventory #d5eac2 Inventory --> FindCommand : items @@ -60,11 +57,10 @@ deactivate Inventory loop until every item in items are checked alt check if item contains the word else word found - FindCommand -> Ui : foundItem(item:String, index: int) + FindCommand -> Ui : foundItem(item:String, index:int) activate Ui #e5c2ea Ui --> FindCommand deactivate Ui - FindCommand --> FindCommand : isFound = true end end diff --git a/docs/uml-diagrams/FindCommandClass.png b/docs/uml-diagrams/FindCommandClass.png index ed315c234b5f4335e86f5da7ea58af8477c91f43..f1f7243914383b56da331a82feb4cca8e2aa9ef9 100644 GIT binary patch literal 23692 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 OHd7;u-FFNe&;J+7fLC7t literal 23348 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 diff --git a/docs/uml-diagrams/FindCommandSequence.png b/docs/uml-diagrams/FindCommandSequence.png index fabcb174d6b906517b28681655d86a8158bba049..4feede38fbf85aef22d62dac19788ec950cf0591 100644 GIT binary patch literal 23476 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 Date: Wed, 27 Mar 2024 11:11:53 +0800 Subject: [PATCH 101/423] Update DG --- docs/DeveloperGuide.md | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 5e1198acb8..78de2c30f4 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -15,7 +15,7 @@ The Parser class only contains static methods as we have determined that it woul > - All valid command inputs by the user will have a command word _(first word separated by whitespace)_ with its respective parameters following the word. > - Each parameter must be entered following a flag, i.e. a name parameter will have the input `n/NAME` -The following is a class diagram of the Parser and its relevant dependencies\ +The following is a class diagram of the `Parser` and its relevant dependencies\ ![ParserClass](uml-diagrams/ParserClass.png) The following is a sequence diagram of the execution sequence of a single user input\ @@ -49,7 +49,7 @@ Thus, it would be necessary to convert the user's input into a consistent format > > For example, suppose the program wants to match the user input parameter > `c/coconut a/apple b/bear a/anaconda d/donkey` to the regex `a/(?.*) b/(?.*) c/(?.*) (?(?:e/.*)?)` -> 1. The input parameter string and a string array of flags `{a, b, c, e}` is passed into `Parser-makeStringPattern` +> 1. The input parameter string and a string array of flags `{a, b, c, e}` is passed into `Parser-makeStringPattern(...)` > 2. `Parser-makeStringPattern` will return a pattern string `a/apple b/bear c/coconut ` > 3. The program will then try to match the pattern string `a/apple b/bear c/coconut ` to the regex ` > a/(?.*) b/(?.*) c/(?.*) (?(?:e/.*)?)` @@ -64,6 +64,27 @@ and extract out the necessary information if there is a match. This will be used by each command's respective parsing method and returns the relevant parsed `Command` object to `SuperTracker+handleCommands()` +### File Saving and Loading +Saving and loading data of items is performed by the `FileManager` class. The following is a class diagram of `FileManager` +and its relevant dependencies\ +![FileManagerClass]() + +Saving is performed automatically each time the item list is updated. Currently, there are only 5 commands that can make changes to +the item list and will call `FileManager+saveData()` at the end of `Command+execute()`. +> Commands that call `FileManager+saveData()` in `execute()`: +> - `NewCommand` +> - `UpdateCommand` +> - `DeleteCommand` +> - `AddCommand` +> - `RemoveCommand` + +Item data is saved into a text file in `./data/items.txt` by generating a string for each `Item` in the list, containing the attributes of the `item`. +The string generated will have the attributes in the format and order of `NAME, QUANTITY, PRICE, EXPIRY_DATE`. Since an item's expiry date is +optional, `EXPIRY_DATE` can be the string `"no date"` if the expiry date is determined to not exist. This string will be written to the text file as mentioned. +> For example, suppose the program wants to save the `Item` with attributes `name = "Apple"`, `quantity = 5`, `price = 2.50`, `expiryDate = 19-04-2024` +> and the program uses `"|"` to indicate separators.\ +> The program generates the string `"Apple|5|2.50|19-04-2024|` + ### New Command The following is a class diagram of the NewCommand and its relevant dependencies ![NewCommandClass](uml-diagrams/NewCommandClass.png) From f36444fd0c7e480ba0d0871306b7b379d38cb60d Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Wed, 27 Mar 2024 12:10:57 +0800 Subject: [PATCH 102/423] Edit sequence diagram --- docs/uml-diagrams/FindCommand.puml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/uml-diagrams/FindCommand.puml b/docs/uml-diagrams/FindCommand.puml index 96f5c53860..0d1d401916 100644 --- a/docs/uml-diagrams/FindCommand.puml +++ b/docs/uml-diagrams/FindCommand.puml @@ -55,8 +55,7 @@ Inventory --> FindCommand : items deactivate Inventory loop until every item in items are checked - alt check if item contains the word - else word found + opt item contains the word FindCommand -> Ui : foundItem(item:String, index:int) activate Ui #e5c2ea Ui --> FindCommand From 48407672f6a343413e2f67a60ff23457692d17a2 Mon Sep 17 00:00:00 2001 From: rismm Date: Wed, 27 Mar 2024 12:25:14 +0800 Subject: [PATCH 103/423] Update DG for saving --- docs/DeveloperGuide.md | 26 ++++++++++--- docs/uml-diagrams/FileManager.puml | 47 +++++++++++++++++++++++ docs/uml-diagrams/FileManagerClass.png | Bin 0 -> 28187 bytes docs/uml-diagrams/NewCommandClass.png | Bin 50353 -> 38109 bytes docs/uml-diagrams/NewCommandSequence.png | Bin 29742 -> 23799 bytes 5 files changed, 68 insertions(+), 5 deletions(-) create mode 100644 docs/uml-diagrams/FileManager.puml create mode 100644 docs/uml-diagrams/FileManagerClass.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 8b3f8ca791..6de183052d 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -65,10 +65,14 @@ This will be used by each command's respective parsing method and returns the re object to `SuperTracker+handleCommands()` ### File Saving and Loading -Saving and loading data of items is performed by the `FileManager` class. The following is a class diagram of `FileManager` +Saving and loading data of `Item` objects is performed by the `FileManager` class. As the program is running, +`Item` objects will be stored in the `Inventory` class. The following is a class diagram of `FileManager` and its relevant dependencies\ -![FileManagerClass]() +![FileManagerClass](./uml-diagrams/FileManagerClass.png) +Take note that the `Command` class in the diagram refers to the classes that implement the `Command` interface and make changes to the item list in `Inventory` + +#### Saving Saving is performed automatically each time the item list is updated. Currently, there are only 5 commands that can make changes to the item list and will call `FileManager+saveData()` at the end of `Command+execute()`. > Commands that call `FileManager+saveData()` in `execute()`: @@ -79,11 +83,23 @@ the item list and will call `FileManager+saveData()` at the end of `Command+exec > - `RemoveCommand` Item data is saved into a text file in `./data/items.txt` by generating a string for each `Item` in the list, containing the attributes of the `item`. -The string generated will have the attributes in the format and order of `NAME, QUANTITY, PRICE, EXPIRY_DATE`. Since an item's expiry date is +The string generated will have the attributes in the format and order of `NAME,QUANTITY,PRICE,EXPIRY_DATE`. Since an `Item`'s expiry date is optional, `EXPIRY_DATE` can be the string `"no date"` if the expiry date is determined to not exist. This string will be written to the text file as mentioned. > For example, suppose the program wants to save the `Item` with attributes `name = "Apple"`, `quantity = 5`, `price = 2.50`, `expiryDate = 19-04-2024` -> and the program uses `"|"` to indicate separators.\ -> The program generates the string `"Apple|5|2.50|19-04-2024|` +> and the program uses `"|"` to indicate separation between groups.\ +> The program generates the string `"Apple|5|2.50|19-04-2024|"` + +This string is generated by the method `FileManager-getItemData()` + +#### Loading +Loading is performed at the start of the program in `SuperTracker-run()` where it calls the method `FileManager+loadData()`. +`loadData()` looks for the save text file at `./data/items.txt` and reads the lines from the file `items.txt` exists. As indicated earlier, +each line containing a single `Item`'s data will be in the format and order of `NAME,QUANTITY,PRICE,EXPIRY_DATE`. Each attribute will be parsed into its +relevant data type, creating a new `Item` with the extracted attributes, which is then added to the item list in `Inventory`. In the event where the line +of data read is not in the correct format, or the attributes are unable to be parsed into its relevant data type _(i.e. the string in the QUANTITY part reads "f1ve" instead of "5")_, +the line will be ignored and a new `Item` will not be added to the list. + +The parsing of string data to an `Item` object is handled by the method `FileManager-parseItemData()`. ### New Command The following is a class diagram of the NewCommand and its relevant dependencies diff --git a/docs/uml-diagrams/FileManager.puml b/docs/uml-diagrams/FileManager.puml new file mode 100644 index 0000000000..112e5d15c4 --- /dev/null +++ b/docs/uml-diagrams/FileManager.puml @@ -0,0 +1,47 @@ +@startuml +skinparam classAttributeIconSize 0 + +class SuperTracker +class FileManager +class Inventory +class Item +class Command + +FileManager <.. SuperTracker +Inventory <.. FileManager +Item <. FileManager +Item "*" <-* Inventory +FileManager <.. Command +Inventory <.. Command + +class FileManager { + {static}+saveData():void + {static}+loadData():void + {static}-getItemData(item:Item):String + {static}-parseItemData(data:String):Item +} + +class SuperTracker { + {static}-run():void +} + +class Command { + +execute():void +} + +class Inventory { + {static}+getItems():List + {static}+put(name:String, item:Item):void +} + +class Item { + -name:String + -quantity:int + -price:double + -expiryDate:LocalDate + +Item(name:String, quantity:int, + price:double, expiryDate:LocalDate) + +getName():String +} + +@enduml \ No newline at end of file diff --git a/docs/uml-diagrams/FileManagerClass.png b/docs/uml-diagrams/FileManagerClass.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3e186c101d500565c18935733c997bc997850c GIT binary patch literal 28187 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 literal 50353 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

4SkC1V5WpKT9*idU@?u>Pw>JKdF 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

el-_X zzwP64rz)Q}16694+FLhhS`_7;$CV1wSWCg?aSx zfkGaU4tl8nZ%&=i%z(aTkF#PjN+IO4aL)PV#h>k0V2_&)tg7DUv9GX~Eb-jgmEK>3 zUtZ6Q0gZKE%MQ4`*dARTy`ejbIER70g6@KUeg#`hrh~RtyW20ve5ni&FJD&rSIr}u z5k0q;A^TgW(f=5VuJHfy9^vyknciW1sI^&kRodwAwzs1ag1sb#!v4Fe`18%tTqf}D zI$+<@+*<8w?-uO&Pqo6$Aql>#aU=W-?sjA>@ic(BX+bcsC*ni^qQBAZZ(--EA1_sa zZMny;@W^k+KCOMS(I9?vzDj4mv9upTy`fxf1RVVAog{K*I`7r|AU!axE{n=6U6}R@2Qh-vRI524SOM z1Z4X3I`dSU$#0rUUnrs~<{n-=iB*LZpPGpl@`bF1&c66qgkw(j}WBIK5l zndaYytVJc3L2o|4EXH#qAsxUHsN?Uc_5sjmCR*_c~(%~=6EC-9Z8&Z#a~ zs>}J&ufAa9gfiRw+pG28$Ny{ka-b&Ivi?76080LSw~O(+|8(I`Fp;pI9$;i)NMqJd zL_{a~3jW76)`s|2hV=ETUrOKj=23hz>ntYaGP!IiKTmzXJXvNh)o*QV3IFRH>+^Qt z1%}a_CctB@)4vn{o-2lsJ9Xk4|FKsFhb5&%1V*jPp&Du{L6&9EEw1*$w{TCXh{-J{ zxS6`TcSM3-8oKqLL8t^A@$+R`nP5q3r7YUfR3>(Da^Tw%r}F_ik>Gl~Aln;;TBuWJ z?sPB(axVL(UaTY=jz;XV8HLT@LZ~;s-s+x)%VO{uZ!C*f9gT>GEF7IQ6(~IBYlH>5 z_vlfoQ&;42yr6it(O$L+8?py{8I||V$sSIE@bj(s{q?a$m>%*3hv*|RPu0GcvPVMF@#!vFHi2g?q^w14VSy4@@*a$E}K8Q zgA47}A&K-K=_85x8{gAw$RJQHHCU&;T6UL+P(l+WX>D$phBtG)3g0nf{!rw1sN$-oyoa;JrI9km}Cboxz0Il`TO zp@z*4-G6;{K5`%X2_qj4H<+P*uvNEdb z&(nFA_t)0gK`#%RF9oXkQkVNV{&G1&zJCP1+i!Nvw0SxUzU~Z_@wvM!JbSw;2kwK!dKiBtX|AuZ{`r{d zO#lbo8_$HCAu$%F-nvo=I0NlK_-{K{irGTIc(%l#r76+Z-_$>Fpm{0h`%>@~+N?u9 z#!0UB0dqe51)tsYS5K%~z7*hP$qmwF#T-!kE&|))agnz(k|NJ$F;PCqqFpVrs+pH0 zUnrL{m-t2$3EE-?EBPRgBvIer$ErQpn8KiS#5qNR)#Lndb9z*CHeZ&e*Wsf>t(;x% z_zDjh%g#1p==ZPQ%zsA@G=F~Fn|$dwQ()s>9?dhH3ZgEudWnjcQ^}_)AP@!+5}pz| z?+k$gUm>Of^D*3LyQ%@dH=3sG?F8SidguFouH9)_m>I>9iY# zmKpMkyJL|4ABS$vAQe-5G!D~D=q-s+jEmvi2RG_QY!(AOe$La4y1}(8S0~fS%2`3I zE&8d9J%KTHF&~_?_wf#CpLmG3u6`QKRT&z(ovoD$ZixQ=+5M3x56U0L-cv4UHkz99 z^>9Y6uqfvGD+{ap&gT}#TO?tO2zgP~oqt#JE*?(~(IG%52XU)LvqG2e1T&1QXG#(y zZb=hZC6h&FApu`9dGj^wHpbSrSe?V-;u#*$0IzXc&~@s+AoOupfurxZrf(aFunmJe z17le{j(KRYvAjKk8MB!fFK>^T{snH;?@%wWJ}mLR7PkjboQTgw22miqEaUI=`H{Yr z*`n%;BQ>;`%WVJ>EF?$4|AO4VKrsZP^Ywpf`U`suMl3d4ImYd~Ku5OTws~Gj6;0x? zDCcajigkR9MTpPwiz1(YDXC%~(E*xk2#Y{@Fs6Z?wX(|twgmq9qdEX zWG|fh#spn9?o51~$>!BRbFy{%cjc=UqU|5|Q-}~@YV|Gu+eY1&c?X14N~?Mm^C4(( zGx-D#5U2h|eq>O{Ew;8j??0&BzY9-kK|>aD%lV&@|1TW>R~P&EdHo)ncSh4DQ6dFA zev1I>-ZspSkwLROK37~grh9i)yVI}zJ)^eDR(~|ja1u=#Fk{2pgK^{S8f?)%w5q=|gSWuP?TxhcmgW);fGw*DlSn z1-+@I<48Egg=0UKY03i8bv%AirOH6??%}+1JbuuJVUo*sg%XvJi$gre`FulgT>7}< zmfGvj0q8HtjK%L;ZnU)&4eR~@! zbet~e-S`)z7gbsKiunDXA2V>XJ+m3Jg?x_=Eeh2N<(!~r`s_QMj=ZpuJuiajFrdv> z@G}b);PH5w(6`tcA09uGy?(wwX8DWuE&c9+96(B=E0;oF$RgaPaC5p!0|XzAIE+%= zh95SY9qTAhnM*Y$^6_M%WAWAjxTvoojUjS7LkUziOVyCrhe%wIL(xVQA$KJ_8qpGp zZ@N?rLFv-NbO;);Zk|+(RajftD@3%Cp$CG^5%!%Yz`{8`wJ*}P-4aR$wUvl^KV0#J zr#FE@n(|X$#NXJfPgd}|CXqrKO*s;o#&^AL{<~214KkMI?Z(Q@Eo5w*2wB9g!yarORU2F^4N~)2$X#?{c!FnkNyN zx7gQ`@cfP6-Kzf?0Fw4tgfoP#xGM_932peBlVytIg$i}dK<|KKBT+pfn!O%QBEz;J zlSi~gS4LzRLIVikd!F-gs2ACO)bvuJz6cC_6y>eCgm;wg(Dt+pybSm0ak@VGxQ_F| zNTlIY9ue7uCcfBRAOfBx9Ib!EyGsJ-1DNbIf^>ugM|zZKCW_~~LLQ^2sYaE-`Wi!q z#chCgo%wj@*{czh5$qfOD9!>>vn9-A$*fn7Zs?7oDESKfLX$H2+jU`1K@UHXE^#`a zQYGJ7iu1a^p!gume<44M-9><|seS=vYpywL#&6PY5^~wxGAaTCoTS&{bjUZbCcd$a z{}-%ReQQOsKV_ygEwp#fl%b7}`5#n3 zXVg?9;%KE+22vSy^6s{7%Z)_uRWunfaFg|+j`X_qC3`s!r_WdlW(RV3q58O6O|yu^mI8K9+#t+6lpNTLg z@mN1CjifSJj{7~ zvv!rJ*aELIH5MvnYEHfbiNUX~wK%(yis;5f=`LPuVsJKkUhTE)Hc$YWMLm8>Tan41 zgXzXlWZV_CVxhwz$S+lw6BU zAzw(PawgX}4#4NZ!1&t$O)q28t~TNluRiQZWdg5U?hNN!ijx4bX=b6*-+w*)cDt=v znl>|n{RV{Eyw7SfP~Tv`xuMzOWTsdZdLdQ^1YWsq^R@$9(cstfr?l!kITx&X5Anqj zG+QA~;g@z1>`k`=(YTWfP4}pFLPNn=6heh=#}FGmiMd`^H9)<`RBi^3jplD1v`nI{8h2 zcfgZ}lB1t^MDsj?;r7XLoi10!KFwDGi0VpKoM9yD)Nf z-GA!QI@1bkwujYIC_9V;h_QqMD!qp9DRI7d1e^`v>EYxZ2E9;&?W`%KYm{-nkn_uY%0FANZhA(6SP$h%3r0QZ!XOdzj(iwIK z@rVWb6JM0*V(phf9txQtr`6olWsHEdXBL}T)I!?D_Fxk#-UktX>j>qF-~<|ATh?;g zu4puYf2I#!8j9j?G&+Aj{bt)zoE9q2w}eJa{0qnL$*=TuJlrgYc>5#r)=^0nEm>sM zPwBTZ8UzElWnqTxUWM4CAr$mZ8hx?kB?j$Y_qAQo_=ChkKH5#jbItXFGNpc zO2fYSo!0=rR3MvF?<8%8tO62e6s6P&>c=vAfSxZ_U$~b43Pwa(GXK zjdGj*p;x}E1}+${4;lF422f2Rq_4nRg~xmc8||$fL}YHiokFz3x~gdbO8gcP1~!sI6p1XROI3uN zr92Jc4AtNW1D*$m#SrNOOkf;tmIXXz2t!}Kt6+q_-XJ?17K`Wc?wg~zQj@ZeWvP`E zIbJT z$3yZ)DfVS2;#0r;yj~|8OJ4-yx&bPO3o#tlF3ivSSh!mKRyW9B3P?aA?AIog(|nH6 zwIGc?f-zy4qPlYhfU_&{Cj?UXm&dEPFwjUmE=K&qRkXKRppUqYnCD|^K*&MY9ZY37 zI+Fl67S0JEYPxn67I0>K#yuf+clVqQapgX680;7{fCkv}CJ4zD1-=?#!~sCi@%VOu z`Enig#dYMNO}_`l#RRBFC5V=Z4DR92Vg9ipR{RhmlG6v9r4LPPh(N|w?1}!H5u~hA z2{VCOV-|>xA3@*u3VH=36JGvZi}0rTQZX8O+wMl29ll=vj^D;JxyxiihTt)pF>Fdq z;w=`g5LG&V^1^3h#z#;beO1ilTAs+_%_rs4^bO^M@vL>)l|$Xud%C}#bxj7H)Cp-{ zfMVPOsZwD_s5jocU?&?}Aebf=u-XcGYt3G-LM@hO3YCpoAErtO*NOMBqrG7dotSOL z6aqqT?Y~4xy#T6~-j}zs`XGnJuEMYvDYF7(Jp~64;@kH!U(yn~B;RnqTO*Vz%(LTf z&iol0guIOZGowdja6qfVU=$B?R6=-)fO{-}Vkb?R>F#Yzd#1L__NPj};)C#8Dw7N=Y=gnSY_={_Q z&iCshHSR+^orPIpBp?@E47|wGz%80jAHa|Vq^1=XNZR!B>x*YKZy^TXW^Nvw!`}8_ z`3WmMk7fxE-%_i9dq-dXzjP%{xaI+B( zMcYHKUhNRCIK!?%c^tP6Akx}q>mGE+j-F1tR@Ril%h;PC;!nMgQB@7R@`4cQ37g>&KHWNy2 zVW%i>*zu(`plC==B030e_wE^fb5^MY)^gRj1jZr&4wn4N43&m(hutkdZ~D%wyDHw` z@?`M;^y^BAinVv>RZ3^;e=H;(e3a608MBw3B7!G7_Xjk#Qx60v>lwRVdF=iLQge9) zTigWIXE<1Q*0q(epD*P^{6TxdpRtSzQBP%m`AHF|vi$V?J$4n$_x?1eqBe<6otjms z{Mu6@V_NgwHDLs)aK}PJ2{)ikQ4fSiarNT!IDF?4zg5!{go6%ZBxJbhp({E%*ndG6 zU={MIAC8dTuNw)z_*HSpCDGa_>&l2;^5B5(li}@7I{Hf-cRU`t?F5H~fR22z36BgM zp}(s*feAruT>v4_OMnP3L#7^qkvo7H;w;I?tt2A+x&>bNEuc?P&OlMSM^|972px z?fv_*Cg5}TC`uktr)(PYx0b=!ZBI<@V*?MIIUQO;3?dI!Q6AAg&)0Dy_fQyBi@-l3 z9@;*1IVw_XX~qE-<4;ea4!7HJ!edi3zp>o?(HNMUEtdAbGAGm3zx1)v+Q)jvoW?f4 z9Q3ph%_0cU?*j_K%>Iit@apbxY-c|r`A7%VQaKM?848$ZkNYh5!9#~9n^dgK<6>*& z?k#DUM=We{ifY!FG;#G$*0Pz1Ph`CUYp zqd8gr9_{Nvmd?k#7eVBe@ccEh)6eoz=w|hieK&KZ>aCHQP!A1~sVf3fUYzF65^#HP z_bc4dX4bOtDH?+gABu1ME8fT4_G|{RBsEPn!Y;pq9#ze%-w&;-9xW16X)*g-wQjU* zD=fEcCv(^eC_!JAt!lFo_gRuVlQifz4JWcX>`0z$0kt0MlFBGjq%hRL>-Ozn5J{A# zBpL&9x%KUj!O>Siu!a>SE*D}KD6w0xhV34?+KW9wzMHif&4`+!+Pp*v#;kKHi{O)HQ ziydeN1hMT-(>gH3Isw;-O^o3~Rb}S+PgnbsWt{Mf=|H}RX8bC5D_!6zgg6lCIU$JTbh3HFC;0%ZA%ww zO_%RHtzFN0?i}NY!rgn=)5%2Po?yCsdtDjVz@fiYw>=E>27MtIS|`B>>ro7hDw|$P zAT}UF$vtfFLzE{BAv=1nhx?7sNLEU4+fOFm{49m>QDr_p#Ot4Y`Z@}IMH zFn?M1kHtC*vB&R%;*sZLA%~wLiLC16`je@G=^=5ylTJ3>l`i-0<+u7`7{9e@vWP1uwHL_;38RUHI9G-OebdwU*tz~;DF(1MJ&#=S@8MsO8IHC z-clXgZL=1y84;U+UU)LrIxLOB0OP<6t!WLQE$bl(>|NupxN$>3j5Q89q7sskSd!3Q zEI4l50I>V>x(s5Tx3BbOYg&RVy6+Nj3b4C;?bli2N(?(YQVH9PK%Z3Y zIuS0BpdQoB1kqC0cU|inL*92}FOU4|vhE*Vb+Y zef=QuK3iTuxB}diibl+L;HS;Ws)2fjT5k3C$l(;{b1guYh!weoh^94qod&_*ee$xz zOuPSAV`m-@b=&@ZWM2o_w;5|$l5Az)DJe>fC6R<=C;Pr|p679VKJU*lyZz9zERNTdKUBf8M!7Wk z5zmB7^t#0I?lXxPy%*%bd512s_gvGrSUaCX>%uun&%;|7wic(h48F+(NU8cPxwZ;Q zGD+eI$VV=()u{RE5!TgoX%9I(kJO2}@Z@JVyJGU1&qbfk&u(&$uo%GMG?bY_(!Cx=y_EKP%rxoH+aj3-y_OrZe%#8WJ5&0_yrLEb=Igo594!T;xxqEQ zApHXaI#uGp#RuxyW+UOL^o>zyjd8-k_(VhsN=it@bZyz}i~6VVQ!#$gUc^e=P^G(Ci zqA;66MFRg>_V1EZHy2-iEO6X)yVQx(+qrv&X5hd;P|se_CT?X#J|*2+TTz+WImc<( zE-M^|MDR>s*GM;P{J;|}?%G@^#WPv=7ZWxeJHlHOm5`&y6dpW8N}Ea&xq{UlETf@s z=&+i5IVw0q68XdNn%iTQ>Zv)~t8^=18DF`EeSQRc9NKF6qHc<(l_Oj!Pn4ESP zk%+?)qE``-sU+$x*um>H`K}5xvvvX@1kEgpt)!zl)0%`<;py_iUEL2PmumDSfRn-E3o z9WrH;aF~EMJFe-UZaepyM1!IvY$cjQ*oWM|;!OCJBRr%CA`Ek$Sa!Yxw+gYTW6#>9 z(3~g{gt*(ddI}A?5P8b=MBPGvE8z;I0qGhf+KAthX%Je}4eJv7BzmK#{Bf+Rd-TR= zlcc8|BIxn{NXnfMg;rf^aqD1r-ot)cx@}ghVCL`dT4|VDGyh4X~dRV71jqsvxwb7U0NRq|H3fL+e+^fzZ>e_ z96?S`8bY0P6CIQkRDBU~AE%2zeoC|WliMRHE)~gae_IzJThJ;8_w%= z_Sz<7-demG(K$w<{?V$Id4brSqPmtK|MOVWn0eu7mIUdr5E$=yeHlv| z^#`hZF0?6p(L%HIB{9|#N9hLRcB!mF>Bytc`%C4-nM{ouy*6G7G@Y{GD>?Qsp@%a` zFhxGtT7OdIc9r9p(Kg|%*jFL{V+7=8vl4H`17j7MG1jML!-Z$!{6Z_Hs_gpWPsP`1 z)eW@0e;!ukARqdLqmL?(%GKc!8PD<4bYD-8@2W@9+CPf3?Wol*3^RC=q>XSs_IM51 zlo`8;3R)8-Yrd6!3N_Tap+M`#;;`l<2g>v(#5tU+caA;;bI$v+f1$+ zijhAaFe8R>7*(ZxmZT`H3(s-iMXj|;@4dI5Ih&AmoO*rVur0wt%yBeTdg6@gUye(i zZS8OPOlof=c4su0q*HxaX%W0qa?h-dUG1e^S)5avZgu%&osUqXaam)d)#`_~Gj*=&jjhQj-3n>+|h1MjI(a}0iq{jNa?XyL`RB5zz zDM@KOG@_E|H8rn9fpf^nJ<5qIBkG2E-$`1h5{W_)p&x!CJxI}1>+}RKM2I=pEiApU z+BD;92|P{&JigZL30DZe+Li4w;E?;s*ZdBz_~+A{@1HW^duA$DYDzU=A#r7+&24-7 zwt7cY8mqzcv+MUv`2A>i+Y>e47fu)GPjB9n)3ml9*pPj8rF~+Z){)oB)%?}V*vRc= zCB8G|m8o7biA#N-UiY3ucFr3)UG0sCx2Q}At74d;oD!gjEQUG^1en$Ekc@Y6$7na+^%~k*@F3F7b|xrsLQnK(r_2o41`BX~ z^WL7J$NDDTWX6o=eNs@kxJKa3WW*^dZ~6SaYh}V-zOPc%+@$JV%UI zZ0X03G*&IL;R+Dxz8cpJ(Nj7;P;k)GxKCJJu3&w9?UtoyxEZzMi>#G`DHEhz1M#?5 z!U?$zifY;7n*z#|6@BHA!fvD$@ey+jdV$e>!B52T8XDVA&i4X#7eZ`VAJwl}#U{$U zH~D6(vmxqun8mC3dhAP|*ToMmKPFa=?26xe_q0TJmzL?q{HEUEvli+dza`hj0mp;` z8H2o_#H@8bdSt)q&t>OYP-@Ebi3j?0eQQx?kN$PFWU8exlOmvL$Wcg9m~IA z(;rE_J#Nzfpav%}@+5C*>MrLGC=PjPL#i~n!Ojt)=Bk3XWSnT<-VJ#fhEFdr>{ z$pw{21CjAq%@^M}iaJNjBygywqbfi7zm2KXW(8N=w3@P<38bnW4on;vJSFEdi zkiL5%4Ao{nFuFhwZeA{~ zn2i#!7jdj_7hpZDvNP|>O?`ym|D0i@LA91P{eHPLY+XUwe@%WrgWkAZLTB;s_i}S; zL&;~Rgl%IVSrT1NLdGD}Kt%gleNVEeDht3E^N>Z!Hr*VgEWh6moLpk1Gw~_cFTJ`O z(^tfd&!@id6bZkr2%J2);k>dSoD%0X?^A9rx;VFz@qYv1in z83oP>gP19yo-LGvy8W)8bF*|}HY+9)M+r(^P~>l)wyaT}Ps3kCAaM65=O>Z0m2|T0 zu!DZDr(KmH8aB<85r~;|%U@oq+A{w+PQ5^}%x^EK5_Sf_wEe$POm26Gz)BDM;|0SK z{I6I3Z;V?PMMui<%U|*SFUhdkZzKnNzs`>o@CwbJSMWhvJO%T=O|Qb=5qZLY-I3q? z)qlP64-SgIbrvWYJRbuytx(}f;xHmB`fPJJg$;P6wSnK~_3S|zhRI6gs9E>lpJjvZ zL%mdyBsU0}2D1?>KiuDUA< zrrC4DXS|@n-vieMz$XB9_~EDU<(21iwfd zgymScuv!*%-Y75~(tuZ5EQ3#Y|81(sQW+k85K$pKyC(+Vn^A0@UvmVNkk7_!G9WAq zfe(8G75#ps0EO`aAqt)da3xwlHy5oB)MkOFI^{Henkflu;^mv{ln<6imE^gq^atRWvxeXSa^}P)()?eVu4K@V$IkK=JRS3Sb;6L192+=*9 z*>K6#7c1;yC(Nsnc%o?w@TrA<`GwO*9B#D5u?^Ymk6a5{JgNAl_t9lS%Kpn7yP_<2 ziqK_BRA#$)=*}2^Nj2xf_$j-7WM>j8%)Hj4bNr`so_6Aa2}c{qcXm-MRNd$A11BYm zVm)<3=eT}OFl9S514}Xpi0^qinE8vGho=|k`TGey>}*fu`7|nU^KHsmQaWx?xciq4 zbfTT3{&P_tM%XyE#u9&9;F7;n_y+u=>!*O3lU+ig8rc3^6DN5c zSi4ET0|@9TnV(Pfh7aESA@-r{YW()(i_#OP=d~HJ-fUyto@)No=XY3S-L;;L*FC6t zV||mBUG(96Z#pQlc64^zZ&=DZIDwF1;Md8q>b9lH(~Ny`$aa(UWcNwS46CX1mJBXO z=zG{{*`+WChYTNI&h@Xy1sy$_)M`9sLU_g&M_%)CH5d#ub+EyBb<;!#%2*{1rBsA6 z44+--3X{=qt&X6-6Oa>i_;b99(CgDO&H%K}iO>XV`eFVU>wydFUPTD0LLx_z6 zz6?Ja2uzFze)xO3kq_tji71;?^U7PPt#NGc#?QeGs#eOlLKADO{(B7H4DWcopD{~m z+y4MV{y$KW6Kb$Yd9L63n~5A1OMvH-M8fDZ3uQ_R@WEPymGNXts?2JOBfpBp=>54kxEqdwH`*xGP;8W?lK? z)>Oerycv1WgXbYZ+P~T1aO}$S6f@3)oi98eVaF`-V*>sm9i+cb5TvB`VC~~^63=~Y ztMZQpmQA5Fgd=A!CYBW9H^JDU! zUsLuDc2_So`1^bW^pd;Wck9;ThqC+?hv9{viM%kLFS8VAR+*|j**^~jkUBG$>U_7(y?GCQ)eS)TUV5)z z_kq2o#@J&L&)f7reZ>n1^BR6P)~!w$fUT&*%gHsAp>f6ap#bJ$L$wgcIs-ybu`E37;^tXe?mV_)XE zWK=%^H?>>rPLV>3Vis^Z6CBaaK-1WLSXY|K#+oi?bI3Z`Wm+Eh;M^c_ZI>Pai)dH_ zppd{O21WPz^YP*^ZzfelIlv#g5&^P1~B1!!GuT7&9uf`xlwWZ44DxqwGlgRc(4jO&wRj4u^PYeW7+YU6+jc@pX@o(f zGAgUEe<#S)M!~?J1dN5ff=gg)50Rs#Wiqf@IrFPvdrIvm^J)%Cv4GnhN=8@0>i}mw zUc_Qb4Iv`A2T;N@RwqE;OxKVY*GF*N7LK{V?ez^LKT)vlfV`H}SZxIC?dDI+`2Ko3 z&!t>7k~0B6E80lZ7# zmCakq0g78j-EiS2R3Wz`5kUQ(v{D;`(yJ$_$EYzd;2|nU$6d zuV8?W{Rc&%i`f-S!iF$xRmm*lq}6RGxT@HihsPbt*?9ZYcr_^{Z(Iz5N)6t@Fo4u% z@$Awb^>pqgJEZJWE_|6FC>Qx0q61+S8`R8Oa;+2zqdp*ZV%ixl} z$I6p8$?YDZFw(clHQs#5z1j3hHhB&_m z(F~|B$MuOHQ%y%`8vV9=)1WeWh{}-$EZ)Nm>K2cEc)n#m=eLM8L|Trl0ShKg?Lt?4 zN`)MCK#}fl<$i~V$bnnblwkO{x@9LY_tMMM7$vsQX6OOnklxH97*_9!pmKPMQn&%z z%k^k6iPk4hRpTEBm=y@TP6T_>-TWZ6vlop{E(=a%yCGg;9~HJ!d6XAVU->EQ;xqV=;f5QO8{$Kb`F~ zygXUr-L+yrz2NjJcq%-W*^#lBq~v?1v_q!0KT)0&Y#Oz+sK|+4C{5pI5B-vnxe3#8 z=`N3zs9vbw<>P)c$%bs5y6$>j#5bIei#fYf(iSU?`oL96;pJO-Yp9z~sqe^Ir2}tb zgJEP=$Uh1whR_6BJ4xFR?oPH-H~Kxv8QObU7EW7FA0scLb;uq{n>CB$QMQ0;Kkt!z ze=nUQH=#zMWWl-Ab7O0{T!N!FuB);#Yi;MOa1~_(S0Y{YK{bjqT7N3z$sv(w2%?kO zZfr3lG5d{#5|Bs39=T!#sYV{>TqkoE8fOkNtDo9&+`7uhl@I+x!R{lHFK*6%L2~Gj zfP~-m43ha|3XNPmHZ|@7J7$Kk+8IovqTT)nGkZJVYq_weA}+AGsD=Ro`doj5+Wy^> zp#%XukVkub0Yj);P|i!mW!oQe#QNfehcbGjuN*~SLvrU>r9I(DeubdQ2e9j{QC27N z6DH&rt8H94gOfB?Z&084eofRy%(Nm2F7!f@LNsGIOYrF<9nRG`U<9z%_YP1{eo%(hf?#VgD?EM&n9c8m?4`xfVRe0ui~*rpH*%%ke^RooWNRengS#Pb2Jtbe$2w88GXV z609Jn4?l0Y#^`uudS06>ceU~ygIdRS z@Q+!e*FL4;%sMk7E^S0L*EbBAPKD!Srh2u;bhZ^IihD1!DlL30w|(h3_T_tEP)z6! zRZaXBfa47m(8LaR6Jzcn8p9-sHgHeGoLb%^W*%bCYhV=QdX2!BW#tMw>K+fokjYr$ z!O=4rd!}-wKH=?9Wol+m1bi;;k=|n{TB3k(+65Kg^wr0EXn%JO9W{lP{#^CS%QTVa zoAtE|O%3R*{B@~iZ%Bu!m|RQ|jNBW*)I~P7#+6ac?hQN?UAh+RsR%)~F~~4>1QE}; zVuK04*0y2iSiJ+Fu91_ZZ!5XMVX7AW;@6n)L&7-4yRN4olk`IJtEEgnRIp3PHAo(P z@*X)ag;&WocvPI*A(J&QszbicWSI~sY7q}ANO%6OqWdELqBRp1*YgZ-{i`d-H$cBW z#(zsdGrYflXRCnf#Sd@lEXF3c!bT&4aSL|96349*@gv; zf+Y>g^sjZT;fRqi{6_-~rUOp>1+_goj11s3hJH8htWI1lv8We@x;Y)nMO~obyYtCW zCB#d<5SggO#5`^t7)955*jMdDS-HlsOFzHc4n=T=_AkXpySWAvQ;IEjx9a1RLcbEX z5C&TMeN7}>E{AVrVOEMzwhKbtFo=;(JlRXfdXp7*gLP^5$Lf7>%5`C|qvvabjFm$! zQdE%lVKTq&z2+6pS$FgZv>V?ktu?DnE;lUNZn3_3}>iSWXQ#EIxabW!1CX@?BUk84uJ&SY-D<+lPa8A z0C@*$dhPKq5~$V$FGUW}!-_4cI4y^rr{jX_plvp_(f6=&gm_$?(#Z@pTBqB(8c?AP z?lGYnIQ}fxI$f1oa}FIt!6N-VGDKX4AFDfJ6=FB|&>lUXRtlaOhwA#qLVqrZJpb;U zBOcjB>jq1dX39F3D877p@$m_uUQ+>)e_cs}?>IXW!$9gdnqbrkkBv{4-5&lHJBLUP zz_XO=2faabP?+R^zYu6Xh?$YU)kjFS{8EAb`ARKb35Fm4GvmIRoHd|TUJD7+KjCF^ zS9*NnFV+|^9jJ{{YT+lZ{qyYpe<+eOy#LNjX2s0QPcIX<%7ZW!Ld`CvgV*n%9Z1Dz z`hdRft`B?&#Gx+a%03NRmw&tg#5}&h$49R4D0_){P2TPv1GHSJ(51YE{_6&aU(h(S zyC-&lY}PGZnh%=ah?3Wu!_T`>xMKfP-_}EAGYa z$wCN^P+nif6f&so$%4}KSFp`-5G21k=|QguVy5=nbn#U|Dc}|Ppkzt~XIdBHXolo! zIijW&I*C=V6v8wTxj#|IY_5zMKQ}Ht0j$TRE(ixO01b|3_6=Vc>9xR`7>3A#^*n>X zx$2lq$ZT}+1nr^D-WT+YZHHF*Q!{)pFUBa$Eg8^C8H6r~+7A{C>_w7%S+>Dmjteo>G<{MsP-h`wRe6PddCy7$Go-W2MHjsyhyj~_ zKRVL-3KD@s#r|Xz3>tv-7hQjVm{Fbvb<1A}Lp=S4QluN2VM9)p@g_oIot*tO! zbm7#XHV^b(RJ#qryIxXvH0d`ds>B3kE*iO=P(@)s@_N*qCk<*N2g1V*S05cT~4ORB{kTRMrN*EUw!}V zex%h_=o>fCE1c5u;F1+G(J(8akE1M+{H{(Z*R)wgMGG-RkZHJ7oPse$HITRDkq?A@ zSJ_ib!K&T$z+PYYptW2z8F)FC3wGivGm;~*tVJ)NaUXF3SzxP?gqW^%2{dDAWz?wU zekj$UnaYAnb<-tEOD@d`O9Hz+Ze9i>$<`p)6QHkQ=@CL((FctS6;P!qj|-uFT@_kC zg4rQG=|V%WBogigdEfVg)Jwb@Y{)pbHL#F-9kZYzPfr`iFZvR z#091wNX4B->+vNS&3>;6cF~;p-0(RQQH;rho;j3e}S!6@eC^Z?8B9)S?WSgN!|;_ z*5Q%@_Z&sAW#q~7;D;ZH(iEzVlkbp!#n<&J5mX-rhE}3IEeO_Wy8hxryv5Kefs9ig z;O*qfH7-=0UF;W5(#&$gI$8>ibKxxV)+uG8L$4zPt&$@wBVKRALaU`4aqIpp9^$|^ z$yrLXB%vfH+HhyprKo%=vqQ4oEygeF#8tWPQsHNa{Z|@DRvkz<2eDNAVUvj zMv|ndl4}#_a)>5iCUPA)n9<==&EZSTcqS+!BR`f6dn)GD-P6oQavqef%Sl87BxTn1 zxJUHt*=K&h@C@M`WXY6P1i7j&*PHQl6+h+8qE{}JLLBWn}1@Sbx9X!qa)ooWOvw~NEfTw=m;%v6)-#4AU$DsHR=p$47Gm|C<}MRAzO2T5z9 zX0A9Z8)P=B-|}ijuqX4k8wF&{r_d$?O(et01$5X)@u+yqXW?B{_*e`VmfaV(X62|& z(IqOH;c}JFd4QS0DKOf&x^jS-ei4hlf0`~_NrQ)2aeURzh``mb?7F7s>-_JCaNbrH zVnz+cR_<^C-;19Ek>3co5*nm#A_Eg&Mc6sS+@!?x&M5IV*ah8n2tutC?cLwxuWcI!(+Iq~=dqjrSHc@;lN zbU%{1UyGJYN)-77Ns4kI(BO&Ga`mXp>){9|6us#^pq`}WpBHx5lheEd9W_MFOQ|-* zV1zJFSXpmijznN<#1tr7>SJFeFQ|kiNG)_9aTtd}KmgQYU(O#bgLZ^gad++zJUY=Y zK~iElOQpfLfl#AtjKa3v*`(I$yN=$nM3ryQ44cf-kIqg1ToAocxgX|9W28pj0Xgu( zLQP4+aUqY4CeQv|Hlqu(0;3wd0d`u!pQqX)Y&=297QUWLi(cqor(o7X^9-m8nOD1< z@>tNX@5AX}w=Ngxpy2!(@}9CVtM4TgHlCHldRkqH?9i@raYSp;UyHs${u*x*lqJ|u zcprWBmSA*Dj`CtF#X7Ow3(6O~AT@}V#3a(cNS75YJ0?r8-FfRV<#^P9*1NLHEQ9tY zL-4gVbpHB&Q7rKN9g<2Xl*4Uouw7v|t~IszUlP6(&%;&SZZ;*gl4bcd6S^yE4J4zF z)zB?(qh&H0;(4w(H}S?^Fu^!Azg;v_wLOI{hGXX2kL1syzc;R4B8sY1>%Pls+wpsazEmw@xmQb_nV~aBTlGXTv8COX+Hzt3wb=1C{vL^oc7DKf?edXoA{W8j zBk9`K7k|q1%P=__4g7Fl{!n%+M&mNMl$Q%9CL1y1hwl$?9Q~Ik_SdvZh(-;01C(pi ztBphGY5J{bxZd@Dr270aZ+|(c44VErXF>LKha)iw)CBJ;>7jRbM0$x@Jim;9&^@|^ z%?jyuNP6>w>QgE0E9GolWdRtHt_ZCH)R z8EnyHGaF%zvJj}xFXQT`sTv}oO6t} zTJ&l-o{NdD3cZt<;Yz;3DUn4tFWyeDfRXyCEvtl5X6V&W2a8ak>HI}Lt+@V=zIKlM zv+XliB?myZZCxfFrX~S(fMv~ji&?JIlGeqPgJS*lKix+>7V_VdYfglE^=N<}YR=Go zYkhk%==E}4JHD~g{tIE zUT6%ibcN0eKQ5&+Tk&-qm%I^hF(vOFze(hoRJeVl*s75U>Va~9e~0^*cHY`~AI8+*J8r{#)r)xSNEAgY=n0K& zw+Lf8+W9^4bTZihwlhgZ{%9u>go{kS%s-_;W(J3h?C zLSc0uyN*AL7;dZ~y}L;D2*m?s_JgBzaC`@~1i zB%A`fls4WavQqPx|IHlXhw(7$^e#*VVfSh>w6~$o`Kb(*2m|m1K2U3>h+muNiP!rF zGytMaAb0muDyn&qf^49e;73V^1V#4*&ZQ(ls_KCm-h&>A`ql0ag#5F)$G7|c`O3fAeVhYf%(J!rkD;u{&0@P2-!!^pX3m;U015bP;H;oa$eNd%K^uW#nzX9s+wC}N}J45=&w zE@yP17P>gO4iAt%#^=oi!V!;WbhnsyPW_&w!I+d#&Uo6C19qqrAkXy&WGJ6;7%n;m zp;8KVsX}gDFvLh~ueko245gdnL^@xq3%;FaP0(S3sCl(MKClmu>HCj5NI?`Qigmiy zX}IWtsL4x>AVz3g@D6qNW97$IJd_u+P8+~CMhF}CJ-YAE_R?paVL#~BVMt%vXTNO< z{vhz@wyFSmE36{OCc#5;crEQC=>}v1Hvq%%fy^W^IRZO=i)>myS8dVIt93gGrA|t* zIh}7V?{>a-um0-cs#%RGOL(!shu7QppuzfX{7WHeg{wkgDS2|_DiQh>!KiEljLQ&9 z0wf|0nt@xaM&O*NpM#w14eGHh)i`Y4;u}pLQeKfR_E|=$0S!JDL( zss0ChHF)Xj@99SH>fc{k=nBIh_E%xKT*i-HgMaaKO&0W`Mza5ysPdO>9x9OIKjw95 zzx&ToYJW6F{HI5qAo8^`Q!J}z2$F;mB!2%K0LHq?PBu6vnpAimom)*>m)_clefjP8 zXq10Fh9E!xdM_+^>FU>iU5f!}`;2_Z64vkRzo$v%lKlCaMftyf?%&_Vh};NLXiu1& UydrQL|IM9eH7{tCs9A>oAA`h9Hvj+t From 6e875ea8dbf503a75ff265f6095fb5f534dd3f98 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Thu, 28 Mar 2024 19:50:42 +0800 Subject: [PATCH 104/423] Add deleteCommand preliminary documentation to DG --- docs/DeveloperGuide.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 6a20e45d5e..d4b77de217 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -113,6 +113,16 @@ updated). If the condition holds true it retrieves the item's previous quantity. 6. The `put` method of the `Inventory` class is called to update the item in the `inventory` 7. The `UpdateCommandSuccess` method of the `Ui` class is called to notify that `UpdateCommand` has been successfully executed +### DeleteCommand +The following is a class diagram of the DeleteCommand and its relevant dependencies +*:(* + +The `DeleteCommand` class implements the `Command` interface and is responsible for deleting existing items in the +`Inventory`. A DeleteCommand instance is created when calling the `parseDeleteCommand` method called in Parser class. +This method parses the input and ensures that the command parameter (item name) exists in the inventory. The `execute()` +method in the class will call the `delete` method from `inventory` class to remove the item. It will then execute +the `saveData` method from `FileManager` class to save changes to the inventory. + ### Find Command The following is a class diagram of the FindCommand and its relevant dependencies ![FindCommandClass](uml-diagrams/FindCommandClass.png) From eb4d8d218cae24fb6be9d7895a53c619f8ad36dd Mon Sep 17 00:00:00 2001 From: vimalapugazhan <111181615+vimalapugazhan@users.noreply.github.com> Date: Thu, 28 Mar 2024 22:58:01 +0800 Subject: [PATCH 105/423] Update docs/DeveloperGuide.md Co-authored-by: awesomesjh <89649663+awesomesjh@users.noreply.github.com> --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 84b2b3a44d..681f55b4fd 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -157,7 +157,7 @@ The following is a class diagram of the DeleteCommand and its relevant dependenc The `DeleteCommand` class implements the `Command` interface and is responsible for deleting existing items in the `Inventory`. A DeleteCommand instance is created when calling the `parseDeleteCommand` method called in Parser class. This method parses the input and ensures that the command parameter (item name) exists in the inventory. The `execute()` -method in the class will call the `delete` method from `inventory` class to remove the item. It will then execute +method in the class will call the `delete` method from `inventory` class to remove the item. It will then execute the `saveData` method from `FileManager` class to save changes to the inventory. ### Find Command From dc62378ca934e27ffee68ac94a71a083685bfa6c Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Thu, 28 Mar 2024 23:16:32 +0800 Subject: [PATCH 106/423] Update developer guide --- docs/DeveloperGuide.md | 7 ++++--- docs/uml-diagrams/FindCommand.puml | 2 +- docs/uml-diagrams/FindCommandSequence.png | Bin 23476 -> 21105 bytes docs/uml-diagrams/NewCommand.puml | 1 - docs/uml-diagrams/NewCommandSequence.png | Bin 23799 -> 22408 bytes docs/uml-diagrams/UpdateCommand.puml | 17 ++++++++++++++++- docs/uml-diagrams/UpdateCommandClass.png | Bin 60080 -> 40112 bytes docs/uml-diagrams/UpdateCommandSequence.png | Bin 39910 -> 31367 bytes .../supertracker/command/FindCommand.java | 2 +- 9 files changed, 22 insertions(+), 7 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 6de183052d..6399a9a0ac 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -119,7 +119,7 @@ The following sequence diagram shows the execution of a NewCommand 1. The `SuperTracker` class calls the `execute` method of `NewCommand` 2. A new `Item` object with the given parameters (name, quantity, price, expiry date) is created and returned to `NewCommand` -3. The `put` method of the `Inventory` class is called to add the newly created item into the `inventory` +3. The `put` method of the `Inventory` class is called to add the newly created item into the inventory 4. The `newCommandSuccess` method of the `Ui` class is called to notify that `NewCommand` has been successfully executed 5. The `saveData` method of the `FileManager` class is called to save the new item added onto the hard disk @@ -147,8 +147,9 @@ updated). If the condition holds true it retrieves the item's previous quantity. 4. There is another optional check for newPrice being -1 (an invalid value that indicates that price should not be updated). If the condition holds true it retrieves the item's previous price. 5. A new `Item` object with the given parameters (name, new quantity, new price, old expiry date) is created and returned to `UpdateCommand` -6. The `put` method of the `Inventory` class is called to update the item in the `inventory` +6. The `put` method of the `Inventory` class is called to update the item in the inventory 7. The `UpdateCommandSuccess` method of the `Ui` class is called to notify that `UpdateCommand` has been successfully executed +8. The `saveData` method of the `FileManager` class is called to save updated item onto the hard disk ### Find Command The following is a class diagram of the FindCommand and its relevant dependencies @@ -161,7 +162,7 @@ A FindCommand instance is created by the `parseFindCommand` method called by Par - `Inventory`: For getting the inventory list of items - `Ui`: To notify the user about the successful execution of `FindCommand` -The following sequence diagram shows the execution of a NewCommand +The following sequence diagram shows the execution of a NewCommand ![FindCommandSequence](uml-diagrams/FindCommandSequence.png) 1. The `SuperTracker` class calls the `execute` method of `FindCommand` diff --git a/docs/uml-diagrams/FindCommand.puml b/docs/uml-diagrams/FindCommand.puml index 0d1d401916..ccbcdc030a 100644 --- a/docs/uml-diagrams/FindCommand.puml +++ b/docs/uml-diagrams/FindCommand.puml @@ -54,7 +54,7 @@ activate Inventory #d5eac2 Inventory --> FindCommand : items deactivate Inventory -loop until every item in items are checked +loop until every item in items is checked opt item contains the word FindCommand -> Ui : foundItem(item:String, index:int) activate Ui #e5c2ea diff --git a/docs/uml-diagrams/FindCommandSequence.png b/docs/uml-diagrams/FindCommandSequence.png index 4feede38fbf85aef22d62dac19788ec950cf0591..b8b5ea83826832d25ef5954ab3bc0ef3008a518f 100644 GIT binary patch literal 21105 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 FileManager : saveData() activate FileManager #bcf7cf -FileManager -> Inventory : getItems() FileManager --> NewCommand deactivate FileManager diff --git a/docs/uml-diagrams/NewCommandSequence.png b/docs/uml-diagrams/NewCommandSequence.png index d4cee8aa65920e6128d1ddaf3ad3b4feb2e1423d..6819573af83d138411692e64503aaf39057a1e5e 100644 GIT binary patch literal 22408 zcmcG$XH-;K*DZ|Fpn!l96+{pu=NttQ$s$P3h>|l%jv^vTR&vfcN-9D@k&z%EITks` zBImlhw7Z|~=N;d7#~tHd{}kg?oqf((d+oXAoNFIHE4`4$#U{f>Lqo%rm3gL&hITy? z4egrB&FkRE&0L%_@WJFLspf=Bk>Ge;r4=2F7tsbW+iKJHc_=bF`#dR-X#}9!L0d-g|Vc zk@pxXlE?;3wM11ELKeHe5?*=X^S^r@!9VSG?7Y(wmPI&ns@LnCNA!@pop#xuI8s%a z_^EJppqH<+wf{xP5%x1I!|M+o7_oIZho=p8xvHcRgYcEO{)p_4})cvvJ|+c}R~W26EvcClN@dpA-&%xi2Svc_gFOc6YK zc>XR5K7lu#qLfaa39!v2nroZMP;$ncRTQ}kmE?`de>NU>myb*Ba2nY6DhjD3!md_{UGVSihU z^|pg<&TA=7S%p7^CvbE`ihAGG86HPC+|Hn7-mQ48((|E@f-_TgjYHshpf^w8nDS~- zPVd@rzt!v9(&@Kjt()w6!kCc->exS{r^dSTKA7v% zL(UI3$yC%VStR8uOG>Gv99(US37HB z^de@{`B=bo=55Z~5|479nZC2BzAmBj&GJ#9^QoEf2_goAWDGagTpu+Z9a+dPhjhHz4#Zu@nI9OYGO2Hc}11|>{X zc61rb(6XiZrpJ)bmTJ~9=u;o<7qOf|$O4KSb_xdBqxLh&Gc85(#|z~Y2A9W;w8v$T zo$Ra_(r}VW*THz@0%eYGNizaoXO3#ue7Vyqv(@V#LFyqdRu#KnMkrUzuWTQ6E=ine zg(=2mMoEoAcJTE^`fy}|)S>73wAdySCVk08sJrlc2&W!QiO!(I8xAzU;Y8;b(g7hEc(6&z2KNn-CV!dr!cWZR`5@Vi~=h7St;mke=2F7Wf zWNUG9^6_=WQSi}z3Z3pg*uOq-9Z}V7r#Edt1%C=Ia@+Qp>;K`f)#zcaMl7|t|NJ@{PAGNbkUWLc$2?P-O5N1V6* z6K&m>&~o*V^(i)Sau;#b)6^KuKc+peG||(x{Cfm}w^9jstQGb-ao!_RpO4q?#ck<0 z_P0}*p1EB!uj!jlf?29}-+1E%?dGx6Js*Vnvz+wZdEAlpShlxKamMqCGE5z7HvSl-rZ9AqQ)D1mM0~Bkn&eM z_I_tjuGqw)7(6HMv;dzdxuMivKl>m&<1);*E+xUAiuALs;?@r>d#5X((y!hGQ9lYg zUiK;=NGzjU~& z{Y78j*kbsz_kI$FkoY8s7I~{jU%uC8+;}$+H~zdC9-kIzme`SV~NIDB|H4^^k>^dknTx zHuQR0c9vSyikE5seAqFQB40v(^kYFh1C^L7@wEXc8~ zyJ#AuIY$gTm-pf;Ojo>1%%;#5;dg#@HC_ku>Ice7NvK#4K!0QNFwFe3-VR!so*9sLL-vbW**>B1=o&K+wV26glLx zJABka5zl@#`rJYL@!9O`7cYG8+QYG$=|R#ETr3cICIA=Ibq*=nj1BQ_e^A``vWKH*s$bV|^XISyCgmkM90B zJg(c13AJ2)oGGF>;0}-amAdL-zI{uMWt)m%L&r2~^iM-pH#Z z^@m;&d&W_c>6-T%9SZo1mmLhz(`AW0W}-FUTZLIdCd{jgx7op3m^9eD`MJ32#LvfH z6`zK78L>i-yY*#{Wq*cIV0J?z^fXE$-$tNLXBcZsvv+1E3^UDFVmVZq_cmtd6=y9H zCqgAzb_dxUNwlR-{@h1fn*r`2I&t>_ajl_-ROR>E%C8^zm~Xy=`?+%>cVi~IPfxjE z7IsTsIeY~|X%v?i-P~dvnO$RR?0IB2{fyW{S08Vtpc~x3n%cETuhj7efn`Ko*)2$a zNqafT?JW7>*;j&n*Ryxu(A{xgU*$}~Savo#E>gRiI`~tRot_G-Gwk$T%rZSx(T^{- zpt|+7e#oPB)ff5P%jP83ccDTjZfyl4v+dseG#6*IdJAiOdw&7f3mi*jN3}NuYpMBH zi~SZJXUu(~m(L2=w#Ww?GFMqCgN>~n_<~FHXbw7USe=a(7lpC?j3~F0hpP=8^?Q5h z5WK1#Wiu$q3?|sAR>!I!E1scF){nB+){ICmAd8UEz|Mb;S5#$?CZNzwOarjT0lf zkhFS1{*=aD-8#=_`*fB3MK2Vsbmi~yxAy33AhjVjQ$vgq`d-8)Q3~FN!;lGt{VSE}*B} z7qNU~TXnt?=AJD|PIM1-&BRjg7xl{s6@HjL{Wo7On{ogfIBj(={3dkpi}NOTw+p!R zIUA8nO4BPBp#rxq}@Mmfmi!_SO7U<37lbQBvAIrSf zad3BZ{Tki9!`A%}+_1;awikW&^SK|rJ1~LL(b?TuyQPNa*+52Hz9QtTPD#UbwLYP- zt~sil*?)9ZbUn@c*5dKv{vi*TSbz&`-e+|Cgk;b5+cON-#b2B{z*iKDjGEpn&J?PC zoAMFWY&<&K@qtsVBrM!Z&XPwIS2QKGg$-xW_=%2*W=I{*4%U?HSHH~m(X*a`?Nlmg zN!wihQQqX7d}(pAdSKvvDygTAA@$h>_E{qNd?lz)kxZ_ntGdLX2Gl%GnDbLT_{lgY z`ga6kfBNE5lw`^s5pIx$ZR=GQvQ>H7?Cnt2Td&bo&a)#&KBaP@`S?-o#8)V!#X`!+ z`^@$Mq~jnb%YQyeDBEZ6djoq2#gmdQS3$8E{JupFn7-#NTM>q$zUiVRF9$IsKhCmG zeG4pork7@8OyA7_D&O0rSQUB1@}q75Q;}3m9X||vy4qCI$gwg>dUU_KVa?Q94k~>} z$(_FQ{ovZ0HMM)}I~&Jtz4w;+KYd;a2{@Fc$w^c^9YkIwVu(#5oFrj^H5;L&^`dUa zI1ZxlJ=wK^WGJ)sE)0Z=Mk2#OeKSv=Rmk@8TT*<6x(IrnPM-f5y?5{4 zdKnXk9CSvYfl-7Gkb)mzRq&h7c+LjTW%g%|pl9R1X(G|1jH@twAZS=gEyZ#VR?p$H zHdpENAUK0D{_Vo|eW_og<@q zNSXLTt!hLVvhLUs5wOLcDe`u6YWrRga-3=|OtBdhtfMe7k++EI(CLZ(g1vrJiDg8< zk4Mtt?^GU{dZTh6;RdA}t=n}}FsqvgHA__rI^eNY9}`zCcum6MT}=91gf$vslpvg0 zr(19&$m(jFdk=V%JpTJ(U)y*gjrU^Bt3p85&DzYS}4(t($&=FbaRO z)z_WAsm+7Gg&Yf;DSp$m+uxP4!cMnx$*S_&(m(2OuaKC6%R_nQo!pYSngT*`kEF^% zJzySjn6X;*Zj1JoP}4z4!5nwCIR=(V)Q@;x`Cn@U!l-kISYEB3s4(+>y(;EBBhvof zcdp42HYMJ>aX$KN=rfy2)$_`UFA~eadpNr}YP@aSVjhqti4aD8ZqaBPoH708RKMR< zA$xPCCXVyaqCfq#hBQS)tuzcnqWSuaaI$3Yq;T|5uGg^!EZyQ`SX{LBH)RZMH5Jd% zZ@3EDJejUZn3Ze4ZgRp3RS0ZVoT<1WHX-g6X4}ZcpqVY^S52jjr8HU{o#RzT(p%pr z^o^kwA4U@sg^HB@3C!%D3gmJFd)^wh zrg0agW75U{p;!(|m_I=-vkeSUx+e(p9}4IH>4ltq+Jraiqb5=xW~cDBl1Fl|5bpp~ zy+2mx^@`Z1Zy+mQ`i};#ve6LR5sQR-W)G+uHGOOI#q7zm?slVtz7v+^321)(rFr=Fw z&v{)0v+|kCgD+DGlRbBq4Rfc+CKIlljMH34b2W||qk_6VRmJ&NA@?NLtrw>R1!p|H zRs*_&;M3}~kBqw3)h43ZjD;9CG&H55mEx9@N`CRUZ^nEG4XY04)4td8_H4V(fO$LC zfKs>+T^1(M!9OOTlo|+4nSOGNC~{-QCHd4$>q*vLk4EQ19uvnvKo$8Dk% z-X}s4kbB&P(piB^`Rc_So_3=fZAhCBl`~O~zsbF$M8c+qXVWSKLcS)))dtw%?PF5Kzb@!XD?LoY+WR)r{7NHy_ z2dP*kyVIQ{wn&%yY=yWKpZ#{6j6wA4=;kls)rS%lq+;_YOWmtauC85E8HEZOb!F}m zGet7#xsQCTB;gx#TwhR6qAa+7Uw2}VyUe*rkbHEXqJu^EHqnEtMs$3JNfkE510UbL zbUnKIZ%^aOx(=AF{9N}Hy7>A+C{{J{p0?#jC6oPhSqYPN^Ajz(^&(Czo}c`i(FOO~ zOd7yE5{#FtC~ znAr_{?O%O=OqLJ8QbLl&{;(YEqk4gKm!15 zy45`m{@3uKl{INH_=lJj?85oJ_z>?r>Gr864OmyE$ISs-HCsXQcKr28-_sGi(g zgGNaOd`GUiTV+V;h+g7{ahT3`Ev?}!4_8gYKoK4@=X?pSzgoH1bm{b}(Qa_tOPUt*;W3=H`pR~BLrs zYU=zdO!V^ZVat_R;K)Ic$!Ax78~E-t)aP<#{%TZRAq}Czv9=S2Kt7Z@+G|}T4G@#= zJ&=535XbwT=dj;&lCF7TaF^)4a> z_T`xOHca>R=zfq7S8Ck2${08(|LE#R@G)!N%k2E%yM>y$`DBAaOO47|J;aS`W)Wn; zjGHCTKJ3Jfvr}xJoIki>x04C3&sYF7Sk`7>N97&E?u51i>#sb^gGGLOPdp9Wr_0R= zSi4T&cvuFsDj;jil%Q))h)|bF$Bq2p@L}tzlgsxzZr$rnuh*Q0EcZQbZ7Sl)+IDvc zJwAIzaH@BHaJBMPa?#bzV+W?1x@lnkXv>kZ@gixZx2)~#%REh)P5^$f9xZaZM0CX- zhnyi~qMvaVcZ5>7nICb)i9l@b`_Z(e;NCnp1oemlp`JFC>F}CtbW+(aoc~iUVUd+m zhImh426^YhETe?TdizOx)|9ek;jiuc3MP|-Xd{UY=V6VVCM!moT%}9We7QoZ@!mgK z?(DGM&?uN6_s|$1I6XN%{*F9>dH6}7AA44Oxi~|73xG{Dk?;GLl@ex2kmxageUx%~ zLu~x1*B&3xew`OJ%yfJn48A)ADkbfJ9PCm?{avwa%P3)b$5+ve6&2QlW!`zpNdASW z70s!Z3RfSWGu&m;GjWZKdQXEt(7PDq2XilHEwOEd5 zUctAS9zI+QkkpttNQqdCJVbQXU-=y|^oVpv8m81!GG5KbJGo|_d=hyfYLK`8CD!^$ z)!yZ?{@tV({Dcp`eCeWyT9~u1?fhQ%^83XxTcXBM2G=F_#wQ40?nEnv0nDKd;|g7o zUD4R@N=3yZQ$)TOm=?g1)2yKxx7>l9hW)&xbWhh)GRiGmN!*~^<1?9zK^#%Dnu@Y^ zx#^m|n#4hxu>-mR3O0S9q&9Jwt+r3|CXYjQz36h9^AF9^#FP?;aN{o5b(iL(!8QZ^ z1jHzS5b9Y?<&^_;-nW!o?v2tpt>-sa-iRX(drW5G)qACKO>XxK@rv%z zj_9kO16>d80naHUu+^Su=d*}J4mv$Ru&tbn&k?J65WIi|67wgW#dh-57mHTF9F%TP zYL|Oo7NsPqSIzjG&R0Oxxo2`b1&f<9^YBG>(e_X8D4aH@4&*rbXddQ%3(_}mngzf1 zp`LnqnxPEE*R9F5$mY4kCZ~qOmpngce-m7ee32Lj1t2c8^Q^&rTB4jR)QgM$UKOwPFG}KA zRu?vY_^VgPtV)I=N|?OnMa z3tlZ~)HNJ3ZnSvff8w{p2Al^Fj4swa{n~UW#%=X!s{#308$LK z%Y~PYmqK?AXlDEq$|x_ZnUrZ8cM39mzVH4#UfwOLfG)e>Pk50&-1)PrEp8dKoIMX%s5^``l`{8oM(W+C{nX=+WlI(XIWNvE$_Y zxB*c8Ke=j@7;J2@|A8Oo<`+wMXomRVBN5yoJ2aXy-sZVfZa4h%M^%`$w%Gol54R6I zIVu{zClU~D6NE|7>;WTVQ<^WR$=_aW)$)$5tYo{ZT;>LMjFjYEj3pvT;w)x>4>!o# z48-!qMfZx&<*4)luo^*3i*+*Kp-XkAVZd}7E+OvtJEjxiHfwo`_s6*tjLy4h#j2peQobRK=#b%DZtUS%Zlm$CX!+Lw}w>v8%<6Jc7W! zES4*H;9ThxN%3IFk{#|(bI$)Y{=Bz zE*-akNP{OTeCk&+A&fX=?IV3JMlA=P4L>*kRf1JWgT1^5`mJNczJn4BTn{qQsb|Bl z`U`pX&J`8Z+RX1gwpb$4zR%w2p>rz9jhZCNdW&^J38XkW6;?@-oy+yo>T%yVuFLds z7PyhbpaB(y!oADuVNfp1R{1wK?hDpM7zsE%N8Zrk8`#de_@X`uEGWbH$KLAkdpMRC zH1@*{MijN8iDOJ@9p!qe_F2HkD0J<+%USR;>4TRog;4oQ-Lx$?94P>Q?3|LSeuFS>Ai4nzd5jTv;%?<1!!+F*;SL3`hFO4UvnaY^Yw@ps~UWGdh-Z@pT?OPqm%hQM(uy>-_ zb1<(Dl&TkU zzzg$u0`*lXRfSq};J@wCK#6KDS~y2Hcod*wysQ@>9{K7x1MNj1iQ))sHLCPF_&$8R zVYz@pMLUFZJj&|En757rvgfw#IXI100?Le`mhFFX)O_KBjVHo+K&jYpkXRLh;{6c9 z9bl-59M4DiNgoZ{D93w`+_qI}e&;%Ad^SqlI_W)FV%K?lXI$_eV4B^LtP7;GDLjii z7YQqT3En@aUO?-;y7&NL1U-`p6fl#`u0?@1DE}oky#$o^2wt>sCdr&PUzAdL9tc4x(V_Xr))$Q_y?Mw7 z0?*A%6^nm-|E@%=)cJjF@C3R0Zv54GgJ6ci+|U~P&ebVR(YsEo9q+eKU}hQgxaWOs zm)eN8mfh!$Io=}+0SZDeWV$+;-qefj3sscXwm^uMy67Cm+iR!2&)e)lsAWjwo-f51 zsA8y=?KfVH@*A7;Vwrs2x?0|-_?dCY483eDj!Pgh$9S$idGP~&CqsIj)Vl9nup6G7 zF)Vgm>4zLYa&QN;v9kh2jwC`V*H^oa5LL)vIr&jkQ%D>7d9x6=+~kG3Q~R@6#*8x- zo!Z6TB;oZ5^Y2}~@qCseLs})xg0;|Z<5j53Mrz#nWFtvVL}hX?#U zKJho;&;NTI)Io4%G=aZ&D(J|Gi~9;?8jcq0ZB0UKM~f*0*R8=X-ibefveHsfJ)s!r z&wZJ(&=#HnM?J&c4<4T&%$}63EiKQB9NxZ7;I(YOSpJc)va~c^H%)Bs-yD5QN%rB_ zNXf4}zVe1r;kth$&9qi~U%D$Re@#g-fY?miOjS3%rx12FqSUpWX{eWvVH0A-!NI9> z+1cLO(gQ!Bkq#|QRnCdqLC~`>Y%p4_0NtJ=^U;PpI_|vIcekF<#^Td5f@@RlTEe8k7LoM zLrmn{CdzGk_3cf^)O^I-q~_}d{|UMOWRQ!itH5Ul!5B8Zz`($H#6yXXkLc*|$oZbb zjP2}pe60Xvz;2~2$Kp$;=%8_4oOUb?_PrVW{IGy63c%SAD@5hYOtcrR}0k^I;F zfVlS_i$8t(bbG2MBb1~Bs#9Tx7?5X2d@428)Eq0)fvAcX55}+?kOV?X3*NnZ$E;Dz zk>XsaTeDX`sdwjpj)sSR15d<$z7@Me%wup2g zHhT5$hnnHh3kiJIwQl=#Tg|))?@8Ho``3Wzc_=29a=OT4GZlM^%9?N0^{xi>?v<9K z#SIM&2m~TWF~vmu%6dOZ*u{B$NH)jV(9lp>nE->F&+0qOCORoeL3wLu2WHeszy=4G z**iKKS+f``HGI3=V<;*JGQmg`jQfhkh8Ujd+!plrerQ+s} zuz5Cw+G-Q|j0!GAKuYS8c~|>O0Yor%YHBK;*OHE&em`s*thh+kDGBKG(m9o|^QLP> zY+~a5L%xoPq$CR6=ljb)xVgAkv_93z8|qR18y)yLSw5_}$jHcKNQI=Qr}wb6zWn#v ztjlaV5H5`!8yl;2+E{1#_t&T;7eW1s{CT(KNMVi3j{YGZ?)m_FcjF}F@BF|=v{xDm zPF7jtU||``-KU^X2-<0Feb%s-J^MvRERO3F@S%tUo)|Ev5#-tg7x<_*5L*Q z#&C&&7#EjAf2w%CDg3tW4PQp4XJ5-?zS7w-f@k%m4R1V@POgk6X??Qd0aF!TD0HSV4#BIT~|^4Csgut24A1wqT-PJ4NZ}W zP8%8uNqi0?n?GMbIOSu0z}~KeT8P}Xt$F7veDnFs-$-D*+}Kp;QWb)%G~4j{_I9S^ z!DEwEcGyMweS%gUwtrqFE)KCC* z)TV;Ziv9v*OJ7&N^INE0T7`gR(42^VdRhI+)x-6I6M>D5y*>RJr_OoH0zj0|`m16C zSTaZ$BBI5$wR;p4(=Z?8jQ4qnHCGf--vsYVyvZuUOa&#kCGFuT#)^Q_d*rnQ+fT(; zVB%QP)U6WYV5Rfh!V7Ke+0~Qix&sUap^9&$;l+Bw?iotbteB{)E8NPk<3-@zyjkrM z#L8naw0eSASkLua8!ul8zQ>J?gCkpB0@iZB1b$XdPPxLzM?ko?kYKV(yDd$ON6n2< zi8SjmtajNdb#a=SntFJ6Y!sxb<;ZH@7M}AW6LxS9O6A9P8hT9y=bP^u{pc}gF>j4* zOG!wWEY#w58bU;}>Kt`Y`YeitQi?S=EOqrj#PZJH+l@7+E-{qo3fFPnCvT^jY71$t z%hkj%CoTxiy}fLPT|lPuDUbigxilQ?HG@J$oQAmmx`1JV>!8{Nrqbj?%W{k1{CBUbtj51aL=X}Y zW!{&Plk2)T-FJJlC4f&Uniw0qy09Q2T&!O|(QKoD`%&;&l8{q-C`Gpz(~62}6p`TD zm0s)q)NA{0O2RL+8$fBP1tSKLuqr>0kr5ZaR&?m+=f};>9W}j&ImI8xpvCYG{f#oLALdrTjBZ{sOz-lJ`H$L@=9 zMw2|wZoeOzM1v}c^?DpL+Jyu=G?YI^F}L_XL59Xy;1VBiov!7iMDoM(^77~vlP?ZO z4M1f`j*gc4BJPLzO>9-!4hl{+eL{UAhm%Ac$DsR<8>lG!h>nF&MQE`qr!KaF@R z- z9qLUHGjO#1LPJeGcKwUZ@>2;3t$tPBv4QACF&38K8{_1W;~C7H!?8B*W(tBX|=$lu0fBnMO%U3T56MJ=QMMmRoa&*<0bf zCzr=Fl_52X`JKheD!9eEHBWe zam|_W9eR>^<5@Qin3*=DJic`e7VN&gZj5c^!qgBG6Jt^ED+nh+>#Hc+E@Gp5FQvEp9+<)xQ=%oVKg$D0aiLrg?88G2iS zdfapybN^3ZN!})4&D80S+fADuzy)&AL=kF%ND2?b-izX{dFJA8!2&$jSxnDv`JWTtLhtVw{q(JPu>bW$y9273JHAn z;=IEA&vC!fh~)f&wJWq+l!8feS4GN}oV0Mc{o6%QjiP&1W}T_zVy1f4i8Y?a*r(7R zGb!d?HFm7B)iE(EZ|f&@>lJK_L9*f-^BK!f6GFW`CR>QfCH{iUCC#neTmlqvlWIQBiGfZuY)B z!zy{3#(qEeYlGK$C^`T3P@c+x=!>1ANID;A&U3l38jjenU!M+V9M@e#$7CSCd5_nE z2zRqRgq*$MB)u&508@G)t!Xm6!EUUJiqm}HQ6P&}*$3%JO*o7(*WST_Ye{lPMIr!i zN!%EHS*aW#+8`F#9rlZBgBp_YHZnQ+1uobg+gg|Ye&4jB-s9Lr+>o;~?LqF6@D8*E zw$uoTe_Tso_~xodn2l|_yifFv_+>mpkjf(=@h;2+e%oyMuY0e>uvb2g%PW6gU%h4c z*ndS{0If*HsQ>#~NIF3H9tcT7Tb=A+yhd@+g4jqNdGDmBn~9*H*mN%)a?{1u>{#s{ zP@cDlc2GrZYhrkGlwVZz>R@eS zw5Tfp)5|?^8G}^J%pfVW9qC0~wsjv6RjHnt+>mfV00CI2l-7)nFY=^2Xs#t--`}5$ z(Qu`i>fG2~yV7c^`sL|dav5g;{N5VF0g0504D{OhQ5*~=R`2pVsIOikCMm67!&Dk? zJJa6EuO(QP6c7bTR*c#x36-nv&`$CSnvJrIaxr3Z`f%&3S8BW2kGtjPPF2AM{GAD`qKIBlC|GAQ0hRJN)>txqZEqvrICnslTXXgdF$V0v$ml_9S zA81t8pk{|goK7IWw^|Q_T(T>ny}kVfzw{32k>XE)u~st;m!MR7pDx9ihcqu-;6vh? z^Z8voQkSk)e`a(9-^+l%B1e~=4=mOa@ugfjDq;{c(F0c+&sM|b1)eI9o%N1JJ-AqXbd zy}dn)!R#L{z_o{4k#)~ZZMBY$9;XF7m`|C~eqRY@o~`}0b-cQvn}U^q_}&xSJA#6O z>#Hd}@w`FsOEO-Ip_;cV;KPh`Uj4Jn=^mV3k-gSVFycZ|9#bLiNOvxbe6^!fCB=GQ zCNck8XbDhGLyZ;k6vJOTo`IIS2&oy!! zu@?$XOesSVUbi#;rMG@53N_AuA6y8Z@V6a)YGt&wDL_Dl{R?>fn%Iu!|0VS2MTpT{i~_n(X4g9wBhzcI7(_gfl~aDo%^Q-W?J1+t^2raf=nm^ zdii&N1g?R<2v7m}|M=@zZ}-2R+ZV)Z=lx787~ns0kx&z(^_;Dm?_a|85A|z^2ApEt ze?{o`>6R`3(!H;UZ|~I2o>NKvGg#LPz)L4%rS!wV8C9MBGDUl9-?b@|t8^*c6G%!}-^?5H+;1n=`@20-| z@y}CyzX&{qMhX4!3==bK+88aNr=>kTJq3$m3)C;@65tuv1INpZb(~V3Xk3P7E54PwVtPY6%{=2RK*n0%q4Pu8>_L>xer)`poiG8 zxoI_E+du!c&bB{UwChF}Q{c>Kcm; zpIqX&jIU1aPPeoG+l>D=5qt3j%Hj4u|)^ z+z%~)HR|Q%wXm=Np03CuZ=vqaUrPp+1v408QdwY9>+74*Zdq2O7jEuCIv%jAbkO_?;Qw`=1jwn|4i^0i=|wKz$kio}Z&vCy(s$ z5quZPlEA|Gk1zEK|Lb3nDnR*(zZB;eV*KN;mXxA@8CxwoTA-`+9}nvfHsH}g<`i-M z>nJeY|7A_hD*qbhA18uaDklaHC!h^g^AU9V?V)Q(B{m*zj7CI6fN2zY{20UwrNAd` zVc!(8uSyF70_sVxr=&xfRXWOWGit4Y<(@?3G-N0PRP|T7(i<)GpX+zDdYg7VNX+dk zTyOmG2ZN8*Q0`B}LPyjc`hGBx_qa`nNJze#7=Vg@vOBl7wq_M!;fk4_l-~XzC=$j(%PS8k+QV1g10aaw1+8YJN-Ct#M%0se-y9sPUP|OEoZYvNJP# zQp8gDHLI+&fYlB-cfH%b35kg3iQVhh>0x1tN=p5}0CMYAD^SNEDmU(q1}@q}{?x|V z;fAcNEJ&>BTBkbu1=bsTMTF>u4M}&_B<;VcwUnO5;z+RlQAKpbY#A zP;1A>#~(dnxl2eG5fud>uPBOHV^7g9&p1WYOD2%dW(v5^Em(wf{ao5L8WtAoKtuUl z9*!<`$K+&XeM|kCAsr?qDT#6820n#QB+&*4;c|lN8+{NH05p;Ia{@PR-7S69bX_h5 zGka6~Qz=n1XTlHF&%VyyVp72xuq ze#^i7_FxwyQCafCfO5VnBOPnLz%g(dxd68RR@%n+FyvKTe%1iHN_KEZimSW(9%i+UN}&Aa<*6c+f8M5wcRL_g$EGmtaPsi=-c+4VGE%k{MGzp`1&?9ZFC51{UhVn($> zZbKESsXmIah6CYo4xBv6HirV@=I$7FoGj36dN*OYFlGBQT~b?n0;ty)$s&xK;;Vx~ zvFht0#aUpJD`?&7j|fkU%MoA+q#jDN;612FdUg4bQq&73%4S$mb@ z=XF{8ZLp>lvqv=!w6cWNMDHP3q<^5$ngtG6Gr!GLDj}!isuD@&;cB)*f(#ib5a0cM zQLT+v-k{Io?Jc_FD=3%3a|oC*fcML@L&Cs_{+yO10sHrhZlEfD{`?twEeABQ7TQCE zoz{s$Lbe4>K;%Jas$>O4fSP#)3`-y!OAKJ5zy~u%r`1NNKadwNnfs>Nz-Q(Iaa1Pb zx9M5Hll;o8fohmNbWN}mx3j+M|6~5KY43dlgPCHzy1kCEO<^U_T9S`unQQJZ&|tT< zwOz(1=LB<)O=8M7_d8sV-&M|4%gMlFmdUAOSOsUin7hIZ*Tmui66Mm z`hwbyM=5#%I%8H54zA6;{!O4yBy!L%k(QPQDz~clY@t;lvF*~go=`2YqvXg%p5A!z z`xlXIrQcy3^PB5azpAa$yQfPoWmxW7AVFdWh%TK%d~U{e@H)Dw_NTWqA=wP9b)eJ~ zhOR3sDTT+ybv9I*65FVfc!WPvc!mE_kw6C?nG`m6%rY?l96>ifKOcHuFg>)ETrFR9 z9O&&nG33QwH#?vu2mxe^wd6Lp2j`YLmSvKQugrGrsM3v`? zo?%z!x-<4|;iojEn)GxCuoxsICBZ7GG#^~9+i6g-b!J|5TwGkt&4~U62upu||Lp86 zP^QL4Mq{P7Z#)52rIF2w&=&13h%**8cHrmFX$kLu+R&`~>s#=P7qQ-hs#rKUG+4kh zXncAft^Dql6?iL|)TE6Z%`(kjpnjxK>+KG_e%+dEh?@ZI6(QieA7{#CN{vG z63L9UAZ36NZO<7R7zmnO4_Q0LyAr6u8`vDiv`+6k-yZpH%s!a6J{i1j?hCpove^t8 z+dxS;xF2s9xi7QkxXL>m`O07W-4zKp4E*X4@ZrNB7#NJd`#J(QKurSl`q}4{^qQKQ zpFe+2WL2Rw$J1LrRo8!?#W1civc;L z08s;|b6nA1fd&eywAwL%cFG5^uS4%|&Vzx0v5t#I1X?O!s6KTdD?nPTtgHYdhJ%id zj-Own9`~IX;L5Z20jI!)nSLR$Y)goq0B`tUVPXB|3raSi{Btc5*(Q3;dZK>iqYXCw z2l2C38o18+@9yrduC9U!)2_4-uW@Q5GXBm87dUS`1qHde&~-n{IfRTCtXKwRfCdZ@ zEe^?h;4Tx_axbTKkAnyv4j_W&%&5&OF-{q=?sML9WwcH@2YA1_r23~SI+Q8^9n z`wq}>fEz}}$CD8gx6N1!19ZrFK~V@jZ2GhHLxA|B>eJ+L!zo;Q?gaD|A4NN%?~K z(R~bo(6eg%oBe>EW%czx(+9lj{&#!pcN4HBg#`5i{6CNWp7;OAs;qae-T&;1Vf{s| z{v|vf-xZbpYi9nbo5uVy0gwFE5$wG&kGuKbe|7x6QIH~NPp}&QOraXs{N=c5%HyN4 zH^6BP`t(V&!t9HCx#jE}qC?UiU?^CDplb`9UofShwjz%vZI7!iap)C)>eV?{f|Vh| zsr?2y3w=4wXFl-ZV}59~K%(c-H3kP#!2Qg9E2g9ofX+WPGg}3{U6jHA{|f?2U;{i} zmtsR3ElPgu(HqN|QCb?#bKVuj4B82bii$AEmVtm!fOlf|bR-3I=0}Q9OZ`Qu{G#3;{92}fJzc1;)YurV&N6MlZo|ves3JqV{ zIbq6evMi~Wx&&;*VRyEPMdrrVU=IFP**}_7O0=P$YsffHl(y;Ujy*!QFdv^_;&uYx>{K%T=rY!Fy(=7{m>Hb$F z?E24-u_N*7ra6fLbL^E)zyGz=r+i8IwJJn4`b|e@)QMs*0u!U>^?xLZ70FHzDZ4|8 z;N09C@QHf?8I)Q4?zWQT0vu)W7Xf$_1A~K<-Y158fGJcsZKylQ^vY6Lbv2o9hqV?$ z*2Bp46Bbb8z{pvuL&k&~+i@+N5LJNC+k_uI`hb;8pd9}{Iw1Th5f z_T&un>9`HPF9Vg9g+U~DfD|*z8}xn$1_l7PblzK(y{u=5v4vemCj#DtpqhR^)!>!D zpIym59m;jG(wT-$eTV76gSqunthoV*f1ZEbB)OlpDC_g4Q1z$NDc zq!~QW@%nHOcDE;Len1ET&*m8dz4<)>w8q<4wPU*XP!>QN9|F_FewirCBlQ<~Wy6Z{ zkDd;|r&PDKll|@EuX)SYH{Jh*!Q#)IM<%%IIRC4YbB~8I-{bgG!a1R-lV;K~ zMY)`!(mAn`VzKV`R?@sir5(18Ws76VT~xA-mfFLz%XYd@#${Q|X)0dJA-OAUVal}V z!jTduiSzl*jKQ{loOAy4n3>lz&-47g-_Q5``TT}vpF+C2PD>W|YB*)-h~<#33X*@t z?`AZN!&UmLS0CdG|2X+j;cw0w1*>xa<4EI=-DNKT&j`$WcgM@E)zjR}EMw{uP5i`> zj|vnGkTexVH}rAGT82B_D}mHL$vw0fZ33B8HM(d+QJYD3Kaw0L4ez7DLlHx%UgA5YKQ;1Oe5a-nl3)t4w!`cEshtsn+nhu0e#HZ(LC z8W^|-pJ9S|>i%emMQL>0PemrAl7qxinEIc#Uq+d#sjmK|ukVVfg0sicvv+=guKm$| zt*Fuv8-3{oSx()Aej7VSRycueRb503#tNthY9 zCFjwG{0w;pOftI3PP4{!SZM}O{$E;AI&MsdMSEtAJaSk)J>|$rXa(|IbFyV|7P0|s zmQx|cXoTvK33H)%@cSH8VtAt7!y^g4> zxv6OsVZ?hwsPybahBfaf=xSFm85CJA!sJu0GdmvEpIrD!gc0T}m_q*1U{SAL zzWi7BB8nQ*ARVi-I->oO%Y{NVn~lP35%P#qVQ!23(Ac=OwpQQ3AQ0kAJ&DJge0H_4 z?#=k~!dv?NzZQm_9_#+O_55I3Oy%cS=6#i#x+!KdvadPQG$opZBP)J~qTq4!bbRXR zAhApRb?&g3Sn@y;&gYVVoAdMY@fh=2g4C!VEHKa<__!%m*QrilfAi+obHv!sye(q> zpqJq84u#PSvsWov=EvQd=25!L*PXcsrMyT_1l2Jp6&JxGVV=l)M`(YO)}=yJxSVAs zW~C3J$GXFBfmP}E>h-r>bn@`<$iL3x9_D7-p6A<+ndG{EKi_CLBWCcy=9rkNn-9!X zX702$cXz0jDjEFBl1v?fVH$&;LKpCu7WMHv3s@Ojk8FAxx_|$gb`RghUNqc3cx3xF z`CW3(*uH&qG^hJM&)2wbNll*rVt1~U!18x+#eHyX%7#@f}g!TE|h(r*qe(t9e zXze2O_xHy@;+E`tv1RV6r;MOvTtJh!O+kVh^xDuf6jH^4)b7bd$#0?12 zb{2e=r^R3}G&BhJn+)Hxd~vYT+}Hg6LKo;-RaI3z;V|X8a?~$#CW7dr5h4krne{*Y zBw78MKip9(K{aIy912)++7-+FfVAB`W<+x?4ko0AGL(+#K_v4U+bg>)e?1kB&^3p{ zLDK)|u}Bhv9a}P8#5t0ypXRnr12a@+=2elN?yS?t{)G=FOD%oT4x#jVFp=_jJghoc z`SFJiuM&N|O2&1iT?X!y9rH-SyUjy*aJPg#vlL(#i;L(>RtYCgY+wu1UFW?Su&E3v99NGMAIh`VT|&P7EFWloV-mhw4+;(JIZVb( zO-<*o>gwu1WcK#X>Vnd;&Z)^PZ)k2Ff&&PvE6~Wbu!Tf}C1qM}UR@AN4#ImbQURv2 zRvDgr_ZHm|$zdfKKFh4hi~~BOsDfD8E!qb{HsfDOEV2KF&KPKmPX`p!iP+&>&dri; z_K=uL<%}T=@M8n_OR!-6O)u4jC`@QlKc^w}44JCgYanMHM9_T?G-v$jGG=ygG)$iE zpR16jI;gH_+a}q9VF5Yg7?{@$*8-W1)Io>3LtY{f_?NA;%0S^AuqeTiGt zxfhAtkdTnTK!cG^lhQ=RvN%V1=skQ|r36{OxBsKD($A+vtt3&A9zXpC3Fp$a5yl1O z6n!lJn3-axvS-e5Qmt^pT@2zK&f1_O!5BDF*%%^m9u+sv*@YwX4Jn2HX|E7O6jAX` zY6}ml%QuP0?kGSpr8MU_1PM8TDC3DmG;+(R3c@yj<7Y-mB7};~9G+r7nTlV>9unYB O%E8vvrr@JJ@&5q>?B#?2 literal 23799 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 #f5e3a9 participant ":UpdateCommand" as UpdateCommand #cbf7f4 +participant "FileManager" as FileManager <> #bcf7cf participant "Inventory" as Inventory <> #d5eac2 participant "Ui" as Ui <> #e5c2ea participant "oldItem:Item" as Item #fbffb2 @@ -88,4 +96,11 @@ activate Ui #e5c2ea Ui --> UpdateCommand deactivate Ui +UpdateCommand -> FileManager : saveData() +activate FileManager #bcf7cf +FileManager --> UpdateCommand +deactivate FileManager + +UpdateCommand --> SuperTracker +deactivate UpdateCommand @enduml \ No newline at end of file diff --git a/docs/uml-diagrams/UpdateCommandClass.png b/docs/uml-diagrams/UpdateCommandClass.png index ce07a6179e8a3b6b5f61150815d89446a99acd66..29361619c41add548e96532f349e8d7a84440a6a 100644 GIT binary patch literal 40112 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 F|6gIgaLNDx literal 60080 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­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

Mbnq&t-jGK$c)$viZ+b&I`mM+fqaPM! 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 diff --git a/docs/uml-diagrams/UpdateCommandSequence.png b/docs/uml-diagrams/UpdateCommandSequence.png index 343057294aa183f81e409fd2f7e5636163d01634..54b543a8d5c70c21d30b3f141c0b589b82acf70d 100644 GIT binary patch literal 31367 zcmc$`byU?`^ev9kAg!V_(jnbSN~d&4D&0so0t!f%beEKLmxREP?vj@7IMVR;(Hq`- zzrQiw?~nJMV<=;A&e?l^*4}HbIp^BPpy%=u7-$4&aBy%KQj(%daB#Pc!Cxel+u%2L z^`imc2fc%shQlixTUSdXV+S}1BWt7A1`bAsWG`LGOdT9-?fICQZ7mI~9UQGJnO@mg zIrV=f1w$~Isc1O-`FprqU>uj^9F;wrX%_6O-Ik?MuUlp+*y&@L_Z|Jnhwc@>NWa+T z!8d+fM$skJcMn1XXGY)BD{5L*bK0G(4QH~xUaT^+I9rvg7a~H(awYs2ZEC;@ zEu46PcAh@n&V$L{spUSBbg5W`b^1QDbaI1@sff{Rr^Bn%DL(s0)oH2ljN(%%ecR$n5UqSFU(`1E&H3Eo4mGXpulxQ?*E6>n?@7*bQqAHkGd+e3CSBi-eLU)gAYR z+6%Xn(NCM_uM|)*rrpj^s1mi!5&alS_Ci0sOR0-w>B2^u7$iN zG2%0HI~tf?K1xuQX>W@XisRppYOnEKjdR1$V^hJZ7?6V#$X6mLRx-cu?xMSUYa(k- z!i-$#nc9LY#Q4F{qp}WczRWiV28kGrWnCn7(|1(_br{~uaiS&_V{Q3d-Buxns+>`a z5yHVa&q;|2tGMWHr=V)9j{WG$Z}GYPp0=Bj?IRDFFV8}9tnvp*Kj_y{G!_RiQF}~izFADHWjszX7}EYJ)F1= z%}*;jSC-};m;UiM%YylL@AJF8+)lk}_~I(i11)roUd{^(PS~HKS)M9gKUjW6vpdtI zmyG)IPDd24{p;RXJ+*JmmG_H9XHHj+t1KqoqXn|G25P?IHX)sKJV79+I!pSHU$SO5 zB2IGl>LS1Jf+5$5d#B~=2T!PimbokWJMs^*>uK53KGZgG6LKkh zswzVMsOcq9=16PR7rRnW=+l=Xl`5|_YV=-X7MNUV9wX$FZOmT_#Al`AzkHwsA)>vH z#9@@gYoGhk2L(?w)9`D;xf==VHD3OAmD|b#=M@T_GKfK_$^+=EcVc>9KV*^?7ly=e zLZKm1kPrE5Zyz8@8`s^zr^-q<{F->~CJr&|89frY15Z_<{Vq64@j083oF{*lVY$&J zSnHc8O{R7+2rX?wd2Vy6BHI)jv=O^q2*Mb*m}z)7Mpjc-FLLyxT@ z8=7=(QGSU@jBK?mKXV7mbG9C%TH1$*RLbL{6YSE|FLGgzL7T9`rX3UF8%1Zax%H4L z`ti@@@=LF#b>Yowo69Woae$XIV-0gtXEqjADMPn9MknkMrB>(CxOnTvBRl1cH#G@m z*c2?!Avs}%9J+QthjokTh4x4sZxVnH41%@1SBv5`Yj3PBar)5d_;Pcr&X>|&@oOd1 z?2ODZH9NE@lq!KCFUP@RUWcHB=jReasg5MwL;|=%i;Ed&s*kUrgST-nPxiUHI+_vX zf0Qr?cC?a#rIR zVyau_ax+LCu5N^=KS+-be99shEbH7#CnRhp$MP}Y6Dtq&Tv*=TiEm=B(|u*rWBy^T zkDymxFBi861w?lxu2;@IuEuhvF;R8w^LU@rb%eC9pWxL(G!Cin(R_uO4b;21+K>2- z>0J57G_jQ7=dXQf7aYe$T4Ut~cxm_Md(}}1V8J3wX!x*)VLdlqP@r09TpXT#E#zB9 z>OpX_h+-?Bm*Tlsb&ctS$wKzgtj8wWDdHBP!2Gwt3Io-if>6)IqO_Y(>C%{=L8gxC zT}kuCoi4<1&1nr5WU?=KRpTM-@WY1T6>`8}|6y#LA6Lo-;eIEBN%0YgBXq`a`(> zZ+p#?Ud!F_%qBeJj%ujBV^FBJ*Xt3%5<%M`TevPNqGZxGd>I6?uXVj3p zrcr}lg{RKo+&?1OVboinvmS~YY27$gO6snCgX}f?`f{m1A6=rM{z>Gmg`&Cog^ray zV`jp=rQG`nN9GF$X?x1ou6>dj!j8%VT4HSYAv)i--cEEgU|d&1Yxt^&@x$aUJ-g}@ z=7KX)j3%6B)#Yw*lbNh^3Ak98?0ZVQcN=+ZjzyeloY~-#<34tl;Ne^c?* zhw>9_%bbzup5z%0rgy^m!#;Q(T_GPq`QeAfpBnX`AJz$TU29xA2zcAL0=6*?n)xcJDC*x%ovS>TGOp zM#poL>HJzo-Nt!Pkl@C)jmAdwgyNc8^TNuq5O2P9j1~G#eu&am-|@-J(k*LwKa+55 zj0g-B0Wj?@4 zn^Kz{e|H+jgz4@*O__**Sy@#m>_IcZmz9T!0~-*7V9tBJg#rn~-Fq?~WkXjJL{*CI zrePOZfxE;?Y6GgxFMMPARKUZ*Wj;LUW~-W=)6z0%Z+qeO%Mpc4sfEvpoZEqWN?ne_ z5&4<7%7shGuL8nDPMv!%+Qr2}B6q2Np5okyUd-0ej3bNrdYneI^ux{$|y%#UST_U^-UwU6|!K;QLcY9Ws!VkWrA#*UO~j+IoWgLmNQ$({27ef z$5%=A%6La(bEvyeW}d{}iE0Gi$WLD;JeSLSqvm^eqImJ8=o(uufId2^3Zn+N^-Evh zt3}lZ0o1q-DjW~8%fh1hc?LDT_yjhqxEq=#v*3x)`KHUQ?AeUJSld43QWh$A=J2K^tX1H;jwM*Ya(3)Q*!No|ecQx1|A^z-oHmf^Gz{FEZFp7CT zI`L@ky=-7syVKm+Vqd&hf2wucD#d>+@4H96lT^kt+ZfEGE1TxPosE1wH; zZ{2`%QnkGkrYDJyp<7O!G1AkzaO_q1r1G7`@CTo1;k5Jq&jJV0sn@RkX%#0Jf!kZF zi;teFaq-xE$-Zxu`1smfT!=x?K>N#Rg<6!X_x!568nNjvAzVpYZBxn>=?1>2pEB-v zDz*y)ym&j&-%>!m#xJ? z3io-gFGN0@gUb_lEbI}aiq;=5VKAR4xIQ{Lf+%`lT_Wl{Ey{DS+Np1>#gaX_mJpxIx{ro!!HWqVXxa$n z>C6v7i>dLi8ul?n(4LwWzoX?ng(wdSc-+{IiY2A9fBuZP}aduoB<{igbbH zanv_{fQ4SOZ;5}S%Wtj{a^583Pe*waz+d6H)sRB#cCWLcdC+4s-YY#gJyQAliUjq? z?vT0FYa$*D4{dxZ(eKxhQDvTPN$E(&#>U+Jo{kOc%ik6i$tU`YsX zG~BI)EOP}f8UoGQh46(b+Ve1}T7Li*9KnZ7bn*`Rj``a1#av`ZyB@dMGM2@Y;)V53 znc?>HVZ^69(Dnm8S@Uo84|%1zP{!$wS0a08oV~IL8_^VWNPg9WVq|r9?xGV=D;HEB z?CrlysgrgR<%q#BT#5Gj9+F6eB z42lhQvqmmUmYQ^_H^-Nw5vA2bO~T^sohEXKA@hiwR;XsWlUM3Pip&^Z+~)%+_-i-r ziow*v3b|3JzEHQts(~&>w_+I-Fw0}We{%;;Pg|G!lo8mS_x0zBQJwy>PP4bu=$VX=@>IK7 zpn^Dg;H0=8TBA$zS(LnpQ?ipfeY#9$PC>-D~K}WIy!Q= zyF`E^a1YCEE3c@Da(#36cs2;S;8Epi=Q;0vJrbx6AFinU(tPX_DluipNO)egIVs!$ zb)Tnj2t=`5*iVk%f(ktB72QL*tqWnl2S3KsW!x(y2WKHy>*sh2mO72I6C*VRMq}qB z7}TAz`8pL`4iVUb$!?8SLhgYV7hK3cS0rPz>Dm|nka`SDK<-MHTto&^gpk`ztH{R5 z0j5HlX4c}RQm)BOb=0I%76c_*nwk?T5(JYT`4a?G%FmR&Enr%u$@G{0piLMZ zMW?zAR7|d}MT{(l+*R>U*^`;^Q_5r*Dk(F^pa4OX;8y%=8YGw`34ZrW6-7zOH9da> z6Dyll;*in7(Rl)xx?v{xrC9#&O+FrEm`il6OHg#2dp!=5Xl_H5vAxiFDj7d$Y+-|Bz7HQ(hYeQB-X|r*yJd*RsIfhBuS#J3bfYKeeM{Pv&R)|& zqXgjBu)#e8WAS^u%l%;YQY4Lo;6MLZF`PKDAmDaan?4i7(jCw|-5KZm^eI}6DK2a@ zHa{DL=c8mUhsHQ7OS-TS#bLu}kQGE=eX7zc2-)0vQ*1iwUyksftIU+^w2C6m6|@pYcouYT#GY&Zg9B^xLX1FDo?n#To_wb9g=EK(!!OD-?MfC38GC9sf ztRf;ZpPXuf+I5_8zm~e(?;|V;@Kl)@8fyJw)P~=)ei|xxHCZ;nfXz`;x_@lNV==46 zhWhpnIw607@y@iZ%gtiDK0WTG>1cO&SLi+6&P=PD1B=iONQd05%g$>%>U-8tLNXwD(`ehM zw5tSi?M{Sjy$sLl)euf~mBsk$qN^YKZ=P6_WWghagodO(iNYjoKCN(GZeM@H;644V zTAju{j!%`bckA3uUV}T1gvX(^1;AG71b(2s z@DM^%^`7x&`C=?V*Emr_8ggMY%j=jb=fVAJ%&@9LwJOV5a@#em{NqX07xzbP{a#poHjQSR5QSv4ix+;5(&9!*g z>3LqQoZ@{g!a3PZZbR7@)_X;P7(=L{%<)2N(}WajTmG_K7nc*N#UPbC*h|UnNpP#H zBGP6PtLuke57HL^0+c~mX$jb@#vBO3Hk;f>S<8gy7vb?wkeA#mN<_nM?%b7kdw&3t zSza4>EAV=41^pE+{u_lQ-B3bL$M4w0;vv@$Kg63Uzw3{8B0Hhi=pBWWG|z|kf4kag z1|V}=r}Cp#)r9+ATfRxr8Jg&)7fwnoim%-bb!Vy_Z8k z&o?d}rcQPYe9nUx`c8nrmD_dhd`HX4gP(t}YaSl~DmcNGesQUPxu7Ng<5=iH-J_$V z6lbpoHOAB^@6KI#%m&_ga%oRv&T`AJ}H%@^yYIM>?}R+OThmzb?QA^8+*RB7u0vjZ>GKJ^H`75VR0!OeYdD3 zD!QD5m%xK>Rd3I!A96wPz1Une_~gPF(x(?)Z$N2E$p1m>OP{PPC|c4C3CJ~a(4s9A zD{bJpRM2?t&*la>#3hs)dR4el9(dpEJ;K&ms=2dYci8iqPnXvCW;TH=`F&>&&QxSg zFkjDFs(aWe*<>5u(5pqqiB8l(pW&`Dqb5r8%_^oA!~XfkpwszlI|7x^)6m=SH7Weh zJk}9&*nNa$&>XSlP{u2bdiXWHN96XXLxYsZzM9XEF>XBVSQsTM>zKDYNVcD??+8fX zzBxY{${cxvg)g<7Lqx_g#96}c6|#`KztZw>%#;_*W>-crBwC%3&cGg*6v*5`%+%UT;#0xvs+li+W)oOjpKb0>p6-**Z0Jwl{VM;+;j;&Uo9`g* z&1dE$19?8-0HX-$?MGxEa65#nCZmg(krYc#-k<|r%dqU*^-I&K);s{$m5my-A+ z3-1dH;9qMAUlKP^57&;~vKXsxts=BoH;&FFap+B`kZG-Rw1GceWAY^b$5!ccGZ#%& zxZ+mY>F{wBDy`h)hI*!T^uf^o*mvxl4%0bk3 z#YHKE+cF|Oug3HT9r;L%KX^$1bui2Ja5U!nZU2l>%O4vi;w^p|a=E28W)+Ba==6~+ z{B&NYjxm|sb-;Nry!qJeW8s>h;8hScLZP(tcl#erIC)xluX7Lrj~KlWNQbFIn%aKK6%iqwZ?NnZ-&D zrxwS0KuGr#+j1`T-d^aPtz$QJ69w+YUbC~CoLACBHfE~#?#7&g<5m0htyK>L3A4qf z7(=LGDr1zm;?q*c3On{!tqF%`ALVssqVyeK5H5;oX=!~_5J^!M(?iT8{q9Tg^as!e zrr(C9-q5aZ7NZkz{KyRmmWA!m$nbEoS2rpqhj|CL`y*a8wGYlDcd=^St{4d7`1Cm~ z1l%p|^-^Eb#$K<;FP4q|$perecc=S9m(3c?Qc{fIxD=KIRFdc*vhPFB(=0f$BPN{w}M`P)oJugDM%@LeI#|_U7oE-H}F9=NzcTj8AP(mj<+(W&<7*9i3gP zvdHpPm@1n!Ru%UtLmJOj*v6P;zkq^E0Er15(BhkGO0`&xZ5kwII)BZFsx_mb=o-y0 zT}c-*qf!I(&^a2q5+4#Hy|sS#4FBhiskJYx?C(&WQ9+h0OXsSp779A+W+!=P>y>^o zmh)iulr#<{P*ZtrJwJbXc{G4CFDuVx^G!O(E+1a4$*n5Md16G)yp2`5nZxurAt)bT zTGWhcq}d5$@x=MHm!4`?{k?-eg!OMbvp?)h_=6TV578b9;CQGJNKzFM$% z!i|PPCXnnowX4%He|}Md+27w`gL}7fxlMD)yX@pi1x>kPp*-<<#>(`vgjq75L~u4v zZf4SG`oM)lzoh|!VbKbDO3>a+W8J===6Q>nKYP!4xp0PFqQ!k{`ai4L#%$4|dP~pK zyV>vrRfm4!(bx011juwc?p!ISZ6?W?6>&Vxc3Z}DE!P33fcwNh}UW`ywc)S28zg)c;kChuPpdJKi4zWqTpwG=3s{Hxc!v>+1TFRMs4ZcMHRmk?zV(vo7D| z_!rLfIA({_HNuCKnDWo<)ATSO!_E4(>v?m=cdW^snO+7ulervp87&KVHrQX}Iy4?P zmfI;JoPRO0&q|lO^qS#l=_GO3i=V7f!VM7dSjmj1Zgv#wx}SVgZ}-gEG|ndOD(YkY zL_J5;LqYFPdRyc9G-1zsw1nNYWbp2?J#w(doD6<0MF|xuUSvo?QMtRp^=}6-bUhEzuz*hvzPR0(O;o@ z)uRQ_6|7DyOqYyU)6ZR~WeWjvVK`qhjDTW7C20K;(2VP4CE@S`w<}y*;0&rT=Z6lr zc#L7Lb&jsg2F-lPn4q85;f=6)kN=Q@;9(MrNB8=E)|!*g>6Z{Ri;;}C$Fz&o4j*1% z7Cn+a(-bM%-x552ran}rKkMFt{f%`!)T`wEl8ExabZr!`m5T^)F5J~gpEhg__cQ-M z;I!g3`R-BP0}etREvwQgl(fYd3Zo$383Eh)T6tZ15^mq4RbwW(Jo-j}^Jr8gvjH97 z`>EO23s-Js1N)`#UOKwR_!w#jIl@^3e-aKdmUJO9c_25_3xhGY!~`Li^kzICsgL)d zP016~T?wd^N5N-lJba@F!RMtkR;Sjw8thN$vp?uK5^fdn>sbp666YYlmnFa#8|J<| zqAOG7lo^!ap_oPABpI%7RF$y@c(M=GQN^ww$LuCKus;3-s%;Sp|#1D%7Ei!W*N{* zQl%X~&qJ&PTLyk*`KRi=H5*fe>AvvH`C>D5_@$JFD!;JjZZWp@pfB=3v#)@j_lMs{ z=YpB((T|!<5|VMi!~9BuUj6!L4O<(ynzXYWP0n3F)abxSJW1pwHm0un{$ZB{0B_P!`6e=gshhwV4@Cz>BTFV10{X;Mkne;4wr}!@qBLiwZYB0x zxk@xcrf-1z)x`PTb0eND!EGo$y7wkk&fRMshkbqpNWu!MWus<;pzf>X@3p2JdgW!TbZXP<(ZJ_y55rLs3=jyySUtrXjfw2 zO>--o)&>e%I9ZhiXIAz88bpmdF_J-) zTKiD9tPZm~1G8JolT8|qPmn-(v1L}TXJ2p^5m3Y;b3~@_mw9{-%z#<`_nvo$U0n#w z*Xp`GlPG*X<9aZQ~c6J(02 zoQ@eRqh1N!0v9g?T)!Sm#eOD>>`=O9(5>-0|GqIoU1ngL9~3MDwYHv&NMx~p+188N zINd=dBV7gO-z}Mod3JrV_k}#$w>2>dsi=Z6Ip%FNN31@pCl_Uf?7XQ+$nEiO9Qr9n zi`k6H+4%^;8(D^r4)y!w;Kw!Z%YSW?N|Y{*7m%iYg!RAiHo_>#lJd*(|IYODDhvnm zA6H@!rK!Q)8Q&PR7+Kie8M=FxlGMQpL7K=G)&!;f<+e)q<%d;#zZ_3R$lh-W?&Z_4 zAMtVg@HV>KHYyjFF*iIasN0W|8$-iHlZOtS#*Du8DOJd28o61lA0j@K1&?-o!T^rZ^2n%w6uz zHh`J)6w=flJ|rPYO-yv#o8w3EHIGVHVG|Rc%J0rA?-2C5m+uPgg zF83Ald0&eDzQYM|vNAF<=lS_>-y(+IfP;$7>%5zME@^Ln)D=!T!itc=r=<5FCZ#|+ zmR?limaTqtm1(ITZBm4<8@21LbGdV6#8e4!QIuJU7#<$Uv11o<;l zQK#&NhKtz-XEEV|FkW8XaatZhx){8VN06e4Ik9-Arluw>jdp2BHunaWX*e;mua@@q zyem=G1-@KVQczH|PfVO-g$rb+5mJEVA$@*lSbiAea`9t_`CjCQ57cvcbm@t^ySx4U z{ldb+Qc_YmW_+6Yyj#BmMFn{RqZhuWjgPsTn;Rc5udBPeyNgTAq{GYqpohfsF$8TL zovn$IlHvcnOc*7#dnk!`3*1>ev9?q3J=GBoxfSe;f%jQTlSfJ!_5O&-Gd9hlBFr~T zBQrBe>uD7g6>)LuLPDRHz649fp|)l@+t59fHb#77@#1gD`h`VJ!qDON_AKk!dU&Ke z*!(@BkWmEfnSVe`cJiQ2FWQVW4s8O6#AdponpgKtPfT?zXsv({j|xMIzQRHN_V7lsTZdIfn;E?eAL?Nf57jT zbVKvopRE2yw_mW808gciXKU5d_FGtR@O*wP=I7`DRs;EH6C_#xe3VCEDA=k2IF+Bq z#Pfn1UYeSkZGFeb#~>uA6x3wk1k=-hotm0zYisN3GFj>f3Mb)z)F2us!OG4sBNz>k zPsDubp*~sDHp%7h(P6L_syNau&~r8&P)g7wT2K}8ygz{GIB{=kqe9M0e*gd#l^)bDJklow524N z^qRjl2lgd#=jG(I>Mkk{A4O#a!gH7n8y>F@9k*+|UqAeu!0+yKwAvS>;5WP#Bj??p z%o{;=FxFc2_%B!@rNX1@)Q8-`!b%hLhG8Jmod-gk6x7tz?CeKiPMJ8S(9lpS;S2{< z!PvK_3$1=Ov-MR5?MTlla4kna4xK}{_U4+Bl9Ocx+1^Il-XCmp+!{wjKnNk^#?%sD zR4iY+_j-Ghm6@3tA3sh(;0(cVuZz?>yTLyW`8rc9_>*oEeMpaPp5-|}Qsxztir*s# zOI-mfV@yA)k+HGZOVq6jlL4i^{r!Eo+1tn}$dvC9-X^M47|X4rm_2>+yr*?_bsX|UQ%CPl=WniI^$ikD({g#(lkTDCeZ?6ROsVW9RW3YrEG)dUy&YJB z`TId$n!#&(4D5oBm}kjH*H;%R?2L~e_oeC^7zq1{$Q3B%pbc>;CZA7y(n;d6dkHFI zUS8hwN)kaYMgqEHqk+P%ihm77HIEoBhC#ssbGA z@9@1xYXi!CK6B{x?IxZ447}islD!}1fzH&}kP;F$fH?N{$~q3=o`V=FH8}0KpX?6x zffr|{r*ZY1L^7BOW8?&BXac+nQG_F;;X!VNv_?H7CgyiN{C;_Pxxa5)@DK+Fhejb4 z!A@FM_6{Z{wXkXTC+#|s%k=bg3W+dmJ+=2jkTBvWAL8OpT9HXV27efg<1dK-%MW|V zzM7Zjb-S$5q5vx3;$48ZXXD z6JK3j1^($wXD2la%l>G-GUa5AjUEF7!xAXJ4&z0d9dWUlfGToZPGZ-0PF0u`{+ig9 z^4Oc-?f9c+#VT;)_SV;VKwdUD??vgf^+cy=bI~RVWZ%cfmq50c`Bgbw$AigY;kYQH zzvOlF8k8C;eLXh&4hsE?Ds!r^@(>nJQ&ucefy-?#SNf~ze!zD|KPsxI+`W39!J%?q zj{P@mUox@TKVVF7+#H<(MKk4zv%uBy$l&1f18bwpt1Eyt^kL=iI6NiM+_VpP5M4B8 zg7KN(F?|~wt9sQH_N(r=(#nu?|H1MkS&?K`J3|SZ8XF7Lil=jA;y@Y&IWtsvUi^sD zb(118!Z16JP|?y#bVx94ceU$NM*BgbhZmL~^P*Bg%Oz zqBkNUV!Zf8AxFwz6d9bUcw9hQL(n-=_NUW@{Q#E;K9RyMnUKD<=FIi0FnLJ#63J6Z z<(|TIJlLzdSQQ9&%ozmQx>*hkk_iSNl1^k0<;4*)p~%XY<2&+zs2ZbiHRtX4Tk{!u~jPGe;I=RNO_ zNI*p23;!%%2r;sl2CSa2B#M!h`&=a_1o@8rKfK|O6Y=I}(L(i*re50<`1^r4{1qUg z@$lf}B2nQDVaLe&qdsSgd6-^$Qg4>vfKmE7}Y-T(o3@0+uOTCH&wI5LjmE2 z0?eh96l0*F$pgo#)Oo7h=#dn=`)$hG@hB@uF2!ntN4EB*02zwK{OyboGbuN!nTauxS( zcVAy9LcXc+iPPDkk!^n}KSL}>MzyPpi%;nrd+@lRXz-Cec|u4ui74Pu$#MO?Hcw@+ zGEi|rnGI+4^9wj7SwyMaoSc;`iSW;F)TeV4ck-2Tz5>1axz78hS!LKC7x5^bzqPH+ z7t`hPw9KKjs9F{Fd2p!X;cRY6vVtcb)QnG?g5! zB1=?YAvP6%^jI}o;(b;$Kv?h=9>dY)`ckq#eVQ!LvpwG;h^n*`6cQ2=9^T@-HwS7P zV=TwIG@u0{m%sRVTX#oC$HIdCkmNl*0*>83=JyGG0SDA%LKYYbY^2FR>iGEhY`r6V z8d%1+TDvTO_Jf>;!%F7>l0el6u*2>cIHaxsS3Lh0g{`VfF9>Jem31Y(Q zeWEEle_G@7-sj8SBX$X1Ds~V-Dk?Gc7L5Q@TdRL06sras5Cd~r5?FeA^C2O34g|6( z!CRiQ@%n!`Rs`wrl|EsjL@zuz_~_uk&dKSMdI`y9j={n-b-Lkel%M+hON=gCMzP1i z7kptl^7W04perNSzjE@=Lq#Q>TUzWupXqgV{xNO^VS?+80_6MUtO-onr2)&^LFC`j+C;H580>e+sYODBp=44C8HWtAwy)s+=0Dk{hIL2?!rY+Yey z^7Yl#52>k4sp!Jk*=)YxUCNn;!;unUL_zQ0`#M$Fuk{bQWtu-iX+wo^&73&d+g5xT zvkuPA^L6%lrf@**Q2Aj%3=im7?PFBg=(0Beox$W2Fld4)_MM4)}qhfprq+_2vH zotFO$6J0_eh|2#Pw!C>nX9un;s^sW@jiCbyJ72X>Z7FO=8p(Z)?A~V}E<4EmlYaUU zMcLj5OJZ&_U|XPPI)>PU?7&LMR${lAd+IhL0pTEel+fe`O>AQ{FffQ{11!%#PKdOQ zl3xy@zxOoz_WDR(IFG-rGR*Q2x!DNt_fIz@z<88E_H-h_sOQ7uh_+OIceDe|T=8{# zD+|nDn)f*EI+@r0Ia??afPb&!x@yjVU*^cULYgXMbZr8Zg2=J{s?G}qPfHUj>r)!4AT4FoIL z@Qyru#ye`*pt!j#zQs57r2nXm;v0_yWaZ1-5K3-syHS@1)Crk+NM^Jomi2fQ*P3i5H8^SMd<|RVrv2v9g{5R9r%A z5}^c$0kTP47-6?fhO?z8<*ke0kukxBQ1ieLk#2A*$l&T`Zvc4TZ6*Gk-a+talYHK#bai5iyLl? z=Z5wRDk34Cp!~17%NcSH@CLNEMZV9@|jp) zH=TR|v_gdm6=-NHft7;#g(})VFc2;tNKt=h6UB4$TZ=cS12}WRH&=V!`{ouF?iW9- z*lI6P6dupUWd7rv{yGtrrKLX4KHa}157eM!@;41LB93PdyxkfPus4h{GNR}XgRWQB z)&vuvq~H`I3zu88`XY`hNK5-RWkWAF^3p^^M4B%TW%da<%|+J`$SL`xS8awe5qV$| zCG@$(dfWpdcHt8&|1`kt515YHzO>2t8ocEJWCRygpk?GlX*pD1C^HEyTsn z#-?w-GhMZCvNeJADWC%n7ne*oPo8+c<>uP`khef{=yDLpH##*{o?;Z|oQsRgSWM7Y z=z^B;5^PdmFpK-)gE0-15{Y^`u{4Vp_P<=uj2lo*LW6Ea@mfx@u(wvo+QI^b3`FK! zMrkPvE)AO9?zg%;v3>&!yT003rtk6{_<}Dm{rgxoO?)H`WPA;8DS7`1bV#U5)csJ=8o%t zgx;%X81%!}^T3&A!__M{42q4tCz>j+C=hd8Ub-EnDGYE2zeARYlm29P7XC378k!pj zDS#i^IV%yoCJPqZR} zZ7mGppth9Ct=GN(K^|uCoZg}uiD#iqpxQJdhZ)n|6)=2!lmPJh#WBX2C*r1?W+2RD zIb?)kXc{ga#LyQPT8>SnOz~gnb&lNd_MgwP0YFFH?7;h+jZ^qPTUMDU3v+$WwSP-a z<|as%Awk&x|CfN606}IfrXB&Vk?%j^B4cxCDVZw}sTOVa)5`Lfv^k_rct`Q`y}%Yi ziJbec$c7=IC6~+k2DVA4+|0U-r$1(FCg_)Do#(H%N?QEgd;IoAjTOAU6s~WVXXoWP z!*XHb(@)#G?cs3JQ|a7A$wCm*2wC9&ZO#LNrI;nI=W&2YI|WL>>OdM+Qf7;s6-ygl zKC;+vp83xY6Gr6^ilI=2 zai7=44mTgF?d~^T6kI)8n^8evl-t^tR#jD1R2%^xcVmu9=7Wp7ds0$Tbc@_$J{&ty z;RoJ7wl!^m-2*@S7*+fa3x0pKjrxG$uIDGKzF%z=|Lc*szhkSx*52NpA>3%U-05=* z{v-95f7|ksC%4l*xNYXLlRjTvoB$dc$V?;!zF-2B{Ctx;H!p93*H?43<0t5UIz)0q z#z0>}(u9t@y##)?3+$2!$&7 zB8DVz$Xpwz@1Ol6qjI=ixhR#>6oPVoJ|D~h8kF|6zrJ*(ml<>uVLt7xH4(Geo`m@* zR9>LuEiEkpI(+Z`eQJV)=;&uxKXzuiIy=F~IN8~i)lg(e85t9;x+BO-ntl+3PR`8u z1>%zSqnk@Rs}lYD*uj!d6qY_3Y*|@Zzz@3PNqF{Robmw zsDHw4NlzzZVPWCqgu;vl^^zZlhXq)XB+-%uMBIyhLxl)Zp2= z9uQE)ObKmx5G3?qQ5+{>6IqI90hn*)<4zZZmSvpDQQFA=Mgd@``i;D}=$F~z-4S^?*>F(~{heAU`LbAiT z=#jxP{>GEms5-l4@k7dTK&RrEba3~^sX$=`oG|Lzs~PmDT2w@VOJu5!nDL8#2lKMkWlj=M@ZhcG8VL-YbrP`p{JY!R9!ux8CxskS10w}! zn6iJ?6MD@=QDz+-os0^EvO5?U_pT86V`M-5Ssz#*49Z|(VPVS{yr8>H6>R~-3s^(+ zj^AZVFZZ0wvn#BMEW_8KKgSFr3%vEKEArPbB;Wc*nLRo_i_iuc0kf68t;_93H9YpP#5J{WaB};Q~!(@I8IJjDfdQ|1N9U>4u3Yo=lA3tb^~u;Qa+W)QD6g zqU%TGb^pT*5Kd5EFkq$q9-1`u1gu!W`Xegfe+bb2vlc340P+3jll|jCSaS?TW;@7* zBltk)M8TQxE67362i(yTYrNQP@VtJeZC)fm$RDT?WK)D8uk8CIcQY zLsPh{5?OBlDvO593S1xmF804g1!kadbJu|0ET{RX3v^7qM6X5OS4ADTPW28Ox836& zzo1rw9?tYmX(v&ktUb zGn4`)?T-TvVvm|awZSGVNJLC56|woguy6~oB(&gbhCmfZ|3i3+pjx!Zdyg{&owg@I zlNz^0Ax*%}&JOS;G<0-4j2;Li!wd9@U%h%&V?CRgkU-~7m4kKvejk@%cf^FQyW9g& zY+y8eCjcq>FE>x;mzx)WxxE}N_@MyPAqTYE$h|~GJ3tG`!0_eEmw^gj(Q|Pv z7uIj{N5$4`bYTr8L#g@mk>w!>p`e!#c`e~(y5RO>+sw*pw)h42zElKSFQ~iq&U=`| z->0iAa?VHpXs4|G*=Iqbgtb{RBk2WxE0}Dc50t=e()JL-bf`n}JHu5k0`iZ_VvS^Bbc(>T^j9}!NJ(8-T4HnDRB>_sOtXh`ZUlYy?3vMW z@&$rfW7OIHZcise;hqZaTfS#*(LYVIpY_6yUWyG^ySO+wiY2=I_03n8mk-Xz!v%)^ zT9oupBAbc<8KnVuE*BIfCGknKA{Shh5#3gsS0Nu|r>0VK=IqbUI3 zAA9F78Vm~~Vq!mN7(pf`@Ky1^JqrJ0>hLHt9+(nojgoqPz9R^`)bpqb^0&T<0p@u7 z9~B*TFY3?rQ0hG&C(KR+IBHLi2>c4^Z)G|V{SsI|2=wXrttS7vPyo2j zOG=s8 z6g5&7J9VqK+^FZiq`^Qc|JzeWz^1-yuHL;;G>nm5{&_t@Dab$-xU*1F(BHcJJF%#a z(*z2E0Nr~8?jfv5{FOKKzpNG1|Cp;l- z!2i8350Ei%Qxm?p#7M9O2^#l4m|R&}ii(Q5-RkS>3+$nbM{}-gDcjqYZ0rcF058j? zqM`U8`G706m<%59cGuUh?~(Mp&Q^evf!1{iozMf#&zkCL>+zx~EWyikht5OzJPSbT z`I#}$xI_OYBQP5q=KKIhhKSSr?*D4-yyL0--#>mrg|ek#W($o&g^bAFqhzJjIWi*2 zcFdGjIA&yLr1;n*tD&;8OC+)h$;it1UH2iW?|A$kzsK+M-^V!a`+dLf>v~vg?j zLR)nTi;%}Eg>fU7NW~;V?LJO)^||M^mkX`^_tc!6MCv`37p7#+aNUG{+t2yQoo}J! z^JaCMrCFdBwHu)pfuu$~-u%!vKVN7T4{*xs5+sO)#Jmg7?2=}h4(CI4ApF#MW+*dL zpx4<%#s(}Xj80bFWhE{9`36o0T$7EIbXyu28VY#xh!ts05W{2K#}>`P!eUcBS-IxE zG;3~y!{Gp*1s-%7s^4#OTHR+V{Viieb+zJs98`jw%&$0Sy31W5Gbi7mR_~)rOt|xJ zL8us&W~%a@5oV285$Rh^j^vHoDOE`uUinff8I9h3;~jtA0f{vf>rhcpK;TQr6FE?zB)Sz9f8;eOhAsl4_Y(40U4~AWS1T|RQUba3Oh{n8wu6Kuo;g|0U=<+97BYkNG_)OLgzhh&yjRmq~`3+}vh=1pe% zTxK`g5_qJ-42vC{oYbgX<#3gMm}s|O{5N6TtFZYbKt^>`-$GR?SEt-=y<%0#5^9unv6o1P3#XK00~5OUugY*WP>`F|E7u= zG=F>mLg;}!s%j=1GbAI%EpgBc#}2M(VIY>c&fXjE*@1_C92+S+32fnCg$$d_?*e+0 z^C93bffiA+-~{+xSwui5=#PT--+gz3=>6Zm#T`-)@8Q=661^qE@lUiKzCrp7VPPEm ze%jp^IZNKs+KTvZ3N6puRQ?W5xuk#mdU+jEoF9{I@-!Ds&rrO_}oyx5W1Gn052l?N?xPTbdocg2lcE z&l|w8(8O7R({^^VT_rdDsU~Tz(Xv8iulgIi0u6)R4|=e2g9X0)7Z%7Hu9QS&5fu`0 z6l#`dmd(j>P|NM1yp^AlmIj3d6*tLyPU(*P5Dlz9gv}c(9w!3X{3N%KTs<^W;cq7y z9`DFM+bb?Ee!AxQw!xX{X?AHmhBn?~)pnds0B@dxB%G?Sq0z$i)+yJ!ckfswTu2%KQ)avbRH&^5of;)rCZv<^%o+xp zLHz#n3^n0P;EaLpVd@RF);-q^pUEUdM66?^ zk&zK7Du#!L!z!_A-s@(qGRH|{LXmNlOeWoFuy#*h)H(FSf@eTjn4Wt#DQRNQ zH@rk0I2y0Mi;=_G0Fm^|*4Ts@X|zikKvB<^S&fpr>FTbpJfGMi{VcSPvkVH^B@6CD zS?ummS@8=niMBupR8~?t*t1Q5j_}(AY5nW5jkRUugHVP@j9VH_Zz2tFwDhX1Tx(`e z{7FCAx_=`G9a4+gzkh#4MFs59*=R-cKVPa_T!_yZ4C&AcpJ+*~1MgK;Y2l^cmSJBu z#qFraqwvti$Gbp~rKE5Y$EY)dhTiCG0GNlEM$eFu29mssA0oD9wsCnLK)K(t9sEJk zA+|E-=seTt3c^OybT-*$nk>@2KDL{cH36|Wdu2iUr{7Z;YjF-om+dM5hz60s{Ur(j#D~H0})nn!#iq zNw5_I(30egA~b2XG>ZV2l*ki6nk;pS%tk>?SRL~1Tj1OwU`?9@FGG{SSk?)~AK`nw zP`mgVS*AaFQd_9ZmNoc4lezzLBY%T5pANcs*KZ{Uj$4$0^B?T_ebVIZx7hq{Y}~87 zZ>ah8>uYw!(xe*U2?>>$n$Y5I7nK|csjXh21gLk9l1s-yFPi$D&HT3ujEsyXV7&<2 z_@3H!B~y4AVS_=DJ@xfTwsEC<97#s#;J^TAi|uoV4U1G$!c8^Uq(^ABhWe4}!MdnV zdvifg78D3yy?S-sCQO!|+*Rfr#!Xae+8F;CC|Pd~kO$C}diwgutvaEqe#pt|YC$4h z3x|pRD)SNkap(}avK{QDfq?;#le8(cKYD#x)ni4bfN+2D-w~b_E8(j9I9%q%40wN=iFV31)YS!2RyQ>4*y-R!#VmMF$M-u7L7x&6yL0=t zS6V>Oo*>5?H%i=oo|xjxOFzM|DPOjb+!*punChrg2xjpj&TbjXhS?3M+EByb_mzpG z6TK}rqq&lwlaok{_VTwapiYP-+~r0*r2NsY8Sn@xY#s|XN%wk zda-NoVb7ajyvb-F+fF4dve_Ft~A9xS{|0{I?mtDK5l zhtO!Wq~t2BA*;u7?%CnQ;ZoZ{@+l5>cJ+91G7dUI3rCJ4VmVLQbba>Yi-6^a%&D0f z4(SdZ#@~r(9dqLp4+FIZSO6(kTU$G&634dHhW4;h-cz}4gF0DtA=F8%{cq~D;qFbw zE4%A+(dChXRV1H;gakbH-XvHJD}l{a0o;2X)PsV74oOoiP+wjSjx%LcPy~~00B)#K zlMaGm=4(^Zt-!!Qn2CYCCr1pY6NA}^K)rPkJd_$7tO3&~<>lp{ySg-w(2(%K*a#uE zD2JOwgHHvEPR(l!-1)|hO|E|;yzyjUq&=Hl#3lS?q0K^=Z`NcDS-<66^^C#-aI z9E`(Vz8=$gQ_4fHN{=vRXIAJa(SHRV12l(o@B<@4U38Q}$u5}UaN?xEY=rcCy1Tm} z6D?#VO#h2|-O#7taAS^+k6)dxJ8~wF>;+gKlPn^4{++Ei8r*#47+N1S9#WpiX(oRV zfQn74`H6T;2T-mAhCob4%LL!oU5b2qODBoHC z+<(V~kZ)6Tb%T53O)NW-)T9r=#KxOm7-yL|MAM{jSV=<%{gGc1B~9%^{6$ye`cF{v zs|mE{iN5RqIY5GRdDcp+|Ahe|vj<3jWUJxsx7qji_zU8*gLJU1y=d!PAi?y#Zt?v+ zmjbzxU|Oao(SkWX#K$X5Ez7)a7>2NGzhU%+ffeINJ66Au-N*gA6Yd>wtxUz2Zy4ZobOXp(IPkcK!#TzZXVRCufIFj=%X&zhz&0k zjQeo(nZpG6^#GB_+vWKJSJx-Udd%j%$!`-Z?nE^OFw|#V1T%eA{&eukPBZULf)xP_ z{5zGM!Mg($?(4U2!!9J(J<%K~xtmv%fr%8_?sV#l8jV8Xb6#w-)cW`&VV#b8VaPuf zf_D|9CAmY4pT+yfkTb%pjZ17_zj)!bAV1EnQuTB=IX}Xq(_x|$P>&*$9CeD{^eXY0 zLln?t>`H@14IDS|gOXVcbMR8y*^hyNi!$3mWii{u z>A^X3t&7)jFj6m<1@Y+$;Uc?^WpmkYRJJfT+6!@7Lvq6 zJF)=}T>D?cL2G z_o-=xyUMl|(R!PEcWPhulc@^vEBkcfbXCk_|A3S3NkoO7r}3Xw<7e*P~a_^N~w?1r6+0mlvUsYZ)}O ziwqBkzLA5YBiJU+RrDyjO8y+rr$VDBNtDw zN{=fkowiyE%DX5GHKrNeao!2u19IuF!8a50-~rTq5?9{r4hR6)@8@18>Kh-L*V;d2 zXK%074?dYBp6f|WPVca8 zeY^GGcBENg)Fil)=LSV9sQ7cbx(o~qF~K$~OZIi~LvvtGSz37lNzr!aDKNvIGd7Ml zGo;+NbT7OIugq|LriJakqb9io{X45cQGSi*EtC_&*YADHnN4ZZ;rK}>7Zz2p`^pIMmde-R(D>s|stNxmZ^AoB`5%qp*e8?!Ji%@oXCP-E9}@O~;7 zdU!5loa(sK_bN*NV>{pc=f zmv1G*y8jq0P89dFlxVe7t}cy%3ZZ{cpPnxMG!MkcYp`@k!kYw?p#Bu^ZOZKwG1IXT zJ$1-JMNxk?8CBvF6pUE$Pp(lh4nt4a2wa?+R*_*+h=hfLBd6@a9`N|lqmW{r*F4Hl znu8%o;K*CJd^HV?y%SJwwLBa^uG9M3H6}@%h+qU*G*~4I>L(f+)Ws;oq5&xs78m<| zQ+o2qm&JvbpMNaU(7FVg)DTKOeEuwWB3eVk*#^s#6|pvxu;x_Wedo@O8N-;NxHG2) z=aWmAr(z?lu<0c}Ba|u{wV(~L9?53Yq3tQErIsM8!NDI6&14~*)X|qtV_vFp>F7X~d7Di4Q5xfY@G^#IHVf{(rRVkQ*8r=Ft#_Hk zWuyF`bD%}LxlDOZYGVvoQEt)+CFL+5OydsD`iO`K7$%NCVP#-tm8FN(_V`&t?BJno zzce~C&VNH7K>=gCEPy`cSMSq=u?{Rt!46&tmXNPguI#y95|wckV=+DcsaH>uoo+Ys zBPQ0B@JOAVomqn4mSq;4##s1WS@csq%7&(69~^dIqvqw~BfFq$z=l3vm5Y<*-bWox zhVQ)jX;EWMn((vY>|w}bfG>NM2#)NJj*f~8HU>pNCL@aJG=^vw{5@IbXfXM`<_H!?U#{{y&35VYjxW2}>GZzPL^Dm& z=C^*Th8uyVAsXDNQFX^L)zkx6yQ9V1B{+0ut|nYrL@whhzT*ZFs1SF~dm7?g-VKOG zKX`kPi8a4DT3~&*ZY&bJd|Fq2Vd4A9`MrDgXyKM{k}0MFM~fqb_cN%~7QD*EvEa#W zd=W=)FB!2b{R|I9Q4OW&468GH0?m~>BEZM@V%QVKR(KHog4!NKzA!3<3YlJC(`_hi zmf-3Er>OhPvZgYZ{`%XnGSV1slA)qd?pMi#?H*iBLd-67aO)pmf4E*HSt&I+W`xMc zfqvmxtx8&N#ie#fju2vy-BqSiPx;rcBG>I%O@bn&!jtWg4D>RJ2%3WB( z)3-1mz(g|adyaBf9B16)!YCnZ^wJkScfy}q(8oB09zwsm4thyI9}e$Y&V%XIf`YaJ z3H@pr>(Yr6%8nfxcn=sK*b#QgdMA+=pH7;d7)OvtcJ)J1sm#wg;ZaeoH?1bHb^oZU z*$DKE?p7BF;;2(^!<$!7#vBQP?$Ii&jQiTkJd$gZXTU2!CI0<6vtyU^gMoNKK|w4Q z3ry{BlqGPozFhB*y+CClAi$tku+-{8$<1Net2b^;H9u64GlUKN%nY=Gd_U)y5Xa@1rK8?uUt_9+H!-P^V(^q=9$H*e)uHanF5=n>rW;syPg zR-OaW5Be3D4(Iby{+w;q;HPpOsK%dlxvo3I&qxR+BQw=V!nh@2DY>X;aEwXHJ@x?9 z!a`EYPjQQR)13y89QNv3#ELtIYAe{aCH zpgeb~OFAz$-RMl6dMO&9^@px57;yQzU&vH*2N+g3%vhu8{{e9wvO>7r9&d&Y*c?KW z+2g=)leZ_BonrMEeue#J=l&6K-8t(mDd<6g^XpNZubfU zk-{8e_{p|JHQPqWg{?7}d3kv`IhxK^FhqE|(&NWu&qcc+Cei8A$%?R_nmG4`USC^} zsa2j8D`VMON9zf7k!4DnMxCMvtN{*8V-U$+#Fu1=lg5>Zvnq9DFtOGqnYX4jN5Nh$ zcuvu(bd^7u->KisPrhkrVTGL{N}t}hkdZ;`oR~>RW8BdB6ClEdPLA-+Rg2qy4PWfz z)inqgW@q$!+mEQHM^n%fs*^}pk2BEG$%jo{RCHpnFoK1Pwt74@${0j*I<$Pt%8Uxk zv3$DG1y0W(ip*{A1cI7xkZ}GI#F(X=3hI^)?MfD|4(;T0={LThI;O3SMGx zs$Z`VSr?2j9asc|5_X578T2|}PdL*q27wS)ZQG`R^e0cAJbtX~&~glVyazk&K0>+K z^04SyhqkURx0nZLn9^_0EMe!w8M zJ$v>{>vn*3i3Rsv+Q7K!w&Ayqj~_)q_I@?0bT1zVkDs-R%QG`a2Zt8v5l!Izme;TE zjq?e$ogSzuFx1j&hFFA=5|m|u9R%gAe!i)eq1~bE%AumX)-K)nbXyHi8<#H=Qa z?Ftrm$yoM4)UNrFY>VQ10O~H|Ywne|wZX%@@Q_-&y2MTE?*nDUzcmp9kFIiKII{P# zz3^#5bFW%5;2;L0IpV60HEu4m!(XeR9!PS&z<8oAP7#0 zm0NF~ZPTU<9y{>1v}zpDL;HtL2ucjDO{>z@nk0p#aAg#p6a_g6?H1^xS38!(X+~yH z1r5$T{pZGp0#m$GQVs+N9NC7hbjqRvcA>C63+K4+X-KWKO*oVq{R3U4_75M#^z9DS zwe5U6?QGO85+rcSjWPNQ^-vLQt4UJZtdscc<^9Jk&cXyql^jni`X@Od#+)W3blM&h ze1;NE@*=pn?#uD?pnsD5k~1jk?fAssveHdIO*m+;0}H+edD~0y?5#_vkzMycDdT+M zFrVfLhrngV&kx}>`3Idbvql+P@blrPCwKev>p9Q|DXF7T$7r2Lf4IQ;I&P8)J(I;< zb+Q;+UqnUFu`z^4u>||Fw-N;8uP<8ktzqvR<`<-n?gG66>cB5(CSmnf^+3=c8baG% zk2>0vDFKUISbjCK&_p*4`Of)n$D6;I(wE10Z^K7Z!)0cO3HYfB1vR2UxgL`@g~H0s z%}qhU*Phttc1c$F<5%9*!u<;Zpjkj0fe{rs8Gu9nE-4Ao2PdSg=Nbj$DM_?w6uhU^rc`N`r-1LKUOzZ4@>09?Ig>MY&F@tswGz~Eyuv^a}-iS zt$K>--K{!}1<%*r<@uo28AEQ{JZf74UE`3L<`-SMEf_svzE;Zh3}l5-zTE7;7KPl> zrhH?COMk?n^IT)ipYl&Jc;+si?2pfIUcZ?2$DtHv(o87aHiSLO^E;uOAwv1AZvhmW zI6*$5P`y)rst7OmOK&zpK?61X-{O=Y6OjkL`4>PMY&`Io-GKxEfRrjqw9zZ7*5yAw zTqt$WpMQ!EV{M)Xh13X^mZAFSwj65};Vrkhp;FbSWz()rc9j6%lfYRF4Gid&%G_m@ zS{-BgH@_gm#A$-r;i?_>A!dkWSKVq7k=OHZJ{{Ro=*xh4`OO3hr7rih%TqErs6H)? zTe%Pp-%yVc9)0dboSdJUnhGujI0k9Z)~cr>&LtoqzYQ5^1X$++Kuhx-}+=BzKNs{9@x84lAGVmy1rsmj{Hz}#9 zS}rwCmg_Voivwo*kF<^fm}^7EUS3DRX+n^0f$1DLX>H`{S~@a*^|IuprlI?=pHlTG z@?W*2s;`w_)K|xDPE(Tu= zPRe?3S%sPPcUb9tHD>{-WZSLC{0~-cJk+Fj_Z@pVIbS#L7598gxPeenB~7j{1p6s% z{$r_Qw!LA(60}jujk7;Z90tF2R@S}C&19&W-4K50gX*1<+h9;(-boxLn&%gBS>&*75dCeGc8|wi&tkb_b864c^>GoPQPB8;RzpPqj*b z5=|tmYvdRadn=im@$`DVP6$g^6r2I#e6cO5uT$P7n?@H?HgNn`cs-4IqX=UxFqYus zQA&m%_1XM%LKw`oS#9;8j#l3UUJy5X*E%TOi17Pa{Zx52*&-~oAF-?{jt#wSK?Yd? zvdeTp3(q6Pfyzxf13E=0tYFn z)KMn-RNKk?!l{z5YDgg)tB|IryM(Kl>VNAh9uGuxAob?fD?{?=G4x=bEqKboc3wZ> zRW>g8*D3%rfmU+e%6yb9X+ae-yF1#EROA%Y0Tzm-sh%wm<4)mEx+J5-OYe`oqPZGb;-%O#f+4>?Mw0Iz& z5_I$mr5kB~<|fn04_4hK1=IU-OgBg9_FdhS22yhDbW2Qc#3he5{C*njbZtk6ro3+a zmKN)>pv$DbpLolM!Zt>sJblh!;9qMN@dgltvLV5fp-^8)*PrL9yUw^vv0FJ8@(TX_ zDI92NiYqLvTP_L$m&LxBh36u_QJSBs=BxW}cm8?1fCz8;9t)okhHi892~qf9Ndcmq*uT@KKQ+g zz{?9K6)91;@==04-~ho)L|z0At|}V!-VhNuMz)vMa)N_H|MmRyqR+0-1bEZXLQT_I z)z-pZ-qhL9#L(Fgcn=QFi`3ZK!d}VF!q(Y|lvl@#)SZ-mOwx{&**a9TdKX-nreE@l)hGf}0x^cW1`h z@$oTw=Q2YhHgV%?B=k=3)5HGPsJ0&40eH8XRj)CAzGVTv$(n|98+8{KxHLkN08CLN zk`-^WRxIE(0Mq|kJLZ#sCpnd3W&$pg{s)dND{OLUOi&zoXaEY%U?E9>x9n&J9~GDF z60;1sOae8QkdJrnmKT2>kx+wg$m%+wU#;af7LSj44MYwf1phk6Z%^m+Z2BXQ<3 zY`iK84x`}|mS{VtVkUoVxd0z19imL(9WXA*(B!t0t;_GA*X(*oLLwT#Y$^2Su1cyP zGmhI*B@~nQyRwzuF@GyrL3vh;f&lMbF>tkC!NT9S%`alECJQAsa)Z3BBo*cv(NeGT zDMDlHx+~xMQ|PUTyE?p^DI}r1KE9`e&1NO#N9ugwAo|+9_BM`8Sw9qW=5C{ZYZU5c zGPHL&*(hP08+1eE{Uc;eLpFoHTA9@6#S+F6u4sS5dgmtWofHw=!}rHiwCH1@D{2P> z`?f~g4WUz#7)&SehSXK~YyYY*0p5Jv!`GWP^}hUdM7Ou6P$jgt&!*)T@e_Zx@CE`R z*0a?^u-{4lV|)cA;{VTp8!x|v5^*Z6CLgFWX#l2`Qj-#RzV&OcGHH9Z=7VUpZ6AKF zc)#y2160VO+o%4_mjx7tOXiYjBmpThaRP_I`k=kC1J>Ou) zsQCUMtYkCqBUk?D)K>@|n%GRPJ=#j4d%l`CkNzSw{*nK0^5MLz(kCHLqp2_gK4%rt zU}PExtX3RpGex}^J>SD*D0-InP74~$@8?3>(YK{W*CF6cMbJ^p#U@qUNc^XvlG%!_ zHG|hCeVsOEy8~po8e3!W!Q{^U%vevp$PxH37XxmJ#j7VnJHGql^Nw~Rq~fF3^#ei; z<#=^=JU&-UHhkdI1Z6RPG$G*mTD>UQ_i2mQ;a*R)HYK)Iy z)mdbcE#p@2QaLmr41zpeh=Nat8#tG?p*u8K%97hIa z(uVpp2>3pV;y+F5TPE5vZUzmOKgU+w=HxPXDoKQgPDN-fEAxy2gYyYgDI$K+r*2g#xraZN`)-J8}h;4*Zj6 zIu}8r(qfE8qYeGZ@9~F1^i;di)@M(!I9yJbS-*PWn#XvL-R9+pCs$H)hSflX>2HWh zuF+(*0o$`-7&OmY%A->`L>Zr)v}QvuZ~nmVjeJa-vgK7F4ZvW)AQFm4se3Jx%`as6 zQCx98^&!vlmY~{7UTD6p9tr`yRg{$1E<3`M7Ro=nt7HCpW{JZn)qs)A0dhzEukL;tYW&br&QxNbMo!@y<3I$R>J6b~uclB44! zYCaDJ*63qgQcsW#jAw36!(X0lTcrqC#LoEAjhjV!aVGpVZ2x?qRE9oHZkKew@M=P} zO%I30pfIO2trj$+xI#~ZT@VLCr8I}F#|Klm#IZL=@ggM?I$aNbHw-t09WFawP2$ai z-IMF>=9)$y^&Ul&qV#E0VZ$*iBQQ|bX?GN zj9JrH=CL`lC#M3yeeGY$rc|59&0rs#jv%VUyJBx$9&oAD>7vut`qh{F; zOsTdtUw@O(Xb}6$)r3?1W|cr9Imy*I5V>1^^;WGxSGH(&0~eIU8e4Cpc^b^`bth-Z zQ4TR>w%5glT^riy33>hvfJn!y&0293lRIfdPc%YawnXB>b8nkZC9lEN-rT))e^EO7#|+ z2l{H9nrP>@Big*Ks}G0F(tf9{qoij85G)4^Ya|8r6 zd~U}HI}P>Hy+o^b_E7RgSE6L2M9+adAu8#tY}D=k)9`9X1*%;2sj?v9L#<8i4;*$) zCb&EUtQ>KwUXrpA=Bu(TpV&+mmPTA1u=R{2qYDk>N;nB(tbFBTV@SU5dts(cf!FwX zOmIaw=yqcLmaY2TRuRYRf16dv%sx7q-Y$USsJv)XxNBp@Z&nVnknb0aA|ChC*juZ* zL8_l$xl}N2%b0LzLkYal(-VKjI!gZ;PKiv#IKQiVz+G$gaNOHhKi#vT(m=>snqx7N z&O6(t_|oxBKe7AB`D9URaB9#h!Mm?LBRDTg@0|@_yIe1NCM{KTW+DhR_(Rzhc%cUy zVQhRrAR@Iv_W{GCDgSQHMX z1aAdCw3MCfD#S5pvB132K8t`qk?tnl*O=3U$i)M~?X za)+XZVv78?D{7=nS7HJsOOoB2t#J7_z1$xvUA9gRe1{abeG(%` z#1mwFN)vTHeY`wXcclSH??qSr=OB;qcm1)dQV^Mm;>lbKyAwe^uiJ==kE=Q})&>kb ztXm0&gpvc-hR|8g@m59bI`ha~c5M|LSxSM_%cM9DnU7_HDa}4{wI?ex)Zp~M--?LXH6wiDfJtCs>gZBW> zf3{+l>k2|6`30MrIP(uyG?{{^PgZJ>%vWB9)E={{j}m^Mv*IF*+m8$y@{{)`_f)IE za2OLgpDwF6RyV*Al2X)7nv`I(SnL&wlFn=PcZS|N<|k2BGUEnoGM$$YbI z!SE`xa?e=N<_<*oG<~7oX-LpQJ2&_EdS?mG^dYQFrPccdvh`DWSAAqjU9#N#Z&0wH zJ`2Yp*HLVgJZ!KwkIdxp!qoAu+XIg$HyXiVy=6oXey>ii+oUK)B*=xp^vM>D7J9D% zLT41D^@D#kd3C3EAoD}XFwcOl;s+!+nyA0~b~Dd)zPZ}v{*X%K1st$vyew85OWvZjBk_Z-jeky9qkf*x+)iZ5oImI>b- zROD8B9+6utu@^kNj?O~DsDE?gOTc1X^KRHcHjYZsaLOmu&J*`9Nufc_&--?hmgYgD zo)BssR{}O|2`s9JYzN6k?(woGejK)J(O1{&`YmoxvD%@e5*K&s&V!7Oy$X6{Lgb-k z+woV9{xingcOzcfqnSKS;*kXUpM*T}9TXxL6=IHBqOEjt5Ln1ZFdXX8(s`bu>zUFQ zB+&`#g(41j*xZatDoCSr*H55NNlH)QAcrl(HJ{D)%|~qL%l5_MDH<|5-11q?9P_8} z;@p0@4T^{|vgzTI`gJg6KX1zqWIWo&=Goz!T;CI+m^G5`vH>CMb>5E`6p`363Bw0Z z_e&|^lSNtvO)kHz)NFf8EhtnHkj^d!RO{T`Y&evzj_yW9}6@xk$ex130WtzydBQ_jZc-p?!#Jf*26YgZO7K+u@jV30~w)>B@=&6 z*@fzbBOMym2Z|M%c?eZl#o=Sl*%?o;^m@e;F4<^g+$D(qZ$auPUBm6-)jW%H-FH$3 za2GUp@4<&CtM>|O6+dJVF?OelTbJs>3FGfLP|UwL_j;F6h^@?=^_4@XmR~h|2pEhm zYHKG)*^w<^5#MuaNVqp`F1BKnsGh^3j+xyi+2yl~nu=p|qodJmZ-ER<=o&pS#i`L} z$md8PGiB%`$A`JR+Vf(=wI&OW%AD1t{>EJx`U~HJe{$Uz*Thec8WH1a^$BljB$4hj zxe9$nBm9Qe+CQ@=Q8XBM^u2E=<9DOH{O$G1OTE{LR>?Cb^(s7;(gTOnrmIn6`?mh! zQZH*&y?ThYhqEL$L&D5TD5t}?l8$X&$!=_&wv`?7oSVj$HnCcIMXJc>+5e%%BGX`} z(Po5-N8wLAZk8vpm#v7b>QK5d@I3C&L>nLa2 znC0wM;56^PBLn+KO44t{Ey9<1-PB9#}BLq%DfipE)`+9bj4) z4Ngp-t_JP(_T(+EamLa6INHgotBVnCT3b0qz?>>`Mz+R~P+kfsWysww72>qnm-|XsKRMB~> z;-=YkB==|M;!YtZ^MmMdq~JUvx`L1`a6ju4DL_!T&t@fHt|D8(kgBamX!Leo+h{HA ziwH*;Y|thYi>6dNj6fvJ532CUKyn0=jVCS7y8U@K(-Y+7w%@}BI#rd-4RS}3ayyCb z7WsZVh$gGMAeh!o-9EF5-Ijpbd)4 zW40}p?=S`v`-%=12+GaDAq&j4bIS4JXoP9r;Vb;`D*9ECeZb`d??`cheP} zdp_S&-kA4+(MRsWHg>B$oL8dlZ^T|7#c42jeautb+_CYv$x9HFhp$6Q*+A+JdEco+ z@S+N^`<~FivlXMk;O5hE`j80&+VFji0`(68g zB4%EECk1yZMl(ry=~`l_mYT~A|6w3WP&O6#AQG-%L_LM#QR3$Tp_g<@sU{W_THm(> z@80;$=X1k{5Xoe)mo@01X>K6LNxuSFd#dKA~}4A4}F%4x{?1gKv0(W0k&2}uU(}R6sf}qWm;a($iCBY z*qi~+*B{)xPIkhr_^8v2F}xoQ76M;&6`uMMEY<5BFSpwytT>+UtMfFwRVX`VK*uuU zQK=O1@|b>wn~j;APnxn?-5_akcttJU?GWYmc=G%FRYJc%<;-P1)#3NJSHl({b>g_a zA{M)9&pmm1>- z8fg88GTDqjxe(zdTV6J(7S}4{#?pxYYsCxh&*klO%=f65sP9x_w}yLrWFdN{71k|T zztWX+O&p<*l6#xFykJS~1R67daRvp3L%y^Iu;v(3&9_+841Zu%lOcZ)Ns>#kv^HcI zB@|-3Ji}#|>8^0tyT>WguP$0@emsJr{*l+A{oU8hnelyE6Y7+qX7_oT`W9kQ(OYf5 z46k*Qq-}NtoB&L%8jQ!f7 zP#i_SG8ULQD^7&vnVyF>ALBY`5!W5EYYo01A`NbM6Z>3A3mm+XZm7q}(}IB<53ZoS z8V1R6fxdB@Et31+2P`^kmF3$G7C6CA^g~;VPG^4&d9IUZ`Q6*s|BmWSW^1Dr{myQq z=e;Xd7)eJGN#o7n+0Qat)?&*mo^?&#|_#H zL?Y{D2RRKpZfZ84RnofDs07aC{DC~WhT0JX+p7BI0@=u3GUvDjKJ@%wE@>DC5%=I= zhJ;sTeQoC}*M2mzo)}s`<5y>FShUAp>o&PcT^r<1*x%Omd`RK&E#V$+C&eHVNc1C1 z-t}NVVIF|tr#HDilpjCsp2|u__Mg?kF77Qk@kpF-ZO*FKIt}-rycH`?>>SBUg?71a*BM<-%l2K%BOIeSMqyoU0S`AJ6=@u z8I0GVWiPdxa#zk)eo3QogxlnMa8z+4w&*6kN;%>zRLLp;zIPR}AJOA?(e8CQDcTWm z+cIwx+9k7&K5z5-J%j+>=|xN7asHvp?VxhUVMD2BIUNg5JHjA^J@#H7mMxAEaO%Pa zw<;cBrb;CutavvkZ(PZq(zuLQ# zx9pcQCF)oDS+I-6gh2yKlNT&g4xdM7+5ZUtDlYGQX4m5$d|F%;h|B%wl&l~!&SkFI zE&Sf)Pub#tkp1B%EFcjPnt{tgWxG?pllW{uY`_+x{1eWyfk==;I^vj{-%5 z{vQ+iV_lD6-2QpCS?7o0y%Nj$PKRcfl%roRT;?65JmCFe=Y3|eYa!1q8G)6HqK|pn zI2D`A&D*B*eg%0_4Lpv=hb<(Si;p+54Ej=0x(RQ8C4H>B8e2RpQ>j@{s&iz}{i`8G z@N`fumsTyJ7g}e9p6ux&RV1rKz3jyO-Vy0miV5B13SZJ*Be;bg zad8m4Wo=>|)pv~hn6zcz)LTnVMScWuk@F>lq z2om?_9i?M_ifk9OdXPKMRZdpR@hme+SAM|~R3S(HKpk`ZQI+X%rBZo+Ym|yaEHEkJ z%D6Ld=I0kfkK2tvl$e)`^|JL{fe~#m$gje;aWq-8=~|c$+&j_}xuAutn!!87@U2;I zL=IQvVSG-})OU2*PjjIv`7z3R%`!*29wtN8+szM|@@WvWhoEK#gvrKFZIB11X>x@P zax8Xt`(>_`r?XopP#kBZ-0r;W`$a^Ij=FWtbyCSGt6moT_q3#D(GPh?A8{Gu>Jv-$ zAEc87(oiaRJ6o>wWzY1fasD( z9~hwTtROYJ!7#yyH@mDd%Z`+&N1~P|qheUp_QcN>XY&Db27t|bri;DHDh0Z9IJ{qu zw( z7gkMY*E1vsPHIfgl?M{C^APHU?3}h0D7;*=;<6^|{=O%R5@r?_Hod2*3P8rz#h)fJ zuDwC1S?UXUD>7@`6GqoJfd%;zmt0+j(ik4M)d|6@^I1FG%#w;q*3Vcd*Y zhr#b0AV+qpE=eB-tYn%}UvB-KK<$0s{*rCu zxu}$RH%OiP`kpp)Q!2Sib=Fd6Oav?5B$y!gWBsxO38CIM zrS!2ad^lzNEQ4oOP%@*~!*pXjXfhu}Q^zmzH zSKf+Feeh3=k6tlon{|HsqNxE|X}k3J871L>@%CsZyuGtk0Mq6nm?;Ta3|}UmR|2Au z$j|C#M29B?F4J|bbWLQ4mB^1Ur*Gp`%ReJY?x41>q_3ZJ+v%ru8WMs8nnAI&iFu%t z%s6rv%eqSO5G;vFlM&KRvB1gtFC?P<{ZSctM!7*Ni^fo{a$V)2+1y|Zb#d{iPs?*K zm>+Sc&zft=bbVw(sk&-!xgG=8Ne&nUmnvlJ~ z*k{qO5WBFtej#Y`Cu>21$=|OcmN{){j34WW+g_nEB8L(!i){_R?NXYD8 z*JdFCr|FHzE23C^jW3!x#N9bP5jm!3N4s-A&G*1M&c#P1vEtcbGP+sk_)6Eo6;NPEEM{!g(}6)Uz^<5gCg*&M12hAH1IhYb9Mw>BvJQf&HR>Hc1#KU zdaOG)t~}ExHt~zOOU+K=IgbXVcgk@n#Cp4{-J)To8H}jpaww=I4$d%po_gcPH;4Lq z$4g#6jRq##E@+rptO2zzGVUQu(3q9S{wBTrM8I8=QMbK_k;%!g#OjHp!Zn80gFqcx z9>=+@bG;T_v|)8W)wSI+)vT7cf?20v7=X|1ywz$Voi^U*A&P)Anl?%u+P>43_i_I# zyPu}F?Gp#5*#zgwIT7pErmzD4D{$%;qb0kr2XE_M+-$NNN9S}TtPU)rI7->Cb-U?2 zu5wXC{NyyOUn`&Pz>89QP9|J4;?+1b^b}SzN+pwp3VIOrCKOr(edw7Z75CZwo+=M` zD}-RNL9uzdtU&feQoeRI>O_b*TQs=-X%dY(n#kj!#yjM|l?0(gkuul`{Vgp7GMGNV zIE?;*gEUmNfOSS(G#G=*0h@|bhLq$e=V-blS#ki?$tzv4(0=_;lsPm>q@Ou^ds?>Q z2vwt$m?sP;Hcz!+;O`Y-o<*n%?YCjq7;1GHWBDzZbnFF=DE2Idtd=FLDHSr7@=KHK zF_2uSH3JT3hFCM$-dAKG4AC@j9iFfCuc*Sf5BlM;|)ELWY!_Jz<#%RBlF#2@O33kipTkokQWbj|jY8&TMFZ=$6Hh6)u~V5N}p4-M3=5skqS_MmkNq6?ci+BAbISVS3foaQtyeNlKru zCyzS}9j@xU_fOr3QwzR)25GrTO*pla#d0C!URwZK|FZE?F!)R7O8ZH_0WO6_zNBSJ zm;D1Ee}l@iR6msIGuC(b!Q(C9P!Pg(Iu>bb#fAkDsPNZ;g$z*ACGSqRJk zRsPI!Me_j><9}MYzN6Ud&xJh|TlK{fqwj<B z@h91sl0lB7OK8@xRgjGtroSIJfB1*8&+t{v_2f^l&jYH>31PVbLifZ}=mhL5>(~+L zV!F|ILw><=WZa5<+}Rx>tC>`PPkSt&f@bi1A;OqzFAZvk3dUksizWx7IIJil^xQj1 z-wzDz<4}*cWEtr4>85gXmQN#;OK(7t4ljiKo^a#uC7k+~7q7R+UiubY76NiP7QH+3 z!^DfpuW~ea)sRztZP#)p50s};n+}iFj$7FK)@t7*cs}r0S7MNp!@VC?w_zG4iNCBM z>~_8Nk=I+rR=0)10~Pwvxk-cssBZioSK|6mk86?#K>fku6*te_^6jWW98+>vAn;2Y zx}6Vm*9oDbr|k588)O785_i>i6DJ^ra*_w`J5y;n*2z9>6$){WzxH;yLm|LrY&hgm z^(5kI(1TM*U69-8i7sC3Xxok0bZP#WjDYp{IygcrUt}igr&v4c-;4m1y-Nvn<d6gemdG9t3t72>EKv!Z$r=G&{I zf?B}W*$v|$Yh19D;?0{u+j)zyUhEV#ns~iet`&y3(VtDXAc@+^+=g!+#`7x;qCFlZ zP$9|2R7}1TX?wJoA48HIzCO*A#dWOw>E9!hisYDxHFE#<>pPZ^2dfJqkB>+e&)wBI zi}5ZqjZ${&8+~pAsZ7(+EX6XKs3f}cw#qJHX=2ycH}99}6!jdf@-+zE zl+48547B=OX55{Z5j`BTJmE;o2%>jmicbs%el$6%9@(FPUndKQKRE(KzE#=NGsM

HH8H3UcMR91mzRyGa{oBY1T4E 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%0Dg)W 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 Date: Fri, 29 Mar 2024 01:17:42 +0800 Subject: [PATCH 107/423] expiry --- src/main/java/supertracker/ui/Ui.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 773e059ae2..fbefb74ada 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -3,7 +3,6 @@ import supertracker.TrackerException; import supertracker.item.Item; -import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; @@ -24,6 +23,7 @@ public class Ui { private static String listSize(int size){ return ("There are " + size + " unique items in your inventory:"); } + private static String priceMessage(Item item) { return "Price: " + item.getPriceString(); } @@ -35,9 +35,11 @@ private static String quantityMessage(Item item) { private static String newItemOpening(Item item) { return item.getName() + " has been added to the inventory!"; } + private static String expiryDateMessage(Item item) { return "Expiry Date: " + item.getExpiryDate().format(DateTimeFormatter.ofPattern("dd/MM/yyyy")); } + private static String updateItemOpening(Item item) { return item.getName() + " has been successfully updated!"; } @@ -93,7 +95,7 @@ public static void newCommandSuccess(Item item) { printIndent(expiryDateMessage(item)); } } catch (NullPointerException e) { - + assert (item.getExpiryDate().isEqual(null)); } } From 60017a183d6aa1ab6acdc77721a7c9d565fb5ab3 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Fri, 29 Mar 2024 02:15:12 +0800 Subject: [PATCH 108/423] Add list command to developer guide --- docs/DeveloperGuide.md | 66 ++++++++- docs/uml-diagrams/ListCommand.puml | 128 ++++++++++++++++++ docs/uml-diagrams/ListCommandClass.png | Bin 0 -> 45293 bytes docs/uml-diagrams/ListCommandSequence.png | Bin 0 -> 50937 bytes docs/uml-diagrams/NewCommand.puml | 1 + .../supertracker/command/ListCommand.java | 11 +- 6 files changed, 197 insertions(+), 9 deletions(-) create mode 100644 docs/uml-diagrams/ListCommand.puml create mode 100644 docs/uml-diagrams/ListCommandClass.png create mode 100644 docs/uml-diagrams/ListCommandSequence.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index e45103e31f..7f240cb5bd 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -156,23 +156,23 @@ The following is a class diagram of the DeleteCommand and its relevant dependenc *:(* The `DeleteCommand` class implements the `Command` interface and is responsible for deleting existing items in the -`Inventory`. A DeleteCommand instance is created when calling the `parseDeleteCommand` method called in Parser class. +inventory. A DeleteCommand instance is created when calling the `parseDeleteCommand` method called in Parser class. This method parses the input and ensures that the command parameter (item name) exists in the inventory. The `execute()` -method in the class will call the `delete` method from `inventory` class to remove the item. It will then execute +method in the class will call the `delete` method from `Inventory` class to remove the item. It will then execute the `saveData` method from `FileManager` class to save changes to the inventory. ### Find Command The following is a class diagram of the FindCommand and its relevant dependencies ![FindCommandClass](uml-diagrams/FindCommandClass.png) -The `FindCommand` class implements the `Command` interface and is responsible for searching for name in items provided by `Inventory`. -A FindCommand instance is created by the `parseFindCommand` method called by Parser, which ensures that the provided parameter (name) is valid. +The `FindCommand` class implements the `Command` interface and is responsible for searching for items in the inventory by name. +A FindCommand instance is created by the `parseFindCommand` method called by `Parser`, which ensures that the provided parameter (name) is valid. #### Dependencies -- `Inventory`: For getting the inventory list of items +- `Inventory`: For getting the list of items in the inventory - `Ui`: To notify the user about the successful execution of `FindCommand` -The following sequence diagram shows the execution of a NewCommand +The following sequence diagram shows the execution of a FindCommand ![FindCommandSequence](uml-diagrams/FindCommandSequence.png) 1. The `SuperTracker` class calls the `execute` method of `FindCommand` @@ -183,6 +183,60 @@ The following sequence diagram shows the execution of a NewCommand 6. If the item contains the word, the `foundItem` method of the Ui class is called and the `isFound` variable is assigned a true value 7. After the loop ends, if the `isFound` variable is still false, the `noItemFound` method of the Ui class is called to notify that no item has been found containing the word +### List Command +The following is a class diagram of the FindCommand and its relevant dependencies +![ListCommandClass](uml-diagrams/ListCommandClass.png) + +The `ListCommand` class implements the `Command` interface and is responsible for printing out a list of items in the inventory to the output. +A ListCommand instance is created by the `parseListCommand` method called by Parser, which parses the user input to determine how the list should be printed out. + +#### Dependencies +- `Item`: For getting the comparator needed to sort the list of items +- `Inventory`: For getting the list of items in the inventory +- `Ui`: To print the list of items in the inventory to the output + +The 5 parameters in the constructor `hasQuantity`, `hasPrice`, `firstParam`, `sortBy`, `reverse` are used to determine how the list should be printed out. +- `hasQuantity` + - True if the user has input the quantity flag `q/`, false otherwise + - Quantity will be printed to the output if true +- `hasPrice` + - True if the user has input the price flag `p/`, false otherwise + - Price will be printed to the output if true +- `firstParam` + - Can only take 3 possible values `"q"`,`"p"` or `""`. + - `"q"` if the quantity flag comes before the price flag. + - `"p"` if the price flag comes before the quantity flag + - If both quantity and price flag do not exist, then `""` would be the default value (this variable would no longer be used in the execution of `ListCommand`) + - Quantity will be printed before price if `"q"` + - Price will be printed before quantity if `"p"` +- `sortBy` + - Can only take 3 possible values `"q"`,`"p"` or `""` + - `"q"` if the user has input the sort by quantity flag `sq/` + - `"p"` if the user has input the sort by price flag `sp/` + - `""` would be the default value if the user did not input any sorting flag + - If multiple sorting flags are input by the user, `sortBy` will take the value corresponding to the first sorting flag +- `reverse` + - True if the user has input the reverse flag `r/`, false otherwise. + +There are 6 sorting modes in total +1. `sortBy == ""` and `reverse == false`: Alphabetical ascending (e.g. A-Z) +2. `sortBy == ""` and `reverse == true`: Alphabetical descending (e.g. Z-A) +3. `sortBy == "q"` and `reverse == false`: Quantity ascending +4. `sortBy == "q"` and `reverse == true`: Quantity descending +5. `sortBy == "p"` and `reverse == false`: Price ascending +6. `sortBy == "p"` and `reverse == true`: Price descending + +The following sequence diagram shows the execution of a ListCommand +![ListCommandSequence](uml-diagrams/ListCommandSequence.png) + +1. The `SuperTracker` class calls the `execute` method of `ListCommand` +2. The `getItems` method of the `Inventory` class is called to get an `ArrayList` of items in the inventory +3. The `listIntro` method of the `Ui` class is called to print out the total number of items in the inventory +4. Depending on the value of `sortBy`, either the `sortByQuantity`, `sortByPrice` or `sortByName` method of the `Item` class will be called. +A comparator used to sort the `ArrayList` of items is returned. +5. The `sort` method of the `ArrayList` of items is called with a comparator as an input parameter. +6. For each item in the list, the `listItem` method of the `Ui` class is called to print each item to the output. + ## Product scope ### Target user profile diff --git a/docs/uml-diagrams/ListCommand.puml b/docs/uml-diagrams/ListCommand.puml new file mode 100644 index 0000000000..7f4674eade --- /dev/null +++ b/docs/uml-diagrams/ListCommand.puml @@ -0,0 +1,128 @@ +@startuml +skinparam classAttributeIconSize 0 + +abstract class Command +class Inventory +class Item +class ListCommand +class Parser +class Ui + +Command <|. ListCommand +Item <... ListCommand +Ui <.. ListCommand +Inventory <.. ListCommand +ListCommand <... Parser + +interface Command { + +execute():void + +isExit():boolean +} + +class ListCommand { + -hasQuantity:boolean + -hasPrice:boolean + -firstParam:String + -sortBy:String + -reverse:boolean + +NewCommand(hasQuantity:boolean, hasPrice:boolean, firstParam:String, sortBy:String, reverse:boolean) + +execute():void + +isExit():boolean +} + +class Item { + {static}+sortByName():Comparator + {static}+sortByQuantity():Comparator + {static}+sortByPrice():Comparator +} + +class Inventory { + {static}+getItems():ArrayList +} + +class Ui { + {static}+listIntro(size:int):void + {static}+listItem(item:Item, index:int, hasQuantity:boolean, hasPrice:boolean, firstParam:String):void +} + +class Parser { + {static}-parseListCommand(input:String):ListCommand +} +@enduml + +@startuml +hide footbox +participant "SuperTracker" as SuperTracker <> #f5e3a9 +participant ":ListCommand" as ListCommand #cbf7f4 +participant "Inventory" as Inventory <> #d5eac2 +participant "Item" as Item <> #fbffb2 +participant "Collection" as Collection <> #ffcdd6 +participant "Ui" as Ui <> #e5c2ea +participant ":ArrayList" as ArrayList #bcf7cf + +SuperTracker -> ListCommand : execute() +activate ListCommand #cbf7f4 + +ListCommand -> Inventory : getItems() +activate Inventory #d5eac2 + +Inventory -> ArrayList ** : new ArrayList<>(items:Collection) +activate ArrayList #bcf7cf +ArrayList --> Inventory : items:ArrayList +deactivate ArrayList + +Inventory --> ListCommand : items:ArrayList +deactivate Inventory + +ListCommand -> Ui : listIntro(size:int) +activate Ui #e5c2ea +Ui --> ListCommand +deactivate Ui + +alt sortBy == "q" + +ListCommand -> Item : sortByQuantity() +activate Item #fbffb2 +Item --> ListCommand : comparator:Comparator +deactivate Item + +else sortBy == "p" + +ListCommand -> Item : sortByPrice() +activate Item #fbffb2 +Item --> ListCommand : comparator:Comparator +deactivate Item + +else else + +ListCommand -> Item : sortByName() +activate Item #fbffb2 +Item --> ListCommand : comparator:Comparator +deactivate Item + +end + +ListCommand -> ArrayList : sort(comparator:Comparator) +activate ArrayList #bcf7cf +ArrayList --> ListCommand +deactivate ArrayList + +opt reverse + +ListCommand -> Collection : reverse(items:ArrayList) +activate Collection #ffcdd6 +Collection --> ListCommand +deactivate Collection + +loop items + +ListCommand -> Ui : listItem(item:Item, index:int, hasQuantity:boolean, hasPrice:boolean, firstParam:String) +activate Ui #e5c2ea +Ui --> ListCommand +deactivate Ui + +end + +ListCommand --> SuperTracker +deactivate ListCommand +@enduml \ No newline at end of file diff --git a/docs/uml-diagrams/ListCommandClass.png b/docs/uml-diagrams/ListCommandClass.png new file mode 100644 index 0000000000000000000000000000000000000000..4be93b0163bf0f5ff7afbd8f9b11e200b79fc33e GIT binary patch literal 45293 zcmc$`by$?`*DgFJ7Gfa^QUanPASE4wh=@pcDJk8Z779prBV7a14Ua*CNH-(hj36+; z0JGPK_59xb?(f~l{^Rox@POgIuUOYw=Q`K9E-&eaVuZ&?k0B5ULh*ZdWD$sit_Z~b z4@dUHPg=OR9O2t_8&PE&9dipu6Fq$!gqWV0p4DR;JzXkoN2(__HWt=A%*+-hkIigs zO--0|%uVe+H&MbPC=KP6ZGQb6u@9c(5ECmeVLfp3RQ0^lLi-8-eZp4XZpH@mo;W9~ zD(rNAU6`Xt@2;xcy(V|`vB866Cu29h1}dW5P}Rw55*^Z{Vjp%Dofv)JP`^$tI&eAZ z{I$`W_f{WNQ5U`pI4*JbaLDbi0$w^9B7uvZPS2yx6fms6u&lnsAffk7p48_GswMQ) zCd(?W_`XH`{vE|ElUN1=h6Bep3xb1f>q2~vryOmSJ*=#|AH9DgYyA9yhr?N$(RW@( zO7_I+Kg;eej^z)HI=ASzG4{wv-a~I*_M(KGl8bwtUT;>5$ypKm zilD}?hq*U`oOdqbCbmWnjUJX4C9}BF=MkiQ;JR>8+qtPP71@{3db%*(}U?R`S`*elGLC;m!DK601=j19FP*i#=eM*0OCD z9%hXC5VK-N$sa$9y3pwRg7Vt*#UvtBPr4Y9*6{;;bH1!zer3Gct2~>Cq17mR??;}V zB2Rn09R5jpK%?zXb(EWca;Z0V$yVu2ie`#c?L_*f_+#yY?~et};t)K18T%ZbY6&3_ z9tiO}x8)r)7lx0!$WO-NmW58Ap*nM~iSBjnz3>+=EPO7UE6XHy=_j7?PTVQT>ON*U zc}4u)sq>SnFB)1O`EGSc`c{5PvkB0M;)NIa6FA-c35u>oIB z(N5(26RH$q?rJ(Ha+Y$5bH+0{Bzb*tu(^iwvM)_aKFeUb7vGifsndjO1YljhcO&Cb&gAYqlY`XYf!pvs&(P37oF-Ela{tFwlkays6Zgx@UuQz)?7kBzbz}=>w~T_ky7!~ z>i9mzYZl3B>&<=YncvVM#5bRzLsa(~Gz3igt5e|RYuN3Y4!xbAUH(p|$?56nkJP1q zEzo3Yem<+KkRZyv69%Y8c!}@kHz}^63j17@516}u){co2mgio@GLLiWR;#-yIsa1J zNu_#D9}_!C?GIg|{hUKiIwb;)cT3zj*BGu|y-Bck{`Bd$q^(gL-!-3;3jO^c{|CFh z1O;w}L>jn&0gew|?cc*Y>kOotZ^7Rzn=W+_c2WJcj%Blg>9|Bmi8t)FQgu~9fjMu= zSlR3c>M+H8-v_Kqd?}V9Ds%_mioA+??j&b9Uoo?8y4Cdgv!Ac8X>ZQ(C$F>28s*8n zxypIMbC#BtZGyP%Y?T6SZS9=WF>gY$TQmC}|79UeoWru^NGI#qz*HVh>(Gh#1-edK zy=H8#dh`%oo$_3qisRst>7jxM68ZK0Jm^N~UAu0^eU)3k@N zEw`(Z?Z-SwrN zHWARBV!?)+L`Ov#ot$fBu`e>}p2Lk;ZXg>P?hV&(#fj`Z_L^YgoM1wDXu+4;!b?_c zkG=_EQTDaA8*e9K+?|)ioxiYFhgEK%IZ-YJ-07V4L*4m$&0r{1=_=ULqJOWLTtVu9 zV4KCn0m0yyvuAsq#wxG1)vU!w6IF*)*!J5#-_jgJ`m|eHeb(trm1HAWn~JC?w@2@` zi&4&swlW$ARt)`Z+>*C%zhB$w^krZB@RWpHP)xw|kyg^QP{5(0goe5k(j96kt}XHP#D)v{chRMxtqmR8YoQjS zRXoiwol8{gztR6XJNt$;)j{&VtipwXnYjiVSMdtvi1kEa-MfvyKMlXTZ8E`+8KO~( zJU~73_rVQ+0p2RRaK1x-y0yT7ajj_aTb5L==0J(L)~xub$8mARAbYl48CS01oMwS2{lW_u3y(`s?k&rGNQTk`I4Yuwlq%ZLZte<6FLd zE9q~09$jO4@watTtN%Z~=HDR!YfpW{632uPqWTdbdjAjc;{SOZL64?#s+=)VbO&Wj zV{ii(3Q~WsuJ}!Br2_p{8{Q9>d3d&Z)Xe#9W&%=j#mgrrCodAuYqvUWPKLiaNuD_% z;&~!a6upMxww`J!wH)WMTev_>92yl>ZZ^zQAlC3M4u=+x-zL3OQ1^SC;NjsM*JkZR zMQbT>8}(ji=~I)FXNv4P1i87(3Jbeb^Rjav^EGtC8lXlax=#Dg9rs@InpgJ;?6O)pD;TR=RWdZfZ&j1edHt z-L#gL7Ko~1qN0QsZYHFs-|N;>o9!$%9o*f)W`!4@E4uH0jkZwTaWWK(L8E(+(K6w* z-)Ga}@8d*$&PztJisp9ET;j2Lvhi)S18LZqs!?G#TxyxL^iI3hyRWaWw6t_O-rcPy zTZM&%CI36wEt4tWPn_`M&l32aY%&b*nrXei+?E2?8 ze&?m3vgs_o&52;luzh@Hb1`^sCPqentBKdDUE?!$dU}(QYz7qW+spKE4j<$=4xx%o zqnCe6>t62Ni7Ushc`CODWzMcBR+!i=s(ph-LEg zCf`gEO-)TRvz&$R8FFc1%vwyQ3ho=DuY5aM%}4mIsWRM`mF=iNR~w(3d@cX6-f+1} zr-Pb>W%-|{2dt!n{OWwk(&hyGx}4%%ZR803+hEQq>7Vo@#hk9rN0?1_qL&BibN~1g z+2J8#GBSn&1LImbVnN+ZMS+VG)TSn{F6%jqa zg?{E7Z@j&E?3ZFxcEbES$DHev^K9o8yTgiD{fyKuiW%{@DcWuUWg8#{_`zC%`J5%sE0Yiz+mfyVD)7s;8$H8XlhY8Nf-W`Sswty1K~}$=TTt zinE)_NzOzS*@OvaC0E$Eq2NE({bgu(4TxdVM;U z*S^QrP#HCss^!^1u3BWYhB=UxXs8~VN8Ia;Lt|qXm1|D?cBW%t z73^4AW#RTPMl~?*dVk8?>kt&3v>CbIT8`Icnwl7Euq%d!h21h8kT23pbVpZV?(1}= z%lMEmD~b-|zKwnas|ssKV`vUzl(=_Kx!h)UX}H42+uLS%anwd_<;`iOkSmf=GaqGi zWxRX5JK)nFJ_sA9Bq!^FtIi~EFtjw05UG<{JWj%NM^rS!j!KO5QHjuc>-a8d$T;3u zmM{1g*YEtj`096;WY-t^la$tG+COfka_sbv)fEd&4beZ0`Qq+rv(U#9`5terNVSrl zTwWEdR2-kmN<>bf>EQafzo6pc4i>|EcYl3xa;m?;*1g^$@B*D_QfdrVHUQ{)yn`Ym zH@oDdR2YKn4xhY~KJYZ=e0?#y-O^CTK>jOo9vkUJA-}G($}mXD0{YAKEW@AE##vMc z*O!eC{hN-M+E2AavPLZkJ$&f* zS)$5m&FOn9r>#4+53FmkVhEeTXMp{BBbAOpWOSEv)XVZEqi)=q%jzkMKQ`BTd8xPte~SFc_T$Z!e1 zBH2YimZ=Rv;Kk9iV4K8e&$3xf+{22Uybh7as6A2i`&4W9^%R+;yReXF%4rcZalCd5 z0SafxY-%se^&7-@hi-3gCnqPTr(f-75f><5;;Jnv)+?cxjG`46UpMM|_qg7VTyE{n zn>P@gW_E?oPa+fs`+^e_6XBVS)D4y?X=!TTMX1th^B4)a1MC#=o(5%op&@WT@W=PWGosQ5vV%qem+2(Zz~J3Z?`> zhoAlaxbRJTIEPF$G&H=tgX*X6T)TG7yk@7^NCF%##mKxdNmMsr8lcr<*e!R2FCP$3M|1s8iAoly@o@p8C z&Q@U?E_Ty)u(4T1mW(*fe4&=mBA9NAcVEb>2M>4Y;>ByYhcR5sLuJ~4usI8J~~gSo;Yh4Q2O3k(bmGy2!CmX+2aI_*@v z-#_!B(~H@4+nsk%p&=o(^z_W?rQbG|$Af6KAb4+VY$#+YM(zlUz?-S~}|G3+Y zR*kwFjyqdxO6r!Py1Kfms;X{o)z|OaHMO*upsHQv<-0ug9q{({me(i_6)+tvUPRU4 zP+EhTiHfr<{0g~x8h^tBfoNl!KEsI1!s;UvwngCHQyv%J-yZl z77=Fe#laHH;-FHIYfK|CgW{*Uy1Lq0e%$tVI40g+UhNe~o*NqFtFHvNAJ6w7DV=8C zg7-@=_y5={<*UXy|J2!KDcbgGR6{=6<*Jo1QB&V0HfW1uESqr&rH^-6sm3nJ+4kE3+)hbJ5%aqwzzVu6ed4pbFUXXtU(1hBsn+tO!c0)iDyJ7eHEc^rza*qK(gwpAbWd9cc zaZd*iAR?bhxGoM9JtrXQ8KxylSMpUYeDc<3z#!f=b-vDx)Tim?agvFr@@hN_s2Z)@ zjvXY~fR9;)fot&Fe1kTM`V!K+qN1A{1?(^r2z+swA_42|Nn*AdoW*9tnFINXbuy+5 zi{bb6)fd}V3Jp6~6N}8) z`4pxZKV1GcUIdhgU3T!Ve9cR3sbhgnRh%3^h`5v#rJ!47<{dGyd6oPJTV$MO*#mXO zJ)$}ahK2yZB^A{47cnEwx$Jj+NsAnowG|eID@t~sUtVnGM0L3<=#fj?-DPG{E51QZ z{dl$`1$=baX`5kF)Ft~4RhywIJe*)lXh=MVBu;V0EWLdBvgf|Ic;j4mmI7}8+iYK$ z=bNMf5+?Q6-rll{2qM7%Gl&cII~-T*S?DN9m!&NE?j|i-y5D&D+u<|O*k1!SussVh z(#Ng@QM(BiI%XU@_;oT<462~xy^dco~)AA68$^CW@iZzv}S3X6>O93bMefHTF5 zuC#6pqRV_j{tZ%Mr#x^!TSOn%(I_+*wuFgiDYTJM3=Y{rj~jXWFuMiyxrCwyt%-l{UzbHPQ70@ zvE!XcT|w+Z0c7Q(qN0MEjZ%r34K$f2=MD(!B404|EBeO=1O$YKD=8{oxy?dHS8KU$ zu3-6W7TzipL|$%E|!1gt&&)#>8BT6~sf4 z_1MyLzZ3c8=!z4-9XP*fi`YCn^8<K;D9&zF$9{5L-NI$B{{K;b}zoq9ePu|j))CFCy(XdU>~pCs$wK&2aq)cl7_TqdY0 z2vzH|o%O1-!xb1n*T_&+1*A}i&>#1IWGV-+jh?RVOwH6W4zr5zprDoYLG!F)cChHt zs%pEyiiJNuC$8eM$5!LU!z;fLiu2O`4+nmO*Z*6HBFvcOYpqG9({uRuRsni3>dB5Y zQxo)L`WGExZ`PF_xLPwE=ln31N6#+v%ww#21)^$ur5Q|KVUb$Ivmp_)g^uC2)*mXh zBygSSj4|^(tf`TR{CcxoS2)b*P9{d^_w>jBqW;K+LS~aA4Wz-Lb&($_9ngg zNJvH|5EAo_H1GkCW#HD=GI2=&L0%q=V92es!tL%1m)o+<1sMtKtjZ<11Bn2JDnGb& z)kvlr(2xZr_MGM;>UCZA?C1OY`@v~IxC(w}Kifg4;4<#ZnNzdtG%S{!mPT^!Tzc_Z zdqIA_eoMq#l3E~0AXCm75O`SYP0TQ1IX*TP=f1nCQlJk zBDa~huXLvscD}q7`S^+`JopQ^_Z*E1fH*Rk5{e?767*+>?pK^X;ia)G=C=txIPn?44?Zu)bqb9Ga&lz=136_ZhJ z!V8Aj(a}L8=9ezY?`H-cB@Q6|ay_N{m=`^tLgzB9*sK{Okz{Q8Z;EPUfrmZo+HL22 z?&v+%weS~L9PiebRaRCG4XO9H$)!DH)T&k=$lU$*k%%l!8`2%wLd6isE9_COy;qxL z(mnms~wUreu z$LwxT(t5ij2cH0@l_wr>wdSl9(zsN9KYb6tt?3QFCv6RBOc6U?T zm5D~M=8R&K3UideaBG8xqAw{&(8bCw@P51w-yRK1j=gYdZ!BLdv!15C#kcxJ#Hf8y zhPEySxQX7-!a{aqnQ4~!=o6tpp>b7r-@FdU_MdFG=K2gS;A_(66u1m2`JLo@ZFK-H zW-=P(&Q1{6Rd9LD=JnQL)-C_I-U*0}9 zD*21(P{U?`xZ@^2)~|2+!$+YHoMux)nib31U`vmeRaNQ)_E1 zw{_|Si{lr3Fb{WHn_HWTHqR`+{9maGV!HGHrYea4qAE<`aBa!0oIP^}9L&U3+8JP; zxjZQ;hqI^o0$kbBZITCmu6<##F^A=~-$}t3r~Soa$ByZ$qLRhWuD$pC-@t_gfD3Pb z!i6YK^Bl!%aBg9dgTK%{7QzhW>AcDgI`Wo5ApdFJedZ<)!JSztAO+;)Gb5iH_K!J>@==sS6`9X)*KUoX2<~(rNKUj+ofC{`U7BkOeA5O{s>a~&D3@Gb#=v##_;EmpCW^+LkiBA8 zXLXRPOTz$xhkNcLkLgnx;wun)g=*S^*1h0tSXo)~3kq6^i*C@-iJ~-BNco*sziDb! zG-z=Asq8M4G3-yLsVf=7-1(jBuMZu1LGatfQ``SlGie0x-a32z)Oo%+GocsPF7x2`+ZWevHf1{}D}#h+F8ua4NolIfO6Hj*NApcn;mLLkyUOYxrMFW2t)!CKq0E^Z1pl$0Rc^`a44i(bHF2x;~&8Qr_~(CXc(Qf44O;pj)LcVCTEma}3%!s9C-1)&IsZ|@0mVPsxv9bu((@Z0Nu{g$f~a-9;h zVfmS@sllN&NrlxQ9*p#1M1mRAS*R}Y0TAc0an)(mK*@_Tt7MVDaKHWdO$?Xihw>+_ z8mPV=coP+VlowcGa}eoj_z8+g@vnubfIP_d6}Ue>hcZ2*fEnd_~8w^U630C4QfzXWad^0WP;_$srIgd?5B- ztl5BdKjkTmt8Ro%61q@;Be?o|OL<_uJPrdl`l4#Zdj*+m>ilHvZ`) z?04SG96AW|{r23s?D8o;jL3;=>&>p|ks?d`Gtuvl)`Wan8^baW%7u-GuU2mQsii)M z)joMJA*|p1G;kEmL(RlbEh;H5XM#b<_l7O1m1D#;YT9rN8a>RjC^n=Lu!-E4JO*HG zwjVLQM)ad!y*3&(AWRQyYHC{Dx8s773?B?P;js87BrtmF$Q3J+uLRb&4>q{*ixzz= zI4s``%hh34`8h7b?Yowmn14mu$L{6U%h4La5jSmR)(J~S`jArj?MRg54umAoV~F0l zQ>w6#h1k%Kr-zfr+;ZqN6?W}h_lGu8X~zGPp5^gzrS)STi2muL6HNa|%(NXUlhJ?u zPD@IL@hz_4@QaY$=UdDJg`e)pVRVNW+Gm;~7}%`SOkK>I*>d^q2WLk8$|Q=RhLH{; z4Ckf}V(fK9_0MO${_(7tAJ3xRg=a;XT^m-cD*Jp-jy$*Q{u!C|pxN^L$sMH}$)%t^ zw#J!jgLYDjW*`Zn0D;s$dIfD~8#Fw^17eR`CACQF)Wms)oI+KZ3vU<@9+6bCEjRl9 zKKzaGE?%B;rX4R&!P!1?X)KQAv1KJ#(4Wa4flH7qaTwIR-nN7#nT z=?AsYMvywvCbqt6;nT+jnL-$Dy1IfsPP0(5z=Pls81;!C683Xi$`y;+=! z!O!B0F3bY>hg15g`jSQNaia|cZdbgnUddVe2l3}K7ao3T2-+cNz(L0 zOg&I}`X}cYIXKqrYp}7JE)emKq<1m-WkWvf1%_ z*EHfTiyFsk;p*i;7jSfn!Ew=9XJH((O99X})egJ6OVO&P(vDML-Iot){Rk(}fl?z56=Aktu1p+K$)x z=I%+QVgy{vA?t@6pfgtD{{1s&@zN^V#f60hsK^1`Eg8clqi~5pMpW`V!}aT|Y;1HF zphWmn1z^s=_8de2>%fPom6*A^H(ZCE^!NA2L75F%Tdw!p{?KrYNhZb|2L(?a-_{8$ zc6;agsqHRM^^phmrR%M0eZn84^wvYq9g`jyuA)&mAn||@!>g>iXlvtf+tX44o5@Qz zrVT)p)zN@=TCJg6Ha`_wgY{IIIRufAxPjAdQwn^Ku0RV68~mo)18>71Q#n<@X-BZ= ztZHA~JFDvjhr5o0GQ%EajrqoFPBc+`Ihv@FeawIcT{cZ&#<2fjylWhY+$vuTsNam> zYznCZwS(^#P>r1cJfK=|4-48w)&Vg}SK7s&%C65_lh^8RXA=fOam7%w2&$eL80oEr z!4j#WpLuBay1Z*s7)nt7I4j=SoG}tK7ILMg21n1ZSYFug_}k`{!Q#$3TEB z*U!bw_nO0gb|~j**P50Lr+On*i@e_fFVdyPeKL_OF0-xg3tA$?({>Q(YYo^IC6)!C ztEC=3R9yS=xF#-9Rd^BhMQi2zcLE{`mrjr9D{T?^+Jj9+<~39*#yjX+JN3<31^W6# zm)NCyRyZ|;$bX(pFu=p3cO(7U8_G)|g*DD8ORcQryLQbG5M^c`WQDPT*+Yl(dXkco zY?p!pdP*&IoGDpAb@g{DXshtoKJe~|lB_Z+|3j1HL=~@jBw@X8&)4Ej#3JcI{S#dc zd1n6Bc)=RrA&7~IGXYK7uX&0*AEfFjZ#j{TX6vG4F*k9BGPJlorP~I+#N*@RgUk|s zy5r<+bhIcQps7*7pH)4=+4RQ3`)=JBRA=e-;|oYipaT3UMmu_)p5EZ=KTk84Zry`2 zA0%S(Lrz<>X~_7jwuZk#P8@-=^jwF=^mzx^d&i!cbX(3Lzoh1C3TUf_9hsr;BPWd-SnV zX6mopskJPMkI*C9$HUJsLojw$h>=%bCdT*3vDNcWpk+LU4kdp3gS>(r^ic=n6 zYTT6~CUaiDK9V$=4rD?3Vntegh4oiWx6MhsR#xG7jsJW!sufwmuiJ2{pR&2Bd15`m z%oa4EdlQgFmQj&{+hI?BVZ5}`I?#%~;>OE02TUP2H66w04dsLR^!b8ep&Sb<4^Jch z8E5|yJu*2+?uh9Ba^~AR*%#T|u=5(=oomLt87|Y%bar%r6Y0L*+Nb*`z~}{o5|_&^ z?Dhb7-x_y!mF)ENhL)C)1yW*Sjz|A^Bqm&2@TVtY2j2}|=I5_UNcg9G5hN76HZvAWL);4I=;-L6Ah%*+R-YmkEPz3|*DPqd zxNKXu@f!@YAcTtg_TXpr^fM2bL!zn+4nKZlQW-+8%V(T{hU-PDg$D#Y$}TESp*Eb` zi#*q_aobVwJJ}c-&IZzm=~{x+1;~AVt;t6E_)4gz%9p&NbaU9<-gIK9!G6tX;uG9m z_6OoBB{n=fJUW^|CyvL~Xme$&N8f#GM0duX64ZNjXQlYw4nVmNl9ui)(A=jEsutO)0d-Knt0>an2z<3x zsm1L9Nclr{a5G8%d`tBy^$Xouy}$@(4-A%=)7$U+g(*o;*0+TU@EF%m(D?L2c@2AM zU#QuL^MX*9fguZ6VP#`eiSdFq0qblvA5b7T<$;B6NqTfZK$2gC`VcV*$-J2xW^~vd zwb-8YisJq)9F|(4{iCXieH+^B_)#m+{((3N=zThguzMmwZ{5O^1}$e0#LCKg>$0E>kJ2(RrN?NMpsVLu6fkjKPB?K6EHj>u!d zLFfnBb1OdRvags4hmUggmkW(z0<9;neO$H4MizRsOAf_K2qBUNH3VM+1s(qX+ z=gD~)qy%>g*S^yO0j*G_l&fi8y_vc+RZ3)ZRh&7PUaIG*SmO`IP+wf!i|@(9ho9kZ zk;b7$i^Tyu__CM%&W%*5_z_TzUu4st@rKQL|9xcz005man0{`>5)WjN>bLe>)-pfI zcHAZNIVVR>bHac%id;AIyv$wY$yyREcBQUUCEPJ;8b>F#4^Hcn;vwvru?mbNhkMV0 zVRAwO6&+oQc<_}ukwXeHtRfJ2fEZjV^~#&+QwgkO|GV6X*8pV31qMDIHm!G+78!P& zjy*lXr|=PY!3;3ZmC}!%giv#gusxe(%BV_$tXRz0$`I!J) z?GP$H_PLS$M<{MtioSIDr>?0$HO&dLWV&;f6(RKc-4E1`KS0<*H_)^I4w~)D8wc!& zG+wk9^L;1nvz|EanK=kmqhtya63q7Zwzen^hAUU@qV9K(Tj3PPDRL>&)Uu60)#K~$ zUt=-)?2=ERE&m6sTYlXbcz)WnMo*Y6)T!p7aEd{r%w2faH@{D(Joj(A+i8oH>1*>} z2fb^C>$k4e#*oK)7TxPVBK|~#KsK=I&VjR{=hqM&} zUtb=*Lkfl!b~9uC^av)H<2>YxB#f%GKKYK_|A$^EZPcF=y;ag5jZS)JHW~KXXkGWZnSV+@0In2)DTwADJolgn*XKht zF%FqawlvoE-D#zz%EbIj_F~=S*`~(r^`1Q?jS7m2bHzqnBQ@Qn^;z{h=d(bEQ3;Zz zwZuX_p>Dr#)$!SRS0T#^jf~{h{`49c<*XeU%16kt{`uS*Gh7S%bNmqKOy`X)@d8p8 z|6s!(>QM}r#(!Weh!u6`wwoAoyUOMv3vxpK+9+itp>OfdE^^(uvV2&3jb3om>lpn2 zK3`B&q5M!?3Pje67cZdfumpYyl-;?ZHa7nfnChsts+Lf`v_%dYOPBi>eaCP|LVcy< zXWsc6#eiQ*VBtUymgMeIO>J+xRP`(_rTZ1Q80V>yk($;z;S{m_n&jqr*ZtE4WJHu` zb8Ke5+{WGRwbwB9!B=WG#{CtXp*ZWb2r!y<-Q|~dw5%VanAb~=7S8HF8>lngED*WA zOpf0QJoY7X2hfM;GTzG|@k0pQrI%ALP;8qUvTT_|5#hAT^^&~)eY2hVa^ zUR$5PmRXBwBSj$AqV_C8-ku3MS-L=^f}0T&R0S>#ueE8%F9pW1==|_4n>PeK#p63_ zzRs0SF=lzHnwoJTAvOSHj5(#cwVsI|3o5F%##3P?6i}4#XS&u^ZU+^={Hu-+lrG1l zm(P85I9I2kO+I_tXhQe!5AsVMW59R{Di9nJOtn$6&d+;C8mO;spX^zFeaT12G)oKR zux4!T`jZ-JjyoR5Wtj+RlYY^|e)KYFi(2;i^XKt?E8FulJ|mSy#&g7ayVj56i<8Am zhKz2M%r)C9P^MO>s3Yh#GS_85rM2gj?-06i5=}hXIe8`lS_=f%`*f^qz2CeEaR&+T z6P$k<8jW>l=;>PS>Ed$hZaA=~0|8w#X2{xqr}bnL#=R6R_)J!Ad?RJaz9UPCS&DyTUJ{JVmP<&nU=UZujq;I0b6(|L8tIcd`s;WkI zJ8qXSJ$W;!sR?*FodDpH_&U$=|EF@TwXC;_EoA64v!(@US)Cvw8!uk&*qtxqvu!-+{wWt=r5|t1lF^k29i(BFe;JT%Kh+&u44} zq(NPIMxg@<{$!5X*|rThnju%raBDPYctIvEzJ1*4-5TaZ7W$GX<6QY#VP9M3pr`lR z32dL#yvWAP6xK@D^$GW@9^3+#+ji;J7iR1TkHGBdr8KjDM{WOzxVRiMy17leOO4Jz z>Rbg}URdFBAtRq%%Kd7v!Sq*jC z7cUO#Ad5^Hr+|c-nrdRlbY;jjhcky4FIj_d0!p`crwCc~0Bb$4w9JcopMH`E1aN>7 z*SI)%OBEJ)C-C_nNuvO;@h@_vL{CoWnMqSac0~)6Obm?x&_yBUGmiB&8WanY?bV8rjY~KNhqEr zT#=s>-9)n6&dEz5+KL8=J09(&_&+nLJvJPlz}D1d*O)2L+`6UcR^i^8q#>OXBssX%39K3o8c&_Vsli^yqWW5>vNH! zdiwe!?zkN%

Ifd+A+TrvC%WY@e`DclznKAb!hS+#pZH8KdSPJ1VG7*VdTC;0@o| z@+aOP*S(yDqt^`nT(h%iuAuh0%q_h1f$|#VL=2y!EKVa&Z5VBBK-}=QEF+MkMd_rF{`QQ^?&t2?a`0R<9WUJA&l33jE;KK`=hZvb@B466v zI-6U(aR~#oP549r#SO^*U~ z+l+)ax8`%_l?Jnu3)~1o7Tj%Y3XSk`UcuRpFH%p{Gz8NJt*0}l-j;c#d(q!RYXTb% zx*D*kzM!BpRhfHDLq-ixl_`~$E#Il$;ph9fZubIXXvv#Z{(OWVdvU!Kowi2pVw2S~ znGOmANLYX%1mP(t7$bS@b27=C=QonYN@IA+EM}tvn}`Q_Lhfjn3C)TkwQAfz4j1S- z(TyiMh<5~f&6Msv-@^_KL|!}YpAjG7fN46-(tWR>59#V0O4+kjTbWekA6>62a{LPG z;;k#EyvIFziXR+b&3$ZKb@y;dW>p~a5@l`qlURk2u&}xE!MKJK=rA=i@q70+CW56} zZ1?fSpvc$zwq|PaCwLsRqBbC1fP}cmY#kjiQsq1^*!^Y1<-6ogy>n0NcTk zpAt}TLCO#DJY)Cc;P}o}pwd@=Et)?$@0HF~@Y?S{m1pKYxdJVr8O3~s4+s@1AeZa0 z7n&s+w#%9)uytO_bbewsv{m7oTefqAY^YA^!GpqT?W9ujY=tU;k7m!Gm>F~2ye7RUn$LbNiT6Z!rlw1n);yH= zI`)mAtrzWHvO}S>%NOumzC<_^fL?s#UW;w|p~vwRy7@)WvAY>s_W0xB9kK4cwruGd zW?Ly^mY+RO62YJfjsYl?DPUGJYg+*v0;^=n?}c;|@T~=XAn-noy6NxUeJh{O>9noq z51hH|+LQ&oCfHqd!us;HN5iG2(NNuTRs%`%S;=|IQhc=0hLr`yT0azf;Yh`APteOK ztj<%+=^O7Cat0;0Z2%v?s^$OO9h}P+_d|yfkL>8 z@s5xC4uxn*IePlD+>VI#cn`|drJlZ_KB?3fm!-911OiajUC^qp$yEGWU#>WXdi322 z1coiZ%*+%ocmhpn4Q>ZLsoQkuPR^~Gjaufe>y&V?m3wMISFNwB+aO0ZE0Gvj6s`Ub zpl>7za-!e7KYtQ(VVl}NiyaAQ6`$%b^;_v}1NJe>x$B#WE^B^-vsIIprm9(q2KC#O zrp&7~M?j48c2`jhQ;09Mfx^BkRgx^@1lg?zsp^^jgEwxMOxl;(zB0D6sMq#=V^X*% zs)MwZ(I*466H1^_YVkIQcd2o)1eGHgYYz2}YC$ng5~NSh^P(Q)P;qNpo7DaLK?}4f zA}iB&+j{gVscwQ&{;ip$d@nwA2nU>|1GHl7E*lm_imta*!6ic5?Ft~hjbFr&xicdMCLH?SR)gv5%4$Y&-ezMk{p4wXO2Hfk2v`2i z#2rw(lQsaxiit#}@c-ZBU>}d2sWnkq6gD6bkySSEo-oW$qSRgD(kNd;jC41Ooy` zdkt!&*tb{um@#it-6oj=gMzfH7>r$63_EBG&aKRi3n=}RgsoCWcQX@?9?evX8Ex(a z4hL*1EHo4k`rN81Tvufj!X-+orG#$om30m_f`Sp0)szxr-v0jh4r}#;x#e@$%kJ+s z*KA7wVb@PK`WZy!AV?~Cqh$m&2V3#6u!$VNf2}dxY|PB&@1Gq4avVp%o3$!Sg!=Gu z><@iFuJ~%Xz-!(^1-$Lv(iX-YXK#pa&;YflJ`wu`K!VWS#O^M+4TpXAVJ)yoZiELlfVd2~CP(4$^(j#I zkQA~rGBQG&95wY@pnjAzY=M*sE8B;VuLn4Wh51F-dDZ4rrWHLS zeT=i#OrQqs@Yf(ZiM#$3jHCBatskh`jUlC<3PVVX;Qwl_A&{o077yHB5m6Q^O4AIy z+I9_o%JWvB)&M**Ooj|3wvZhh)4+Wr!hLI?@sFt5moW81>II8|s@@p$0R{Z-7)i}* z*jY#coSe$#TOJ~$t$!$pK+h44e>`*bhIX!IRh>VjJKV0*MATdat!Yr-ETBaExSZz& zHOLxfsxTwa>DmWgU>7>uM!&ZSqWki6pt`?V0JnmG$^KB1EkN^fFSPW43O%!yQLVT^ zstH7ORnGf_kPudnPy>ArUC5kS=^zVwgn^RBHqOEM@DPh3CZlH+Y zg}pB++uw~Bo>jZY<8D5FrgF%Gv`DY{{BHJfp_?%A7hy1? zvD9d@4tI}zh;Ccx103v`G6QH0T1xJ0J`&J*+%1x5y!?MJw*IPgjFE#Cq8 zUf2zlm2M@i$SlU)t=^g_Iz+l8nBvd@Vnht|tgOWE&c+LD&Cr16@ddtr0+EinFCo!-2Jr$fv424= zAV%>^hxf@f_;lUwN_b5K9pZ>1JPR+vdyxgA3J!k$9WaI|;7?8A=W8FswcHHDzWNQl z{Pz7l0p<3%;O;o&v-ti8YjVU3KDbfH=_@QdoX3yxyQ}opht#3z;~`wx09~AcaMb{a zIhWmW7k$FHW9Ektqlz~vn*~e3HNQFal7W?>c`LD2=FXBiI^jT2X2kFx$k}l z+8#O>OmaNVT9JHcB++tt9EM1!hRsOl^rPU9iiz2VEsbD!^zpY)a4wj`xMv7b11uVqUctrgBKSO?)g$z|{#V(D-0muTFqi!z)Tnc_hl!Rty9(wxvN>Uom99Qyk3 zE04cu3I6@KV(PCom-css3gOu+4>rJ8v=S3iU?lIRZ=!HJsPTILXa&TRoA^PNfMNv- zERo%Z{fAx#tU#YDo}z#Q&!L16dXD#RHLl>$pzUx3E}ke$d`x3ceaB^`k^W2x^p1ja zQGiWhr^RpF2oR7^B7u6EVa}6(8Z^?a=L8y73O2#dxxh$ZVox5yD?hy7TAPQ93RG;XkqG`Wq95YT7f1c;ts$>07?57(UIDEj zzOf3ip$XO|xbgJ>aPRNn03tk^SD{S8x7H;Gz&HzT>*(EwxB;(3Bn<4Xm(-Y!RF(ns zg6T6eG2K!+@Z;(%gwPsvOyU4xR*n1do}}P=l5+sTg+GB(`0mg8ah5EE(FbUq#fL0- zk%btX;5g`9S^nn$QG^0qI93ks;Z$5Tz;QLRGCjaZQ{J9We+yGzAfW<4%gwzB4XL-3 z*b$%!F^T^ z5V(W?-QC5aqZvFbFwv;(DfiuJcl<)G!%NxkKsI_$N@|*@3KZ8C_yf#BmVSiCDWRof2B7E~u5>IQKp@yp{1lUOQzK68Z_pSu zfx`FH+6Ay*j?G2$her@E5LQZDVDyMDUjiyTzTAO7$DeRgxB%!B7{=(Ep+jAn|0#9t zs)l=qFm<ZROt>pzo&1Ze6oLK@qkA@t<3{Yy405^3lE3%P5$9w_+O11mmU1T`KZ z3A2XFxAs?{F^yerxzVUuINXp+!?n)RG=tU4hNH`jAy@rTC!|U)^_rJfW?YPii zlS-)L=Nb(^Q?BWP({paJ+7622L|Hb6WXQEVMI_k$nS6r2>3?%m+rA$b_v_V!c)Ee| zOB)7dQ|8*Jcz}Q?JLTt9ZTr7?1pZ#kgu{z{Wi*R*^9zx4oVX&})lz33b#l~={C*Cv zqjDsAD2sXD;VoLS;jQ7WT+m2d>QcLN=Y>kireqZ6adV`#8g_0 zegFpq*QD)+DrtK8`)d^$g{C-PEw4O4@bxt)o3HFy1V=h9Vb|vtBTGjY|3%Dw{ZiJc zrj{W?GSuKoi*eiVEvHhQr65yqqxgHx7~N*Jz^US;i9g6~_B8?>RB9!T#s^YWIDGHS zDxf3)L~thDf+VW1uMY?d*rUTIE=bGEC(q?CLIo8F@P9Yn9Wd>CNBz%9cm=6|OQ~)p z91f_s;U$nxAAze^hx==M$vBJGYrqC}FentXi}g-zh5f^G4TtU13fYqs~cv!9?`ni*}4`n%1yJ(`4qvIxIDre4|c~f-x z+O=6Yr`{>>?0Y5I$(DVY7N(FbTecSKIhH7d zI86(cH92;vEOCS^#~Oa`3)Rfr_x(Kg?|D7_Gp~`(a$Vo+`~7_0+h?6${qUd9N^=hO z>eT1dHCc{&7LFMlIC$`#L^mz%qi+U+q-2NkT|3ovuU@$V&*h)@hj>F?lgVVYDWU-O zI(G#WyF5XW*Pw~0Wn8?tC*&Y}GbgQjPQsk8*)s!K3+hDGK7cFL?P8=1mi%AtZ?}sG z#S_CUWO^Y4`lMBRxc6B~nN}M0OJ!Th$z6A;rf9!l(I*m_9)^a5z?8#q+RL7|f{CdJ zi4F!r%U7&0H#I$JWwvD5GD@!h?Ow3QfvolsW6WpKA7cd~e1+adrP@lj&vX}bJOflu z8O6O!XWsb45r@d=(SAEvLaKj1c7wHZW+J1zc}7<7*(`JqNZy-Hn`oy7a7is(fvjRk ziNSK=YyiIhC=&q=U(l_LoR#kl6CuPKO&>md5I-opacFEz)2jVv&Sp-(l8c8A|6bPl zx~i(}fr+w=%+*q+0KbwJbzNNx$M>WRc!z&n0RgwTDaOj}v-IQ;)-CsJVjp~^wRueX z_AQ&anRoAWL-z+KX13Gx3AsuO)Q@{uT!ks)9}EO`?HZ1>f_v;8YSf|~+`qtyC6@!v zJ^*^k^|!}1B>Gzg$`~DhFo9}wACjMTpOP17!Quc@=Ri)==jlz#Kw!xCkD;ccBfe$d zvztk|pJ(rt_P$IGWV5Eb%%)7)e4Q%9a{<3nLv=Or>}IO`#>rU>QPbKKbatYUhY`_> zY|msS$$cimW6s5PoF-WoOE4&rKI;<NWUUAkp;m@Tko@)&m#QX0&du4Qo_T({~K&*p|9&)22iE4JX&~Jh_6r10Nsq z3)HWO`GU$uhZlS!m&ZsjIq#vtaZjA8zy0UzV z3b&uBYWGQ!S?&qd)2d%I)3naem%b+wZQQmv?Z*k$trfywQ{!v-F0W!u(c{^#$6W>? zb)nT;E%MGpf$;6OE?`-*%$|G7MV)veY3MSuf8;|#yb^LDL|B%Pic$7{zSh!t4!ZYe z!XhF{u_BHi+XL5l&_*c+&117>HOkwS!LJ$)bCBF&AZu8iU-k<9rof3m@Cr&?;l&9T z^4;oANeyt#l+l?c2-%D0n{}j?C6H^!z0_C2f#IHv6e(n4js-rR4HGrgADfwM^U9UU zuIsAGo9?>I)ach0$R;UQHx$KB5=E=9ur^5X=GN8-PSd}C`cFhS1l_vDhV-#HvzE;; z{VM4_T8D3MLAqUtvwGp_B9U5|e!L2)+Zvx&GPp1X6$a^$6Raq6UwA0O35=^e+*@P! zZQGA6-2Zk4YLWu>AFF{>O~kh>TuYL7zt8t;Kq5Ja{$GBA^5FblKY`*s5xcMBU!x+O z`}}p4Er`%F;n$BSC@4V3p6)d}^XH#`4iWBpM1P*{cX)Q`(j^Dof&8q7q#NSzZm=yQ zc{9TUGxt42_c`eoySpHm3LrT6J1-9p4`buRa?dKsvD&)2TZQj71iJNRnReb1cYCAK zP9jzRzHmL#rt>YJ1aoS2jG$7z(61p5Ol=zCMrg|X{rrAexpJe}h4;`YsCxjTsNoY6 z6N9)iA>rs+SZs5lf}+*E^PK7f+fB*cnb<8u(XKUM^flK%()3*F`m2#G;wxq&Z>#I; z$NIaEe%7X`29IJV*rpt}k(2WvI#-<2sjk>MG&D3UEiF%+c!|~+sOIDP0HfDu5aGh; zc?)&*ekLX+va_P^Qqm#cg&j0|^iu|S$=PU|VzY_Os;RDWa<5;9?Xs}2pin4;N!&T5 zz#+&wARr)G#L6yTj~p2ujs|ltt?tIg{UJARCN!1YJgfKcmW=qh^XECmF5J$~Z+xVg zw8Yr_jyt@rG2oGJ;ERcut5pu&OH+^Lt zEv?9ii0u{>G8s_9E-Q6voiyB*gb|%sHriA6^?zPo7U1U-HhTe>0wkj;7ZHSnV?V>7 zZPmJU=gEHnrR*tC?-vxT+`<91DT8ft9Laeky^wSp6B7n!WQip-jR_Tri0TF;ydPi5{`O50=Ou?;`2P6poh?6 zAZlqG6|vfzM-zY{n_^y=XZkw^zCbN2|LY_q4*2~#I^A5qK4BPZfZQa=;BacW(}YT_ zWNbCv;;k-?kpL8724IF-bGOdlu7hY~p&q~HnKNfRJc>Ff9UbTNl~0^#fcrsOS{kVo z#oMmzM$w8SsKSbh3gAyHk|QTi?3#WZQo!b$7FI2cKAE^2lrLYtAi09FsUvF#XaH_i zh4_Q|e79a|5Sf$DA2c;Jp_L8GF6Zq~5NeQ^dtVjNmsU5zV4FkUc0V!KeY zpk1B%Iz7E?<%auU4d*^#OG^tPsTf&%17!vgAW_CEd%*lngKCauhF&AAzEKWX+ql@| zceS-buwMP~#~&!@0nl?DbZ>Ce58TPoal-geqc3QK6L(b^7Lr0Fk~Q4$bEiYjKBoyK zd;4J`m(iX!hR3=FJD>eplDD<@!Uioa>Ew7F>W=c5{ia( z*T(OHD?)eSf0uP)73&#n5K?epK zJeU<@Mh;g{vw?4ks(NIDlVjodajDeDLoVEQ?TsyBI;{`369@12Q;WW2;PLQ{3ID03 z1k}E8#!yx_@HtIPOhn1oR}L&gW&1M=OT37cj=FkSzAA-1zQ5%7NpbUyB+}>0_+qNd zK4o-ubxF;d)%$zBDj0ZYdwJCpyi1XTJ1{9>_BY@=D}eo7#rl z`uOWof;M&24SSqq6+qz?;@0C9Y7-q6_#POc&+6&vojwgi%wj+UWO}ryO}I7ohn}7u zXz^WtrJbbr_C9<1bcDBO-Rjk$QBh`}U9dL-?eX#PVP+HR2JZg083cqBFE1GiJ#?mK zrl!@GyP0baf+_2G6^f0gG=Lp$yMyXB=H_5!LLPFhS|tcQ%k}Fk1{~WXIk)GCFQ)qw z2a-bxZi54{8;WmpLXlJHJeX7a=QGcu_beefX`biOM<(i{h7+hRfAl~1$?pZ?GK&lZ z9nY6)20}#bqH4xn?cDw9D&IwP)BPQ<;%x;&33%m$>Q(wF_8U6p$XsHz>(m% zz}a(hPB#oh%Jp#6 z2F1l$@1{$f=iUlakZMk%y}3EreEYU-be1siV)JLrfUMg#;kZSODD3qzhn$Jax@PXO zZgQ%)wO{#et*^|d7S-@luAZIKpB~2;bEY)kKhrN*a@y#6104Js8g*E6a0q4gV&_oJ z6f-t4>1CSsd_OS2g^WrN?5OdI$i>A5NMtofi&a=UfYU_sX3)VTX1?^TCmyO=v2K=- z(95}e>C%YqlEgcCIpki+LBZ70eVYP^L-b$)^TIW9xR;Mb?-?WR+%VdfGc6Y}cziNB zY2_54$ckr#fXK&Mn$FZqB6eUMna^5YQ8wYPw~sJ46R$J~!u54yTlhxJiT4R}LROjFVS6 zZ5x)n#_=WJE`fAD<>5mI=gAXe5f8Y}rluKlpDC}kdVXI;@RCb47eU?;@mlDdaP}aK z>7Cnvq&>^jex#Kka5$fyMCssY-L3x0LQy@ zv8o#ux#kQ`vbrizzO8oJZ@>q8h#k1~WWTGi^{8LfOp~Nj4_DZumR|bt+}N=u_u<>= zaB12h!nzBwU-lL*o?hM6cSc4Ww1vhVL=p9whLC2fLs$!eLgA=KD-~>nOv(a&Gi}~Q zix$zJ`Xr^dXa@-F>;|3p3o~=L9^YQwwb8e3byddhayhVjx8>6-%ZGkB-6ThxRXaV- zwUzj@s%mSe<{_l`;?bi=&zBC#K^p#p1zmZ6>$m(c#%hZ{nvbD5x zHeR`9aoEgY9EKFUxmOys%*t#(Hm4ModuU!wcEb+q^u&7+nUISTLI$+*vm?s0Bj7K3 z11E{_XhbN7eX78v9(w#0$6RyJX6cS72i)lc2Y`lrh@gHoR#5PFKup{f&wY?dXsD>X z!G$$4G6LMyvGWlbYO^t-T9UX!u=-k&5GzDSQ#4%8?O4<% zOWgpog@&q@U(S8__{-B@#2X$RfR_)L)HI5oc+k$P>QQp13YMH4f^Qdocv>S0ek`BV^^ts2!P7~Ibc+q&rZy&O~efBp?e?9(s z;34HSE@au+fYx&zgl~zyRXu`VAAYsu>yqdke*gVhnGAg)6{{eI6Ld%(UtM7eQK$|BQ+wnf3vuJxyt zGo27^*OSLwfD~mg)>jN9yk^`_ocKeCU|kpkZH8;9!1Eg#v}ob3$d|s7D01Lsg57)c z4%1-6KB2Bt{-}5Ue3An~{8zHD)Yr4l;^J=IvPCCjqi6PD!6vWSskYUtS2OOeC*bk- zpuwKRS?_QPVBI&fRH{wb`m-}00K=pa;E>VR5gPi6NK*@^P#0^`c&^E|<8H-@Sl!~y zFr*q}hnmZKU@iCcY_j-N5uFG8g^+0zzV!b5PioeU=s}*bNTrGUK|~>mxT~6<0d%=f zWM>StyiaX<0OqKUE@U$I-qLf%K{%C8E3RWVg zuipx%YHjmRNZ`SQj7-fUkVQl`na~WwaMlriH?kN?1q_(L88ZX1OMxVZb$;i%*fBDN zf|Xl5J*sPFVq!w5tjPQZAl)1X{gKD5zlM-lLy!}I+_b-57=&KWjK5Rq&!@z;wK=v0 zN_u$#iX)6C{Ic4@!ooQ@IY3=hz?gUJ%DD&%c~vO)HJoU4MDZdUDd_r{kh&3JzLFap zg+`^!wD3s~F->njpmyiqu_GljbM~X303j!uN;9ZL0<14+8Fdqa5KC$GL^32yjXZZa z4!S$PzPYo;P^7l?F~QD}xQL?C0UI!|r1Hot`E@gYO1kDuJaB(=ez_E#_fkK1gFlzl zK?#Y+VCitwfJvcIxcy~EPPM%lfeeq{dj`Ru0055V;Q>l-!v3W?m|DRsn40hiwtp1g zxKPayV6Ey);ACf~9PlGz_Gcj8mG*L#(jKz>78uUpTyAQ zB|4I8@c@-asMmbMfP*0H*dTQ^{OI6%}Z zIEyKXjCSR~gF|mw{3`Q5?Fy8t8O}QH#j6{&j4tvyypY=gtqyKhl;*=18#Mi`mP=V6 zmQctnB%?(L-Pogz41lOS){wrO#{>W<@6;(jYobynihb2(9sDkr4&Wn|&P*h~U~l%M zS(FYaf9=ScRi5nC++46(x08QbJnTA;c+81==xu;a>MIx)ZCkf-V+>T<1}P7lPNrsN zvi$OkY9HD*Br)&h=jY$E=K{*tN&S0CJ0CmX_UNNmh1`6=bF2`Z4Q8r@t#w>R`*ri? z%~)ZsgJ7+*!{|m$y6v^DOUzE3g`Yo@3Ltnz7BF~-Cfk6N5HxM&&m`}3;&GyTx6o?X ziqL%fGO-U<)@&I|OZ3v1j^EO=RkF~&+dNCV-#p8?QI3r$ELYm&oCvS0f6ndtiYX7N zG7)8+#?pyNNsulbB*)GbsdB93f&%gF+mCzM-!fYv&>Dxm0ar?PGUWXj0cMD&Y)lc~ zfVgwHJ)z89YpvZZVw#+5L!M)>N_9(%Wz1RBrclU9c}zaM@(kNFXy+%n#8K?1(0>Y& z0~~_;hGyPqXYQV;XliX1ao?qF(d;8lozAQItQi4~gihVX<|+qP$FPyp@`9tF+*jD**2MkE(A?2%gUARaBOu- z3^e7)XA1VE+nTqlz%yG|4;c^(hj>C0n8*<^*z+%fj{cmw)m~G+cP+ELy!`szT3_&F zCL|>x%K0_5Cj5GBdWJ#6TrmJRfT%h{F%ltUuv6}>&vk%a3JT?L^IMpkkLbLTnuqU0 zPM#CK8eu(oB)F!IDpS%JaO>8sjtD+nS3A!`hn^58M(e}8lGFfu2xDIraiY9PRn7tM zl%51*_gvXWf8TO-w7aFnk%xWykfy&ytKVx7QrI~52?`Q9ki49t4w@%VzPHQA?ty1a zRYm2Du#8)Qc24?NMy8jdf`XcrK(lL1*(2vNzP#=hN2CgkDlnm}n+L$?ONgS;WhJ-9 zo4e>mjkqW?eCciT5Es9Iz}O=f`6;|uPItE{N6=B=Z-fFgJH0gD-w*h#=76K6nTJ$* zY3d@<{l#<0NQP4NT6@hSN1npi!Oq48%zA{j?dh{;unA@sCzr{uvCY>5p3Pt|LK^+o zC+@MTiL=(Q>I19y>h)_JcbVL_P)woyJP7@dd00ddLoCA97JC*B_O#U0;1OX&nFp#a zCY{E!N?@L`w|8}A0MvSQWWFFH??~N-I07M|+9Ik71Pur%#F^^9X;F#!^-+i629b5_ z?CfpM?TBT=i4Hs*?Q2bZ`%rcsr>`JiWwhu3L=AnIN&;8ZO6%@_k-P(lXDqv1A5tf+ z6A3QY>#0^6OATmZG zJ>i^31jHBRQ_314`9rGti4#Q1gSQF{uChFPJL#*Vy*r&NwHdC%`l>xi3Q?!PG96^pot3opD!UtWS7!=-z3Ait(~^#R z&5DYO#My)c4YC=A&cHd%PFo^>bX6V@-hJ5YAxR*sU)e<>H9^ub_vIS;7~jsIAILM$ z0RWh<60qxnyg^#PNk`ekHRw{e?c4Wu{HF+=#L_hYF!NgMe+LlQJo91OyyFG-GTm!U#&T8fiYQ`?pajf{H0$k6&Fc``opTX9XItfq9}YQ`f)i=bG4$L^^Yo zzLV&!cdkxF(o=bqd($EQW(#9LBJd@Uk;f%*&0xVIr=!Mmazz6cu=h1$7 zE2N)IAZO|qYAAh%Aqr$}WK4_#3Su$NIs8j=`voui({4XS4%lhVBgqOf%a5q5tCKwt zcY|Vy7T%pb7je4gx<3Fz6)mkDjJDaCG0?_uT9MfbEfM4H5YBBp;8J_`V6)}AIsCw) zp1|EM52%iN8B>JSmq%!Ff?p z;eqnMmY1^A-%o=9h_@R{A9%eGafnJmm#w)@EmN-J8HZ}&27p|D{}>6EY*;!S?ym|0_j*KH z8uLbAXCMmJ0`8+daa>+sv(gY~^mc9gN$@nl5PZrySFBv=f9+b7utoUH#t5?&Mb~WK zkoh4ObHXJZ?X4G(k}{+YpwUi-zIfC@GQUjneEDA?LKUtRt{uV0anRD5fYhSEen(D5 zn&U?Z20E`XupJzn`n*qlWL!Z<>OsAQB=aMP@{y6+Z6$N;m`|}!T+=9Qp@cdV;JHIQ z4u070Sf7_^YGM+f3&f$uHE>EoqE?syFHv zq@^!)hYCwE*a+>?DItyLgklqqL$Az!I-<~WoTur$G-q5C!g&g4vUf@Q(yA6A( z>XB@htAVl)!HE}rH3wm&bn*SSgG_s_nmg1lhbP->=CMKTpR#x5t*xzr%K>lgEi%Cb ztE`NN+nuzTOx;88AZ@q{DIh(o(O>X?+VtDrg9m4bVN!#WGYUe@T z2YLd5M)4sowljN&jFC(uluuxBHW%KCj07`zQQdNwLh;Y180G+2S9DyN^1|NG8}F=_cE~ z?!YeVIBJ0xhpg2Vi-v~gK$JMu8xRq9KbiTZKBfsF&m!bKw>A$vV;JIe3QzAw)G?uVK{@(l8?iq0mHP$F%*}5daIyw62#kK4LgWR^ zh6}IjeMyBLpZpAR&05C}$qdaBv&riUsd#-16mhr<=@tIPWU~Z zC`I2*e%Ki_tW*`yci*)1{P=vizFC!~rYxr)e0-^pHq602BE&6BU2GS@eb|~$i(1Vw_F*Ml}G!{sTLl5Z{&^#EGBtZ5T%fv zWq%Vyx;Tl|b=f8r1JNp&Q*XSM=MZKlkwgeq@>N!TStZeXhC)+{gBV;e`85D5fDk|l zP`So{i@<+cE;d^MGp~*&PAtTxQ~ILC-8QOv=m^Y}CHi#NjT9@#WoBF$UI$MQkUYXH zm}e7D78Mpoweq5*#OKNt^heo1m)%;$l1gQ9q60g6j?LuB6M*~6VDweDA!5?7D@;yJ zm2HN9xrbn6AlRQf_f9`+5jK8(6VEzk8|6MUNZ>;5`&*BbA(ppl5hyHUUk2pl_lbexqCUroZsPzW=c*@;W8$bl$w8ZC4! zM?o@?Q*4L)i`IsQZV%n9sl8*OuYGV!$Q*0dB(!bW!Bmv4-a6p>xWl;S?_@Yt2u8<* zscvx+2{MxTYF-@C)T+K28xCN|PT7X2htL4Nvn}OV<%y3C<|*SkF7xoKzqfW8&1|p4 zP=b;@uy=#`p@ox@hQm6xczJn&Adu1sUH5nTTPt?sSo=?;CmO`F*C^!VLC9}IE<0HF z+nKyxg?e0LV6#xL#A@svMkS@CSW>BX)lDewL=?QHwv`2UtQ2Mx&=9{8xkQSlq^Kxd z9KUDBj+bsl6|zQW&z^Iqp(8{{6R7~>nZfP_6+V_)%@}^((zDDp%(Ebk=(Mq3Rf$NA z*LQ8xyNo+5YE;^_vRwM1M1b8)MNu(e3F^-nxRiU;(FzdhPk@0N&zroB1UrGalA9eG zVEzOY&*Y>B``d%3;J{p&++26{5oJ8L|Gm?18&-R(fmX5#{)p73njo2WoxaH~yZZUh1;XubyVItq z<#g$pxRz_9*lMERVMW;$!0k>tmvBU+}wl+35>IAGY*d9!10eAQ;L(A zfMyEhi2_A-KHJiGU1Jq$B4T8Y{u<&F^}f>As5&a?c|4RhT#NBp2?%k?K`4}<=hyLY zF7YYWmmh)VANSvIrr{ya)~(WUrIcJ-cPjsozVgK~Vq2Z-yByE;4~=suCRH|J6cNJE z_%RtlRdwrO8GW*@lZZ6~joPiDXT;bf)3hC)`W=PnlJRek&mGzG|5nrBq1`v4Wwyb@XoI32YR;t zxeZ2Z!9a3%Wl8#$En5J&GS13dB!#5=uYHl}=Uxv(%{R>3;-&trok|(s`(8=ZNjct_AD%#rnEgSBaXaEaH z>NQ7kKY&qBSMMUs0#+Tiys#H=pKbWJ_r+aPa3~%A;6Bfi{f(Y0ZXb)QM zLyNIn>;8M{OfR+Eq(ziiL-Q&%iBJ40dU{_)#G6pUP0h}<&F+i0h~MnwsB7pxcs2i= z$`bcC;g`RhS@0Uo093OI#Yh?^S@J8N8xp&=ZGnDgXQ{7&q>+PKbf4$I>K_X0Q$ zXmBQ!(=_G}F{O(f`MY-ROwG-$)7qOx6#)V**aU$%AmGhs+Ht1Z>*=-3X-uS|_i_$l z95Vq571U=oLvn;CelJQ>0G9Rj^*}IRTX8?wQ03zLyy8~bb zXoDx?X&hwfi;oi9OUy#AWWdD?UU~R>?uM~1=i|-@5ZN60y~HR~!4edY9sK*9`t@?? zNwHPz9fN7F(}%I1tD^R82Nj#is9co%v|gMp@pu#4SrUo=xa`rxY7VtxwUGHO^KRI(qg~6K?`NiD{f>C$0y@(F@a|!9$Un z7#tfr4H*Qz;stUHG2r9^E&S6mV5IQI&%-Y_)7A7#wDYWE71nTYOv9JSFDfdE{YCPF zg^BMxkgg(V@IwV6dULzWJk%mO8ev5AQ=N~_g`%BO<{H8d%Cj{!_uW^B+y$+yg=1Z9 zH~m0;{;D^$+Mh@6^Ylycq3z~md0lmg>9UfN$4Ty4PjVAX}TO=h|^b7s(Z1{0{0rHaGB*w!lz8yV_|m>I?I=S7( zT#O?Q+UMGV{L(h}w~?Gxxe=%^rP$llfgsO;H;~oN$?EEZ3!#ejUCC-U{^g9S?_AF* z;nD!9iB93g^oNP#Z{ugw;@VDZm6D>O{WLFt5y%P8Sq+Bld_^K!l1TlCqhQ2t?Jb)V zGH8J2kvC+f9>Gcwi-192sqS#`{tB#0Ltj6gQ=qwVGX_-D+>;0mBFqL7<2_8BZ^lr; zX0w#c5UMyxTKK0s_X=Qvat%T0YAW&jDWYkhPIN_wb8%ADTg}CLHnn!R!|L>^(=PQa z00cSmG0ZxYm6JPVHKu!1IPH9v_>Q-sOI4*s_Ige@L(d*_tSDtXr+9nLGg>b_gEgHDqK#h~(j#I%sohs5YH>dIq7^~jEK*pqpoSvOF$fR-Bi7BkRBz=cH5 zL~0E>7d&pM=5#7)2%iq#x5=y86Hs2>!+|*KP}MVRZS4ZX#6Gcqvuh{<(tt!)ksnME zcZ`;M%u}S8LY(uQ+-z-<%I6 zyGPKM(+dU_efZL+1Gu70?F%r=)n&$sF}ZHqaOxN+azUib=+U}%Yb-NvsV@2BWdp=RxdQ-c`Q1h;;Ca%fZ6%egItCqF^6yCY`h1ZQ)mPJhfGEWoFdlb+!XsK&u(P7eFXs)dtg&B|`bC~V^DE0nRffd`x8R8NM zGN7M1rir@8KNiPQ;tm!w`l5DhIFq2E*-&8j5!!{Ku3y>Mc&{C?>IeUOf|`GX&HPDt z9c#eANOfjlkEGdy%R$M^*akxucTQYc@OenP{0s-ifeRf$0kg|K*H50kZL5+ese}PP z5ZKQ0Agi{HeH1;!bo3x(WF2}K2&MJ*ZmD(}^Xo@<+*Fiqw`kE>ueDs5q={_pNi%xz z*~{7ak-2W`1r5jciIIKP96A|;)oJ67&zTaOs@mG5kfDGU6{nS}I%K5g6d793;=Pp= z=lxn0nZLxH8Ov>>CBLAj(V1PxTB66vTVOO^n{P@pNg z^$s2zdm!dGRC+Y=Qh1$mrnX|bi-f*`wQ1l1BTGtsAtJ(pgMzASirrlOB$ck3xl;_g z0Lwt~C0rA{i9^n3lsj}5+05?){B^-K=Z*w^s zy!{N>s)Z+z@Rt<+L$n2#iHuP{IX#``=rVI>?EVW^drFUvj=dQM93$lx%%z%4CD}8R znu{oa>BEBUU4m}W548HiO7|J<=10Mlnj9BGgyCi(p#r+z2TP97!iVn}20tkHkVbbs z6-Yh8SMO=6kv6Ft(Dt!s>5!lwZQSmBi-7PM$NR_hCs*n+)zs8!I}T*#*h@9Ptsq;; z2!h1AYwp%q*REIc0(-rTFOy5sySUU=WzA^Ohf{aW!oG4qVz1UGGSIUv){$3%Bh51k zgKP<1*Gr?&&j~Z(DwN9p(1LiYZ`bu&$DP;rhq#EA0CtAY1@;lnone~(Tt4ByCcb-f zW(aQ7X=DVP9N6Rj70Mi_9$XwWDGO#DBNG=fh_P;(CnqJbwOzX-pk>K8F);Ys%l~fH zN$-Vf5IBfR-@4w4^rW{?Svm|tHc=B%9rTESloT>{pUUV-u9k2L0el_$en~N`Pmgno ziW*VZriezr#}RT@T{kKGlQ`MR@tHQ{(HhhvkY>+a&rDXEP2Z$$C7PCND3^ulH6{(_ zzgE!GbQm^fW1hLm(dxQ>H*VCW-tP4MMI{BNp=718-bQ%!W-eGF*rGI5QZOz<#Kv?? z<}L5UP#+OD|`qxMgFME)JdS_v0Zzreuy*|syZM)Oncjk!&AFRMzN)T2)5FMC1s zN<^h(&Fz#*dD1I4uU|{p;nfK*frC3nWHI4Bt;Q_7$2dYKscLZM!G1*A`8t&3@)+zF zVLoE`F4M>~u!8EK^cQ(&OSj!@&HND*2nT^$aOwrbf65it>e+pKbD=HLPtH8^>2bx; zcXaF6Op*+xr=w>ag>$F&5h%cCHaz^h0z5=VTBm1LK|TI!c+RQ zAu_m>&*k&jqdR6QoNRzdI=ZpJ-RT`lAcoi$1k$=R-a=C(#{(;u%+8`a5_LqDNcOdu z(0RqXqS9w*J!m?P>Ab*nuB8D8HnU$xDGJ%HY$u-@7~rz|Iut8f8m|^V))5+2>qBVE z>;1v9rT(n23OY^)Ol?HZoWCgdm} z@p1aRlqy$6dyo0BkA}ijDq1Y*nRjyC@U%6|RAjyemBSYBf&+dg*IG;|)kz*A^M@R$ZG+%dx#Dii2ck9Cwg&>Ls{O!b4r(3b=ObDMe29nQ53 z_J>f;0#=Ep+`zcAIU-`;DsT3Ocu4>TkV}E{jWBS1^VvPOH%fjw@;r(oah?PF)z zi4K0=P4``QPx#xubp&)z@b>qmEj4k8gJO#$T+ z8n=P`_+Md{gOp*;JXu)R0<|#AP@4FouAXzTPsdDt5D+|^xQK`j-}4rzDQq{CxGe_` zxFJ0PEb+WX{>@)luj5(n6LtWVJ|ZDv0^fr1u_jR-^2O}|(DtHaNy`X>rWsuOGD!wb z7Y5{o^>uZe63!TZ9tG&7oBr*9)Unr`udf+*nUz-QV_FA>YQ}ktY7artkV3Evo)PF>%b|-(untcSO zW@u=WwqsQyQj8Wwlp!3)3^W=mkk#7Sb0DIEzqIcKk+%Wl?B&ocexMO=F5uVM6tLeQ zC^TPu`EsFX0&NRe8};V7`iX}?ijmR&?S2YlEGlDEA{3?`V(tfelt~XC4dU{lMOBb# z-;F4bFOh|5OELeKFsEmoQdeKg!C{rQBP0_(n2sQ*Z5&7C30S)7q+z~+vLx&qu)LCq zfj}UgyfX;V^ui8{0Q~5|5__-H=qVxp;&g5`FMA* zfXy{xgM&*s-F5@9K!0q=B7G#{sDPK(ERtxEoh@U+zFZ>P#ndzrzss>qYWrlaZguF^OC|xy z?XhkVqjADFy_>Dx+~8R8wmCjdA6o0VE3S{3BmI+t{$>6sdhCm-!M#VUZ{Xid~zd%-mDg&ZQ@U7ShaBzSd1-0Rv$zF=^VNWPP z;}3dZe)`+$>f6`kx%0i84@68`o#S}Ny2`z9besi3&H`1bA7fTzgC7@~qll9q#kxr1+& zrTU68OaylCE-xz!%>jf;cn5OHuw4^j*SWd5^SaQG=y!V%XFl&H;=M`+)ipD<(`cv|8=4$r5QXotm|_(8#~!NJ<)); z1;gH5N{FvPb>q5A^3t`D;M1$IeMTKucQ9$!fKwiPq-$29u<9#~lIvS^5oLHd#~2>S z3pC~xD{5?hyLs%wh5KU#ar#Lj8!7Sqn-Jf@bIrCUK^E|=X#XhoI0vqF6%y$*K-D?Z z_4%+uA=Q{Y{Qc1BLL#QfL|IJMaN&UbCfDFUZ#)axIB zKOP5+uWEGEM=Qp&gL4%I^e<5+aVn0oP9X7KI)Ew@#e`pCIy2}iH>mmc znb+=6cls_6-4hxb`nQc80Q5F-eY}U<&&z-Q`Q&<$T8q}4|7UUr@D!PTeRpM?q;3vl z8@UJ$Jg6jm!J@P7J9amgAl7APzZdx54WopAXYuPwg~&aJSH+U&%l+58?H*$aQT=ql zf%al(`K%TyzQ&v`e#0p!?a{ZGr@?i64hHy=6|hbJ_HBjaweaBUNkKA%eX{rv29~u)W z+lpJijv*>ZtQJ_HX1b2C=MmDAr7!iF$Kb)>*Umn-)7zTRy+eALtc%qLm}+ZJ*;h-F zHxoLhCuYDHCD4yf)IWx2#(~JA6RQBRKj;1&##gGA#kT%_$1DsOn5smYpT|p#*)@Tl z*!$jBgmZV}G3emOh}|w44uE~c%c@`w{8_I}R>S6a1yj@mfh1mq_*S+hB=P)9PrUCE6px&+Y9JqRTDpI7pst(8u~?dw zsL#Xp$gS4;rDoh6_CyJeiwDILlobiV~fr;~8 zTr^yHfDp8HOAx0U=u14O#DB-v5kx3hyoC|H#l#!oPum=SNAk8IKJ@R8h~c$__LsEm zqgyDR^0maJCnoZe2vf25VxmF#-+pMzfuXvV3v+P))4So#pXA{?;m>oFIYkPndFA9A-5{Pux}4|HC6u^85HZ z%&h*uT?>C%HQ(>;e|tCl{69Xv%s&>C*spETNCF`IH&1?dE?Rg_AKgt&?Li!>0c@qG zNTbLjIbZztCsF}|7rik}P0JQhcI!yFYI=H)0q74;uOn4E;uZ9=P{BHHjFD>ljlg$aXDa>1Zp_%8wL5ERnfBGK zt-G8xvwU(qG%z|kx`O>SJ9f=)uh84oJd~XNY~S&OS?31(#@TGUsatLR6Vo?rq;A5J zA2u@O(|Ta2l&k-1^<&n8U4MBu>!dQKhKc|*5DGE9kj?K8i3siC0pyHpg39Ab*68ihCu)d_7 z`L%brarPr;LBA4f%5X?<>L=>%$h}^F!ep!&n(hGkx$Af0zWepxK8@gUlZ=+!lAB3M z74C9RYxsim&UNxNOnUjvPTw2jj1vT;5n_di0u#;=^O6>x`Md+Qss9wOqc4K&Vf5s$ z5O4Wn!FD%Cez%Ta%SK6nD6}70IGlM`m2pLG6Sj{>ms%WGuax5)X)cOZFr$wi@Z|0> zp1F0k;MCWO_yGmBpbN@(Qo%RFmg>Wid;sX$A1E-st7?@w5mpkSuLR_w$0o`aKXN!S#MczJn=ymeO<*#%+pMjZC$ zk-7i;qHHl8Gp-RGT(SbqEVqUu@%qsS&&KQ1nXW(m8!grcW)Zx{HUy+27bLbiK?U}& zDNFbjc%djlpD|f>3!dANms`Zd8rpNe?EKrZ2sS#F?^V2OGS@3)WQf|P`>7)q^>$T_}il2gw>@L5VE#uiw>sVMT>oO>2a63W6!>drOw>Niu)) zd=ur-vCjp)s*NJ1GVQ9rc~%Qwr`6?_?Al`5`6u->^_i>^v%Sgt5{(0w2Q>Zn569Xw zo1D*hHPK-pK-%4r5h49l+4X$M9rD)PZrWhHmpT^&c!FNh>kJNKSN{U0lk`h|Z{n-6 zvZ=DR^KgJ|e>NO89N*iyf1qQ@<-=1)onH_~4%A?Cua<=KW_n_vDsH$wdsi&Amoac_ z_5OkKSShdK89ArN+4!~h7I@)xcJ*c4n|U{^Jg@Y!MNRM5xSZPfcF~!_2M>`CQTA0* z$2kl;!S|QV#I#^YJ8Tp^EnXB*2lg8bRSo;{Sa1|v=-}Eef4NsvF-lyfa>%RT_Fw*$ zlnnMtW8+S=uO{V@!3edDiP`NXugiOCV5Iq%K{=w1CDP=yfC-iU_;>tI+JAh?_3v$e zT!vr15Nl){dxN)(ohDY|c~YDM;%~qG(0Jc~)1r4oTV#kG>^`nbAkiTFe|-;>%+AE> zAj0XMWJk5N{mU8lw_iwKfh*$w#|lX{|G&LFDt!sOEU6fu{&WvpelLLO(N%g9rA4kc zHVecHtebHEeo-qb1!GUY*&I~Ymh~9!B3=Hs23GAN$-4SIXEPTO za?QCf{xPD3w%1+_l!>`H9ofVLnGW?jKqJ?eL7M?;*j&$yj&r**9<*w zSWwU&%)*d)A~=>FupYYv~>TB7Y=fCBU?tbl8XlUxg{YRT$r91;#7ri~C}LbL)72x{S>a66kezkh zt(`gel$oQ2>Dms23xo+rP9uYfaOul?HKqjuK{0%axmc&Pv{IVPA6bi4wvRekI@QFK zrdimvai4hkv2S}5OO|AdQp9!^Cmh>IjPUCdlz|XSFYRD$i$==7eRCK>lA3UZ!WFHi zhQncnbLy>A%t`b@rp7_s=S@>;9w|`Q9d!P3h^v^$b@-6WsC6uDELVY+5HTu3O1WG8 zA`+6Dq@WP8$Sg`~5_|@(LZ_MkXp>!30q2=zp?%hBnwq_;1zsR@pg<)~LcMw`EwtKm0<3E6ikG@#GbqXopG%fX}(qG<2=BQ*t~n3%A(s`Y<%b8L$w@i zAC$bx?6o(pUq5AKzqB;h=#AxZXVH;6`JX&Tx`Q+1-@n;q>8S0U-aqb8J|lRiS;87J zwa)Q6?PX;b(#Cr0l|N;`=ij8kv!22toVWHCBV(HF{`Z6BslBFHBXb;N=|b^ShA7=F6_ zVzVo~pxqLZ*!0v?mFS+6JA{xBbm`Jhjc>4Lgu#?lTG~6C4jNl&_`upz$b4+IWw*-Z z@H>CtY2h7~#9<`$pJTN%+O80JyBEo7aMk=WFd#xa4k-fhreOT{RQSpmB8qP53X!m+e|yT$eG*Sm zw6@NeQPY)?c>z`zCz-L|PL7s~Q7~21Y(~T_&mwh8YiomI_x#U3*l;BwkA~4xg|=8p zt>|*&xnbU6IBDcL>gwtsloUY5ATLUB7_HOEdAZXq0K^fXBZZ5IP{GOc4U$yd<}B0P zt&iEe?pRJDj=5tSQNh>qBu26%zIFMDU-`I)jRCfK?jXb(^v-k@34THasq^4`0JkrI zacvsTXU4L_tv->y){a>Kk-^8UGQBU=?Fekecq&#nA3&*MEH*P&v1 zTtu%tuKWo*@?_a!xI{~E&IJq;G3ejQ7YS3iN-;m`XQ^DyQUzj;{Gd;J2;DNr}NsCD{6TNUFuKv5D&Rz~S)#*x#P{tq0W B#XkT5 literal 0 HcmV?d00001 diff --git a/docs/uml-diagrams/ListCommandSequence.png b/docs/uml-diagrams/ListCommandSequence.png new file mode 100644 index 0000000000000000000000000000000000000000..89d135ffffdd2522410d7d7bd518455590dac16c GIT binary patch literal 50937 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 #bcf7cf participant "Inventory" as Inventory <> #d5eac2 participant "Ui" as Ui <> #e5c2ea participant ":Item" as Item #fbffb2 + SuperTracker -> NewCommand : execute() activate NewCommand #cbf7f4 diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index 3363cd1cec..bef338e861 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -5,6 +5,7 @@ import supertracker.item.Item; import java.util.Collections; +import java.util.Comparator; import java.util.List; public class ListCommand implements Command { @@ -33,18 +34,22 @@ public void execute() { List items = Inventory.getItems(); Ui.listIntro(items.size()); + Comparator comparator; + switch (sortBy) { case QUANTITY_FLAG: - items.sort(Item.sortByQuantity()); + comparator = Item.sortByQuantity(); break; case PRICE_FLAG: - items.sort(Item.sortByPrice()); + comparator = Item.sortByPrice(); break; default: - items.sort(Item.sortByName()); + comparator = Item.sortByName(); break; } + items.sort(comparator); + if (reverse) { Collections.reverse(items); } From 391acccec9932109ce1976eb8249f16e566fd6d6 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Fri, 29 Mar 2024 02:42:07 +0800 Subject: [PATCH 109/423] Improve consistency in format and implement updating of expiry date --- docs/DeveloperGuide.md | 6 ++++ .../supertracker/command/UpdateCommand.java | 15 +++++++-- src/main/java/supertracker/parser/Parser.java | 20 +++++++++--- src/main/java/supertracker/ui/Ui.java | 9 ++++-- .../supertracker/command/AddCommandTest.java | 2 +- .../command/DeleteCommandTest.java | 2 +- .../supertracker/command/NewCommandTest.java | 10 +++--- .../command/RemoveCommandTest.java | 3 +- .../command/UpdateCommandTest.java | 32 ++++++++++++++++--- 9 files changed, 77 insertions(+), 22 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 681f55b4fd..c03ab8f915 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -160,6 +160,12 @@ This method parses the input and ensures that the command parameter (item name) method in the class will call the `delete` method from `inventory` class to remove the item. It will then execute the `saveData` method from `FileManager` class to save changes to the inventory. +#### Dependencies +- `Inventory`: Checking and deleting item from inventory +- `Ui`: To notify the user about the successful execution of `DeleteCommand` + +The following sequence diagram shows the execution of a DeleteCommand + ### Find Command The following is a class diagram of the FindCommand and its relevant dependencies ![FindCommandClass](uml-diagrams/FindCommandClass.png) diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index ca89b5ca28..a74d7607cf 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -7,16 +7,21 @@ import supertracker.item.Item; import java.io.IOException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; public class UpdateCommand implements Command { private String name; private int newQuantity; private double newPrice; + private LocalDate newExpiryDate; - public UpdateCommand(String name, int newQuantity, double newPrice) { + public UpdateCommand(String name, int newQuantity, double newPrice, LocalDate newExpiryDate) { this.name = name; this.newQuantity = newQuantity; this.newPrice = newPrice; + this.newExpiryDate = newExpiryDate; } @Override @@ -31,10 +36,16 @@ public void execute() { newPrice = oldItem.getPrice(); } + LocalDate invalidDate = LocalDate.parse("1-1-1", DateTimeFormatter.ofPattern("y-M-d")); + if (newExpiryDate.isEqual(invalidDate)) { + newExpiryDate = oldItem.getExpiryDate(); + } + assert newQuantity >= 0; assert newPrice >= 0; + assert !newExpiryDate.isEqual(invalidDate); - Item newItem = new Item(name, newQuantity, newPrice, oldItem.getExpiryDate()); + Item newItem = new Item(name, newQuantity, newPrice, newExpiryDate); Inventory.put(name, newItem); Ui.updateCommandSuccess(newItem); diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 52b30cef1e..4b39b63414 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -43,6 +43,8 @@ public class Parser { private static final String PRICE_GROUP = "price"; private static final String EX_DATE_GROUP = "expiry"; private static final String EX_DATE_FORMAT = "dd-MM-yyyy"; + protected static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + protected static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private static final String SORT_QUANTITY_FLAG = "sq"; private static final String SORT_PRICE_FLAG = "sp"; private static final String REVERSE_FLAG = "r"; @@ -59,7 +61,8 @@ public class Parser { + "(?<" + EX_DATE_GROUP + ">(?:" + EX_DATE_FLAG + BASE_FLAG + ".*)?) "; private static final String UPDATE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + ".*)?) " - + "(?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) "; + + "(?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) " + + "(?<" + EX_DATE_GROUP + ">(?:" + EX_DATE_FLAG + BASE_FLAG + ".*)?) "; private static final String LIST_COMMAND_REGEX = "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + ".*)?) (?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) " + "(?<" + SORT_QUANTITY_GROUP + ">(?:" + SORT_QUANTITY_FLAG + BASE_FLAG + ".*)?) " @@ -185,7 +188,7 @@ private static double roundTo2Dp(double unroundedValue) { } private static Command parseUpdateCommand(String input) throws TrackerException { - String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG}; + String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG}; Matcher matcher = getPatternMatcher(UPDATE_COMMAND_REGEX, input, flags); if (!matcher.matches()) { @@ -195,8 +198,9 @@ private static Command parseUpdateCommand(String input) throws TrackerException String name = matcher.group(NAME_GROUP).trim(); String quantityString = matcher.group(QUANTITY_GROUP).replace(QUANTITY_FLAG + BASE_FLAG, "").trim(); String priceString = matcher.group(PRICE_GROUP).replace(PRICE_FLAG + BASE_FLAG, "").trim(); + String dateString = matcher.group(EX_DATE_GROUP).replace(EX_DATE_FLAG + BASE_FLAG, "").trim(); - if (name.isEmpty() || (quantityString.isEmpty() && priceString.isEmpty())) { + if (name.isEmpty() || (quantityString.isEmpty() && priceString.isEmpty() && dateString.isEmpty())) { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } @@ -206,6 +210,7 @@ private static Command parseUpdateCommand(String input) throws TrackerException int quantity = -1; double price = -1; + LocalDate expiryDate = LocalDate.parse("1-1-1", DateTimeFormatter.ofPattern("y-M-d")); try { if (!quantityString.isEmpty()) { @@ -214,8 +219,13 @@ private static Command parseUpdateCommand(String input) throws TrackerException if (!priceString.isEmpty()) { price = roundTo2Dp(Double.parseDouble(priceString)); } + if (!dateString.isEmpty()) { + expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); + } } catch (NumberFormatException e) { throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); + } catch (DateTimeParseException e) { + throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); } if (!quantityString.isEmpty() && quantity < 0) { @@ -226,7 +236,7 @@ private static Command parseUpdateCommand(String input) throws TrackerException throw new TrackerException(ErrorMessage.PRICE_TOO_SMALL); } - return new UpdateCommand(name, quantity, price); + return new UpdateCommand(name, quantity, price, expiryDate); } private static Command parseNewCommand(String input) throws TrackerException { @@ -246,7 +256,7 @@ private static Command parseNewCommand(String input) throws TrackerException { } String dateString; - LocalDate expiryDate = null; + LocalDate expiryDate = DATE_NOT_EXIST; boolean hasExpiry = !matcher.group(EX_DATE_GROUP).isEmpty(); diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 1ece7c0b3f..fa0ea953ba 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -3,6 +3,7 @@ import supertracker.TrackerException; import supertracker.item.Item; +import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.List; @@ -40,6 +41,10 @@ private static String expiryDateMessage(Item item) { return "Expiry Date: " + item.getExpiryDate().format(DateTimeFormatter.ofPattern("dd/MM/yyyy")); } + protected static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + + protected static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); + private static String updateItemOpening(Item item) { return item.getName() + " has been successfully updated!"; } @@ -91,11 +96,11 @@ public static void newCommandSuccess(Item item) { printIndent(quantityMessage(item)); printIndent(priceMessage(item)); try { - if (!item.getExpiryDate().isEqual(null)) { + if (!item.getExpiryDate().isEqual(DATE_NOT_EXIST)) { printIndent(expiryDateMessage(item)); } } catch (NullPointerException e) { - assert (item.getExpiryDate().isEqual(null)); +// assert (item.getExpiryDate().isEqual(null)); } } diff --git a/src/test/java/supertracker/command/AddCommandTest.java b/src/test/java/supertracker/command/AddCommandTest.java index 6e86638117..2db6260d31 100644 --- a/src/test/java/supertracker/command/AddCommandTest.java +++ b/src/test/java/supertracker/command/AddCommandTest.java @@ -26,7 +26,7 @@ public void addCommand_validData_correctlyConstructed(){ String name = "Milk"; int quantity = 100; double price = 5.00; - LocalDate date = LocalDate.parse("01/01/2113", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + LocalDate date = LocalDate.parse("01-01-2113", DateTimeFormatter.ofPattern("dd-MM-yyyy")); int quantityToAdd = 50; int newQuantity = quantity + quantityToAdd; diff --git a/src/test/java/supertracker/command/DeleteCommandTest.java b/src/test/java/supertracker/command/DeleteCommandTest.java index 8f87704b7a..46bf331dda 100644 --- a/src/test/java/supertracker/command/DeleteCommandTest.java +++ b/src/test/java/supertracker/command/DeleteCommandTest.java @@ -22,7 +22,7 @@ public void setUp() { int quantity = 100; double price = 5.00; - LocalDate date = LocalDate.parse("01/01/2113", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + LocalDate date = LocalDate.parse("01-01-2113", DateTimeFormatter.ofPattern("dd-MM-yyyy")); Command newCommand = new NewCommand(NAME, quantity, price, date); newCommand.execute(); diff --git a/src/test/java/supertracker/command/NewCommandTest.java b/src/test/java/supertracker/command/NewCommandTest.java index 5731bc00a9..e9604d1485 100644 --- a/src/test/java/supertracker/command/NewCommandTest.java +++ b/src/test/java/supertracker/command/NewCommandTest.java @@ -26,7 +26,7 @@ public void newCommand_validData_correctlyConstructed() { String name = "Milk"; int quantity = 100; double price = 5.00; - LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + LocalDate date = LocalDate.parse("22-08-2013", DateTimeFormatter.ofPattern("dd-MM-yyyy")); Command command = new NewCommand(name, quantity, price, date); command.execute(); @@ -55,13 +55,13 @@ public void newCommand_itemAlreadyInList() { String name = "Milk"; int quantity = 100; double price = 5.00; - LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + LocalDate date = LocalDate.parse("22-08-2013", DateTimeFormatter.ofPattern("dd-MM-yyyy")); Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); - String userInput = "new n/milk q/100 p/5.00 e/22/08/2013"; + String userInput = "new n/milk q/100 p/5.00 e/22-08-2013"; assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); } @@ -82,10 +82,10 @@ public void newCommand_invalidExpiryDate() { String invalidExpiryDateInputNumber = "new n/milk q/100 p/5.33 e/5.33"; assertThrows(TrackerException.class, () -> Parser.parseCommand(invalidExpiryDateInputNumber)); - String invalidExpiryDateYearFormat = "new n/milk q/100 p/5.33 e/22/11/22331"; + String invalidExpiryDateYearFormat = "new n/milk q/100 p/5.33 e/22-11-22331"; assertThrows(TrackerException.class, () -> Parser.parseCommand(invalidExpiryDateYearFormat)); - String invalidExpiryDateOrder = "new n/milk q/100 p/5.33 e/2113/11/13"; + String invalidExpiryDateOrder = "new n/milk q/100 p/5.33 e/21/11/2113"; assertThrows(TrackerException.class, () -> Parser.parseCommand(invalidExpiryDateOrder)); } diff --git a/src/test/java/supertracker/command/RemoveCommandTest.java b/src/test/java/supertracker/command/RemoveCommandTest.java index f5fcdf9481..f9d8610f37 100644 --- a/src/test/java/supertracker/command/RemoveCommandTest.java +++ b/src/test/java/supertracker/command/RemoveCommandTest.java @@ -30,7 +30,8 @@ public void removeCommand_validData_correctlyConstructed(){ int quantityToRemove = 50; int newQuantity = quantity - quantityToRemove; - Command newCommand = new NewCommand(name, quantity, price, null); + LocalDate date = LocalDate.parse("22-08-2013", DateTimeFormatter.ofPattern("dd-MM-yyyy")); + Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); Command removeCommand = new RemoveCommand(name, quantityToRemove); removeCommand.execute(); diff --git a/src/test/java/supertracker/command/UpdateCommandTest.java b/src/test/java/supertracker/command/UpdateCommandTest.java index 5695fecfcb..a2d3315abf 100644 --- a/src/test/java/supertracker/command/UpdateCommandTest.java +++ b/src/test/java/supertracker/command/UpdateCommandTest.java @@ -9,6 +9,7 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.time.format.FormatStyle; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -25,14 +26,16 @@ public void updateCommand_validData_correctlyConstructed(){ String name = "Milk"; int quantity = 100; double price = 5.00; - LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + LocalDate date = LocalDate.parse("22-08-2013", DATE_FORMAT); int newQuantity = 200; double newPrice = 3.00; + LocalDate newExpiryDate = LocalDate.parse("05-12-2113", DATE_FORMAT); Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); - Command updateCommand = new UpdateCommand(name, newQuantity, newPrice); + Command updateCommand = new UpdateCommand(name, newQuantity, newPrice, newExpiryDate); updateCommand.execute(); assertTrue(Inventory.contains(name)); @@ -41,6 +44,7 @@ public void updateCommand_validData_correctlyConstructed(){ assertEquals(name, item.getName()); assertEquals(newQuantity, item.getQuantity()); assertEquals(newPrice, item.getPrice()); + assertEquals(newExpiryDate, item.getExpiryDate()); } @Test @@ -48,7 +52,8 @@ public void updateCommand_invalidInput() { String name = "Milk"; int quantity = 100; double price = 5.00; - LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + LocalDate date = LocalDate.parse("22-08-2013", DATE_FORMAT); Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); @@ -62,7 +67,8 @@ public void updateCommand_emptyParamInput() { String name = "Milk"; int quantity = 100; double price = 5.00; - LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + LocalDate date = LocalDate.parse("22-08-2013", DATE_FORMAT); Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); @@ -76,7 +82,8 @@ public void updateCommand_itemNotInList() { String name = "Milk"; int quantity = 100; double price = 5.00; - LocalDate date = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + LocalDate date = LocalDate.parse("22-08-2013", DATE_FORMAT); Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); @@ -84,4 +91,19 @@ public void updateCommand_itemNotInList() { String userInput = "update n/apple q/20 p/3"; assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); } + + @Test + public void updateCommand_invalidDateInput() { + String name = "Milk"; + int quantity = 100; + double price = 5.00; + DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + LocalDate date = LocalDate.parse("22-08-2013", DATE_FORMAT); + + Command newCommand = new NewCommand(name, quantity, price, date); + newCommand.execute(); + + String userInput = "update n/Milk p/3 e/17/23/13"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } } From b46d83a590bed1ca8d08e368e8f09d046f38fa53 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Fri, 29 Mar 2024 12:44:23 +0800 Subject: [PATCH 110/423] Update Report Command to include expiry type report --- .../supertracker/command/ReportCommand.java | 9 +++-- src/main/java/supertracker/parser/Parser.java | 33 +++++++++++------ .../java/supertracker/ui/ErrorMessage.java | 7 +++- src/main/java/supertracker/ui/Ui.java | 36 ++++++++++++++----- 4 files changed, 62 insertions(+), 23 deletions(-) diff --git a/src/main/java/supertracker/command/ReportCommand.java b/src/main/java/supertracker/command/ReportCommand.java index 70d22b4145..c830b5f3ea 100644 --- a/src/main/java/supertracker/command/ReportCommand.java +++ b/src/main/java/supertracker/command/ReportCommand.java @@ -21,6 +21,7 @@ public void execute() { List items = Inventory.getItems(); List reportItems = new ArrayList<>(); LocalDate currDate = LocalDate.now(); + LocalDate expiryThresholdDate = currDate.plusWeeks(1); if (reportType.equals("low stock")) { for (Item item : items) { if (item.getQuantity() < threshold) { @@ -29,13 +30,15 @@ public void execute() { } Ui.reportCommandSuccess(reportItems, reportType); } - /* for (Item item : items) { - if (item.getExpiryDate() < currDate) { + else if (reportType.equals("expiry")) { + assert threshold == -1; + for (Item item : items) { + if (item.getExpiryDate().isBefore(expiryThresholdDate)) { reportItems.add(item); } } Ui.reportCommandSuccess(reportItems, reportType); - */ + } } @Override diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 64a193ba6e..d9ee5dfa90 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -73,8 +73,10 @@ public class Parser { private static final String REMOVE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; private static final String FIND_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) "; +// private static final String REPORT_COMMAND_REGEX = REPORT_TYPE_FLAG + BASE_FLAG + "(?<" + REPORT_TYPE_GROUP + +// ">.*) " + THRESHOLD_FLAG + BASE_FLAG + "(?<" + THRESHOLD_GROUP + ">.*) "; private static final String REPORT_COMMAND_REGEX = REPORT_TYPE_FLAG + BASE_FLAG + "(?<" + REPORT_TYPE_GROUP + - ">.*) " + THRESHOLD_FLAG + BASE_FLAG + "(?<" + THRESHOLD_GROUP + ">.*) "; + ">.*) " + "(?<" + THRESHOLD_GROUP + ">(?:" + THRESHOLD_FLAG + BASE_FLAG + ".*)?) "; /** @@ -443,24 +445,33 @@ private static Command parseReportCommand(String input) throws TrackerException } String reportType = matcher.group(REPORT_TYPE_GROUP).trim(); - String thresholdString = matcher.group(THRESHOLD_GROUP).trim(); + String thresholdString = matcher.group(THRESHOLD_GROUP). + replace(THRESHOLD_FLAG + BASE_FLAG, "").trim(); - if (reportType.isEmpty() || thresholdString.isEmpty()) { + if (reportType.isEmpty() || (reportType.equals("low stock") && thresholdString.isEmpty())) { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } - int threshold; - - try { - threshold = Integer.parseInt(thresholdString); - } catch (NumberFormatException e) { - throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); + if (reportType.equals("expiry") && !thresholdString.isEmpty()) { + throw new TrackerException(ErrorMessage.INVALID_EXPIRY_REPORT_FORMAT); } - if (threshold < 0) { - throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); + if (!reportType.equals("expiry") && !reportType.equals("low stock")) { + throw new TrackerException(ErrorMessage.INVALID_REPORT_TYPE); } + int threshold = -1; + if (reportType.equals("low stock")){ + try { + threshold = Integer.parseInt(thresholdString); + } catch (NumberFormatException e) { + throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); + } + + if (threshold < 0) { + throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); + } + } return new ReportCommand(reportType, threshold); } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index d951313f3b..32d8124f9b 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -9,7 +9,12 @@ public class ErrorMessage { public static final String INVALID_NEW_ITEM_FORMAT = "Invalid new command format!"; public static final String INVALID_ADD_FORMAT = "Invalid add command format!"; public static final String INVALID_REMOVE_FORMAT = "Invalid remove command format!"; - public static final String INVALID_REPORT_FORMAT = "Invalid report command format!"; + public static final String INVALID_REPORT_FORMAT = "Invalid report command format! Follow 'report r/{report type}" + + " t/{threshold}"; + public static final String INVALID_REPORT_TYPE = "Please select a valid report type. Only 'low stock' and " + + "'expiry' are available."; + public static final String INVALID_EXPIRY_REPORT_FORMAT = "If report type is 'expiry' threshold should not be " + + "specified. "; public static final String ITEM_NOT_IN_LIST_UPDATE = " does not exist in inventory. Unable to update its values. =("; public static final String ITEM_NOT_IN_LIST_DELETE = diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index e4484883d3..861933871d 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -53,14 +53,28 @@ private static String removeItemOpening(Item item, int quantityRemoved) { return quantityRemoved + " " + item.getName() + " removed from inventory!"; } - private static String reportLowStockOpening(Item reportItem, int count) { + private static String reportLowStockOpening(int quantity) { + assert quantity >= 0; + String isOrAre = quantity == 1 ? "is " : "are "; + return "There " + isOrAre + quantity + " items low on stocks!"; + } + private static String reportExpiryOpening(int quantity) { + assert quantity >= 0; + String isOrAre = quantity == 1 ? "is " : "are "; + return "There " + isOrAre + quantity + " items close to expiry!"; + } + private static String reportNameMessage(Item reportItem, int count) { return count + ". Name: " + reportItem.getName(); } - private static String reportLowStockQuantityMessage(Item reportItem) { + private static String reportQuantityMessage(Item reportItem) { return " Current Quantity: " + reportItem.getQuantity(); } + private static String reportExpiryDateMessage(Item reportItem) { + return " Expiry Date: " + reportItem.getExpiryDate(); + } + public static void printIndent(String string) { System.out.println(" " + string); } @@ -115,15 +129,21 @@ public static void removeCommandSuccess(Item item, int quantityRemoved) { } public static void reportCommandSuccess(List reportItems, String reportType) { + int count = 1; if (reportItems.isEmpty()) { printIndent(REPORT_NO_ITEMS_OPENING); - } else { - int count = 1; + } else if (reportType.equals("low stock")) { + printIndent(reportLowStockOpening(reportItems.size())); + for (Item item : reportItems) { + printIndent(reportNameMessage(item, count)); + printIndent(reportQuantityMessage(item)); + count += 1; + } + } else if (reportType.equals("expiry")) { + printIndent(reportExpiryOpening(reportItems.size())); for (Item item : reportItems) { - if (reportType.equals("low stock")) { - printIndent(reportLowStockOpening(item, count)); - printIndent(reportLowStockQuantityMessage(item)); - } + printIndent(reportNameMessage(item, count)); + printIndent(reportExpiryDateMessage(item)); count += 1; } } From cff18c9d7d5840e6c4ed5ee66378618490865f57 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Fri, 29 Mar 2024 12:46:43 +0800 Subject: [PATCH 111/423] Update to follow checkstylemain guidelines --- src/main/java/supertracker/command/ReportCommand.java | 3 +-- src/main/java/supertracker/parser/Parser.java | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/supertracker/command/ReportCommand.java b/src/main/java/supertracker/command/ReportCommand.java index c830b5f3ea..aa6b53b9d8 100644 --- a/src/main/java/supertracker/command/ReportCommand.java +++ b/src/main/java/supertracker/command/ReportCommand.java @@ -29,8 +29,7 @@ public void execute() { } } Ui.reportCommandSuccess(reportItems, reportType); - } - else if (reportType.equals("expiry")) { + } else if (reportType.equals("expiry")) { assert threshold == -1; for (Item item : items) { if (item.getExpiryDate().isBefore(expiryThresholdDate)) { diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index d9ee5dfa90..53c4ae4f1c 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -73,8 +73,7 @@ public class Parser { private static final String REMOVE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; private static final String FIND_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) "; -// private static final String REPORT_COMMAND_REGEX = REPORT_TYPE_FLAG + BASE_FLAG + "(?<" + REPORT_TYPE_GROUP + -// ">.*) " + THRESHOLD_FLAG + BASE_FLAG + "(?<" + THRESHOLD_GROUP + ">.*) "; + private static final String REPORT_COMMAND_REGEX = REPORT_TYPE_FLAG + BASE_FLAG + "(?<" + REPORT_TYPE_GROUP + ">.*) " + "(?<" + THRESHOLD_GROUP + ">(?:" + THRESHOLD_FLAG + BASE_FLAG + ".*)?) "; From bfbc797b130bbc15c6084adde9d6220e68f80d5c Mon Sep 17 00:00:00 2001 From: DavidTay Date: Fri, 29 Mar 2024 14:11:21 +0800 Subject: [PATCH 112/423] Add J unit test for Report Command --- .../command/ReportCommandTest.java | 100 ++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 src/test/java/supertracker/command/ReportCommandTest.java diff --git a/src/test/java/supertracker/command/ReportCommandTest.java b/src/test/java/supertracker/command/ReportCommandTest.java new file mode 100644 index 0000000000..745820aa6e --- /dev/null +++ b/src/test/java/supertracker/command/ReportCommandTest.java @@ -0,0 +1,100 @@ +package supertracker.command; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import supertracker.TrackerException; +import supertracker.item.Inventory; +import supertracker.parser.Parser; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class ReportCommandTest { + private static final String INVALID_EX_DATE_FORMAT = "dd-MM-yyyyy"; + private static final String INVALID_EX_DATE = "01-01-99999"; + private static final String LINE_SEPARATOR = System.lineSeparator(); + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + + @BeforeAll + public static void setUp() { + Inventory.clear(); + + LocalDate currDate = LocalDate.now(); + LocalDate notExpiredDate = currDate.plusWeeks(2); + LocalDate expiredDate = currDate.minusWeeks(2); + LocalDate invalidDate = LocalDate.parse(INVALID_EX_DATE, DateTimeFormatter.ofPattern(INVALID_EX_DATE_FORMAT)); + + Command[] commands = { + new NewCommand("orange", 10, 2.00, currDate), + new NewCommand("apple", 20, 1.00, notExpiredDate), + new NewCommand("banana", 30, 3.00, expiredDate), + new NewCommand("honey", 40, 10, invalidDate) + }; + for (Command c : commands) { + c.execute(); + } + } + + @BeforeEach + public void setUpStreams() { + System.setOut(new PrintStream(outContent)); + } + + @Test + public void reportCommand_lowStock_correctlyConstructed() throws TrackerException { + String userInput = "report r/low stock t/20"; + Command c = Parser.parseCommand(userInput); + c.execute(); + + String expected = " There is 1 items low on stocks!" + LINE_SEPARATOR + + " 1. Name: orange" + LINE_SEPARATOR + + " Current Quantity: 10" + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void reportCommand_expiry_correctlyConstructed() throws TrackerException { + String userInput = "report r/expiry"; + Command c = Parser.parseCommand(userInput); + c.execute(); + + String expected = " There are 2 items close to expiry!" + LINE_SEPARATOR + + " 1. Name: orange" + LINE_SEPARATOR + + " Expiry Date: 2024-03-29" + LINE_SEPARATOR + + " 2. Name: banana" + LINE_SEPARATOR + + " Expiry Date: 2024-03-15" + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void reportCommand_missingParamInput() { + String userInput = "report"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void reportCommand_emptyReportParamInput() { + String userInput = "report r/"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void reportCommand_emptyLowStockThresholdParamInput() { + String userInput = "report r/low stock"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void reportCommand_notEmptyExpiryThresholdParamInput() { + String userInput = "report r/expiry t/1"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } +} From a265317214a58a2541978f806d1a33c89ef9a443 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Fri, 29 Mar 2024 15:44:39 +0800 Subject: [PATCH 113/423] Refactor code in Parser --- src/main/java/supertracker/parser/Parser.java | 260 +++++++++--------- 1 file changed, 123 insertions(+), 137 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 64a193ba6e..77b6dae0d8 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -186,49 +186,102 @@ private static double roundTo2Dp(double unroundedValue) { return Math.round(unroundedValue * ROUNDING_FACTOR) / ROUNDING_FACTOR; } - private static Command parseUpdateCommand(String input) throws TrackerException { - String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG}; - Matcher matcher = getPatternMatcher(UPDATE_COMMAND_REGEX, input, flags); - - if (!matcher.matches()) { - throw new TrackerException(ErrorMessage.INVALID_UPDATE_FORMAT); - } - - String name = matcher.group(NAME_GROUP).trim(); - String quantityString = matcher.group(QUANTITY_GROUP).replace(QUANTITY_FLAG + BASE_FLAG, "").trim(); - String priceString = matcher.group(PRICE_GROUP).replace(PRICE_FLAG + BASE_FLAG, "").trim(); - - if (name.isEmpty() || (quantityString.isEmpty() && priceString.isEmpty())) { - throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); + private static void validateNonNegativeQuantity(String quantityString, int quantity) throws TrackerException { + if (!quantityString.isEmpty() && quantity < 0) { + throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); } + } - if (!Inventory.contains(name)) { - throw new TrackerException(name + ErrorMessage.ITEM_NOT_IN_LIST_UPDATE); + private static void validateNonNegativePrice(String priceString, double price) throws TrackerException { + if (!priceString.isEmpty() && price < 0) { + throw new TrackerException(ErrorMessage.PRICE_TOO_SMALL); } + } + private static int parseQuantity(String quantityString) throws TrackerException { int quantity = -1; - double price = -1; - try { if (!quantityString.isEmpty()) { quantity = Integer.parseInt(quantityString); } + return quantity; + } catch (NumberFormatException e) { + throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); + } + } + + private static double parsePrice(String priceString) throws TrackerException { + double price = -1; + try { if (!priceString.isEmpty()) { price = roundTo2Dp(Double.parseDouble(priceString)); } + return price; } catch (NumberFormatException e) { throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); } + } - if (!quantityString.isEmpty() && quantity < 0) { - throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); + private static LocalDate parseExpiryDate(String dateString) throws TrackerException { + LocalDate expiryDate = LocalDate.parse(INVALID_EX_DATE, DateTimeFormatter.ofPattern(INVALID_EX_DATE_FORMAT)); + try { + if (!dateString.isEmpty()) { + expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); + } + return expiryDate; + } catch (DateTimeParseException e) { + throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); } + } - if (!priceString.isEmpty() && price < 0) { - throw new TrackerException(ErrorMessage.PRICE_TOO_SMALL); + private static void validateItemExistsInInventory(String name, String errorMessage) throws TrackerException { + if (!Inventory.contains(name)) { + throw new TrackerException(name + errorMessage); } + } - return new UpdateCommand(name, quantity, price); + private static void validateItemNotInInventory(String name) throws TrackerException { + if (Inventory.contains(name)) { + throw new TrackerException(name + ErrorMessage.ITEM_IN_LIST_NEW); + } + } + + private static void validateNonEmptyParamsUpdate(String name, String quantityString, String priceString) throws TrackerException { + if (name.isEmpty() || (quantityString.isEmpty() && priceString.isEmpty())) { + throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); + } + } + + private static void validateNonEmptyParam(String string) throws TrackerException { + if (string.isEmpty()) { + throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); + } + } + + private static String getFirstParam(String input, boolean hasQuantity, boolean hasPrice) { + String firstParam = ""; + if (hasQuantity && hasPrice) { + int quantityPosition = input.indexOf(QUANTITY_FLAG + BASE_FLAG); + int pricePosition = input.indexOf(PRICE_FLAG + BASE_FLAG); + firstParam = quantityPosition < pricePosition ? QUANTITY_FLAG : PRICE_FLAG; + } + return firstParam; + } + + private static String getSortBy(String input, boolean hasSortQuantity, boolean hasSortPrice) { + String sortBy = ""; + if (hasSortQuantity && hasSortPrice) { + int sortQuantityPosition = input.indexOf(SORT_QUANTITY_FLAG + BASE_FLAG); + int sortPricePosition = input.indexOf(SORT_PRICE_FLAG + BASE_FLAG); + sortBy = sortQuantityPosition < sortPricePosition ? QUANTITY_FLAG : PRICE_FLAG; + } else if (hasSortQuantity) { + sortBy = QUANTITY_FLAG; + } else if (hasSortPrice) { + sortBy = PRICE_FLAG; + } else { + sortBy = ""; + } + return sortBy; } private static Command parseNewCommand(String input) throws TrackerException { @@ -242,49 +295,45 @@ private static Command parseNewCommand(String input) throws TrackerException { String name = matcher.group(NAME_GROUP).trim(); String quantityString = matcher.group(QUANTITY_GROUP).trim(); String priceString = matcher.group(PRICE_GROUP).trim(); + String dateString = matcher.group(EX_DATE_GROUP).trim().replace(EX_DATE_FLAG + BASE_FLAG, ""); - if (name.isEmpty() || quantityString.isEmpty() || priceString.isEmpty()) { - throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); - } + validateNonEmptyParam(name); + validateNonEmptyParam(quantityString); + validateNonEmptyParam(priceString); + validateItemNotInInventory(name); - String dateString = null; - LocalDate expiryDate = LocalDate.parse(INVALID_EX_DATE, DateTimeFormatter.ofPattern(INVALID_EX_DATE_FORMAT)); + int quantity = parseQuantity(quantityString); + double price = parsePrice(priceString); + LocalDate expiryDate = parseExpiryDate(dateString); - boolean hasExpiry = !matcher.group(EX_DATE_GROUP).isEmpty(); + validateNonNegativeQuantity(quantityString, quantity); + validateNonNegativePrice(priceString, price); - try { - if (hasExpiry) { - dateString = matcher.group(EX_DATE_GROUP).trim().replace(EX_DATE_FLAG + BASE_FLAG, ""); - expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); - } - } catch (DateTimeParseException e) { - throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); - } + return new NewCommand(name, quantity, price, expiryDate); + } - if (Inventory.contains(name)) { - throw new TrackerException(name + ErrorMessage.ITEM_IN_LIST_NEW); + private static Command parseUpdateCommand(String input) throws TrackerException { + String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG}; + Matcher matcher = getPatternMatcher(UPDATE_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_UPDATE_FORMAT); } - int quantity; - double price; + String name = matcher.group(NAME_GROUP).trim(); + String quantityString = matcher.group(QUANTITY_GROUP).replace(QUANTITY_FLAG + BASE_FLAG, "").trim(); + String priceString = matcher.group(PRICE_GROUP).replace(PRICE_FLAG + BASE_FLAG, "").trim(); - // throws NumberFormatException if strings cannot be parsed - try { - quantity = Integer.parseInt(quantityString); - price = roundTo2Dp(Double.parseDouble(priceString)); - } catch (NumberFormatException e) { - throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); - } + validateNonEmptyParamsUpdate(name, quantityString, priceString); + validateItemExistsInInventory(name, ErrorMessage.ITEM_NOT_IN_LIST_UPDATE); - if (quantity < 0) { - throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); - } + int quantity = parseQuantity(quantityString); + double price = parsePrice(priceString); - if (price < 0) { - throw new TrackerException(ErrorMessage.PRICE_TOO_SMALL); - } + validateNonNegativeQuantity(quantityString, quantity); + validateNonNegativePrice(priceString, price); - return new NewCommand(name, quantity, price, expiryDate); + return new UpdateCommand(name, quantity, price); } private static Command parseListCommand(String input) throws TrackerException { @@ -301,26 +350,8 @@ private static Command parseListCommand(String input) throws TrackerException { boolean hasSortPrice = !matcher.group(SORT_PRICE_GROUP).isEmpty(); boolean reverse = !matcher.group(REVERSE_GROUP).isEmpty(); - // to check if q comes before p or vice versa - String firstParam = ""; - if (hasQuantity && hasPrice) { - int quantityPosition = input.indexOf(QUANTITY_FLAG + BASE_FLAG); - int pricePosition = input.indexOf(PRICE_FLAG + BASE_FLAG); - firstParam = quantityPosition < pricePosition ? QUANTITY_FLAG : PRICE_FLAG; - } - - // sort by whichever sorting method comes first - // if sorting method is unspecified then sort by alphabet - String sortBy = ""; - if (hasSortQuantity && hasSortPrice) { - int sortQuantityPosition = input.indexOf(SORT_QUANTITY_FLAG + BASE_FLAG); - int sortPricePosition = input.indexOf(SORT_PRICE_FLAG + BASE_FLAG); - sortBy = sortQuantityPosition < sortPricePosition ? QUANTITY_FLAG : PRICE_FLAG; - } else if (hasSortQuantity) { - sortBy = QUANTITY_FLAG; - } else if (hasSortPrice) { - sortBy = PRICE_FLAG; - } + String firstParam = getFirstParam(input, hasQuantity, hasPrice); + String sortBy = getSortBy(input, hasSortQuantity, hasSortPrice); return new ListCommand(hasQuantity, hasPrice, firstParam, sortBy, reverse); } @@ -336,13 +367,8 @@ private static Command parseDeleteCommand(String input) throws TrackerException String name = matcher.group(NAME_GROUP).trim(); - if (name.isEmpty()) { - throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); - } - - if (!Inventory.contains(name)) { - throw new TrackerException(name + ErrorMessage.ITEM_NOT_IN_LIST_DELETE); - } + validateNonEmptyParam(name); + validateItemExistsInInventory(name, ErrorMessage.ITEM_NOT_IN_LIST_DELETE); return new DeleteCommand(name); } @@ -358,26 +384,12 @@ private static Command parseAddCommand(String input) throws TrackerException { String name = matcher.group(NAME_GROUP).trim(); String quantityString = matcher.group(QUANTITY_GROUP).trim(); - if (name.isEmpty() || quantityString.isEmpty()) { - throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); - } + validateNonEmptyParam(name); + validateNonEmptyParam(quantityString); + validateItemExistsInInventory(name, ErrorMessage.ITEM_NOT_IN_LIST_ADD); - if (!Inventory.contains(name)) { - throw new TrackerException(name + ErrorMessage.ITEM_NOT_IN_LIST_ADD); - } - - int quantity; - - // throws NumberFormatException if strings cannot be parsed - try { - quantity = Integer.parseInt(quantityString); - } catch (NumberFormatException e) { - throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); - } - - if (quantity < 0) { - throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); - } + int quantity = parseQuantity(quantityString); + validateNonNegativeQuantity(quantityString, quantity); return new AddCommand(name,quantity); } @@ -393,26 +405,12 @@ private static Command parseRemoveCommand(String input) throws TrackerException String name = matcher.group(NAME_GROUP).trim(); String quantityString = matcher.group(QUANTITY_GROUP).trim(); - if (name.isEmpty() || quantityString.isEmpty()) { - throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); - } - - if (!Inventory.contains(name)) { - throw new TrackerException(name + ErrorMessage.ITEM_NOT_IN_LIST_REMOVE); - } - - int quantity; + validateNonEmptyParam(name); + validateNonEmptyParam(quantityString); + validateItemExistsInInventory(name, ErrorMessage.ITEM_NOT_IN_LIST_REMOVE); - // throws NumberFormatException if strings cannot be parsed - try { - quantity = Integer.parseInt(quantityString); - } catch (NumberFormatException e) { - throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); - } - - if (quantity < 0) { - throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); - } + int quantity = parseQuantity(quantityString); + validateNonNegativeQuantity(quantityString, quantity); return new RemoveCommand(name, quantity); } @@ -427,9 +425,7 @@ private static Command parseFindCommand(String input) throws TrackerException { String name = matcher.group(NAME_GROUP).trim(); - if (name.isEmpty()) { - throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); - } + validateNonEmptyParam(name); return new FindCommand(name); } @@ -445,21 +441,11 @@ private static Command parseReportCommand(String input) throws TrackerException String reportType = matcher.group(REPORT_TYPE_GROUP).trim(); String thresholdString = matcher.group(THRESHOLD_GROUP).trim(); - if (reportType.isEmpty() || thresholdString.isEmpty()) { - throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); - } - - int threshold; - - try { - threshold = Integer.parseInt(thresholdString); - } catch (NumberFormatException e) { - throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); - } + validateNonEmptyParam(reportType); + validateNonEmptyParam(thresholdString); - if (threshold < 0) { - throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); - } + int threshold = parseQuantity(thresholdString); + validateNonNegativeQuantity(thresholdString, threshold); return new ReportCommand(reportType, threshold); } From 6e72463a164a5ddf0bd771e8e01f731c09b790c8 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Fri, 29 Mar 2024 15:45:23 +0800 Subject: [PATCH 114/423] Change variable name of boolean reverse to isReverse --- src/main/java/supertracker/command/ListCommand.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index bef338e861..de46e844fa 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -15,14 +15,14 @@ public class ListCommand implements Command { private boolean hasPrice; private String firstParam; private String sortBy; - private boolean reverse; + private boolean isReverse; - public ListCommand(boolean hasQuantity, boolean hasPrice, String firstParam, String sortBy, boolean reverse) { + public ListCommand(boolean hasQuantity, boolean hasPrice, String firstParam, String sortBy, boolean isReverse) { this.hasQuantity = hasQuantity; this.hasPrice = hasPrice; this.firstParam = firstParam; this.sortBy = sortBy; - this.reverse = reverse; + this.isReverse = isReverse; } @Override @@ -50,7 +50,7 @@ public void execute() { items.sort(comparator); - if (reverse) { + if (isReverse) { Collections.reverse(items); } From 9a468aad4265d18b41532918460371d6c6fa7858 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Fri, 29 Mar 2024 16:08:48 +0800 Subject: [PATCH 115/423] Add line wrapping --- src/main/java/supertracker/parser/Parser.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 11d5ba7fe5..698a6a2d38 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -247,7 +247,8 @@ private static void validateItemNotInInventory(String name) throws TrackerExcept } } - private static void validateNonEmptyParamsUpdate(String name, String quantityString, String priceString) throws TrackerException { + private static void validateNonEmptyParamsUpdate(String name, String quantityString, String priceString) + throws TrackerException { if (name.isEmpty() || (quantityString.isEmpty() && priceString.isEmpty())) { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } @@ -285,7 +286,8 @@ private static String getSortBy(String input, boolean hasSortQuantity, boolean h return sortBy; } - private static void validateNonEmptyParamsReport(String reportType, String thresholdString) throws TrackerException { + private static void validateNonEmptyParamsReport(String reportType, String thresholdString) + throws TrackerException { if (reportType.isEmpty() || (reportType.equals("low stock") && thresholdString.isEmpty())) { throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); } From a7c662a99716fac562880b17a2930afbe7703a00 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Fri, 29 Mar 2024 16:57:31 +0800 Subject: [PATCH 116/423] Update developer guide for list command --- docs/DeveloperGuide.md | 23 +++++++++++----------- docs/uml-diagrams/ListCommand.puml | 18 +++++++++-------- docs/uml-diagrams/ListCommandClass.png | Bin 45293 -> 45932 bytes docs/uml-diagrams/ListCommandSequence.png | Bin 50937 -> 52597 bytes 4 files changed, 22 insertions(+), 19 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 7f240cb5bd..d595f9c150 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -195,7 +195,7 @@ A ListCommand instance is created by the `parseListCommand` method called by Par - `Inventory`: For getting the list of items in the inventory - `Ui`: To print the list of items in the inventory to the output -The 5 parameters in the constructor `hasQuantity`, `hasPrice`, `firstParam`, `sortBy`, `reverse` are used to determine how the list should be printed out. +The 5 parameters in the constructor `hasQuantity`, `hasPrice`, `firstParam`, `sortBy`, `isReverse` are used to determine how the list should be printed out. - `hasQuantity` - True if the user has input the quantity flag `q/`, false otherwise - Quantity will be printed to the output if true @@ -215,16 +215,16 @@ The 5 parameters in the constructor `hasQuantity`, `hasPrice`, `firstParam`, `so - `"p"` if the user has input the sort by price flag `sp/` - `""` would be the default value if the user did not input any sorting flag - If multiple sorting flags are input by the user, `sortBy` will take the value corresponding to the first sorting flag -- `reverse` +- `isReverse` - True if the user has input the reverse flag `r/`, false otherwise. There are 6 sorting modes in total -1. `sortBy == ""` and `reverse == false`: Alphabetical ascending (e.g. A-Z) -2. `sortBy == ""` and `reverse == true`: Alphabetical descending (e.g. Z-A) -3. `sortBy == "q"` and `reverse == false`: Quantity ascending -4. `sortBy == "q"` and `reverse == true`: Quantity descending -5. `sortBy == "p"` and `reverse == false`: Price ascending -6. `sortBy == "p"` and `reverse == true`: Price descending +1. `sortBy == ""` and `isReverse == false`: Alphabetical ascending (e.g. A-Z) +2. `sortBy == ""` and `isReverse == true`: Alphabetical descending (e.g. Z-A) +3. `sortBy == "q"` and `isReverse == false`: Quantity ascending +4. `sortBy == "q"` and `isReverse == true`: Quantity descending +5. `sortBy == "p"` and `isReverse == false`: Price ascending +6. `sortBy == "p"` and `isReverse == true`: Price descending The following sequence diagram shows the execution of a ListCommand ![ListCommandSequence](uml-diagrams/ListCommandSequence.png) @@ -233,9 +233,10 @@ The following sequence diagram shows the execution of a ListCommand 2. The `getItems` method of the `Inventory` class is called to get an `ArrayList` of items in the inventory 3. The `listIntro` method of the `Ui` class is called to print out the total number of items in the inventory 4. Depending on the value of `sortBy`, either the `sortByQuantity`, `sortByPrice` or `sortByName` method of the `Item` class will be called. -A comparator used to sort the `ArrayList` of items is returned. -5. The `sort` method of the `ArrayList` of items is called with a comparator as an input parameter. -6. For each item in the list, the `listItem` method of the `Ui` class is called to print each item to the output. +A comparator used to sort the `ArrayList` of items is returned +5. The `sort` method of the `ArrayList` of items is called with a comparator as an input parameter +6. If `isReverse` is true, the `reverse` method of the `Collections` class is called to reverse the `ArrayList` of items +7. For each item in the list, the `listItem` method of the `Ui` class is called to print each item to the output ## Product scope ### Target user profile diff --git a/docs/uml-diagrams/ListCommand.puml b/docs/uml-diagrams/ListCommand.puml index 7f4674eade..75b7b0a0ae 100644 --- a/docs/uml-diagrams/ListCommand.puml +++ b/docs/uml-diagrams/ListCommand.puml @@ -24,8 +24,8 @@ class ListCommand { -hasPrice:boolean -firstParam:String -sortBy:String - -reverse:boolean - +NewCommand(hasQuantity:boolean, hasPrice:boolean, firstParam:String, sortBy:String, reverse:boolean) + -isReverse:boolean + +NewCommand(hasQuantity:boolean, hasPrice:boolean, firstParam:String, sortBy:String, isReverse:boolean) +execute():void +isExit():boolean } @@ -56,7 +56,7 @@ participant "SuperTracker" as SuperTracker <> #f5e3a9 participant ":ListCommand" as ListCommand #cbf7f4 participant "Inventory" as Inventory <> #d5eac2 participant "Item" as Item <> #fbffb2 -participant "Collection" as Collection <> #ffcdd6 +participant "Collections" as Collections <> #ffcdd6 participant "Ui" as Ui <> #e5c2ea participant ":ArrayList" as ArrayList #bcf7cf @@ -107,12 +107,14 @@ activate ArrayList #bcf7cf ArrayList --> ListCommand deactivate ArrayList -opt reverse +opt isReverse -ListCommand -> Collection : reverse(items:ArrayList) -activate Collection #ffcdd6 -Collection --> ListCommand -deactivate Collection +ListCommand -> Collections : reverse(items:ArrayList) +activate Collections #ffcdd6 +Collections --> ListCommand +deactivate Collections + +end loop items diff --git a/docs/uml-diagrams/ListCommandClass.png b/docs/uml-diagrams/ListCommandClass.png index 4be93b0163bf0f5ff7afbd8f9b11e200b79fc33e..eeec6c535a508917c16f95a27c9d67636df49169 100644 GIT binary patch literal 45932 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 B#XkT5 diff --git a/docs/uml-diagrams/ListCommandSequence.png b/docs/uml-diagrams/ListCommandSequence.png index 89d135ffffdd2522410d7d7bd518455590dac16c..ebd41d0e5b1cd0aca27069edf00826f2d7ef001a 100644 GIT binary patch literal 52597 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 At^fc4 literal 50937 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 Date: Fri, 29 Mar 2024 17:01:44 +0800 Subject: [PATCH 117/423] Rename reverse to isReverse in parseListCommand --- src/main/java/supertracker/parser/Parser.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 698a6a2d38..efb22bd9bd 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -369,12 +369,12 @@ private static Command parseListCommand(String input) throws TrackerException { boolean hasPrice = !matcher.group(PRICE_GROUP).isEmpty(); boolean hasSortQuantity = !matcher.group(SORT_QUANTITY_GROUP).isEmpty(); boolean hasSortPrice = !matcher.group(SORT_PRICE_GROUP).isEmpty(); - boolean reverse = !matcher.group(REVERSE_GROUP).isEmpty(); + boolean isReverse = !matcher.group(REVERSE_GROUP).isEmpty(); String firstParam = getFirstParam(input, hasQuantity, hasPrice); String sortBy = getSortBy(input, hasSortQuantity, hasSortPrice); - return new ListCommand(hasQuantity, hasPrice, firstParam, sortBy, reverse); + return new ListCommand(hasQuantity, hasPrice, firstParam, sortBy, isReverse); } //@@vimalapugazhan From 703696665256b28cac57df4dfcfbb619d8eef474 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Fri, 29 Mar 2024 17:44:25 +0800 Subject: [PATCH 118/423] Display expiry dates of items when list is called --- .../supertracker/command/ListCommand.java | 13 +++- .../supertracker/command/UpdateCommand.java | 1 - src/main/java/supertracker/parser/Parser.java | 48 +++++++++++-- src/main/java/supertracker/ui/Ui.java | 72 ++++++++++++++++--- .../supertracker/command/ListCommandTest.java | 36 +++++++++- .../command/UpdateCommandTest.java | 23 +++--- 6 files changed, 160 insertions(+), 33 deletions(-) diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index 3363cd1cec..7cdd13a54e 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -10,16 +10,22 @@ public class ListCommand implements Command { private static final String QUANTITY_FLAG = "q"; private static final String PRICE_FLAG = "p"; + private static final String EX_DATE_FLAG = "e"; private boolean hasQuantity; private boolean hasPrice; + private boolean hasExpiry; private String firstParam; + private String secondParam; private String sortBy; private boolean reverse; - public ListCommand(boolean hasQuantity, boolean hasPrice, String firstParam, String sortBy, boolean reverse) { + public ListCommand(boolean hasQuantity, boolean hasPrice, boolean hasExpiry, + String firstParam, String secondParam, String sortBy, boolean reverse) { this.hasQuantity = hasQuantity; this.hasPrice = hasPrice; + this.hasExpiry = hasExpiry; this.firstParam = firstParam; + this.secondParam = secondParam; this.sortBy = sortBy; this.reverse = reverse; } @@ -27,6 +33,7 @@ public ListCommand(boolean hasQuantity, boolean hasPrice, String firstParam, Str @Override public void execute() { assert isValid(firstParam); + assert isValid(secondParam); assert isValid(sortBy); int index = 1; @@ -50,7 +57,7 @@ public void execute() { } for (Item item : items) { - Ui.listItem(item, index, hasQuantity, hasPrice, firstParam); + Ui.listItem(item, index, hasQuantity, hasPrice, hasExpiry, firstParam, secondParam); index++; } } @@ -68,6 +75,6 @@ public boolean isQuit() { * or if the string is empty; {@code false} otherwise. */ private boolean isValid(String s) { - return s.equals(QUANTITY_FLAG) || s.equals(PRICE_FLAG) || s.isEmpty(); + return s.equals(QUANTITY_FLAG) || s.equals(PRICE_FLAG) || s.equals(EX_DATE_FLAG) || s.isEmpty(); } } diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index a74d7607cf..186e0d20fc 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -9,7 +9,6 @@ import java.io.IOException; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.time.format.FormatStyle; public class UpdateCommand implements Command { private String name; diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 4b39b63414..26f2002276 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -17,6 +17,8 @@ import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; +import java.util.ArrayList; +import java.util.Collections; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -47,9 +49,11 @@ public class Parser { protected static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private static final String SORT_QUANTITY_FLAG = "sq"; private static final String SORT_PRICE_FLAG = "sp"; + private static final String SORT_EX_DATE_FLAG = "se"; private static final String REVERSE_FLAG = "r"; private static final String SORT_QUANTITY_GROUP = "sortQuantity"; private static final String SORT_PRICE_GROUP = "sortPrice"; + private static final String SORT_EX_DATE_GROUP = "sortExpiry"; private static final String REVERSE_GROUP = "reverse"; private static final String REPORT_TYPE_FLAG = "r"; private static final String REPORT_TYPE_GROUP = "reportType"; @@ -65,8 +69,10 @@ public class Parser { + "(?<" + EX_DATE_GROUP + ">(?:" + EX_DATE_FLAG + BASE_FLAG + ".*)?) "; private static final String LIST_COMMAND_REGEX = "(?<" + QUANTITY_GROUP + ">(?:" + QUANTITY_FLAG + BASE_FLAG + ".*)?) (?<" + PRICE_GROUP + ">(?:" + PRICE_FLAG + BASE_FLAG + ".*)?) " + + "(?<" + EX_DATE_GROUP + ">(?:" + EX_DATE_FLAG + BASE_FLAG + ".*)?) " + "(?<" + SORT_QUANTITY_GROUP + ">(?:" + SORT_QUANTITY_FLAG + BASE_FLAG + ".*)?) " + "(?<" + SORT_PRICE_GROUP + ">(?:" + SORT_PRICE_FLAG + BASE_FLAG + ".*)?) " + + "(?<" + SORT_EX_DATE_FLAG + ">(?:" + SORT_EX_DATE_FLAG + BASE_FLAG + ".*)?) " + "(?<" + REVERSE_GROUP + ">(?:" + REVERSE_FLAG + BASE_FLAG + ".*)?) "; private static final String DELETE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) "; private static final String ADD_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " @@ -296,7 +302,8 @@ private static Command parseNewCommand(String input) throws TrackerException { } private static Command parseListCommand(String input) throws TrackerException { - String[] flags = {QUANTITY_FLAG, PRICE_FLAG, SORT_QUANTITY_FLAG, SORT_PRICE_FLAG, REVERSE_FLAG}; + String[] flags = {QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG, SORT_QUANTITY_FLAG, SORT_PRICE_FLAG, + SORT_EX_DATE_FLAG, REVERSE_FLAG}; Matcher matcher = getPatternMatcher(LIST_COMMAND_REGEX, input, flags); if (!matcher.matches()) { @@ -305,16 +312,45 @@ private static Command parseListCommand(String input) throws TrackerException { boolean hasQuantity = !matcher.group(QUANTITY_GROUP).isEmpty(); boolean hasPrice = !matcher.group(PRICE_GROUP).isEmpty(); + boolean hasExpiry = !matcher.group(EX_DATE_GROUP).isEmpty(); boolean hasSortQuantity = !matcher.group(SORT_QUANTITY_GROUP).isEmpty(); boolean hasSortPrice = !matcher.group(SORT_PRICE_GROUP).isEmpty(); + //boolean hasSortExpiry = !matcher.group(SORT_EX_DATE_GROUP).isEmpty(); boolean reverse = !matcher.group(REVERSE_GROUP).isEmpty(); + ArrayList position = new ArrayList<>(); // to check if q comes before p or vice versa String firstParam = ""; - if (hasQuantity && hasPrice) { - int quantityPosition = input.indexOf(QUANTITY_FLAG + BASE_FLAG); - int pricePosition = input.indexOf(PRICE_FLAG + BASE_FLAG); - firstParam = quantityPosition < pricePosition ? QUANTITY_FLAG : PRICE_FLAG; + String secondParam = ""; + + int quantityPosition; + int pricePosition; + int expiryPosition; + + if (hasQuantity) { + quantityPosition = input.indexOf(QUANTITY_FLAG + BASE_FLAG); + position.add(quantityPosition); + } + if (hasPrice) { + pricePosition = input.indexOf(PRICE_FLAG + BASE_FLAG); + position.add(pricePosition); + } + if (hasExpiry) { + expiryPosition = input.indexOf(EX_DATE_FLAG + BASE_FLAG); + position.add(expiryPosition); + } + + int firstParamPos; + int secondParamPos; + Collections.sort(position); + try { + firstParamPos = position.get(0); + secondParamPos = position.get(1); + + firstParam = input.substring(firstParamPos, firstParamPos + 1); + secondParam = input.substring(secondParamPos, secondParamPos + 1); + } catch (NullPointerException | IndexOutOfBoundsException ignored) { + assert (position.size() < 2); } // sort by whichever sorting method comes first @@ -330,7 +366,7 @@ private static Command parseListCommand(String input) throws TrackerException { sortBy = PRICE_FLAG; } - return new ListCommand(hasQuantity, hasPrice, firstParam, sortBy, reverse); + return new ListCommand(hasQuantity, hasPrice, hasExpiry, firstParam, secondParam, sortBy, reverse); } //@@vimalapugazhan diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index fa0ea953ba..860d7f2fb3 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -1,6 +1,5 @@ package supertracker.ui; -import supertracker.TrackerException; import supertracker.item.Item; import java.time.LocalDate; @@ -12,6 +11,7 @@ public class Ui { private static final String LINE = " --------------------------------------------------------------------------"; private static final String QUANTITY_FLAG = "q"; private static final String PRICE_FLAG = "p"; + private static final String EX_DATE_FLAG = "e"; private static final String EMPTY_LIST_MESSAGE = "Nothing to list! No items in inventory!"; private static final String SINGLE_ITEM_LIST_MESSAGE= "There is 1 unique item in your inventory:"; private static final String INVALID_COMMAND_MESSAGE = "Sorry! Invalid command!"; @@ -37,8 +37,9 @@ private static String newItemOpening(Item item) { return item.getName() + " has been added to the inventory!"; } + private static final DateTimeFormatter DATE_FORMAT_PRINT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); private static String expiryDateMessage(Item item) { - return "Expiry Date: " + item.getExpiryDate().format(DateTimeFormatter.ofPattern("dd/MM/yyyy")); + return "Expiry Date: " + item.getExpiryDate().format(DATE_FORMAT_PRINT); } protected static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); @@ -100,7 +101,7 @@ public static void newCommandSuccess(Item item) { printIndent(expiryDateMessage(item)); } } catch (NullPointerException e) { -// assert (item.getExpiryDate().isEqual(null)); + assert (item.getExpiryDate().isEqual(null)); } } @@ -108,6 +109,7 @@ public static void updateCommandSuccess(Item item) { printIndent(updateItemOpening(item)); printIndent(quantityMessage(item)); printIndent(priceMessage(item)); + printIndent(expiryDateMessage(item)); } public static void deleteCommandSuccess(String name) { @@ -158,24 +160,78 @@ public static void findIntro() { printIndent(FIND_OPENING_MESSAGE); } - public static void listItem(Item item, int index, boolean hasQuantity, boolean hasPrice, String firstParam) { + public static void listItem(Item item, int index, boolean hasQuantity, boolean hasPrice, + boolean hasExpiry, String firstParam, String secondParam) { + String stringToPrint = index + ". Name: " + item.getName(); String quantityString = " Quantity: " + item.getQuantity(); String priceString = " Price: " + item.getPriceString(); + String expiryString; + if (!item.getExpiryDate().isEqual(DATE_NOT_EXIST)) { + expiryString = " Expiry Date: " + item.getExpiryDate().format(DATE_FORMAT_PRINT); + } else { + expiryString = ""; + } + stringToPrint = getStringToPrint(hasQuantity, hasPrice, hasExpiry, firstParam, secondParam, + stringToPrint, quantityString, priceString, expiryString); + printIndent(stringToPrint); + } + + private static String getStringToPrint(boolean hasQuantity, boolean hasPrice, boolean hasExpiry, String firstParam, + String secondParam, String stringToPrint, String quantityString, String priceString, String expiryString) { - if (hasQuantity && hasPrice) { + if (hasQuantity && hasPrice && hasExpiry) { + switch (firstParam) { + case QUANTITY_FLAG: + if (secondParam.equals(PRICE_FLAG)) { + stringToPrint += (quantityString + priceString + expiryString); + } else { + stringToPrint += (quantityString + expiryString + priceString); + } + break; + case PRICE_FLAG: + if (secondParam.equals(QUANTITY_FLAG)) { + stringToPrint += (priceString + quantityString + expiryString); + } else { + stringToPrint += (priceString + expiryString + quantityString); + } + break; + case EX_DATE_FLAG: + if (secondParam.equals(quantityString)) { + stringToPrint += (expiryString + quantityString + priceString); + } else { + stringToPrint += (expiryString + priceString + quantityString); + } + break; + default: + return stringToPrint; //review + } + } else if (hasQuantity && hasPrice) { if (firstParam.equals(QUANTITY_FLAG)) { stringToPrint += (quantityString + priceString); - } else if (firstParam.equals(PRICE_FLAG)) { + } else { stringToPrint += (priceString + quantityString); } + } else if (hasQuantity && hasExpiry) { + if (firstParam.equals(QUANTITY_FLAG)) { + stringToPrint += (quantityString + expiryString); + } else { + stringToPrint += (expiryString + quantityString); + } + } else if (hasPrice && hasExpiry) { + if (firstParam.equals(PRICE_FLAG)) { + stringToPrint += (priceString + expiryString); + } else { + stringToPrint += (expiryString + priceString); + } } else if (hasQuantity) { stringToPrint += quantityString; } else if (hasPrice) { stringToPrint += priceString; + } else if (hasExpiry) { + stringToPrint += expiryString; } - - printIndent(stringToPrint); + return stringToPrint; } public static void printError(String errorMessage) { diff --git a/src/test/java/supertracker/command/ListCommandTest.java b/src/test/java/supertracker/command/ListCommandTest.java index 3aaffbc980..4047dacc80 100644 --- a/src/test/java/supertracker/command/ListCommandTest.java +++ b/src/test/java/supertracker/command/ListCommandTest.java @@ -30,6 +30,9 @@ public class ListCommandTest { private static final String A_PRICE = " Price: $2.00"; private static final String B_PRICE = " Price: $1.00"; private static final String C_PRICE = " Price: $3.00"; + protected static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + protected static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + protected static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private static final String A_EX_DATE = " Expiry Date: 01/01/2113"; private static final String B_EX_DATE = " Expiry Date: 13/03/2023"; private static final String C_EX_DATE = " Expiry Date: 22/08/2013"; @@ -40,9 +43,9 @@ public class ListCommandTest { @BeforeAll public static void setUp() { Inventory.clear(); - LocalDate dateA = LocalDate.parse("01/01/2113", DateTimeFormatter.ofPattern("dd/MM/yyyy")); - LocalDate dateB = LocalDate.parse("13/03/2023", DateTimeFormatter.ofPattern("dd/MM/yyyy")); - LocalDate dateC = LocalDate.parse("22/08/2013", DateTimeFormatter.ofPattern("dd/MM/yyyy")); + LocalDate dateA = LocalDate.parse("01-01-2113", DATE_FORMAT); + LocalDate dateB = LocalDate.parse("13-03-2023", DATE_FORMAT); + LocalDate dateC = LocalDate.parse("22-08-2013", DATE_FORMAT); Command[] commands = { new NewCommand("Apple", 3, 2.00, dateA), @@ -163,6 +166,33 @@ public void listCommand_priceBeforeQuantity_correctlyConstructed() throws Tracke assertEquals(expected, actual); } + @Test + public void listCommand_expiryDate_correctlyConstructed() throws TrackerException { + String userInput = "list e/"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + A_NAME + A_EX_DATE + LINE_SEPARATOR + + INDEX_2 + B_NAME + B_EX_DATE + LINE_SEPARATOR + + INDEX_3 + C_NAME + C_EX_DATE + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void listCommand_expiryDateBeforePriceQuantity_correctlyConstructed() throws TrackerException { + String userInput = "list e/ p/ q/"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + A_NAME + A_EX_DATE + A_PRICE + A_QUANTITY + LINE_SEPARATOR + + INDEX_2 + B_NAME + B_EX_DATE + B_PRICE + B_QUANTITY + LINE_SEPARATOR + + INDEX_3 + C_NAME + C_EX_DATE + C_PRICE + C_QUANTITY + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @AfterEach public void restoreStreams() { System.setOut(originalOut); diff --git a/src/test/java/supertracker/command/UpdateCommandTest.java b/src/test/java/supertracker/command/UpdateCommandTest.java index a2d3315abf..25f775a45f 100644 --- a/src/test/java/supertracker/command/UpdateCommandTest.java +++ b/src/test/java/supertracker/command/UpdateCommandTest.java @@ -9,7 +9,6 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.time.format.FormatStyle; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; @@ -26,12 +25,12 @@ public void updateCommand_validData_correctlyConstructed(){ String name = "Milk"; int quantity = 100; double price = 5.00; - DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); - LocalDate date = LocalDate.parse("22-08-2013", DATE_FORMAT); + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + LocalDate date = LocalDate.parse("22-08-2013", dateFormat); int newQuantity = 200; double newPrice = 3.00; - LocalDate newExpiryDate = LocalDate.parse("05-12-2113", DATE_FORMAT); + LocalDate newExpiryDate = LocalDate.parse("05-12-2113", dateFormat); Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); @@ -52,8 +51,8 @@ public void updateCommand_invalidInput() { String name = "Milk"; int quantity = 100; double price = 5.00; - DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); - LocalDate date = LocalDate.parse("22-08-2013", DATE_FORMAT); + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + LocalDate date = LocalDate.parse("22-08-2013", dateFormat); Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); @@ -67,8 +66,8 @@ public void updateCommand_emptyParamInput() { String name = "Milk"; int quantity = 100; double price = 5.00; - DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); - LocalDate date = LocalDate.parse("22-08-2013", DATE_FORMAT); + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + LocalDate date = LocalDate.parse("22-08-2013", dateFormat); Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); @@ -82,8 +81,8 @@ public void updateCommand_itemNotInList() { String name = "Milk"; int quantity = 100; double price = 5.00; - DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); - LocalDate date = LocalDate.parse("22-08-2013", DATE_FORMAT); + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + LocalDate date = LocalDate.parse("22-08-2013", dateFormat); Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); @@ -97,8 +96,8 @@ public void updateCommand_invalidDateInput() { String name = "Milk"; int quantity = 100; double price = 5.00; - DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); - LocalDate date = LocalDate.parse("22-08-2013", DATE_FORMAT); + DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + LocalDate date = LocalDate.parse("22-08-2013", dateFormat); Command newCommand = new NewCommand(name, quantity, price, date); newCommand.execute(); From 766aa2e3c3555b45d7bec1bfe08d5c87a5fd433f Mon Sep 17 00:00:00 2001 From: DavidTay Date: Fri, 29 Mar 2024 20:13:33 +0800 Subject: [PATCH 119/423] Refactored code to follow comments from code review --- .../supertracker/command/ReportCommand.java | 31 +++++++++++------- src/main/java/supertracker/ui/Ui.java | 32 ++++++++++++------- 2 files changed, 39 insertions(+), 24 deletions(-) diff --git a/src/main/java/supertracker/command/ReportCommand.java b/src/main/java/supertracker/command/ReportCommand.java index aa6b53b9d8..d659647e45 100644 --- a/src/main/java/supertracker/command/ReportCommand.java +++ b/src/main/java/supertracker/command/ReportCommand.java @@ -23,20 +23,27 @@ public void execute() { LocalDate currDate = LocalDate.now(); LocalDate expiryThresholdDate = currDate.plusWeeks(1); if (reportType.equals("low stock")) { - for (Item item : items) { - if (item.getQuantity() < threshold) { - reportItems.add(item); - } - } - Ui.reportCommandSuccess(reportItems, reportType); + createLowStockReport(items, reportItems); } else if (reportType.equals("expiry")) { - assert threshold == -1; - for (Item item : items) { - if (item.getExpiryDate().isBefore(expiryThresholdDate)) { - reportItems.add(item); - } + createExpiryReport(items, expiryThresholdDate, reportItems); + } + Ui.reportCommandSuccess(reportItems, reportType); + } + + private void createExpiryReport(List items, LocalDate expiryThresholdDate, List reportItems) { + assert threshold == -1; + for (Item item : items) { + if (item.getExpiryDate().isBefore(expiryThresholdDate)) { + reportItems.add(item); + } + } + } + + private void createLowStockReport(List items, List reportItems) { + for (Item item : items) { + if (item.getQuantity() < threshold) { + reportItems.add(item); } - Ui.reportCommandSuccess(reportItems, reportType); } } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 861933871d..109337f3b1 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -133,19 +133,27 @@ public static void reportCommandSuccess(List reportItems, String reportTyp if (reportItems.isEmpty()) { printIndent(REPORT_NO_ITEMS_OPENING); } else if (reportType.equals("low stock")) { - printIndent(reportLowStockOpening(reportItems.size())); - for (Item item : reportItems) { - printIndent(reportNameMessage(item, count)); - printIndent(reportQuantityMessage(item)); - count += 1; - } + lowStockSuccess(reportItems, count); } else if (reportType.equals("expiry")) { - printIndent(reportExpiryOpening(reportItems.size())); - for (Item item : reportItems) { - printIndent(reportNameMessage(item, count)); - printIndent(reportExpiryDateMessage(item)); - count += 1; - } + expirySuccess(reportItems, count); + } + } + + private static void expirySuccess(List reportItems, int count) { + printIndent(reportExpiryOpening(reportItems.size())); + for (Item item : reportItems) { + printIndent(reportNameMessage(item, count)); + printIndent(reportExpiryDateMessage(item)); + count += 1; + } + } + + private static void lowStockSuccess(List reportItems, int count) { + printIndent(reportLowStockOpening(reportItems.size())); + for (Item item : reportItems) { + printIndent(reportNameMessage(item, count)); + printIndent(reportQuantityMessage(item)); + count += 1; } } From abc3cbd336fa468ed02b3974a507669b5fada139 Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 30 Mar 2024 11:37:30 +0800 Subject: [PATCH 120/423] Refactor FileManager --- .../java/supertracker/storage/FileManager.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/main/java/supertracker/storage/FileManager.java b/src/main/java/supertracker/storage/FileManager.java index 7374ef06af..ffa3f86f00 100644 --- a/src/main/java/supertracker/storage/FileManager.java +++ b/src/main/java/supertracker/storage/FileManager.java @@ -24,7 +24,7 @@ public class FileManager { protected static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); protected static final String NO_DATE = "no date"; protected static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); - protected static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); + protected static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); protected static final int MAX_NUMBER_OF_PARAMS = 5; protected static final int NAME_INDEX = 0; protected static final int QUANTITY_INDEX = 1; @@ -81,12 +81,12 @@ public static void loadData() throws IOException { } Inventory.clear(); - Scanner s = new Scanner(saveFile); + Scanner fileScanner = new Scanner(saveFile); String itemData; int corruptedData = 0; - while (s.hasNext()) { + while (fileScanner.hasNext()) { try { - itemData = s.nextLine(); + itemData = fileScanner.nextLine(); Item item = parseItemData(itemData); Inventory.put(item.getName(), item); } catch (Exception e) { @@ -96,7 +96,7 @@ public static void loadData() throws IOException { if (corruptedData != 0) { Ui.printError(ErrorMessage.FILE_CORRUPTED_ERROR); } - s.close(); + fileScanner.close(); } private static String getItemData(Item item) { @@ -112,7 +112,7 @@ private static String getItemData(Item item) { LocalDate exDate = item.getExpiryDate(); String date = NO_DATE; - if (!exDate.isEqual(DATE_NOT_EXIST)) { + if (!exDate.isEqual(UNDEFINED_DATE)) { date = exDate.format(DATE_FORMAT); } @@ -140,7 +140,7 @@ private static Item parseItemData(String itemData) throws Exception { throw new Exception(); } - LocalDate date = DATE_NOT_EXIST; + LocalDate date = UNDEFINED_DATE; if (!data[DATE_INDEX].equals(NO_DATE)) { date = LocalDate.parse(data[DATE_INDEX], DATE_FORMAT); } From 8e4677f02c5583f2b5ad074ab3ca8eaaa6e2e866 Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 30 Mar 2024 11:57:04 +0800 Subject: [PATCH 121/423] Add comments Add comments for regex related methods --- src/main/java/supertracker/parser/Parser.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index efb22bd9bd..b217051cf9 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -91,6 +91,12 @@ private static String getCommandWord(String input) { return input.substring(0, input.indexOf(" ")); } + /** + * Returns the string of parameters right after the first word separated by white space in the user's input + * + * @param input a String of the user's input + * @return a String of the parameters in the user input + */ private static String getParameters(String input) { if (!input.contains(" ")) { return ""; @@ -145,13 +151,16 @@ public static Command parseCommand(String input) throws TrackerException { } /** - * Returns a String in the format of a regex expression pattern for parsing of command inputs + * Returns a String in the format of a regex expression pattern for parsing of command inputs. The format depends + * on the order of the flags in the input paramFlags String array. The inputParams "q/28 n/name n/nine" with the + * paramFlags {n, q}, for example, will return a String "n/name q/28 " accordingly. * * @param inputParams a String of the input parameters * @param paramFlags a String array with the specified flags to split the input parameters * @return a String of the input parameters in the format of a regex expression specified by the input flags */ private static String makeStringPattern(String inputParams, String[] paramFlags) { + // Build the regex to split the inputParam String StringBuilder flagBuilder = new StringBuilder(); for (String flag : paramFlags) { flagBuilder.append(flag); @@ -176,6 +185,16 @@ private static String makeStringPattern(String inputParams, String[] paramFlags) return stringPattern.toString(); } + /** + * Creates a relevant pattern string from the user's input parameters and matches the string to a regular + * expression, returning a new Matcher object. + * + * @param regex the regular expression for any specific command input + * @param input a String of the user's input parameters + * @param paramFlags a String array with the specified flags to split the input parameters + * @return a Matcher object that will check for a match between the user's input parameters and the relevant + * regular expression + */ private static Matcher getPatternMatcher(String regex, String input, String[] paramFlags) { Pattern p = Pattern.compile(regex); String commandPattern = makeStringPattern(input, paramFlags); From dffcb15e2e1ff7907f77354e6284c767711f0aa0 Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 30 Mar 2024 12:17:54 +0800 Subject: [PATCH 122/423] Update JUnit tests Change string date output formats in UI for consistency --- src/main/java/supertracker/parser/Parser.java | 5 ++--- src/main/java/supertracker/ui/Ui.java | 5 +++-- .../java/supertracker/command/ReportCommandTest.java | 9 +++++++-- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index b217051cf9..178b34e3c7 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -93,7 +93,7 @@ private static String getCommandWord(String input) { /** * Returns the string of parameters right after the first word separated by white space in the user's input - * + * * @param input a String of the user's input * @return a String of the parameters in the user input */ @@ -192,8 +192,7 @@ private static String makeStringPattern(String inputParams, String[] paramFlags) * @param regex the regular expression for any specific command input * @param input a String of the user's input parameters * @param paramFlags a String array with the specified flags to split the input parameters - * @return a Matcher object that will check for a match between the user's input parameters and the relevant - * regular expression + * @return a Matcher object that will check for a match between the user's input parameters and the relevant regex */ private static Matcher getPatternMatcher(String regex, String input, String[] paramFlags) { Pattern p = Pattern.compile(regex); diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 109337f3b1..6a03f17885 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -19,6 +19,7 @@ public class Ui { private static final String BASIC_ERROR_MESSAGE = "Oh no! An error has occurred in your input"; private static final String FIND_OPENING_MESSAGE = "Here are your found items:"; private static final String REPORT_NO_ITEMS_OPENING = "There are no items that fit the criteria!"; + private static final DateTimeFormatter VALID_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); private static String listSize(int size){ return ("There are " + size + " unique items in your inventory:"); @@ -35,7 +36,7 @@ private static String newItemOpening(Item item) { return item.getName() + " has been added to the inventory!"; } private static String expiryDateMessage(Item item) { - return "Expiry Date: " + item.getExpiryDate().format(DateTimeFormatter.ofPattern("dd/MM/yyyy")); + return "Expiry Date: " + item.getExpiryDate().format(VALID_DATE_FORMAT); } private static String updateItemOpening(Item item) { return item.getName() + " has been successfully updated!"; @@ -72,7 +73,7 @@ private static String reportQuantityMessage(Item reportItem) { } private static String reportExpiryDateMessage(Item reportItem) { - return " Expiry Date: " + reportItem.getExpiryDate(); + return " Expiry Date: " + reportItem.getExpiryDate().format(VALID_DATE_FORMAT); } public static void printIndent(String string) { diff --git a/src/test/java/supertracker/command/ReportCommandTest.java b/src/test/java/supertracker/command/ReportCommandTest.java index 745820aa6e..dc36255d54 100644 --- a/src/test/java/supertracker/command/ReportCommandTest.java +++ b/src/test/java/supertracker/command/ReportCommandTest.java @@ -17,6 +17,7 @@ public class ReportCommandTest { private static final String INVALID_EX_DATE_FORMAT = "dd-MM-yyyyy"; + private static final DateTimeFormatter VALID_EX_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); private static final String INVALID_EX_DATE = "01-01-99999"; private static final String LINE_SEPARATOR = System.lineSeparator(); private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); @@ -65,11 +66,15 @@ public void reportCommand_expiry_correctlyConstructed() throws TrackerException Command c = Parser.parseCommand(userInput); c.execute(); + LocalDate currDate = LocalDate.now(); + String dateToday = currDate.format(VALID_EX_DATE_FORMAT); + String dateTwoWeeksAgo = currDate.minusWeeks(2).format(VALID_EX_DATE_FORMAT); + String expected = " There are 2 items close to expiry!" + LINE_SEPARATOR + " 1. Name: orange" + LINE_SEPARATOR + - " Expiry Date: 2024-03-29" + LINE_SEPARATOR + + " Expiry Date: " + dateToday + LINE_SEPARATOR + " 2. Name: banana" + LINE_SEPARATOR + - " Expiry Date: 2024-03-15" + LINE_SEPARATOR; + " Expiry Date: " + dateTwoWeeksAgo + LINE_SEPARATOR; String actual = outContent.toString(); assertEquals(expected, actual); } From 2b5e3d5fe0a289e491a404a4db474a987e855cc4 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 31 Mar 2024 23:42:44 +0800 Subject: [PATCH 123/423] Setup user guide --- docs/UserGuide.md | 206 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 182 insertions(+), 24 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index abd9fbe891..afb7a4cfa6 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -1,42 +1,200 @@ # User Guide -## Introduction +## SuperTracker -{Give a product intro} +SuperTracker is a desktop app for managing a supermarket's inventory, +optimized for use via a Command Line Interface (CLI). -## 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). - -## Features +- [Quick Start](#quick-start) +- [Features](#features-) + - [Create a new item: `new`](#create-a-new-item-new) + - [Delete an item: `delete`](#delete-an-item-delete) + - [Increase quantity: `add`](#increase-quantity-add) + - [Decrease quantity: `remove`](#decrease-quantity-remove) + - [Update an item: `update`](#update-an-item-update) + - [List all items: `list`](#list-all-items-list) + - [Quit the program: `quit`](#quit-the-program-quit) -{Give detailed description of each feature} +-------------------------------------------------------------------------------------------------------------------- -### Adding a todo: `todo` -Adds a new item to the list of todo items. - -Format: `todo n/TODO_NAME d/DEADLINE` +## Quick Start -* The `DEADLINE` can be in a natural language format. -* The `TODO_NAME` cannot contain punctuation. +1. Ensure that you have Java 11 or above installed in your Computer. +2. Download the latest `SuperTracker.jar` from [here](http://link.to/duke). +3. Open a command terminal, cd into the folder you put the jar file in, and use the `java -jar SuperTracker.jar` command to run the application. +4. Type the command in the command box and press Enter to execute it. +5. Refer to the [Features](#features-) below for details of each command and its format. -Example of usage: +-------------------------------------------------------------------------------------------------------------------- -`todo n/Write the rest of the User Guide d/next week` +## Features -`todo n/Refactor the User Guide to remove passive voice d/13/04/2020` +> Notes about the command format: +> - Words in uppercase are parameters to be specified by the user +> - e.g. in `add n/NAME q/QUANTITY`, `NAME` and `QUANTITY` are parameters which can be used as `add n/cheese q/100` +> - Items in square brackets are optional +> - e.g. `list [q/] [p/]` can be used as `list q/`, `list p/`, `list` etc. +> - Parameters can be in any order +> - e.g. if the command specifies `n/NAME q/QUANTITY`, `q/QUANTITY n/NAME` is also acceptable +> - Commands that do not take in parameters will ignore any additional parameters input by the user +> - e.g. if the command specifies `quit now`, it will be interpreted as `quit` +> - If the command has multiple of the same parameters, it uses the first occurrence of that parameter +> - e.g. if the command specifies `new n/Milk q/100 p/5 n/Cheese`, it will be interpreted as `new n/Milk q/100 p/5` +> - If any of the compulsory parameters are empty an error is thrown + +
+ +### Create a new item: `new` +Create a new item in the inventory + +Format: `new n/NAME q/QUANTITY p/PRICE` + +- `NAME` is case-insensitive + - e.g. `Cheese` will be interpreted as `cheese` +- If `NAME` already exists in the inventory, use the **update** command instead +- `QUANTITY` must be a non-negative integer + - e.g. 1, 10, 100 +- `PRICE` must be a non-negative integer or decimal number + - e.g. 1, 0.20, 12.3, 12.345 +- If the `PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places + - e.g. 12.345 ≈ 12.35 + +Example: `new n/Milk q/100 p/5` +``` +Milk has been added to the inventory! +Quantity: 100 +Price: $5.00 +``` + +
+ +### Delete an item: `delete` +Delete an item from the inventory + +Format: `delete n/NAME` +- `NAME` is case-insensitive + - e.g. `Cheese` will be interpreted as `cheese` +- If `NAME` does not exist in the inventory, an error would be thrown + +Example: `delete n/Milk` +``` +Milk has been deleted! +``` + +
+ +### Increase quantity: `add` +Increase the quantity of an item + +Format: `add n/NAME q/QUANTITY` +- `NAME` is case-insensitive + - e.g. `Cheese` will be interpreted as `cheese` +- If `NAME` does not exist in the inventory, an error would be thrown +- `QUANTITY` must be a non-negative integer + - e.g. 1, 10, 100 + +Example: `add n/Milk q/10` +``` +10 Milk added to inventory! +Quantity: 110 +``` + +
+ +### Decrease quantity: `remove` +Decrease the quantity of an item + +Format: `remove n/NAME q/QUANTITY` +- `NAME` is case-insensitive + - e.g. `Cheese` will be interpreted as `cheese` +- If `NAME` does not exist in the inventory, an error would be thrown +- `QUANTITY` must be a non-negative integer + - e.g. 1, 10, 100 +- If `QUANTITY` exceeds the current quantity of the item, the new quantity would be set to 0 + +Example: `remove n/Milk q/10` +``` +10 Milk removed from inventory! +Quantity: 90 +``` + +
+ +### Update an item: `update` +Update the quantity and/or price of an item + +Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE]` +- `NAME` is case-insensitive + - e.g. `Cheese` will be interpreted as `cheese` +- If `NAME` does not exist in the inventory, an error would be thrown +- `NEW_QUANTITY` must be a non-negative integer + - e.g. 1, 10, 100 +- `NEW_PRICE` must be a non-negative integer or decimal number + - e.g. 1, 0.20, 12.3, 12.345 +- If the `NEW_PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places + - e.g. 12.345 ≈ 12.35 +- At least one of the optional parameters must be present + +Example: `update n/Milk q/200 p/10` +``` +Milk has been successfully updated! +Quantity: 200 +Price: $10.00 +``` + +
+ +### List all items: `list` +List all unique items in the inventory. +Output will be printed to the terminal and each row will contain the name of each item. + +Format: `list [q/] [p/] [sq/] [sp/] [r/]` +- `q/` will list the quantity of each item in each row +- `p/` will list the price of each item in each row +- In each row, quantity and price will be printed in the same order as the flags + - e.g. if the command specifies `list p/ q/`, the price will be printed before the quantity +- `sq/` will list the items in order of ascending quantity +- `sp/` will list the items in order of ascending price +- If the command has multiple sorting parameters, the list will be sorted according to the first sorting parameter + - e.g. if the command specifies `list sq/ sp/`, list will be sorted in order of ascending quantity +- If the command has no sorting parameters, the list will be sorted in ascending alphabetical order (A-Z) by default +- `r/` will reverse the order of the list + +Example: `list q/ p/ sp/ r/` +``` +There are 3 unique items in your inventory: +1. Name: Milk Quantity: 100 Price: $5.00 +2. Name: Juice Quantity: 300 Price: $4.00 +3. Name: Cheese Quantity: 200 Price: $3.00 +``` + +
+ +### Quit the program: `quit` +Quits the program + +Format: `quit` + + +-------------------------------------------------------------------------------------------------------------------- ## FAQ **Q**: How do I transfer my data to another computer? -**A**: {your answer here} +**A**: Install the app in the other computer and overwrite the empty data file it creates +with the file that contains the data of your previous SuperTracker inventory -## Command Summary +-------------------------------------------------------------------------------------------------------------------- -{Give a 'cheat sheet' of commands here} +## Command Summary -* Add todo `todo n/TODO_NAME d/DEADLINE` +Action | Format, Examples +--------|------------------ +**New** | `new n/NAME q/QUANTITY p/PRICE`
e.g. `new n/Milk q/100 p/5` +**Delete**| `delete n/NAME`
e.g. `delete n/Milk` +**Add**| `add n/NAME q/QUANTITY`
e.g. `add n/Milk q/10` +**Remove**| `remove n/NAME q/QUANTITY`
e.g. `remove n/Milk q/10` +**Update**| `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE]`
e.g. `update n/Milk q/200 p/10` +**List**| `list [q/] [p/] [sq/] [sp/] [r/]`
e.g. `list q/ p/ sp/ r/` +**Quit**| `quit` From 0a7c0ee152f1b484f5d05642be2db90a8f08304d Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 1 Apr 2024 00:02:30 +0800 Subject: [PATCH 124/423] Modify the comparator such that sorting by alphabet is case-insensitive --- src/main/java/supertracker/item/Item.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java index b6a62ae898..4524e82f2c 100644 --- a/src/main/java/supertracker/item/Item.java +++ b/src/main/java/supertracker/item/Item.java @@ -38,7 +38,7 @@ public String getPriceString() { } public static Comparator sortByName() { - return Comparator.comparing(Item::getName); + return Comparator.comparing(Item::getName, String.CASE_INSENSITIVE_ORDER); } public static Comparator sortByQuantity() { From 606a677f6d7351bd76ccfdd41e46a4ca4f13166e Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 1 Apr 2024 00:07:01 +0800 Subject: [PATCH 125/423] Fix formatting issue --- src/main/java/supertracker/item/Item.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java index 4524e82f2c..4bed172b29 100644 --- a/src/main/java/supertracker/item/Item.java +++ b/src/main/java/supertracker/item/Item.java @@ -1,6 +1,6 @@ package supertracker.item; -import java.time.LocalDate; +import java.time.LocalDate; import java.util.Comparator; From 6c4018314de6ba02b25873aa2fabe615c669ce57 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Mon, 1 Apr 2024 02:13:41 +0800 Subject: [PATCH 126/423] Add sort by expiry --- .../supertracker/command/ListCommand.java | 3 + src/main/java/supertracker/item/Item.java | 4 ++ src/main/java/supertracker/parser/Parser.java | 38 ++++++++---- .../java/supertracker/ui/ErrorMessage.java | 2 +- src/main/java/supertracker/ui/Ui.java | 58 ++++++++++--------- .../supertracker/command/ListCommandTest.java | 32 ++++++++-- .../java/supertracker/parser/ParserTest.java | 16 ++++- 7 files changed, 110 insertions(+), 43 deletions(-) diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index 7cdd13a54e..d9c11bebb8 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -47,6 +47,9 @@ public void execute() { case PRICE_FLAG: items.sort(Item.sortByPrice()); break; + case EX_DATE_FLAG: + items.sort(Item.sortByExpiry()); + break; default: items.sort(Item.sortByName()); break; diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java index b6a62ae898..d52ea40fb8 100644 --- a/src/main/java/supertracker/item/Item.java +++ b/src/main/java/supertracker/item/Item.java @@ -48,4 +48,8 @@ public static Comparator sortByQuantity() { public static Comparator sortByPrice() { return Comparator.comparingDouble(Item::getPrice); } + + public static Comparator sortByExpiry() { + return Comparator.comparing(Item::getExpiryDate); + } } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 26f2002276..51242c1112 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -72,7 +72,7 @@ public class Parser { + "(?<" + EX_DATE_GROUP + ">(?:" + EX_DATE_FLAG + BASE_FLAG + ".*)?) " + "(?<" + SORT_QUANTITY_GROUP + ">(?:" + SORT_QUANTITY_FLAG + BASE_FLAG + ".*)?) " + "(?<" + SORT_PRICE_GROUP + ">(?:" + SORT_PRICE_FLAG + BASE_FLAG + ".*)?) " - + "(?<" + SORT_EX_DATE_FLAG + ">(?:" + SORT_EX_DATE_FLAG + BASE_FLAG + ".*)?) " + + "(?<" + SORT_EX_DATE_GROUP + ">(?:" + SORT_EX_DATE_FLAG + BASE_FLAG + ".*)?) " + "(?<" + REVERSE_GROUP + ">(?:" + REVERSE_FLAG + BASE_FLAG + ".*)?) "; private static final String DELETE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) "; private static final String ADD_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " @@ -315,11 +315,11 @@ private static Command parseListCommand(String input) throws TrackerException { boolean hasExpiry = !matcher.group(EX_DATE_GROUP).isEmpty(); boolean hasSortQuantity = !matcher.group(SORT_QUANTITY_GROUP).isEmpty(); boolean hasSortPrice = !matcher.group(SORT_PRICE_GROUP).isEmpty(); - //boolean hasSortExpiry = !matcher.group(SORT_EX_DATE_GROUP).isEmpty(); + boolean hasSortExpiry = !matcher.group(SORT_EX_DATE_GROUP).isEmpty(); boolean reverse = !matcher.group(REVERSE_GROUP).isEmpty(); ArrayList position = new ArrayList<>(); - // to check if q comes before p or vice versa + // to check if p, q, e appears first and second String firstParam = ""; String secondParam = ""; @@ -343,6 +343,7 @@ private static Command parseListCommand(String input) throws TrackerException { int firstParamPos; int secondParamPos; Collections.sort(position); + try { firstParamPos = position.get(0); secondParamPos = position.get(1); @@ -356,16 +357,31 @@ private static Command parseListCommand(String input) throws TrackerException { // sort by whichever sorting method comes first // if sorting method is unspecified then sort by alphabet String sortBy = ""; - if (hasSortQuantity && hasSortPrice) { - int sortQuantityPosition = input.indexOf(SORT_QUANTITY_FLAG + BASE_FLAG); - int sortPricePosition = input.indexOf(SORT_PRICE_FLAG + BASE_FLAG); - sortBy = sortQuantityPosition < sortPricePosition ? QUANTITY_FLAG : PRICE_FLAG; - } else if (hasSortQuantity) { - sortBy = QUANTITY_FLAG; - } else if (hasSortPrice) { - sortBy = PRICE_FLAG; + position.clear(); + int sortQuantityPosition; + int sortPricePosition; + int sortExpiryPosition; + + if (hasSortQuantity) { + sortQuantityPosition = input.indexOf(SORT_QUANTITY_FLAG + BASE_FLAG); + position.add(sortQuantityPosition); + } + if (hasSortPrice) { + sortPricePosition = input.indexOf(SORT_PRICE_FLAG + BASE_FLAG); + position.add(sortPricePosition); + } + if (hasSortExpiry) { + sortExpiryPosition = input.indexOf(SORT_EX_DATE_FLAG + BASE_FLAG); + position.add(sortExpiryPosition); } + Collections.sort(position); + int sortByPos; + + if (hasSortExpiry || hasSortPrice || hasSortQuantity) { + sortByPos = position.get(0); + sortBy = input.substring(sortByPos + 1, sortByPos + 2); + } return new ListCommand(hasQuantity, hasPrice, hasExpiry, firstParam, secondParam, sortBy, reverse); } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index d951313f3b..d679547235 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -20,7 +20,7 @@ public class ErrorMessage { " does not exist in inventory. Unable to decrease its quantity. =("; public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; public static final String INVALID_NUMBER_FORMAT = "Invalid values for price/quantity"; - public static final String INVALID_DATE_FORMAT = "Invalid date. Follow \"dd/mm/yyyy\" format"; + public static final String INVALID_DATE_FORMAT = "Invalid date. Follow \"dd-mm-yyyy\" format"; public static final String QUANTITY_TOO_SMALL = "Quantity should be more than equal to 0"; public static final String PRICE_TOO_SMALL = "Price should be more than 0"; public static final String FILE_HANDLER_ERROR = "Error setting up file handler"; diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 860d7f2fb3..aa8a7642aa 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -109,7 +109,7 @@ public static void updateCommandSuccess(Item item) { printIndent(updateItemOpening(item)); printIndent(quantityMessage(item)); printIndent(priceMessage(item)); - printIndent(expiryDateMessage(item)); + printIndent(expiryDateMessage(item)); //edit } public static void deleteCommandSuccess(String name) { @@ -181,31 +181,8 @@ private static String getStringToPrint(boolean hasQuantity, boolean hasPrice, bo String secondParam, String stringToPrint, String quantityString, String priceString, String expiryString) { if (hasQuantity && hasPrice && hasExpiry) { - switch (firstParam) { - case QUANTITY_FLAG: - if (secondParam.equals(PRICE_FLAG)) { - stringToPrint += (quantityString + priceString + expiryString); - } else { - stringToPrint += (quantityString + expiryString + priceString); - } - break; - case PRICE_FLAG: - if (secondParam.equals(QUANTITY_FLAG)) { - stringToPrint += (priceString + quantityString + expiryString); - } else { - stringToPrint += (priceString + expiryString + quantityString); - } - break; - case EX_DATE_FLAG: - if (secondParam.equals(quantityString)) { - stringToPrint += (expiryString + quantityString + priceString); - } else { - stringToPrint += (expiryString + priceString + quantityString); - } - break; - default: - return stringToPrint; //review - } + stringToPrint = getStringThreeInput (firstParam, secondParam, stringToPrint, + quantityString, priceString, expiryString); } else if (hasQuantity && hasPrice) { if (firstParam.equals(QUANTITY_FLAG)) { stringToPrint += (quantityString + priceString); @@ -234,6 +211,35 @@ private static String getStringToPrint(boolean hasQuantity, boolean hasPrice, bo return stringToPrint; } + private static String getStringThreeInput (String firstParam, String secondParam, String stringToPrint, + String quantityString, String priceString, String expiryString) { + switch (firstParam) { + case QUANTITY_FLAG: + if (secondParam.equals(PRICE_FLAG)) { + stringToPrint += (quantityString + priceString + expiryString); + } else { + stringToPrint += (quantityString + expiryString + priceString); + } + break; + case PRICE_FLAG: + if (secondParam.equals(QUANTITY_FLAG)) { + stringToPrint += (priceString + quantityString + expiryString); + } else { + stringToPrint += (priceString + expiryString + quantityString); + } + break; + case EX_DATE_FLAG: + if (secondParam.equals(quantityString)) { + stringToPrint += (expiryString + quantityString + priceString); + } else { + stringToPrint += (expiryString + priceString + quantityString); + } + break; + default: return null; + } + return stringToPrint; + } + public static void printError(String errorMessage) { printIndent(BASIC_ERROR_MESSAGE); printIndent(errorMessage); diff --git a/src/test/java/supertracker/command/ListCommandTest.java b/src/test/java/supertracker/command/ListCommandTest.java index 4047dacc80..e9dc8ffef2 100644 --- a/src/test/java/supertracker/command/ListCommandTest.java +++ b/src/test/java/supertracker/command/ListCommandTest.java @@ -30,11 +30,9 @@ public class ListCommandTest { private static final String A_PRICE = " Price: $2.00"; private static final String B_PRICE = " Price: $1.00"; private static final String C_PRICE = " Price: $3.00"; - protected static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); protected static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); - protected static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private static final String A_EX_DATE = " Expiry Date: 01/01/2113"; - private static final String B_EX_DATE = " Expiry Date: 13/03/2023"; + private static final String B_EX_DATE = " Expiry Date: 13/03/2123"; private static final String C_EX_DATE = " Expiry Date: 22/08/2013"; private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); @@ -44,7 +42,7 @@ public class ListCommandTest { public static void setUp() { Inventory.clear(); LocalDate dateA = LocalDate.parse("01-01-2113", DATE_FORMAT); - LocalDate dateB = LocalDate.parse("13-03-2023", DATE_FORMAT); + LocalDate dateB = LocalDate.parse("13-03-2123", DATE_FORMAT); LocalDate dateC = LocalDate.parse("22-08-2013", DATE_FORMAT); Command[] commands = { @@ -192,6 +190,32 @@ public void listCommand_expiryDateBeforePriceQuantity_correctlyConstructed() thr assertEquals(expected, actual); } + @Test + public void listCommand_expiryAscending_correctlyConstructed() throws TrackerException { + String userInput = "list e/ se/ sq/ sp/"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + C_NAME + C_EX_DATE + LINE_SEPARATOR + + INDEX_2 + A_NAME + A_EX_DATE + LINE_SEPARATOR + + INDEX_3 + B_NAME + B_EX_DATE + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void listCommand_expiryDescending_correctlyConstructed() throws TrackerException { + String userInput = "list e/ se/ sq/ sp/ r/"; + Command c = Parser.parseCommand(userInput); + c.execute(); + String expected = LIST_INTRO + + INDEX_1 + B_NAME + B_EX_DATE + LINE_SEPARATOR + + INDEX_2 + A_NAME + A_EX_DATE + LINE_SEPARATOR + + INDEX_3 + C_NAME + C_EX_DATE + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + @AfterEach public void restoreStreams() { diff --git a/src/test/java/supertracker/parser/ParserTest.java b/src/test/java/supertracker/parser/ParserTest.java index ecf5303819..558f7e2d40 100644 --- a/src/test/java/supertracker/parser/ParserTest.java +++ b/src/test/java/supertracker/parser/ParserTest.java @@ -10,11 +10,19 @@ import supertracker.item.Inventory; import supertracker.item.Item; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertInstanceOf; public class ParserTest { + protected static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + protected static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); + + @Test public void parseCommand_validNewCommandInput_newCommand() throws TrackerException { String[] inputs = {"new n/apple q/50 p/99.5", "new p/99.5 q/23 n/elephant", "new q/88 n/banana p/213"}; @@ -38,7 +46,7 @@ public void parseCommand_validNewCommandInputWithExpiry_newCommand() throws Trac @Test public void parseCommand_validUpdateCommandInput_updateCommand() throws TrackerException { - Command newItem = Parser.parseCommand("new n/banana milkshake q/11 p/12.2"); + Command newItem = Parser.parseCommand("new n/banana milkshake q/11 p/12.2 e/13-12-2054"); newItem.execute(); Command update = Parser.parseCommand("update n/banana milkshake q/15 p/9.11"); @@ -47,6 +55,7 @@ public void parseCommand_validUpdateCommandInput_updateCommand() throws TrackerE Item bShake = Inventory.get("banana milkshake"); assertEquals(15, bShake.getQuantity()); assertEquals(9.11, bShake.getPrice()); + assertEquals(LocalDate.parse("13-12-2054", DATE_FORMAT), bShake.getExpiryDate()); update = Parser.parseCommand("update n/banana milkshake q/6969"); update.execute(); @@ -57,6 +66,11 @@ public void parseCommand_validUpdateCommandInput_updateCommand() throws TrackerE update.execute(); bShake = Inventory.get("banana milkshake"); assertEquals(96.96, bShake.getPrice()); + + update = Parser.parseCommand("update n/banana milkshake q/96 e/"); + update.execute(); + bShake = Inventory.get("banana milkshake"); + assertEquals(96.96, bShake.getPrice()); } @Test From 49f84d952998ee3f47dfa773a909b02f306fd611 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Mon, 1 Apr 2024 04:40:20 +0800 Subject: [PATCH 127/423] Remove expiry print message for removing expiry date for item. --- src/main/java/supertracker/item/Item.java | 2 +- src/main/java/supertracker/ui/Ui.java | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java index 9a417597da..2273b1e5e6 100644 --- a/src/main/java/supertracker/item/Item.java +++ b/src/main/java/supertracker/item/Item.java @@ -1,6 +1,6 @@ package supertracker.item; -import java.time.LocalDate; +import java.time.LocalDate; import java.util.Comparator; diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index cb6c6e72f1..5563e86ea8 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -124,7 +124,9 @@ public static void updateCommandSuccess(Item item) { printIndent(updateItemOpening(item)); printIndent(quantityMessage(item)); printIndent(priceMessage(item)); - printIndent(expiryDateMessage(item)); //edit + if (!item.getExpiryDate().isEqual(DATE_NOT_EXIST)) { + printIndent(expiryDateMessage(item)); + } } public static void deleteCommandSuccess(String name) { From 897d7d54f37588a6850f53aaa27055b953c9406e Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Mon, 1 Apr 2024 04:44:53 +0800 Subject: [PATCH 128/423] Remove unwanted comments and fix line length --- src/main/java/supertracker/parser/Parser.java | 61 +------------------ 1 file changed, 2 insertions(+), 59 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 3a8cce2d16..9254babc71 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -332,7 +332,8 @@ private static ArrayList getParamPositions(String input, boolean hasQua return paramPositions; } - private static String getSortBy(String input, boolean hasSortQuantity, boolean hasSortPrice, boolean hasSortExpiry) { + private static String getSortBy(String input, boolean hasSortQuantity, boolean hasSortPrice, + boolean hasSortExpiry) { String sortBy; int sortQuantityPosition; int sortPricePosition; @@ -438,64 +439,6 @@ private static Command parseUpdateCommand(String input) throws TrackerException return new UpdateCommand(name, quantity, price, expiryDate); } - - -// private static Command parseNewCommand(String input) throws TrackerException { -// String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG}; -// Matcher matcher = getPatternMatcher(NEW_COMMAND_REGEX, input, flags); -// -// if (!matcher.matches()) { -// throw new TrackerException(ErrorMessage.INVALID_NEW_ITEM_FORMAT); -// } -// -// String name = matcher.group(NAME_GROUP).trim(); -// String quantityString = matcher.group(QUANTITY_GROUP).trim(); -// String priceString = matcher.group(PRICE_GROUP).trim(); -// -// if (name.isEmpty() || quantityString.isEmpty() || priceString.isEmpty()) { -// throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); -// } -// -// String dateString; -// LocalDate expiryDate = DATE_NOT_EXIST; -// -// boolean hasExpiry = !matcher.group(EX_DATE_GROUP).isEmpty(); -// -// try { -// if (hasExpiry) { -// dateString = matcher.group(EX_DATE_GROUP).trim().replace(EX_DATE_FLAG + BASE_FLAG, ""); -// expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); -// } -// } catch (DateTimeParseException e) { -// throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); -// } -// -// if (Inventory.contains(name)) { -// throw new TrackerException(name + ErrorMessage.ITEM_IN_LIST_NEW); -// } -// -// int quantity; -// double price; -// -// // throws NumberFormatException if strings cannot be parsed -// try { -// quantity = Integer.parseInt(quantityString); -// price = roundTo2Dp(Double.parseDouble(priceString)); -// } catch (NumberFormatException e) { -// throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); -// } -// -// if (quantity < 0) { -// throw new TrackerException(ErrorMessage.QUANTITY_TOO_SMALL); -// } -// -// if (price < 0) { -// throw new TrackerException(ErrorMessage.PRICE_TOO_SMALL); -// } -// -// return new NewCommand(name, quantity, price, expiryDate); -// } - private static Command parseListCommand(String input) throws TrackerException { String[] flags = {QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG, SORT_QUANTITY_FLAG, SORT_PRICE_FLAG, SORT_EX_DATE_FLAG, REVERSE_FLAG}; From 0e34f5f3f9f49de466508454986f2af1a323867b Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Mon, 1 Apr 2024 10:03:48 +0800 Subject: [PATCH 129/423] Fix checkstyle --- src/main/java/supertracker/parser/Parser.java | 4 ++-- src/main/java/supertracker/ui/Ui.java | 8 +++----- src/test/java/supertracker/command/ListCommandTest.java | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 9254babc71..cd5088ac8e 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -44,9 +44,9 @@ public class Parser { private static final String QUANTITY_GROUP = "quantity"; private static final String PRICE_GROUP = "price"; private static final String EX_DATE_GROUP = "expiry"; + private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + private static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private static final String EX_DATE_FORMAT = "dd-MM-yyyy"; - protected static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); - protected static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private static final String SORT_QUANTITY_FLAG = "sq"; private static final String SORT_PRICE_FLAG = "sp"; private static final String SORT_EX_DATE_FLAG = "se"; diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 5563e86ea8..7714e21a63 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -20,7 +20,10 @@ public class Ui { private static final String BASIC_ERROR_MESSAGE = "Oh no! An error has occurred in your input"; private static final String FIND_OPENING_MESSAGE = "Here are your found items:"; private static final String REPORT_NO_ITEMS_OPENING = "There are no items that fit the criteria!"; + private static final DateTimeFormatter DATE_FORMAT_PRINT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); private static final DateTimeFormatter VALID_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + private static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private static String listSize(int size){ return ("There are " + size + " unique items in your inventory:"); @@ -38,15 +41,10 @@ private static String newItemOpening(Item item) { return item.getName() + " has been added to the inventory!"; } - private static final DateTimeFormatter DATE_FORMAT_PRINT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); private static String expiryDateMessage(Item item) { return "Expiry Date: " + item.getExpiryDate().format(DATE_FORMAT_PRINT); } - protected static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); - - protected static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); - private static String updateItemOpening(Item item) { return item.getName() + " has been successfully updated!"; } diff --git a/src/test/java/supertracker/command/ListCommandTest.java b/src/test/java/supertracker/command/ListCommandTest.java index e9dc8ffef2..1cba53d885 100644 --- a/src/test/java/supertracker/command/ListCommandTest.java +++ b/src/test/java/supertracker/command/ListCommandTest.java @@ -30,7 +30,7 @@ public class ListCommandTest { private static final String A_PRICE = " Price: $2.00"; private static final String B_PRICE = " Price: $1.00"; private static final String C_PRICE = " Price: $3.00"; - protected static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); private static final String A_EX_DATE = " Expiry Date: 01/01/2113"; private static final String B_EX_DATE = " Expiry Date: 13/03/2123"; private static final String C_EX_DATE = " Expiry Date: 22/08/2013"; From 852102f4e073a352d8c468d26436c462d612c8cc Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Mon, 1 Apr 2024 11:46:40 +0800 Subject: [PATCH 130/423] Change method names Fix bug in findcommand --- .../supertracker/command/FindCommand.java | 6 ++-- src/main/java/supertracker/ui/Ui.java | 28 +++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/main/java/supertracker/command/FindCommand.java b/src/main/java/supertracker/command/FindCommand.java index d97aded932..03ba4a4131 100644 --- a/src/main/java/supertracker/command/FindCommand.java +++ b/src/main/java/supertracker/command/FindCommand.java @@ -21,14 +21,14 @@ public void execute() { Ui.findIntro(); for (Item item : items) { - if (item.getName().contains(name)) { - Ui.foundItem(item, index); + if (item.getName().toLowerCase().contains(name.toLowerCase())) { + Ui.printFoundItem(item, index); index++; isFound = true; } } if (!isFound) { - Ui.noItemFound(name); + Ui.printNoItemFound(name); } } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 6a03f17885..579182690e 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -21,18 +21,18 @@ public class Ui { private static final String REPORT_NO_ITEMS_OPENING = "There are no items that fit the criteria!"; private static final DateTimeFormatter VALID_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); - private static String listSize(int size){ + private static String getListSize(int size){ return ("There are " + size + " unique items in your inventory:"); } - private static String priceMessage(Item item) { + private static String getPriceMessage(Item item) { return "Price: " + item.getPriceString(); } - private static String quantityMessage(Item item) { + private static String getQuantityMessage(Item item) { return "Quantity: " + item.getQuantity(); } - private static String newItemOpening(Item item) { + private static String getNewItemOpening(Item item) { return item.getName() + " has been added to the inventory!"; } private static String expiryDateMessage(Item item) { @@ -99,9 +99,9 @@ public static void printInvalidCommand() { } public static void newCommandSuccess(Item item) { - printIndent(newItemOpening(item)); - printIndent(quantityMessage(item)); - printIndent(priceMessage(item)); + printIndent(getNewItemOpening(item)); + printIndent(getQuantityMessage(item)); + printIndent(getPriceMessage(item)); if (!item.getExpiryDate().isEqual(LocalDate.parse("01/01/99999", DateTimeFormatter.ofPattern("dd/MM/yyyyy")))) { printIndent(expiryDateMessage(item)); } @@ -109,8 +109,8 @@ public static void newCommandSuccess(Item item) { public static void updateCommandSuccess(Item item) { printIndent(updateItemOpening(item)); - printIndent(quantityMessage(item)); - printIndent(priceMessage(item)); + printIndent(getQuantityMessage(item)); + printIndent(getPriceMessage(item)); } public static void deleteCommandSuccess(String name) { @@ -120,13 +120,13 @@ public static void deleteCommandSuccess(String name) { public static void addCommandSuccess(Item item, int quantityAdded) { assert quantityAdded >= 0; printIndent(addItemOpening(item, quantityAdded)); - printIndent(quantityMessage(item)); + printIndent(getQuantityMessage(item)); } public static void removeCommandSuccess(Item item, int quantityRemoved) { assert quantityRemoved >= 0; printIndent(removeItemOpening(item, quantityRemoved)); - printIndent(quantityMessage(item)); + printIndent(getQuantityMessage(item)); } public static void reportCommandSuccess(List reportItems, String reportType) { @@ -168,7 +168,7 @@ public static void listIntro(int size) { printIndent(SINGLE_ITEM_LIST_MESSAGE); return; } - printIndent(listSize(size)); + printIndent(getListSize(size)); } public static void findIntro() { @@ -200,7 +200,7 @@ public static void printError(String errorMessage) { printIndent(errorMessage); } - public static void foundItem(Item item, int index) { + public static void printFoundItem(Item item, int index) { String stringToPrint = index + ". Name: " + item.getName(); String quantityString = " Quantity: " + item.getQuantity(); String priceString = " Price: " + item.getPriceString(); @@ -209,7 +209,7 @@ public static void foundItem(Item item, int index) { printIndent(stringToPrint); } - public static void noItemFound(String name) { + public static void printNoItemFound(String name) { String stringToPrint = "So sorry, Your item: " + name + " could not be found."; printIndent(stringToPrint); } From 2f0fa5ab4c7d6a85e41092a8210fe89f35d71b20 Mon Sep 17 00:00:00 2001 From: rismm Date: Tue, 2 Apr 2024 00:52:08 +0800 Subject: [PATCH 131/423] Update user guide --- docs/UserGuide.md | 26 ++++++++- .../supertracker/storage/FileManagerTest.java | 57 +++++++++++++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 src/test/java/supertracker/storage/FileManagerTest.java diff --git a/docs/UserGuide.md b/docs/UserGuide.md index afb7a4cfa6..dabe46185d 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -14,13 +14,16 @@ optimized for use via a Command Line Interface (CLI). - [Update an item: `update`](#update-an-item-update) - [List all items: `list`](#list-all-items-list) - [Quit the program: `quit`](#quit-the-program-quit) + - [Saving inventory data](#saving-inventory-data) + - [Loading inventory data](#loading-inventory-data) + - [Editing the data file](#editing-the-data-file) -------------------------------------------------------------------------------------------------------------------- ## Quick Start 1. Ensure that you have Java 11 or above installed in your Computer. -2. Download the latest `SuperTracker.jar` from [here](http://link.to/duke). +2. Download the latest `SuperTracker.jar` from [here](https://github.com/AY2324S2-CS2113-T13-4/tp/releases). 3. Open a command terminal, cd into the folder you put the jar file in, and use the `java -jar SuperTracker.jar` command to run the application. 4. Type the command in the command box and press Enter to execute it. 5. Refer to the [Features](#features-) below for details of each command and its format. @@ -175,6 +178,27 @@ Quits the program Format: `quit` +
+ +### Saving inventory data +Inventory data in the program is saved to the hard disk in the file path `./data/` in the same directory that +the `SuperTracker.jar` file is in. Data will be saved automatically after any command that changes the item data in the inventory. + +
+ +### Loading inventory data +Data that has been saved to the hard disk will be loaded and read by the program each time it is launched. +If there is no data file, the program will the loading process. + +
+ +### Editing the data file +Inventory data of the `SuperTracker` program is stored in a text file `items.txt` in the path `./data/` relative to +the directory the `SuperTracker.jar` file is in. Users can edit and update the inventory data directly through the data file +if they would like to do so. +> Note: Edit the data file at your own caution. If the changes made to the data file are in an invalid format, the program +> will ignore those changes on its next load. The changes will be erased on the next automatic save, so do keep a backup of the data +> file before editing. -------------------------------------------------------------------------------------------------------------------- diff --git a/src/test/java/supertracker/storage/FileManagerTest.java b/src/test/java/supertracker/storage/FileManagerTest.java new file mode 100644 index 0000000000..4729702d86 --- /dev/null +++ b/src/test/java/supertracker/storage/FileManagerTest.java @@ -0,0 +1,57 @@ +package supertracker.storage; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import supertracker.command.NewCommand; +import supertracker.item.Inventory; +import supertracker.item.Item; + +import java.io.IOException; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +public class FileManagerTest { + private static final String INVALID_EX_DATE = "01-01-99999"; + private static final DateTimeFormatter INVALID_EX_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + private final static LocalDate UNDEFINED_DATE = LocalDate.parse(INVALID_EX_DATE, INVALID_EX_DATE_FORMAT); + private final static LocalDate CURR_DATE = LocalDate.now(); + @BeforeAll + public static void setUp() { + Inventory.clear(); + NewCommand[] newItems = { + new NewCommand("orange", 10, 2.00, CURR_DATE), + new NewCommand("6969", 50, 15.9, UNDEFINED_DATE), + new NewCommand("1_+$%$_)00", 9999999, 20.90, CURR_DATE)}; + + for (NewCommand newItem : newItems) { + newItem.execute(); + } + try { + FileManager.saveData(); + } catch (IOException ignored) { + + } + Inventory.clear(); + } + + @Test + void loadData_validData_correctlyRead() throws IOException { + FileManager.loadData(); + + Item[] items = { + new Item("orange", 10, 2.00, CURR_DATE), + new Item("6969", 50, 15.9, UNDEFINED_DATE), + new Item("1_+$%$_)00", 9999999, 20.90, CURR_DATE)}; + + for (Item item : items) { + Item loadedItem = Inventory.get(item.getName()); + assertNotNull(loadedItem); + assertEquals(item.getQuantity(), loadedItem.getQuantity()); + assertEquals(item.getPrice(), loadedItem.getPrice()); + assertEquals(item.getExpiryDate(), loadedItem.getExpiryDate()); + } + } +} From f7c9e0c471a1a2bff2489b01a9955e53016327e2 Mon Sep 17 00:00:00 2001 From: rismm Date: Tue, 2 Apr 2024 01:03:31 +0800 Subject: [PATCH 132/423] Fix checkstyle --- .../supertracker/storage/FileManagerTest.java | 26 +++++++++---------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/test/java/supertracker/storage/FileManagerTest.java b/src/test/java/supertracker/storage/FileManagerTest.java index 4729702d86..18de984e0c 100644 --- a/src/test/java/supertracker/storage/FileManagerTest.java +++ b/src/test/java/supertracker/storage/FileManagerTest.java @@ -16,24 +16,21 @@ public class FileManagerTest { private static final String INVALID_EX_DATE = "01-01-99999"; private static final DateTimeFormatter INVALID_EX_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); - private final static LocalDate UNDEFINED_DATE = LocalDate.parse(INVALID_EX_DATE, INVALID_EX_DATE_FORMAT); - private final static LocalDate CURR_DATE = LocalDate.now(); + private static final LocalDate UNDEFINED_DATE = LocalDate.parse(INVALID_EX_DATE, INVALID_EX_DATE_FORMAT); + private static final LocalDate CURR_DATE = LocalDate.now(); @BeforeAll - public static void setUp() { + public static void setUp() throws IOException { Inventory.clear(); NewCommand[] newItems = { - new NewCommand("orange", 10, 2.00, CURR_DATE), - new NewCommand("6969", 50, 15.9, UNDEFINED_DATE), - new NewCommand("1_+$%$_)00", 9999999, 20.90, CURR_DATE)}; + new NewCommand("orange", 10, 2.00, CURR_DATE), + new NewCommand("6969", 50, 15.9, UNDEFINED_DATE), + new NewCommand("a1@ lol qwe^^%qw)e", 9431, 21.57, UNDEFINED_DATE), + new NewCommand("1_+$%$_)00", 9999999, 20.90, CURR_DATE)}; for (NewCommand newItem : newItems) { newItem.execute(); } - try { - FileManager.saveData(); - } catch (IOException ignored) { - - } + FileManager.saveData(); Inventory.clear(); } @@ -42,9 +39,10 @@ void loadData_validData_correctlyRead() throws IOException { FileManager.loadData(); Item[] items = { - new Item("orange", 10, 2.00, CURR_DATE), - new Item("6969", 50, 15.9, UNDEFINED_DATE), - new Item("1_+$%$_)00", 9999999, 20.90, CURR_DATE)}; + new Item("orange", 10, 2.00, CURR_DATE), + new Item("6969", 50, 15.9, UNDEFINED_DATE), + new Item("a1@ lol qwe^^%qw)e", 9431, 21.57, UNDEFINED_DATE), + new Item("1_+$%$_)00", 9999999, 20.90, CURR_DATE)}; for (Item item : items) { Item loadedItem = Inventory.get(item.getName()); From 4f80704c4fbb28b20155fa6586d61eabba224bb1 Mon Sep 17 00:00:00 2001 From: rismm <110659916+rismm@users.noreply.github.com> Date: Tue, 2 Apr 2024 01:48:24 +0800 Subject: [PATCH 133/423] Update src/test/java/supertracker/storage/FileManagerTest.java Co-authored-by: awesomesjh <89649663+awesomesjh@users.noreply.github.com> --- src/test/java/supertracker/storage/FileManagerTest.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/java/supertracker/storage/FileManagerTest.java b/src/test/java/supertracker/storage/FileManagerTest.java index 18de984e0c..f099f75080 100644 --- a/src/test/java/supertracker/storage/FileManagerTest.java +++ b/src/test/java/supertracker/storage/FileManagerTest.java @@ -18,6 +18,7 @@ public class FileManagerTest { private static final DateTimeFormatter INVALID_EX_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); private static final LocalDate UNDEFINED_DATE = LocalDate.parse(INVALID_EX_DATE, INVALID_EX_DATE_FORMAT); private static final LocalDate CURR_DATE = LocalDate.now(); + @BeforeAll public static void setUp() throws IOException { Inventory.clear(); From cb137665173ddd2bd6f971dc4a0f62073e21b6a1 Mon Sep 17 00:00:00 2001 From: rismm <110659916+rismm@users.noreply.github.com> Date: Tue, 2 Apr 2024 01:48:30 +0800 Subject: [PATCH 134/423] Update src/test/java/supertracker/storage/FileManagerTest.java Co-authored-by: awesomesjh <89649663+awesomesjh@users.noreply.github.com> --- src/test/java/supertracker/storage/FileManagerTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/supertracker/storage/FileManagerTest.java b/src/test/java/supertracker/storage/FileManagerTest.java index f099f75080..8170eceb9c 100644 --- a/src/test/java/supertracker/storage/FileManagerTest.java +++ b/src/test/java/supertracker/storage/FileManagerTest.java @@ -26,7 +26,8 @@ public static void setUp() throws IOException { new NewCommand("orange", 10, 2.00, CURR_DATE), new NewCommand("6969", 50, 15.9, UNDEFINED_DATE), new NewCommand("a1@ lol qwe^^%qw)e", 9431, 21.57, UNDEFINED_DATE), - new NewCommand("1_+$%$_)00", 9999999, 20.90, CURR_DATE)}; + new NewCommand("1_+$%$_)00", 9999999, 20.90, CURR_DATE) + }; for (NewCommand newItem : newItems) { newItem.execute(); From 4e568a6ad0670418ddf5986a12fbdb29a310b670 Mon Sep 17 00:00:00 2001 From: rismm <110659916+rismm@users.noreply.github.com> Date: Tue, 2 Apr 2024 01:48:35 +0800 Subject: [PATCH 135/423] Update src/test/java/supertracker/storage/FileManagerTest.java Co-authored-by: awesomesjh <89649663+awesomesjh@users.noreply.github.com> --- src/test/java/supertracker/storage/FileManagerTest.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/test/java/supertracker/storage/FileManagerTest.java b/src/test/java/supertracker/storage/FileManagerTest.java index 8170eceb9c..0f57656dc4 100644 --- a/src/test/java/supertracker/storage/FileManagerTest.java +++ b/src/test/java/supertracker/storage/FileManagerTest.java @@ -44,7 +44,8 @@ void loadData_validData_correctlyRead() throws IOException { new Item("orange", 10, 2.00, CURR_DATE), new Item("6969", 50, 15.9, UNDEFINED_DATE), new Item("a1@ lol qwe^^%qw)e", 9431, 21.57, UNDEFINED_DATE), - new Item("1_+$%$_)00", 9999999, 20.90, CURR_DATE)}; + new Item("1_+$%$_)00", 9999999, 20.90, CURR_DATE) + }; for (Item item : items) { Item loadedItem = Inventory.get(item.getName()); From b95a2e6d16166e727c52eef6726d6d0eb620c37c Mon Sep 17 00:00:00 2001 From: DavidTay Date: Tue, 2 Apr 2024 10:44:45 +0800 Subject: [PATCH 136/423] update user guide to include report command and reformatted the summary table --- docs/UserGuide.md | 51 ++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 42 insertions(+), 9 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index dabe46185d..9ea3879994 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -173,6 +173,38 @@ There are 3 unique items in your inventory:
+### Prints report: `report` +Lists all items that match the requirements of the report. + +There are 2 types of reports in this iteration: +1. **low stock** - lists all stocks that are below a specified threshold that the user provides +2. **expiry** - lists all stocks that are within a week of expiring or has already expired + +Output will be printed to the terminal and each row will contain the name of each item. +If the report type is **low stock**, the current quantity for each item would be listed and if the report type is +**expiry**, the expiry date for each item would be listed as well. + +Format: `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` +- `r/` parameter that specifies the type of report. e.g. **low stock** or **expiry** +- `t/` parameter that specifies the threshold value to be compared to for **low stock report**. +All items below the threshold value would be listed out. + +**Note**: If report type is **low stock** threshold value must be **included**. However, if report type is **expiry** +threshold value must be **excluded**. + +Example: `report r/low stock` +``` +There are 3 items low on stocks! +1. Name: orange + Current Quantity: 10 +2. Name: banana + Current Quantity: 30 +3. Name: apple + Current Quantity: 20 +``` + +
+ ### Quit the program: `quit` Quits the program @@ -213,12 +245,13 @@ with the file that contains the data of your previous SuperTracker inventory ## Command Summary -Action | Format, Examples ---------|------------------ -**New** | `new n/NAME q/QUANTITY p/PRICE`
e.g. `new n/Milk q/100 p/5` -**Delete**| `delete n/NAME`
e.g. `delete n/Milk` -**Add**| `add n/NAME q/QUANTITY`
e.g. `add n/Milk q/10` -**Remove**| `remove n/NAME q/QUANTITY`
e.g. `remove n/Milk q/10` -**Update**| `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE]`
e.g. `update n/Milk q/200 p/10` -**List**| `list [q/] [p/] [sq/] [sp/] [r/]`
e.g. `list q/ p/ sp/ r/` -**Quit**| `quit` +Action | Format | Examples +--------|------------ |--------------- +**New** | `new n/NAME q/QUANTITY p/PRICE` | e.g. `new n/Milk q/100 p/5` +**Delete**| `delete n/NAME` | e.g. `delete n/Milk` +**Add**| `add n/NAME q/QUANTITY` | e.g. `add n/Milk q/10` +**Remove**| `remove n/NAME q/QUANTITY` | e.g. `remove n/Milk q/10` +**Update**| `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE]` | e.g. `update n/Milk q/200 p/10` +**List**| `list [q/] [p/] [sq/] [sp/] [r/]` | e.g. `list q/ p/ sp/ r/` +**Report**| `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` | e.g. `report r/low stock t/10` +**Quit**| `quit` | e.g. `quit` From e3ced0633f358b83b9620088737493271ba63dce Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Tue, 2 Apr 2024 15:37:09 +0800 Subject: [PATCH 137/423] update UpdateCommand UMLs --- docs/uml-diagrams/UpdateCommand.puml | 10 +++++++++- docs/uml-diagrams/UpdateCommandClass.png | Bin 40112 -> 42906 bytes docs/uml-diagrams/UpdateCommandSequence.png | Bin 31367 -> 36641 bytes 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/uml-diagrams/UpdateCommand.puml b/docs/uml-diagrams/UpdateCommand.puml index e27fdda621..b7d48b71f9 100644 --- a/docs/uml-diagrams/UpdateCommand.puml +++ b/docs/uml-diagrams/UpdateCommand.puml @@ -27,7 +27,8 @@ class UpdateCommand { -name:String -newQuantity: int -newPrice: double - +UpdateCommand(name: String, newQuantity: int, newPrice: double) + -newExpiryDate : LocalDate + +UpdateCommand(name: String, newQuantity: int, newPrice: double, newExpiryDate: LocalDate) +execute(): void +isQuit(): boolean } @@ -86,6 +87,13 @@ opt newPrice == -1 deactivate Item end +opt newExpiryDate == "1-1-1" + UpdateCommand -> Item: getExpiryDate() + activate Item #fbffb2 + Item --> UpdateCommand: oldExpiryDate + deactivate Item +end + UpdateCommand -> Inventory : put(name:String, item:Item) activate Inventory #d5eac2 Inventory --> UpdateCommand diff --git a/docs/uml-diagrams/UpdateCommandClass.png b/docs/uml-diagrams/UpdateCommandClass.png index 29361619c41add548e96532f349e8d7a84440a6a..5013c8d58755a31bfcdbbc4eb09060e0cc5240ba 100644 GIT binary patch literal 42906 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

}=nxDSSBCOV>BcNB+ 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

Mr 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 z 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 mA5`uJxNOz~Cbc1w*Fo5rg z|LeK0>%N|Cd$;$)`+*H+=A3n|JdS<;t#uLsRegzzMTv!kgoLXg|6BtJ3B-zoge(k3 z2i^&^Y|sXNA-ik5ltn5Vq22*rpjykQ$RHtA#$ex?p#iTkUF7xLk&y5@AAXQ~oeM0G zkZjx(p37*$j1NAeeb=0t>Cr+}7fm>f=iZ6MW82~0k&|v{Y!rLZAVZ0YD#J;DMvC2j zJJed=f+!P1xE%5t9)_koaa~?ME7{KQyUcj9z5m4PQp~=zd6YpGOcz2xWD3n90RCcJ z$&vw`*G;H)7UjL(_EO_1<+~$AYe6sZ1 z>1r<%46+!T_op7AZeuSCW2 zuT-O4eCCf>)6x$lKg5t=3kiARekma0VVU&S1%Wy|JjU}Yvw+umgrwfj<8z-^qYWPU z4W%Cqsg+t9*U@1Ey~*eAkIivrqV_IBn4kpOZ9HCTC``jrVF)-v7EDMXVV2z6p7O}) zp%9M_(-;)CVXr(t8nhn#v=vtZe2-2K-wqssFuR#)gD7WC0Fha?6p%G|c&Xeb5*y6kLyj zrnn&oC;ATjJY1ixo<-n>ffe8P9>nAV{5)JQnK+xPgN8@34o z*K;wV4Y-F^59V#&Nlb?Z{VgT{GamFJBcZ;S1y+L1h)oJV-5rN(WWSM&@o2Y$GeWVX z44!K%>mF2&m^^X=ZT5U+I_+bK>6?F2DiM zu;RU1CE53`xMDXAtOn}UE)5W5C7GOcC_mbN&0*W#3^QM0KK)n8@tRcMCl$bTMwOSU>nTq8oBbnGN;78D`#oVt;?dzFQ zlTYSiEPZ4;XKAtz^VNjx9vjE3|J+L#$VVG^pJOsu zhK8`17~*pC_`@=NFZgLjDF}wSIk;X|;`dVfbNu@W;lZVD42J#i)u&=)`w2SM4j=2j z8Ad`eeEqJ~OT`*)HjF%eR0fi=O8Hl*-n=Q~GHGhmToQl!BJAAJW-2?K&q%TV%0aF_ zO)QvEDYcD=z(%L#4b9^H{hWTG*4KC9pXn>(**+SK=czurq#I?gD=(Y&xgE}A$sys1 zGqTg<=2Yu>&rsdtRk4)s-RTx5_=>&Ir1(3d0=0?0V43NZ3^`ZI50$!J96M&(^bGT< z>$!*N*x3n=S2CeVyj)D{r_%8n{ASLPYw+ir_TvHDiTt>9?<$24*42t}xe=VmaL?{R zlIepe6Y99_;)KKvwoi&bG|)Cv1k9FILfr-pG9OO@^+^y;BVkQ_IiSPE}r zwZ6&EA<^m2)xk)`(XHr>pK*((u>uJ*Qe#bNwnu<}vr5K0VguFvjDk(S@(+_YYcJg7 z3%A`A7FgE$Zo2Pk@xEEfm?(VY{3uYSBiGt_wlM&aGMvxyfJseG72c<}&>UHhAWv7X zW3!t|iZ?>@Vs=aqu0p*Hvfg_BR@#{>X>4jm6jAHDD&N!|I0J(tspaD>WI)sZ`9e=2 zm9>xwGFJ9xmA~PxKbt4lZpSW;-&T=Ly&^tWHAN0%vb~o))NV51tcu(&$iv@=j)=@TKac=(`W+wy*jslBo0!I1&bV4pMc-59~;>6VQ;6b?g}sT*lV0<}y7eobx`Kj0Fkks&;oPqz9Px|n+e3-kLR?e@^8t$sdGwak zzdz_Z&6mWTAL!56VG~Z&+SrBfgqA-#(_bp8O=?&KfusG7$hr(aM{(3A4D>-D_w0#JPb+#Q{6v<(sAQ^ ziq6GDUa#wBF_1l9u~R-2_Z*XG?=mfodshPCvMk6&Yv8UZHOexbF@4(aVZE`lFk zpZ%c8#{j2;cgGEU!TP_v5JRp!-Z)1qf@r4}(+6Q5is5%-j@~*{&MCrZif3f{io)M%8LuD*o=B>7Q1GA2=1e6`T5sW9!foB6}x4Ro3iPx_ZB`^*-Vb}x{@1w z8=Wup@O^ZUq#M&6Cv-9Qw~2n=j~aYbGI)&DpFO)2H5YlZ8Na!%V-IFCyM3NWaB6|f z0=;Y%l3feAbMJKjQEkq}VQ60RY;b_xcpnih^G>?d$j`lHEA<>!n75S!DS1_HnF zgPf>h@ zVrk2rCy!P?HL~b=EE{58QOk7wG%+txnTQ;3d11NO0(+C_BhR0!#Fj8X8vCKNNFi0T ze~mxtjf-qwixenc7E{OkYEjN+Oc4OH8@Q_&+fC}7sS`{W>fNIi8h;BD zr`bCJ%Yy3JLNmBZI?!a%mZ)BZKcA!8p zhgHqYbFH9ap(Ai?UlsJOcO9PW63UQwPYT1bEq-DMil?Il$5PCdXWxg0Z=}R4ylGWP zy!(9%Dn7_s!p)UlQf|OKsr2!8E_T{(pd*qpHq?`B41asQ#GfKon6vp+X5K+hLup%R zs^oHh250=rXS+*zXKDux_sN}$U#ZrSQq%`&3L(#E2j8Q|B7b_zYX}4vOcu722ZF&Q zIG48L5;-(6I{2L0G2jl?ycVCu?XT*4$1Zp{vU!L=&l@tDI1)9Mi92S!%RVtLB9q3Z z1v$6v!LoS*+KI&Is@+6~RA#kqUk&DATIT%n!$kFo8v|p?n&EiCW&wMXWxH0JbrQew zX6qTH`7#xOq4RIU#l)n*cvm@St9iF5{}x!KOo%MN=$tf?lrX{Q2NID1;#)Zdxq2MY*Mj{%0~2*F5=`%F~W8 ztCh!aUH+pezfHxhk4vBT3a-#QtpDVx>u+P9B}%uOW*(-z***DL{X5X-Ie{GCMQvs| z2N0pZ4G{42)KO&xtkNl@?AtCn$64|?c=y`P=MN9Y3HwSehW*xkY8RnZ=Re0Bab+Q% z^2DL#Z3Uu8`A};3bUe#3@m%k#;~kLrYF`QM`hM0A&=wWmDKg7bb2NVJh5Zx`N_*Or z;Gotfxl#0jHggRKtaII`b+>aikg8B4oyvn`gLzv-C+NrPmS9(n40MO#ma@W zcW0bGyL_36Zh_@H$lG_@%5N3Qnror!HjUHxKSXtNM8D=*<{Zz^|6w#r-AE-vk$IH| zbGklU7t}T|G0;RC*v<^#{-j-c{IuYQ?4V1gYpXduK0VYF<)xR78s@i5uGm+PT1BUd zo)K|AM-RanAi(W=0^dfF&6cgzXb4!l%}!-F9npDN6HQGN;_y(N>48di`47!?DuVlFuXR+y51seXo^(c1KF zwb9R$dUdO~J9A}WkyJ3r3jAz{?}z?@`sNG2N?d29St9R}3j8L7SBt`K>c?fI# z&$Jl~ZW|n24B@DBR4@ssv8d-)thl`a`J?^CDSceRUn z-rEaIIc{X;dW)8BbxV)MvqCk>TJP(praz(OO3U28JQ}I>pu#NW*t)FQU0Do-$hdL5 zPKHh&zs|ywMaC@NBDV>qP8=WI9M==KRFdRyOqDFZAYcR|Rx*(gPpo13?1{tHnC}Tu zD2oHz?fE7!dcFU=pVb$>Nyu|EJ(I^JrNi;q>(pvkW{WD47V*2O;gs_EUDh7`$R`XD zjd)D#4TT5Y#&|BK?g|m<=W{j@i^9E7f>8TQXWcEQ#R*`1P>k%r5G{9{8W}vLk3`oV zkJKv1(Z0$=>FeXm1XbWa$G*%TOqNqjKsIhoX zV;SFMkJyEUH2Sfe4JY=E;%!<`8ISxw%DE zA&i&5{NyVjzaW2dlqQ@S-iJ(kcarIQ96L$JLh1#rw+vG;Ks@NX5R%vmyAN=oJ~OtA z){v1kHob}(f#NCIJvw=UOSnz@J&rBEV*Qs*u57-FP6#P4jLYg~M`Ug15}F9|84z_2gX?E`n^AlIb#?u*Cc| z88-L_gz(WsocgrI+@M&A4|yI&`GU~kdWTc;TC}LzUOuc7q>!~R+Va-i5ZS1m~108*+O6Wh0w+EG~@_%BJO}59Cq1f-o7VMnz@z>bko8pgxiy6q1-y#_{E?a!B38cPbQ0Ef0A@S@4FRtl=@ap%69D>{{WtnZZB);K(WKh~ki_BNkmO%w z2w=ra3;jbkz<`L{0#Hf@hBd%6AOK8x;2;lN!(AAQWHk5*KtE#tO+d2isn8;~+f#sR z`W{$`w@TLAyLLAtJOA6UM-3IJdf8JZm;K!@8p8UU_ZL4^i?(IZfdj;_>jPy^MpoXC~_?@r`OIjoG;^`)NqEmC-p zmKHJK!$ynSBTIF6E+U>*TDDJ)(9DaO*^^!Vu)b-l;FQp&d@K6mwf!<+^Ss|Kc9PRD zzq_gjTw1S>a|#dIfO+L>g}9A=Cao|WyAvYj*k1GAL@SAg!TRNZli!qHV#n9{bNB{1 zzj3mha$XL+>&BLt_O254zg4xXwc)O$2{1fOV&!Hk*8bSlAE(emJ!^^Byb^C={^_Xq z)9-nvPf_sSQ8i1$50|c`FUP*#y2D%qjARXuASYF@(p0k7qrOsAG&6Ayq&!=W49`A zlo`c@vSi*eDt=<~Y;hho-$W0E$Q#?~F?C3at6|W0`)z6mBopEtJHd*s5{1f+Q2OmUG?a}W8XGW8g zZAP7JS@lO6?G_}gSIo(%SQ)9&n+Fn8*8@##(BsdCg(KwR5Ub7UUsxpKM&$T+h>Nos z`pMP)PTjZ+Q1=<+Pz4CJ^)>4#^;K8vjdOqNxz-z?@kn)#$ZYv)W?FIHiqwP6JO0Xn z{LyNPXoUiU{$Tw~XHxcZqpNQ6DNRAItww9~n5tj3F9KR_q&OS$P&B7 z5MB?M6@G?1&Zztz^XN<1K{F~=;!tlV#>wQy7VhBAwdtQJ;qASXlR#;4Lzk2DGQz}$ zUUz>vT!*6VAC+39dz1@kSQ)v|>*fmnXLIkBOs3E54a;jJ$Hx2(#n&;m$BSIi{65bf zIW3W}<|J}`jM$sew^Re6O*;;;DkMLxOuyS?v0u)`-OKgd)7EIVC8nr;ol?8}Njl|p z*N61cRH{JYkHI8;deFSWtGsxA!6JLA{Z3z;bir3ef=-MVb9JAteZ35NXT2|~Bzvfi z94{#h{BCk5?Pg{10`5W+UDN5#wtl%DFKzv|y;t<8Fw77jGvca{ff-%42oO-dN=KvbklX4piVuU<>o zn12Y}JVoFgm8=%d;T8}4774x(zs#IBt%a{joJh+cBpXH8pm`shSZJI0OzIYa;nQ6J zaMbvIx0~5==J00k9#yF*IKDwJQYjBdZ7|OgrSz^MuG{Ik$67eLA(G6PwSO}Dw z07k1df>b|f^;&d>hx4P3k6`Q;?!e%8I9Qyk7Kv$CU0ah zNGofIl3y*U+RJ&}@hnohJur%3v@PReb8Py@4G#5{&|Sk+0%ZdB%b!V-j#x@H=SS*l zam)%3(t!ZnEVC6DbY>KE=e>$#9G>ElTrtH|J{_-EN8p zcHQ(ar$Z(vjIq*u__WazkB~U~Ld_CAko3;3aWbUHmMu@wkup``L804pg-rL7Csl;Y>dK&R8Tk zAIQa3u8l!x!F*+o2eZO83uea<(no&z%5gI8RtgQADIQsJpBtrj1RUOly}wb;C~%yx z9%NT(@c7YC-{_?{AYiMh%PIK=dX-SB^@@LUpwKwMn7CJ|gHb_X2G!$t)R?N~slh-q zRH;)ErnXVYC?79BO676f(&fE|d9ie!Ci)^2^@Bl{1*Yw6ew{H{hrwN*^7JLl#PF#4 zMP$J*HubMnx$+5$5<&$0ju;`0tx2@lM@M`dNqc*)_b|t=WP5|eYLaXSsm8L4o14i( zt)DnXylT(1z=aetlSR(75|XGmH$3X&xpVmiXF%Ko5^r*&G~5Lys)bdk+Z-L8!3R}L zFr_mjOuW3rBr=QB79}6UHJ(hIXkCrRHgHt zZ@+fEM}$nT@AN&Tp<#cQ&z3`jenPT$qU-i+&3;;0V5;z&q!IaR z)a4x52;MFoba#rAP$*0w7QI$UueXyp@)e^}Zf^}X$vYzPT3CNHjUCLzA!Th;|KhjF zPzKZc$Y>E_u^sPPXLY?j$a6OzzX7A|7tbg@qE+pyuB(fiFL$Sv;l)pbacH7dON-@f!tq&AvA?aZwug`UXAsb(C0^AnVTgzj zND%Pk;f9dh*RSpX1d2K(FNUyn?eucxnNyiC|5={2Yn?A0MZNM=3FG; zkTp+0@m;d%ktIy*_y*Hn$KarPbFjDreV#`xt%!!~6^8SN=1~YVR?K|2uH{eJl=aKj zYyJ7TPp|3Xq0R$`a_}{8moRT4R&T7Wn%xr@smXF+FJ}-&&-Wbj+sUz{I2_i|M5iCt z7D(3F^hk|KHI=h+$WT&lkbo6ezr}Q_69G3*%O{(ECVss3Ju2!2Res1KqIYv6;WIn* zcn)ok#o)r+y7|l6fOr!@1|{{xr0>JBPmgJA{w=FeJlu?`*j;r!h5dSN)wV~ZDo_0+ zu!@lNSjhC2*Ng_n1FZvqgHqN?El+I;`_bog`^U~RH>-qQ#Hd&yL2M81wE4-;o?tWs zL4RXfR-4`MOM6aBrH#rt*{qeqp1k{O{%cM+zon*Fsj!+(n8y*6!(oV{XdY&g&Jhw_ z*b3}+J$EuDWcBm~yd8glVtxg_wdaL+^0AyIDweF+rB8_7aeJFk6T=HEi>cTsJ{SZN z0>y`)%1(VDG|Zb~v;VUkx!>fN99ZoGVN7==GYf;abkL!|XgKX_l=> z?+F2JW#KsgUA^m@*-`MqBkFl>Xe=*6Gw3(rTnBNGIi%@{#l2w!Li1-i>3qF6Kg{06 z5FrU;f#^f3qNVw0aCO7>XD8Fl2Dp5#;j3kHky+~ha5Wggwq2i=5#7F6)q-| z`OE$!%s$aNC*d+tMf8H{!SOC*pmmJ1KP+b;oi%SQXfR+054X*AGx^DP;Y8 zfr|45={0D6eH$Wh2{F#UiK0GKkO5||l zQ}KnMwbW9vWur6&Z&8|$uCf8SI3EGmaRoUXRQYkRwde*ocy5i!GifYGkPro5Vc4 z?)}92dM$z2?@H@k2$YwjFP_k?9bf6y{ql@Kr#~m&$CGCUw#n!oV5V$5x=hdE&StJ2 z0z7`uSO3yDpTkT0_S&yFh^3bjs8~&6mov+QAeAg-3SJ|k9<_~1Zl#+N{(=eUA|53i z#3P-_?G?`8Utg(yy4}wzAvQhEkE(c~7)oCQ@9pA-5=>Xl;O{O|>^|D!Xvs|K@Hc18J! zFCsOx&^pUaX;KC-cD+fbZ@!g16_}(keA9Rf9}ZGO-i=*GCJZw9O;x2;r>19cW z_`noahT-zOpze+0HV8C~N8dDI5lyk7M6X1Y0lL3!M#josv)20xAE!x@;4%2bR8#=S z4x%_d-9Dv+tOVj`R|h{@zOf)E@uU7@x*A#xDK=_3QkdxM!D3k3Tw zRly%n@Uc#1_P?3^k#$6Y2SKAn%77R!p5;Ks+Q;K96o6OEg+oL2?rSI&vjJ#xcn?8e z!`ERm(cVqObN`AmwQ8m@O&Dz;I1F|iT&k8NN~uwqMo8!h2RWlR@hAI4cj>{D_d#eG zQKw%|6~o@JJ?y2Y?p3Eak9&bUroqiI5dc zTaO)&*{N>;d_7Ka6KlbP%Ziy8^#S@bG~F8mHp;TSuiNa3{o7mr{VgMp{!ffaCw|O3 zo@3znIy|+B0D8vyxhsaFFQ!XFyP?w83C29TSAhZJ&i4w(7(D>O` z7x=3xn-MS_@y{AQN5LJEdBE?=?{nQ5mVplj65nb|(EjWZ<#{JHxA*a7&@IuKWS`9S z`9U}Pn^@-{p<~YM!}At}={+Z7<806fBN0ZCwD)@c5tB}PP%2drKar9vm*-LYYMO~+ zl(B?h?rSpEc|Z`=eYCKfleNj>n&y)cF<25$WeGYsvDa3(eU7==K{O1_Jfp__g&o9W8?TP1)?G{Gz5f(V1xo-nZ=KBL>Tgh?@$#Z zs$S&wa;$>Tt~u2tNri)uX3uZpj@|wCrhKvDwZyjMzf_#r&6E~SI%_|X{mg=m3Xc=^ zl2b9Pt$R^mv0TjH0YpiH2AO1xYu3AluEXj$i=oFQKx`8T@k0e53 z3SatTjgZYx^uCEToSk@45YEa6LaS%bE3G`R4;$FWeC#2Xj5hF5YgGzqk=S(j-qGF5 zR-`~ye3&wR3Y8T`O;8q?l%?M-8^>u20*+F=b*%Pxl_F(4CZ}E!lI!G4zB4Cd{T0|^ z)QKMQ?3G|0YHwHDhZ~)w&_C|Vj~BI{vAmM2{rJWg~mhUba^w^WZJ@ zhQvU`SB7PXIIKul_17f{#Y$p&o)fUzMA^Sc#>T8+Wr#svLtmvaG%sa;A>fR$4fhEE zb`%OwtVb#a$jLdT%JVaD$cg0mTo|$^z*yv6iiy_ld*yyOMaiMT8#5Dst~!krsy6Ls z5{K&DcO0lg*pKxYr(|8SXd(*1>yT}befr8%@;04TSJ_XhbfyEX$3YiM;3w@=>P7lm zpBIB(2)7p562AEirIRag0rDi4PWjtti*)1*;(+RaxaX#!O}tY@G$C18_Je<5*C z&o?zGQ?X!wA_!w&X_ooj(?Z+d{L>i~b$>oaTPZDXR4MOVZBGi*>T<>Jz?%hZFH^B1 z9%~fdB?_}0}3wW zdxx#eCs$Q`=aKwjzQM%gvtw|3wbhwbDkMr2X9>oYxANufZn*Q;;laBa$5iE%T)FDJ zD#SW|srm5F2E7?xz9+u1kSN=B0zUFzA3M#i3fdrVc+tpSqgR_m>J*XF5t5;2hdkGz z##lq0!9)%fh55LA(3R@0>Ge*bCVYTD)A&RVC;oYOtBg%c+;cAXRz-YPV%ap?+PQ{$ z62f2_GmwG=h%(n>gm~xhCy#Aq>IBUoe<-JSud6pr% z3;9Hy)s>rlRbWKXbXivQ+kJ#-C-c?Rm~!fyQTdd}ZjZUj!e_tGG6-M!->otGId6Q( z!jVz0u|W3DmLcV0a0q!zzR_ec`uRn}g)>J|i+G90@t2j_OWUCy(JTAXSBZ4m3wsO0 zKw=u3t`v3ee)X9z#OlKV4wYudx5jV9W}9(syg!pzQ(uvJ7DGidn_4WRwJ^%j^03lQ zzw9j1GcIS$J<%)DWVK018s04oqIVCo7O+N@MUMFHOpBd49<|=;`})Ha&9=n{jM2V8 z8Xmhc?3O6PEtw2#V`o%6?Y0;4STj+##36C}Agul-k0Po3nYcf*%Iu2w2%&}bptodT z?g=4&?C0>)omC!7({LFLh_#Hum9l7mib&EM`=w{VCc0Ve&O&bS5Vbf<$KG2rKoBqS z0?}kFW7mdoI1Lo~i1M#Xz|#t5=?RHEv<4CrU-yb$yASuJ-xLR_Hl6wMHZE`nBKiLX zlidquH_$o-k5Ko%{n{2D#ajo4n~_mA|$5Y!2y&sq6XK};IY z{yYyYBxZxA3mu%X@=Atbkr>voaKhd8rnyq2?(Xp`azw1Z(|+foZl{zM|FdCM@*WhOidTC*mQ_g*pvi&#!2mg;58>C<=N zMXNrpiy0NDSjkV^ldC#k>Rj`pY^lHJJ&(J|G6#=!Lsi~`zz^J;HA9|&!@sqauaWDeywBF3m5B@Bu1FCgf^{;GVEnG zqAFIL-6M{QKaPc6rTk9QG4Y$KeUTn`cVGaj40xuRWg7NO`ST{hrxicud#l~a!ZNNk z)P3h=qIY*naM>WDCF?ckr>3IVi1|8b)>9;mvSj3=Cnv(xyq`mXB3Pl+fhamdfk4Sr zc*!Fj_m^BGta!%(f35=T7;9F6BDc;)bA&wNVHlTn&X`^IxFYa}!@aR9;h@lm!@bBD zz^PN(h*)CQ_HP|Ft^RkpN=e*h<9CI+m0!|DJqEOhY{zpW9Ol0bYekB3Liq!4k-y}j8h*GDhbDNj7x9v$qCBKvC5AE!}c zqrQkS=D*qzI-aLOMZxzvWTC-B=_(i~Phq-5&*-bm<>4a7sKixzF^T(%fH^S!2UB`K zms>(7q8~%pQD)#M7>o*WjQnODsCpHqaEp<2J!Z9x5)TY~n)v(-AH_1`X7)_K%am_V zK|T5Q;Hjh2UJ`2dH(J?4>Qh^74B zUjJT?G4g$lPQnVzkhV9EfZ3KU?HX8sV|c7PlrA!%g>|KD8vAGY&wc*pQnRm8z1!yG z&E-Kc;{NwKzN7o?Z&xl9Fu{6rfmU&1Byne@d9OuJG{r|O5>xyW>D*l96b=7BcV1j5 z8_Cg>f{JynOZGEmQ;uRlpC)M)Yu79Cp&gbr3XJD5F)nqO ztzxI=HfbqwglJY-^wZB)S-!$YgKdBIs!`b)|5`dj%Bc%o>v>;%LGi?D(j`jl2VmHK zF)GIQiAr)l3&YW9_4g}POA{)MB=@qLDdQq$QGJu}f48}Wmy$)5Iz=j=g<8T#An5LN zkVik}mLSBQU`fPvE#&Z->{d>UWDy+%VZXwL3=B-%V=>QPLcf6n@f%S*EfuH(!)d}s zf?qNyfPECRypB-pmro^eCL)n#)f>HzrX9t=#O(&epH>vBfWEeT^> zNb4wQhDejQ8Gy__GQ7k~k?{S-Jk;?d2!34NdJpXCeH!d}Pi0h2L`sqT0wq<@{*jpw zUWe3i#qHhIG7*P1CoTgrH3zUn5&@QB8u(`ar+OWq7=~Fc@NNCUEZ6m(Q~_*=gNvaT zu>M%mgq=MT{)Q74Ijs1)Wq*TibXf*@@$SnKz3Lh~dK5a^kRVfeeaG3VuhY$!bM{0$ z#^Sc~-%4womyJ95fHE7VjT${wfQ8HDu{S+szLK1bj0)ig^wkrVfcsl^!)WPt6Kag= z2&DTwg->!f=Q}yCBCD-OotXMRP&|>FtF_OcM~B&Dz}7IYfgo$-`+q7!a@>h8^{dHw zD3R}pDQ^@y9Tj47$+`7TyOZ-cB#=tjsSjwo#bSd8VTTaX5+OA)X0fN&tkj>|oNS6F zvJOdIhlAqsmT}Q0mfih&Cg+yxyl>ratUsZkxMUP+eARINfUHn0KlTu`WFyEqpg{?b zxb*wNaH$NLe&j9!6>Ly!N12Y=S!!-9d-)8g)OTVx5Ywa%dA9?E^AJ4-Pn_qnDajO+ z!5&hzLf9c-%c*H?GIZ$w-vJ3pRSK5|qQQ&UNwLoOVY}Ej5mBTQ`Vj3^eLWr)*{Xm! z#!4Hh;m;RXI1xR`s(w=CSpPdeAO%0t4(JA1*R1e{_(V%rQguk_avt@4WN7#-TC#YD za{zV){X2Ca!Gk%UB{(dwASLehByg740Dn5LE-uoyZ_Rv$Vz=xEE zvy*?rAxFO`64^193M*7TtKGKzZ}v;K+D9T`&BjE-!W8(Aw27u@BMX-W;r_d!z(W4${M7X>67Lj@rL%r|hi(+!0g?Tv>x z1%&f;c8RAZ0e7{M4t%;l>zp$mA}PPs5GxP><68U>12Izfzlum7bOrrgYbg-@-u_+< zFB=a&0dmLS&q{Nnui@bwX@B!SFgY+*1lGqGW6=hHMf~-71W}pB#!#k|iRZ!GCUBpN zy_p$gVe+TIxgGI~$yX0yU&LcKJ~APWNl6j7p&?fX8hH2U#Y~ye=7gG*M*>asLyTO$ zYQ9=>Kk$C~A9*Ga#3XQ%Cw;wF-n#MoWW6fjkN@@ccBYYU=R-DjSZ*=mHvGOaM?3=P z8K!{y>-;9fVIw=Q(^69*qS6@%-5LeZZ1BW+MYHdflL!!&P}SNG=Ib`|GyTUMsn>y4 z#{#+J7vEz3b$0X}`O1l8nAei`%PQ;9L-vS=WbgA>*lA(x5=g}!Qz2(Zt$zlt&$cZG z6S>?D7epQx4Er~20dFRn_kQUAk@M060USO3!H-HX;8|wW$Smf$KjvQ%?Ec+jFR_^9 zqf9V*VOG@{@aU3aBnjL3UF)BFUs8^omod`^%l-(Jmg_C5>;3A{5_f5_bL5f72-m}3 zNfN%7eL#HL6}5Z%%X~llWe@dW#oKE)+qs&;;&Ye(nEqJtV_g79LvhFhoTG9I|APo| zbe6>q#=uVm!mZMJ&wD1NL{5!*H%n3ih}YqQMyb9ao8k8g%@SSpjJKx>k0EsE1Xc3M zyxEgwMh5fr(XpZ)cD9QRwRlaKM2t{%WS4y)?CuDSAomV^Vu`u;TZ>@P6oAhd`>JI4 z-`Ls$u{EB{K-+Dj&kU0aM(k1+mSpUsFpBAD3|mE$_;4Zz97o0?8N0HZDoV%&f@qOu z;TI2Z@rvj}LKn1~jD52+z9YEOu=+zDNNtm)20HUWbkD-%2jbZTYeFO)mYV9BJR9EZ z&f@tInoyysi#4E!;sk6p`V+a*hEkrqM1w9hc{6DhY0j1ZYV3+2 zF7E5tqxIeAE7Y$o3X4A79xb1-=psZl`|>;@*SOgyj>kljO}ix7I0hNS>a_5ky@2M? z|6ZdorL3mkYfenTZ-JN`Tr zq}%9OO1jowej9{_J%B;`Hp?;)nP>@lg&Vq`ftF6Ti;TXK^2B;q=(%*car2u%^am?M zz#JsqF74RFNq(%3PQHIYzy3*0^5aVy@8``}1gt;9bdcLPg7{^%kvec+Bl#iop;sb} zVgy11$$Gm=8P2j+ZeM<&F6^LFO@B&h1%FrVn+O?;F6a;egj9~(^{M5>7E+^hy9lsk zpjVxrKxSd~Z3swj_r~v)S^_=*=|aGDPK&$13jPmS&(R;o3|P|sIHrl?4`Rg3%HIc3 z0t0k$T#!I$G)SElW}TCb$ort~z;+rGi6%U9f%mM?71DLcsF>murl%YIsddOa zXyOC}#ON?2Zli_`_E2mRFgZ#S80Y}cgy#>EO62YDimlcxE_4`}j{&M|gBgTuN!-GJ z@f#Z+x)(Uc8&;v6ull*hQ8O@5_Lt4?b1P}UJR3-t#{9N3MOQblaG4D_2yw;XgP=gOBMp?BTZ-Y0brwqL%U?mk=OUq zq0qRwp_q|9x54X(Td&$G0d}%h*caFf(Js*?B$A*LMaLmuVGkYEZbzWNBniHCKo(mA z0%n0;GXizLLj_to3vB4Wh0y>A{hRlhl_M1e0sf&k-yg*CpUE@$J@O$4?amQs8-%3~ z$t>bZnicF9EXm)NwgzBW^t7k0Uy7fDF*P3&zzP>Us0o#L9I5X@dVJ&NVo&g>OY(cI z?L^Nh!Gc;A36HU19X^eCK?XifZkWbb#eRowJb(QtG+%K#rV?JUk0-<#j*!=h+%H%cw&5_WJ zBess;aZX?n{Uc^PU_y#m#oqji&5#NqiL+UCeD~q+!=VD4D171fGT?zFDR2ro;TE11 zUOP%i6QvKzeEo?;p@ z6^dxrqmY<-=65U`6>aN*yzfsg7mA}>kvh;s1b@*E%~gh{K*py_4Yt`Aam9sxF`SFw z%vfcv;bx<##q3xUAM!yMQPhL(yG3SAqOK%>a8gX-AMnHK$CnqW8xB@F$P2?l?)0J>bAwes1`WSdF! z-vWORDcy=1&@9hU%`)-6*^V+&!<1u5qC>1hzVS}Vk)~kb_FY=l9 z=uYJ4pyW6IBOX#KQJ`5N%p|N{!3%h9!nz)hvZ=4`+wYwniU;Upz)?+Ra8YG@xnJy} z#-#r{1Op1l1nFatp!sn?FYnHg8uj56B-g$Mpi&WE_J;l7U!E?G+4s~AV)etJ{|;SSDI<0 zP)G!ea|8?Uw4y5w76}mv&{F51ot~@HfAr}#rU)EhAJ2#ZZ>h!#y~WpwyWlcZm_~j& z{8Rv#qxT`8?msT6m48+ELr<_m-$`XlpGc9gwuFMZky)X#|MOL}$Ol7=1gHf-!~O=| z{__mJ_Ltv01bU!4nLxkL{=1QASSKui3Vw;tvP zS`l44_}@2Zd+2o*G^`3==>6T52`Te?D&fQ^GM)kJOh0Boc_aX{+eQL*P&<=r+8)&4 z2S{#(c-D_i7t;p%VKABNt>H9%=5`FAz*WVnmQap~eKfFno- zl^Qqe|M%5^_O8WA6?W$C48wI#c>ajn&;~Oe@3E+S?}x`8^DcmB4TA-d|IhqW#g2aw z^~hEi-Bk}T`Iyz+k))q8{cjWi4MZ1;MOuYA03Z-X|J&bgzmLthXrH=B16+dR0Wu~2 ztC}I{(m>m?BPM{Tj|yVaDKlh;@<#P$JoiLgIszUwQXCK;qDt0)9wW3m0sOcezx7DT zh4Uexv#q; z-%jI2@ITBtQ1@Sg2~0ZRd9ZGn62C=X)-|M{Q>Ys=g8M%%(22u+2r1EZs9#VAhs|j@ z{cg_LRe3kbFwK}#Ci}KIXOpL`qHMz||jcCj^ z0#X)}N~%DEF6BVaio}Bz-(PIh@wwP#0y6G|`8v-a=SyusOg56RYd{AQd2#}VzcnVX zz0x;%2KI(MtTckha8L{26+YjjNd@@#rwSHtea^x&P5=Pb9tsjBKudvoGqS!bldcR- z&jk`hF$Nm?5!MU9v7!n+d;%kfzpn7r8gn{cX)mJ$d?H*9$N`KsDH}pWqOfOKKjAu? zzkcKZ3Ht{|L`|0n0Qr~*5W*X%Sosv;%uA10L&Q1LFaKe%wmpBB-G6!3e?mIr*h=8e z1F8MjVEniJedto4L0SLl#qq)aIO~6f6u`q`|0@LkZxaswpBPAF^M5BJz(7wJ|MmC( zXR4TB#shv=tL6U2UT0_N_N15g6rl9q6_+*vh9Gm1a(6lJym>KWlJqPbuOFC+hQ2xI zz<*@8=QV72qab;A{z|7m;J@sZ4#*N%RS)14D3MysQyK7B2kb9K-Vriv0CX0hyS6_o zveQM}d$h0|02B)BuwUnruxUJhU{q@2C(lFjWiuswwE@%okiw0_B?HJMuQ!O4Am4KuHE7yRmlUF~iGw`hr$8?#0V4OD z?B;m2a}#)~YWnUFv}dOy%@%~E}>L@tA^BEpA%vT=U#)1**?>0}7L$5+b%_6C9Nk2}EIwrU?5-8LgLI{(~XNzG)4 zt%zp$?6MWB;XHk5$k8MXSn(tvq6`3hLh#L0qn9(Fz~5^YYpa;Vobj)f`d%G2ELK@6 zHD>_t_XqsB%lGÿ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 Sy8|Cdgfd%aVUk044*wrbEIyb3 literal 0 HcmV?d00001 diff --git a/docs/uml-diagrams/ListCommand.puml b/docs/uml-diagrams/ListCommand.puml index 75b7b0a0ae..4fca792e94 100644 --- a/docs/uml-diagrams/ListCommand.puml +++ b/docs/uml-diagrams/ListCommand.puml @@ -22,10 +22,13 @@ interface Command { class ListCommand { -hasQuantity:boolean -hasPrice:boolean + -hasExpiry:boolean -firstParam:String + -secondParam:String -sortBy:String -isReverse:boolean - +NewCommand(hasQuantity:boolean, hasPrice:boolean, firstParam:String, sortBy:String, isReverse:boolean) + +ListCommand(hasQuantity:boolean, hasPrice:boolean, hasExpiry:boolean, + firstParam:String, secondParam:String, sortBy:String, isReverse:boolean) +execute():void +isExit():boolean } @@ -34,6 +37,7 @@ class Item { {static}+sortByName():Comparator {static}+sortByQuantity():Comparator {static}+sortByPrice():Comparator + {static}+sortByExpiry():Comparator } class Inventory { @@ -41,8 +45,9 @@ class Inventory { } class Ui { - {static}+listIntro(size:int):void - {static}+listItem(item:Item, index:int, hasQuantity:boolean, hasPrice:boolean, firstParam:String):void + {static}+listIntro(size:int):void + {static}+listItem(item:Item, index:int, hasQuantity:boolean, hasPrice:boolean, + {static}hasExpiry:boolean, firstParam:String, secondParam:String):void } class Parser { @@ -93,6 +98,14 @@ activate Item #fbffb2 Item --> ListCommand : comparator:Comparator deactivate Item +else sortBy == "e" + +ListCommand -> Item : sortByExpiry() +activate Item #fbffb2 +Item --> ListCommand : comparator:Comparator +deactivate Item + + else else ListCommand -> Item : sortByName() @@ -100,6 +113,8 @@ activate Item #fbffb2 Item --> ListCommand : comparator:Comparator deactivate Item + + end ListCommand -> ArrayList : sort(comparator:Comparator) @@ -118,7 +133,7 @@ end loop items -ListCommand -> Ui : listItem(item:Item, index:int, hasQuantity:boolean, hasPrice:boolean, firstParam:String) +ListCommand -> Ui : listItem(item:Item, index:int, hasQuantity:boolean, hasPrice:boolean, hasExpiry:boolean, firstParam:String, secondParam:String):void) activate Ui #e5c2ea Ui --> ListCommand deactivate Ui diff --git a/docs/uml-diagrams/ListCommandClass.png b/docs/uml-diagrams/ListCommandClass.png index eeec6c535a508917c16f95a27c9d67636df49169..cee50775fa688b28e9331a1ed96d08c27b5f3439 100644 GIT binary patch literal 86909 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 literal 52597 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 At^fc4 diff --git a/docs/uml-diagrams/NewCommand.puml b/docs/uml-diagrams/NewCommand.puml index 95eb125a4b..320bb9953d 100644 --- a/docs/uml-diagrams/NewCommand.puml +++ b/docs/uml-diagrams/NewCommand.puml @@ -27,7 +27,8 @@ class NewCommand { -name:String -quantity:int -price:double - +NewCommand(name:String, quantity:int, price:double) + -expiryDate:LocalDate + +NewCommand(name:String, quantity:int, price:double, expiryDate:LocalDate) +execute():void +isExit():boolean } diff --git a/docs/uml-diagrams/NewCommandClass.png b/docs/uml-diagrams/NewCommandClass.png index 306cf81adbcc94fad2285243c2386f72ad7517c3..1c4fb1f3f00cbf8f16445f8755240cd8ae96d426 100644 GIT binary patch literal 39469 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 E0kbzX?EnA( literal 38109 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 From 6442eab38152e479562a4311c3fb12f02532ef8c Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Tue, 2 Apr 2024 21:30:58 +0800 Subject: [PATCH 139/423] add UML form DeleteCommand in DG --- docs/DeveloperGuide.md | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index feb5e54cb1..f7bcdddd8f 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -102,7 +102,7 @@ the line will be ignored and a new `Item` will not be added to the list. The parsing of string data to an `Item` object is handled by the method `FileManager-parseItemData()`. ### New Command -The following is a class diagram of the NewCommand and its relevant dependencies +The following is a class diagram of the NewCommand and its relevant dependencies
![NewCommandClass](uml-diagrams/NewCommandClass.png) The `NewCommand` class implements the `Command` interface and is responsible for handling the creation of new items in the `Inventory`. @@ -114,7 +114,7 @@ A NewCommand instance is created by the `parseNewCommand` method called by Parse - `Ui`: To notify the user about the successful execution of `NewCommand` - `FileManager`: To save the new item added onto the hard disk -The following sequence diagram shows the execution of a NewCommand +The following sequence diagram shows the execution of a NewCommand
![NewCommandSequence](uml-diagrams/NewCommandSequence.png) 1. The `SuperTracker` class calls the `execute` method of `NewCommand` @@ -124,7 +124,7 @@ The following sequence diagram shows the execution of a NewCommand 5. The `saveData` method of the `FileManager` class is called to save the new item added onto the hard disk ### Update Command -The following is a class diagram of the UpdateCommand and its relevant dependencies +The following is a class diagram of the UpdateCommand and its relevant dependencies
![UpdateCommandClass](uml-diagrams/UpdateCommandClass.png) The `UpdateCommand` class implements the `Command` interface and is responsible for updating existing items in the @@ -137,7 +137,7 @@ of the aforementioned parameters must be provided. - `Inventory`: For updating the item in the inventory - `Ui`: To notify the user about the successful execution of `UpdateCommand` -The following sequence diagram shows the execution of a UpdateCommand +The following sequence diagram shows the execution of a UpdateCommand
![UpdateCommandSequence](uml-diagrams/UpdateCommandSequence.png) 1. The `SuperTracker` class calls the `execute` method of `UpdateCommand` @@ -152,8 +152,8 @@ updated). If the condition holds true it retrieves the item's previous quantity. 8. The `saveData` method of the `FileManager` class is called to save updated item onto the hard disk ### DeleteCommand -The following is a class diagram of the DeleteCommand and its relevant dependencies -*:(* +The following is a class diagram of the DeleteCommand and its relevant dependencies
+![DeleteCommandClass](uml-diagrams/DeleteCommandClass.png) The `DeleteCommand` class implements the `Command` interface and is responsible for deleting existing items in the inventory. A DeleteCommand instance is created when calling the `parseDeleteCommand` method called in Parser class. @@ -165,10 +165,17 @@ the `saveData` method from `FileManager` class to save changes to the inventory. - `Inventory`: Checking and deleting item from inventory - `Ui`: To notify the user about the successful execution of `DeleteCommand` -The following sequence diagram shows the execution of a DeleteCommand +The following sequence diagram shows the execution of a DeleteCommand
+![DeleteCommandSequence](uml-diagrams/DeleteCommandSequence.PNG) + +1. The `SuperTracker` class calls the `execute` method of `DeleteCommand` +2. The `contains` method of `Inventory` to check if the item exists in the inventory +3. If item exists, the `delete` method of `Inventory` is called to remove the item from inventory +4. Subsequently, the `deleteCommandSuccess` method of `Ui` is called to print the delete message +5. The `saveData` method of `FileManager` is called to save the change to the text file containing inventory information ### Find Command -The following is a class diagram of the FindCommand and its relevant dependencies +The following is a class diagram of the FindCommand and its relevant dependencies
![FindCommandClass](uml-diagrams/FindCommandClass.png) The `FindCommand` class implements the `Command` interface and is responsible for searching for items in the inventory by name. @@ -178,7 +185,7 @@ A FindCommand instance is created by the `parseFindCommand` method called by `Pa - `Inventory`: For getting the list of items in the inventory - `Ui`: To notify the user about the successful execution of `FindCommand` -The following sequence diagram shows the execution of a FindCommand +The following sequence diagram shows the execution of a FindCommand
![FindCommandSequence](uml-diagrams/FindCommandSequence.png) 1. The `SuperTracker` class calls the `execute` method of `FindCommand` @@ -190,7 +197,7 @@ The following sequence diagram shows the execution of a FindCommand 7. After the loop ends, if the `isFound` variable is still false, the `noItemFound` method of the Ui class is called to notify that no item has been found containing the word ### List Command -The following is a class diagram of the FindCommand and its relevant dependencies +The following is a class diagram of the FindCommand and its relevant dependencies
![ListCommandClass](uml-diagrams/ListCommandClass.png) The `ListCommand` class implements the `Command` interface and is responsible for printing out a list of items in the inventory to the output. @@ -232,7 +239,7 @@ There are 6 sorting modes in total 5. `sortBy == "p"` and `isReverse == false`: Price ascending 6. `sortBy == "p"` and `isReverse == true`: Price descending -The following sequence diagram shows the execution of a ListCommand +The following sequence diagram shows the execution of a ListCommand
![ListCommandSequence](uml-diagrams/ListCommandSequence.png) 1. The `SuperTracker` class calls the `execute` method of `ListCommand` From 56961630d1bc7012d3af875402fb65f879085175 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Tue, 2 Apr 2024 22:25:48 +0800 Subject: [PATCH 140/423] Add expiry date information into UG --- docs/UserGuide.md | 62 +++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 21 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 9ea3879994..a1cdbf1aa0 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -50,7 +50,7 @@ optimized for use via a Command Line Interface (CLI). ### Create a new item: `new` Create a new item in the inventory -Format: `new n/NAME q/QUANTITY p/PRICE` +Format: `new n/NAME q/QUANTITY p/PRICE [e/EXPIRY_DATE]` - `NAME` is case-insensitive - e.g. `Cheese` will be interpreted as `cheese` @@ -61,13 +61,21 @@ Format: `new n/NAME q/QUANTITY p/PRICE` - e.g. 1, 0.20, 12.3, 12.345 - If the `PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places - e.g. 12.345 ≈ 12.35 +- `EXPIRY_DATE` must be a valid non-negative date in the format of `dd-mm-yyyy` + - e.g. 05-10-2054, 16-07-2245 -Example: `new n/Milk q/100 p/5` +Example: `new n/Milk q/100 p/5` `new n/Banana p/1.23 q/50 e/15-06-2113` ``` Milk has been added to the inventory! Quantity: 100 Price: $5.00 ``` +``` +Banana has been added to the inventory! +Quantity: 50 +Price: $1.23 +Expiry Date: 15/06/2113 +```
@@ -126,7 +134,7 @@ Quantity: 90 ### Update an item: `update` Update the quantity and/or price of an item -Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE]` +Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` - `NAME` is case-insensitive - e.g. `Cheese` will be interpreted as `cheese` - If `NAME` does not exist in the inventory, an error would be thrown @@ -136,13 +144,16 @@ Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE]` - e.g. 1, 0.20, 12.3, 12.345 - If the `NEW_PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places - e.g. 12.345 ≈ 12.35 +- `NEW_EXPIRY_DATE` must be a valid non-negative date in the format of `dd-mm-yyyy` + - e.g. 05-10-2054, 16-07-2245 - At least one of the optional parameters must be present -Example: `update n/Milk q/200 p/10` +Example: `update n/Milk q/200 p/10 e/15-06-2113` ``` Milk has been successfully updated! Quantity: 200 Price: $10.00 +Expiry Date: 15/06/2113 ```
@@ -151,23 +162,25 @@ Price: $10.00 List all unique items in the inventory. Output will be printed to the terminal and each row will contain the name of each item. -Format: `list [q/] [p/] [sq/] [sp/] [r/]` +Format: `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` - `q/` will list the quantity of each item in each row - `p/` will list the price of each item in each row -- In each row, quantity and price will be printed in the same order as the flags - - e.g. if the command specifies `list p/ q/`, the price will be printed before the quantity +- `e/` will list the expiry date of each item in each row if it contains a valid expiry date +- In each row, quantity, price and expiry date will be printed in the same order as the flags + - e.g. if the command specifies `list p/ q/ e/`, the quantity will be printed first followed by price and lastly expiry date - `sq/` will list the items in order of ascending quantity - `sp/` will list the items in order of ascending price +- `se/` will list the items in order of ascending date and items with no date are displayed at the bottom - If the command has multiple sorting parameters, the list will be sorted according to the first sorting parameter - - e.g. if the command specifies `list sq/ sp/`, list will be sorted in order of ascending quantity + - e.g. if the command specifies `list sq/ sp/ se/`, list will be sorted in order of ascending quantity - If the command has no sorting parameters, the list will be sorted in ascending alphabetical order (A-Z) by default - `r/` will reverse the order of the list -Example: `list q/ p/ sp/ r/` +Example: `list q/ p/ e/ sp/ r/` ``` There are 3 unique items in your inventory: 1. Name: Milk Quantity: 100 Price: $5.00 -2. Name: Juice Quantity: 300 Price: $4.00 +2. Name: Juice Quantity: 300 Price: $4.00 Expiry Date: 12/03/2025 3. Name: Cheese Quantity: 200 Price: $3.00 ``` @@ -192,7 +205,7 @@ All items below the threshold value would be listed out. **Note**: If report type is **low stock** threshold value must be **included**. However, if report type is **expiry** threshold value must be **excluded**. -Example: `report r/low stock` +Example: `report r/low stock` `report r/expiry` ``` There are 3 items low on stocks! 1. Name: orange @@ -202,6 +215,13 @@ There are 3 items low on stocks! 3. Name: apple Current Quantity: 20 ``` +``` +There are 2 items close to expiry! +1. Name: orange + Expiry Date: 08-04-2024 +2. Name: apple + Expiry Date: 12-12-2016 +```
@@ -245,13 +265,13 @@ with the file that contains the data of your previous SuperTracker inventory ## Command Summary -Action | Format | Examples ---------|------------ |--------------- -**New** | `new n/NAME q/QUANTITY p/PRICE` | e.g. `new n/Milk q/100 p/5` -**Delete**| `delete n/NAME` | e.g. `delete n/Milk` -**Add**| `add n/NAME q/QUANTITY` | e.g. `add n/Milk q/10` -**Remove**| `remove n/NAME q/QUANTITY` | e.g. `remove n/Milk q/10` -**Update**| `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE]` | e.g. `update n/Milk q/200 p/10` -**List**| `list [q/] [p/] [sq/] [sp/] [r/]` | e.g. `list q/ p/ sp/ r/` -**Report**| `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` | e.g. `report r/low stock t/10` -**Quit**| `quit` | e.g. `quit` +Action | Format | Examples +--------|--------------------------------------------------------------------|--------------- +**New** | `new n/NAME q/QUANTITY p/PRICE e/EXPIRY_DATE` | e.g. `new n/Milk q/100 p/5 e/05-12-2113` +**Delete**| `delete n/NAME` | e.g. `delete n/Milk` +**Add**| `add n/NAME q/QUANTITY` | e.g. `add n/Milk q/10` +**Remove**| `remove n/NAME q/QUANTITY` | e.g. `remove n/Milk q/10` +**Update**| `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` | e.g. `update n/Milk q/200 p/10 e/05-08-2113` +**List**| `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` | e.g. `list q/ p/ sp/ r/` +**Report**| `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` | e.g. `report r/low stock t/10` +**Quit**| `quit` | e.g. `quit` From 1253563257d3c8c2af93985dfd6813dd11b5ec43 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Tue, 2 Apr 2024 23:57:06 +0800 Subject: [PATCH 141/423] Edit UML for DeleteCommand Sequence and add comment for static command regex --- docs/DeveloperGuide.md | 2 +- docs/uml-diagrams/DeleteCommand.puml | 4 ++-- docs/uml-diagrams/DeleteCommandSequence.PNG | Bin 26845 -> 37360 bytes src/main/java/supertracker/parser/Parser.java | 2 ++ 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index f7bcdddd8f..92e721d66d 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -166,7 +166,7 @@ the `saveData` method from `FileManager` class to save changes to the inventory. - `Ui`: To notify the user about the successful execution of `DeleteCommand` The following sequence diagram shows the execution of a DeleteCommand
-![DeleteCommandSequence](uml-diagrams/DeleteCommandSequence.PNG) +![DeleteCommandSequence](uml-diagrams/DeleteCommandSequence.png) 1. The `SuperTracker` class calls the `execute` method of `DeleteCommand` 2. The `contains` method of `Inventory` to check if the item exists in the inventory diff --git a/docs/uml-diagrams/DeleteCommand.puml b/docs/uml-diagrams/DeleteCommand.puml index b19cd33ed6..541268d563 100644 --- a/docs/uml-diagrams/DeleteCommand.puml +++ b/docs/uml-diagrams/DeleteCommand.puml @@ -60,7 +60,7 @@ activate DeleteCommand #cbf7f4 DeleteCommand -> Inventory : contains(name: String) activate Inventory #d5eac2 -Inventory --> DeleteCommand : true +Inventory --> DeleteCommand : deactivate Inventory DeleteCommand -> Inventory : delete(name: String) @@ -77,6 +77,6 @@ DeleteCommand -> FileManager : saveData() activate FileManager #ffecb3 FileManager --> DeleteCommand deactivate FileManager - +DeleteCommand --> SuperTracker deactivate DeleteCommand @enduml \ No newline at end of file diff --git a/docs/uml-diagrams/DeleteCommandSequence.PNG b/docs/uml-diagrams/DeleteCommandSequence.PNG index e10b2df1e2a092cf8ecd390af97303b4261b1378..db40b7f5ea941c2d961c0488f91156d986513042 100644 GIT binary patch literal 37360 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ÿ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 Sy8|Cdgfd%aVUk044*wrbEIyb3 diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index cd5088ac8e..603df53851 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -59,6 +59,8 @@ public class Parser { private static final String REPORT_TYPE_GROUP = "reportType"; private static final String THRESHOLD_FLAG = "t"; private static final String THRESHOLD_GROUP = "threshold"; + + //To be used in getPatternMatcher to split the input into its respective parameter groups private static final String NEW_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) " + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) " From 635f8c073edb8e2f69c44fe74ffc8392e9272a65 Mon Sep 17 00:00:00 2001 From: rismm Date: Wed, 3 Apr 2024 00:39:58 +0800 Subject: [PATCH 142/423] Update README --- docs/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/README.md b/docs/README.md index bbcc99c1e7..c77818190a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,7 @@ -# Duke +# SuperTracker -{Give product intro here} +SuperTracker is a desktop app for managing a supermarket’s inventory, +optimized for use via a Command Line Interface (CLI). Useful links: * [User Guide](UserGuide.md) From 5dad270bc47ce7f19d9610a72ddc5ecf7d0e7d8d Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Wed, 3 Apr 2024 00:42:53 +0800 Subject: [PATCH 143/423] Fix my face --- docs/AboutUs.md | 2 +- docs/team/vimal-face.jpg | Bin 0 -> 133699 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 docs/team/vimal-face.jpg diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 8d468b303c..c2bfbc65f2 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -7,5 +7,5 @@ Display | Name | Github Profile | Portfolio ![](https://via.placeholder.com/100.png?text=Photo) | Tay Wen Duan David | [Github](https://github.com/dtaywd) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | Timothy Lau | [Github](https://github.com/TimothyLKM) | [Portfolio](docs/team/johndoe.md) ![](https://via.placeholder.com/100.png?text=Photo) | Sim Jun Hong | [Github](https://github.com/awesomesjh) | [Portfolio](docs/team/johndoe.md) -![](https://cdn.discordapp.com/attachments/1024235699383308330/1215341390079201290/vimal-face.jpg?ex=65fc65df&is=65e9f0df&hm=fc7cfc6e9a3a28b7f15cf3115433685feda82277d24c8a687d649af1949553bf&) | Vimalapugazhan Purushothaman | [Github](https://github.com/vimalapugazhan) | [Portfolio](docs/team/johndoe.md) +![](team/vimal-face.jpg) | Vimalapugazhan Purushothaman | [Github](https://github.com/vimalapugazhan) | [Portfolio](docs/team/johndoe.md) diff --git a/docs/team/vimal-face.jpg b/docs/team/vimal-face.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3927f24bf7ba84bede8b069c28cc157310e32854 GIT binary patch literal 133699 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 literal 0 HcmV?d00001 From c78708b351fbcb3fbfd85a6eb8babd75e7a2d2a4 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Wed, 3 Apr 2024 11:51:58 +0800 Subject: [PATCH 144/423] include instruction for removing expiry date in update command --- docs/UserGuide.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index a1cdbf1aa0..fc90a43bc1 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -144,18 +144,22 @@ Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` - e.g. 1, 0.20, 12.3, 12.345 - If the `NEW_PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places - e.g. 12.345 ≈ 12.35 -- `NEW_EXPIRY_DATE` must be a valid non-negative date in the format of `dd-mm-yyyy` - - e.g. 05-10-2054, 16-07-2245 +- `NEW_EXPIRY_DATE` must be a valid non-negative date in the format of `dd-mm-yyyy` or `nil` if you intend on removing the expiry date + - e.g. 05-10-2054, 16-07-2245, nil - At least one of the optional parameters must be present -Example: `update n/Milk q/200 p/10 e/15-06-2113` +Example: `update n/Milk q/200 p/10 e/15-06-2113` `update n/Milk q/170 p/9.99 e/nil` ``` Milk has been successfully updated! Quantity: 200 Price: $10.00 Expiry Date: 15/06/2113 ``` - +``` +Milk has been successfully updated! +Quantity: 170 +Price: $9.99 +```
### List all items: `list` From dda89e90c8b40a6d5f31d5fcd6718e9c31ccfc62 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Wed, 3 Apr 2024 11:52:10 +0800 Subject: [PATCH 145/423] Revert "include instruction for removing expiry date in update command" This reverts commit c78708b351fbcb3fbfd85a6eb8babd75e7a2d2a4. --- docs/UserGuide.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index fc90a43bc1..a1cdbf1aa0 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -144,22 +144,18 @@ Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` - e.g. 1, 0.20, 12.3, 12.345 - If the `NEW_PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places - e.g. 12.345 ≈ 12.35 -- `NEW_EXPIRY_DATE` must be a valid non-negative date in the format of `dd-mm-yyyy` or `nil` if you intend on removing the expiry date - - e.g. 05-10-2054, 16-07-2245, nil +- `NEW_EXPIRY_DATE` must be a valid non-negative date in the format of `dd-mm-yyyy` + - e.g. 05-10-2054, 16-07-2245 - At least one of the optional parameters must be present -Example: `update n/Milk q/200 p/10 e/15-06-2113` `update n/Milk q/170 p/9.99 e/nil` +Example: `update n/Milk q/200 p/10 e/15-06-2113` ``` Milk has been successfully updated! Quantity: 200 Price: $10.00 Expiry Date: 15/06/2113 ``` -``` -Milk has been successfully updated! -Quantity: 170 -Price: $9.99 -``` +
### List all items: `list` From 0b5da2236ca92bc3d94860a2510455e61f330478 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Wed, 3 Apr 2024 11:57:00 +0800 Subject: [PATCH 146/423] update user guide --- docs/UserGuide.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index a1cdbf1aa0..61297427ec 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -13,6 +13,7 @@ optimized for use via a Command Line Interface (CLI). - [Decrease quantity: `remove`](#decrease-quantity-remove) - [Update an item: `update`](#update-an-item-update) - [List all items: `list`](#list-all-items-list) + - [Prints report: `report`](#Prints report) - [Quit the program: `quit`](#quit-the-program-quit) - [Saving inventory data](#saving-inventory-data) - [Loading inventory data](#loading-inventory-data) From 921e0b64f671e9e78a9a1f55750347154d0e1b16 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Wed, 3 Apr 2024 12:12:33 +0800 Subject: [PATCH 147/423] Include removal of expiry date in UG for --- docs/UserGuide.md | 9 +++++++-- docs/team/vimal-face.jpg | Bin 133699 -> 39071 bytes 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 61297427ec..bfb408601e 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -145,17 +145,22 @@ Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` - e.g. 1, 0.20, 12.3, 12.345 - If the `NEW_PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places - e.g. 12.345 ≈ 12.35 -- `NEW_EXPIRY_DATE` must be a valid non-negative date in the format of `dd-mm-yyyy` +- `NEW_EXPIRY_DATE` must be a valid non-negative date in the format of `dd-mm-yyyy` or `nil` if expiry date is to be removed - e.g. 05-10-2054, 16-07-2245 - At least one of the optional parameters must be present -Example: `update n/Milk q/200 p/10 e/15-06-2113` +Example: `update n/Milk q/200 p/10 e/15-06-2113` `update n/Milk q/170 p/9.99 e/nil` ``` Milk has been successfully updated! Quantity: 200 Price: $10.00 Expiry Date: 15/06/2113 ``` +``` +Milk has been successfully updated! +Quantity: 170 +Price: $9.99 +```
diff --git a/docs/team/vimal-face.jpg b/docs/team/vimal-face.jpg index 3927f24bf7ba84bede8b069c28cc157310e32854..628ef45d7c5d845daf8640727cdfde5a441bd685 100644 GIT binary patch literal 39071 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 literal 133699 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 From 0115023f84e9f4d68553a528b25cd15b4c173170 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Wed, 3 Apr 2024 12:14:53 +0800 Subject: [PATCH 148/423] Downsize image --- docs/team/vimal-face.jpg | Bin 39071 -> 11387 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/team/vimal-face.jpg b/docs/team/vimal-face.jpg index 628ef45d7c5d845daf8640727cdfde5a441bd685..765cc22cee554c273f7985dadc4382c5ab3ed78a 100644 GIT binary patch delta 11296 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 From eb35942ae21f1fba86e07a7971fcad97fe4e3a97 Mon Sep 17 00:00:00 2001 From: rismm Date: Wed, 3 Apr 2024 12:38:10 +0800 Subject: [PATCH 149/423] Fix bug in add/remove/update --- src/main/java/supertracker/command/AddCommand.java | 2 +- src/main/java/supertracker/command/RemoveCommand.java | 2 +- src/main/java/supertracker/command/UpdateCommand.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/supertracker/command/AddCommand.java b/src/main/java/supertracker/command/AddCommand.java index 40cec69bae..e091127b7b 100644 --- a/src/main/java/supertracker/command/AddCommand.java +++ b/src/main/java/supertracker/command/AddCommand.java @@ -24,7 +24,7 @@ public void execute() { Item oldItem = Inventory.get(name); int newQuantity = oldItem.getQuantity() + quantity; - Item newItem = new Item(name, newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); + Item newItem = new Item(oldItem.getName(), newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); Inventory.put(name, newItem); Ui.addCommandSuccess(newItem, quantity); diff --git a/src/main/java/supertracker/command/RemoveCommand.java b/src/main/java/supertracker/command/RemoveCommand.java index 3c308af810..eb51bea45a 100644 --- a/src/main/java/supertracker/command/RemoveCommand.java +++ b/src/main/java/supertracker/command/RemoveCommand.java @@ -26,7 +26,7 @@ public void execute() { int newQuantity = oldItem.getQuantity() - quantity; newQuantity = Math.max(newQuantity, 0); int quantityRemoved = oldItem.getQuantity() - newQuantity; - Item newItem = new Item(name, newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); + Item newItem = new Item(oldItem.getName(), newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); Inventory.put(name, newItem); Ui.removeCommandSuccess(newItem, quantityRemoved); diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index 186e0d20fc..26c70b3a7a 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -44,7 +44,7 @@ public void execute() { assert newPrice >= 0; assert !newExpiryDate.isEqual(invalidDate); - Item newItem = new Item(name, newQuantity, newPrice, newExpiryDate); + Item newItem = new Item(oldItem.getName(), newQuantity, newPrice, newExpiryDate); Inventory.put(name, newItem); Ui.updateCommandSuccess(newItem); From 234d66dc3922dd34ba44b23285c9547445b072d7 Mon Sep 17 00:00:00 2001 From: rismm Date: Wed, 3 Apr 2024 12:51:31 +0800 Subject: [PATCH 150/423] Add expiry date output to find Rename dummy date constant for when an item does not have an expiry date --- src/main/java/supertracker/parser/Parser.java | 6 +++--- src/main/java/supertracker/ui/Ui.java | 17 ++++++++++------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 603df53851..fac4589576 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -45,7 +45,7 @@ public class Parser { private static final String PRICE_GROUP = "price"; private static final String EX_DATE_GROUP = "expiry"; private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); - private static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); + private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private static final String EX_DATE_FORMAT = "dd-MM-yyyy"; private static final String SORT_QUANTITY_FLAG = "sq"; private static final String SORT_PRICE_FLAG = "sp"; @@ -251,7 +251,7 @@ private static double parsePrice(String priceString) throws TrackerException { } private static LocalDate parseExpiryDate(String dateString) throws TrackerException { - LocalDate expiryDate = DATE_NOT_EXIST; + LocalDate expiryDate = UNDEFINED_DATE; try { if (!dateString.isEmpty()) { expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); @@ -267,7 +267,7 @@ private static LocalDate parseExpiryDateUpdate(String dateString) throws Tracker try { if (!dateString.isEmpty()) { if (dateString.equals("nil")) { - expiryDate = DATE_NOT_EXIST; + expiryDate = UNDEFINED_DATE; } else { expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index ed203a8136..5c950491bb 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -23,7 +23,7 @@ public class Ui { private static final DateTimeFormatter DATE_FORMAT_PRINT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); private static final DateTimeFormatter VALID_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); - private static final LocalDate DATE_NOT_EXIST = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); + private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private static String getListSize(int size){ return ("There are " + size + " unique items in your inventory:"); @@ -110,7 +110,7 @@ public static void newCommandSuccess(Item item) { printIndent(getQuantityMessage(item)); printIndent(getPriceMessage(item)); try { - if (!item.getExpiryDate().isEqual(DATE_NOT_EXIST)) { + if (!item.getExpiryDate().isEqual(UNDEFINED_DATE)) { printIndent(expiryDateMessage(item)); } } catch (NullPointerException e) { @@ -122,7 +122,7 @@ public static void updateCommandSuccess(Item item) { printIndent(updateItemOpening(item)); printIndent(getQuantityMessage(item)); printIndent(getPriceMessage(item)); - if (!item.getExpiryDate().isEqual(DATE_NOT_EXIST)) { + if (!item.getExpiryDate().isEqual(UNDEFINED_DATE)) { printIndent(expiryDateMessage(item)); } } @@ -196,7 +196,7 @@ public static void listItem(Item item, int index, boolean hasQuantity, boolean h String quantityString = " Quantity: " + item.getQuantity(); String priceString = " Price: " + item.getPriceString(); String expiryString; - if (!item.getExpiryDate().isEqual(DATE_NOT_EXIST)) { + if (!item.getExpiryDate().isEqual(UNDEFINED_DATE)) { expiryString = " Expiry Date: " + item.getExpiryDate().format(DATE_FORMAT_PRINT); } else { expiryString = ""; @@ -276,11 +276,14 @@ public static void printError(String errorMessage) { public static void printFoundItem(Item item, int index) { String stringToPrint = index + ". Name: " + item.getName(); + printIndent(stringToPrint); String quantityString = " Quantity: " + item.getQuantity(); + printIndent(quantityString); String priceString = " Price: " + item.getPriceString(); - - stringToPrint += (priceString + quantityString); - printIndent(stringToPrint); + printIndent(priceString); + if (!item.getExpiryDate().isEqual(UNDEFINED_DATE)) { + printIndent(" Expiry Date: " + item.getExpiryDate().format(DATE_FORMAT_PRINT)); + } } public static void printNoItemFound(String name) { From 5e2cb37ede1aa4dcb77e000a25c6d1666979eea2 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Wed, 3 Apr 2024 15:46:49 +0800 Subject: [PATCH 151/423] Add UG descriptions for findCommand --- docs/UserGuide.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index bfb408601e..422d5e6baa 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -12,8 +12,9 @@ optimized for use via a Command Line Interface (CLI). - [Increase quantity: `add`](#increase-quantity-add) - [Decrease quantity: `remove`](#decrease-quantity-remove) - [Update an item: `update`](#update-an-item-update) + - [Find an item: `find`](#find-an-item-find) - [List all items: `list`](#list-all-items-list) - - [Prints report: `report`](#Prints report) + - [Prints report: `report`](#Prints-report-report) - [Quit the program: `quit`](#quit-the-program-quit) - [Saving inventory data](#saving-inventory-data) - [Loading inventory data](#loading-inventory-data) @@ -132,6 +133,26 @@ Quantity: 90
+### Find an item: `find` +Find the item/items that contains the same name + +Format: `find n/NAME` +- `NAME` is case-insensitive + - e.g. `Apple` will be interpreted as `apple` +- If `Apple` does not exist in the inventory, a message would be thrown to inform user that no item has been found + +Example: `find n/apple` +``` + Here are your found items: + 1. Name: apple pie + Quantity: 100 + Price: $1.00 + 2. Name: apple + Quantity: 100 + Price: $1.00 +``` +
+ ### Update an item: `update` Update the quantity and/or price of an item @@ -278,6 +299,7 @@ Action | Format | Ex **Add**| `add n/NAME q/QUANTITY` | e.g. `add n/Milk q/10` **Remove**| `remove n/NAME q/QUANTITY` | e.g. `remove n/Milk q/10` **Update**| `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` | e.g. `update n/Milk q/200 p/10 e/05-08-2113` +**Find**| `find n/NAME` | e.g. `find n/apple` **List**| `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` | e.g. `list q/ p/ sp/ r/` **Report**| `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` | e.g. `report r/low stock t/10` **Quit**| `quit` | e.g. `quit` From 1feb4c5f520cdabf426b23453d286ac94f0efe47 Mon Sep 17 00:00:00 2001 From: rismm Date: Wed, 3 Apr 2024 16:39:22 +0800 Subject: [PATCH 152/423] Fix report output format --- src/main/java/supertracker/ui/Ui.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 5c950491bb..5b52a4d5f6 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -21,7 +21,6 @@ public class Ui { private static final String FIND_OPENING_MESSAGE = "Here are your found items:"; private static final String REPORT_NO_ITEMS_OPENING = "There are no items that fit the criteria!"; private static final DateTimeFormatter DATE_FORMAT_PRINT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); - private static final DateTimeFormatter VALID_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); @@ -80,7 +79,7 @@ private static String reportQuantityMessage(Item reportItem) { } private static String reportExpiryDateMessage(Item reportItem) { - return " Expiry Date: " + reportItem.getExpiryDate().format(VALID_DATE_FORMAT); + return " Expiry Date: " + reportItem.getExpiryDate().format(DATE_FORMAT_PRINT); } public static void printIndent(String string) { From d031b04c39fd2bfd6f1ed39a905e97d54503d3b2 Mon Sep 17 00:00:00 2001 From: rismm Date: Wed, 3 Apr 2024 16:40:56 +0800 Subject: [PATCH 153/423] Fix JUnit --- src/test/java/supertracker/command/ReportCommandTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/supertracker/command/ReportCommandTest.java b/src/test/java/supertracker/command/ReportCommandTest.java index dc36255d54..1fc2fbba1e 100644 --- a/src/test/java/supertracker/command/ReportCommandTest.java +++ b/src/test/java/supertracker/command/ReportCommandTest.java @@ -17,7 +17,7 @@ public class ReportCommandTest { private static final String INVALID_EX_DATE_FORMAT = "dd-MM-yyyyy"; - private static final DateTimeFormatter VALID_EX_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + private static final DateTimeFormatter VALID_EX_DATE_FORMAT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); private static final String INVALID_EX_DATE = "01-01-99999"; private static final String LINE_SEPARATOR = System.lineSeparator(); private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); From 2aeacd3dd513d63b4fe44492826840fd2bfd5c48 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 3 Apr 2024 17:44:25 +0800 Subject: [PATCH 154/423] Update user guide --- docs/UserGuide.md | 85 +++++++++++++++++++++++++---------------------- 1 file changed, 46 insertions(+), 39 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 422d5e6baa..4d53663402 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -14,7 +14,7 @@ optimized for use via a Command Line Interface (CLI). - [Update an item: `update`](#update-an-item-update) - [Find an item: `find`](#find-an-item-find) - [List all items: `list`](#list-all-items-list) - - [Prints report: `report`](#Prints-report-report) + - [Print report: `report`](#print-report-report) - [Quit the program: `quit`](#quit-the-program-quit) - [Saving inventory data](#saving-inventory-data) - [Loading inventory data](#loading-inventory-data) @@ -63,17 +63,18 @@ Format: `new n/NAME q/QUANTITY p/PRICE [e/EXPIRY_DATE]` - e.g. 1, 0.20, 12.3, 12.345 - If the `PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places - e.g. 12.345 ≈ 12.35 -- `EXPIRY_DATE` must be a valid non-negative date in the format of `dd-mm-yyyy` +- `EXPIRY_DATE` must be a valid date in the format of `dd-mm-yyyy` - e.g. 05-10-2054, 16-07-2245 -Example: `new n/Milk q/100 p/5` `new n/Banana p/1.23 q/50 e/15-06-2113` +Example: `new n/Milk q/100 p/5` ``` Milk has been added to the inventory! Quantity: 100 Price: $5.00 ``` +Example: `new n/Cheese q/50 p/1.23 e/15-06-2113` ``` -Banana has been added to the inventory! +Cheese has been added to the inventory! Quantity: 50 Price: $1.23 Expiry Date: 15/06/2113 @@ -134,22 +135,22 @@ Quantity: 90
### Find an item: `find` -Find the item/items that contains the same name +Find the item/items that contain the same name Format: `find n/NAME` - `NAME` is case-insensitive - - e.g. `Apple` will be interpreted as `apple` -- If `Apple` does not exist in the inventory, a message would be thrown to inform user that no item has been found + - e.g. `Cheese` will be interpreted as `cheese` +- If no items containing the same name are found, an error would be thrown -Example: `find n/apple` +Example: `find n/Cheese` ``` - Here are your found items: - 1. Name: apple pie - Quantity: 100 - Price: $1.00 - 2. Name: apple - Quantity: 100 - Price: $1.00 +Here are your found items: +1. Name: Cheese cake + Quantity: 100 + Price: $1.00 +2. Name: Cheese + Quantity: 100 + Price: $1.00 ```
@@ -166,20 +167,21 @@ Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` - e.g. 1, 0.20, 12.3, 12.345 - If the `NEW_PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places - e.g. 12.345 ≈ 12.35 -- `NEW_EXPIRY_DATE` must be a valid non-negative date in the format of `dd-mm-yyyy` or `nil` if expiry date is to be removed +- `NEW_EXPIRY_DATE` must be a valid date in the format of `dd-mm-yyyy` or `nil` if expiry date is to be removed - e.g. 05-10-2054, 16-07-2245 - At least one of the optional parameters must be present -Example: `update n/Milk q/200 p/10 e/15-06-2113` `update n/Milk q/170 p/9.99 e/nil` +Example: `update n/Milk q/200 p/10 e/15-06-2113` ``` Milk has been successfully updated! Quantity: 200 Price: $10.00 Expiry Date: 15/06/2113 ``` +Example: `update n/Milk q/50 p/9.99 e/nil` ``` Milk has been successfully updated! -Quantity: 170 +Quantity: 50 Price: $9.99 ``` @@ -197,7 +199,7 @@ Format: `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` - e.g. if the command specifies `list p/ q/ e/`, the quantity will be printed first followed by price and lastly expiry date - `sq/` will list the items in order of ascending quantity - `sp/` will list the items in order of ascending price -- `se/` will list the items in order of ascending date and items with no date are displayed at the bottom +- `se/` will list the items in order of ascending date, items with no date will be displayed at the bottom of the list and sorted in ascending alphabetical order (A-Z) by default - If the command has multiple sorting parameters, the list will be sorted according to the first sorting parameter - e.g. if the command specifies `list sq/ sp/ se/`, list will be sorted in order of ascending quantity - If the command has no sorting parameters, the list will be sorted in ascending alphabetical order (A-Z) by default @@ -213,16 +215,20 @@ There are 3 unique items in your inventory:
-### Prints report: `report` -Lists all items that match the requirements of the report. +### Print report: `report` +List all items that match the requirements of the report -There are 2 types of reports in this iteration: -1. **low stock** - lists all stocks that are below a specified threshold that the user provides -2. **expiry** - lists all stocks that are within a week of expiring or has already expired +There are 2 types of reports: +1. **low stock** - list all items that are below a specified threshold provided by the user +2. **expiry** - list all items that are within a week of expiring or have already expired -Output will be printed to the terminal and each row will contain the name of each item. -If the report type is **low stock**, the current quantity for each item would be listed and if the report type is -**expiry**, the expiry date for each item would be listed as well. +The report will be printed to the terminal and will contain the name of each item +- If the report type is **low stock**: + - The quantity of each item would be listed + - The report would be sorted in order of ascending quantity +- If the report type is **expiry**: + - The expiry date of each item would be listed + - The report would be sorted in order of ascending expiry date Format: `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` - `r/` parameter that specifies the type of report. e.g. **low stock** or **expiry** @@ -232,22 +238,23 @@ All items below the threshold value would be listed out. **Note**: If report type is **low stock** threshold value must be **included**. However, if report type is **expiry** threshold value must be **excluded**. -Example: `report r/low stock` `report r/expiry` +Example: `report r/low stock` ``` There are 3 items low on stocks! -1. Name: orange - Current Quantity: 10 -2. Name: banana - Current Quantity: 30 -3. Name: apple - Current Quantity: 20 +1. Name: Orange + Quantity: 10 +2. Name: Banana + Quantity: 20 +3. Name: Apple + Quantity: 30 ``` +Example: `report r/expiry` ``` There are 2 items close to expiry! -1. Name: orange - Expiry Date: 08-04-2024 -2. Name: apple - Expiry Date: 12-12-2016 +1. Name: Orange + Expiry Date: 08/04/2024 +2. Name: Apple + Expiry Date: 09/05/2024 ```
@@ -257,7 +264,7 @@ Quits the program Format: `quit` -
+-------------------------------------------------------------------------------------------------------------------- ### Saving inventory data Inventory data in the program is saved to the hard disk in the file path `./data/` in the same directory that From ed8c866050eafe747652db9603b867bdd8749359 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 3 Apr 2024 17:58:29 +0800 Subject: [PATCH 155/423] Update report command --- src/main/java/supertracker/command/ReportCommand.java | 2 ++ src/main/java/supertracker/ui/Ui.java | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/supertracker/command/ReportCommand.java b/src/main/java/supertracker/command/ReportCommand.java index d659647e45..413e176ff1 100644 --- a/src/main/java/supertracker/command/ReportCommand.java +++ b/src/main/java/supertracker/command/ReportCommand.java @@ -37,6 +37,7 @@ private void createExpiryReport(List items, LocalDate expiryThresholdDate, reportItems.add(item); } } + reportItems.sort(Item.sortByExpiry()); } private void createLowStockReport(List items, List reportItems) { @@ -45,6 +46,7 @@ private void createLowStockReport(List items, List reportItems) { reportItems.add(item); } } + reportItems.sort(Item.sortByQuantity()); } @Override diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 5c950491bb..bbf53cf8b7 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -76,7 +76,7 @@ private static String reportNameMessage(Item reportItem, int count) { } private static String reportQuantityMessage(Item reportItem) { - return " Current Quantity: " + reportItem.getQuantity(); + return " Quantity: " + reportItem.getQuantity(); } private static String reportExpiryDateMessage(Item reportItem) { From afc69d8146b6ac278fd4e9f2847d280c2c435895 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 3 Apr 2024 18:04:18 +0800 Subject: [PATCH 156/423] Update JUnit tests for report command --- docs/UserGuide.md | 2 +- .../java/supertracker/command/ReportCommandTest.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 4d53663402..13852d3b71 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -235,7 +235,7 @@ Format: `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` - `t/` parameter that specifies the threshold value to be compared to for **low stock report**. All items below the threshold value would be listed out. -**Note**: If report type is **low stock** threshold value must be **included**. However, if report type is **expiry** +> Note: If report type is **low stock** threshold value must be **included**. However, if report type is **expiry** threshold value must be **excluded**. Example: `report r/low stock` diff --git a/src/test/java/supertracker/command/ReportCommandTest.java b/src/test/java/supertracker/command/ReportCommandTest.java index dc36255d54..e932bb6671 100644 --- a/src/test/java/supertracker/command/ReportCommandTest.java +++ b/src/test/java/supertracker/command/ReportCommandTest.java @@ -55,7 +55,7 @@ public void reportCommand_lowStock_correctlyConstructed() throws TrackerExceptio String expected = " There is 1 items low on stocks!" + LINE_SEPARATOR + " 1. Name: orange" + LINE_SEPARATOR + - " Current Quantity: 10" + LINE_SEPARATOR; + " Quantity: 10" + LINE_SEPARATOR; String actual = outContent.toString(); assertEquals(expected, actual); } @@ -71,10 +71,10 @@ public void reportCommand_expiry_correctlyConstructed() throws TrackerException String dateTwoWeeksAgo = currDate.minusWeeks(2).format(VALID_EX_DATE_FORMAT); String expected = " There are 2 items close to expiry!" + LINE_SEPARATOR + - " 1. Name: orange" + LINE_SEPARATOR + - " Expiry Date: " + dateToday + LINE_SEPARATOR + - " 2. Name: banana" + LINE_SEPARATOR + - " Expiry Date: " + dateTwoWeeksAgo + LINE_SEPARATOR; + " 1. Name: banana" + LINE_SEPARATOR + + " Expiry Date: " + dateTwoWeeksAgo + LINE_SEPARATOR + + " 2. Name: orange" + LINE_SEPARATOR + + " Expiry Date: " + dateToday + LINE_SEPARATOR; String actual = outContent.toString(); assertEquals(expected, actual); } From 199e0dc898387e312149c18ba11af4dc642e1655 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 3 Apr 2024 18:38:48 +0800 Subject: [PATCH 157/423] Update developer guide --- docs/DeveloperGuide.md | 47 ++++++++++-------- ...Sequence.PNG => DeleteCommandSequence.png} | Bin 2 files changed, 27 insertions(+), 20 deletions(-) rename docs/uml-diagrams/{DeleteCommandSequence.PNG => DeleteCommandSequence.png} (100%) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 92e721d66d..6715b50f20 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -96,7 +96,7 @@ Loading is performed at the start of the program in `SuperTracker-run()` where i `loadData()` looks for the save text file at `./data/items.txt` and reads the lines from the file `items.txt` exists. As indicated earlier, each line containing a single `Item`'s data will be in the format and order of `NAME,QUANTITY,PRICE,EXPIRY_DATE`. Each attribute will be parsed into its relevant data type, creating a new `Item` with the extracted attributes, which is then added to the item list in `Inventory`. In the event where the line -of data read is not in the correct format, or the attributes are unable to be parsed into its relevant data type _(i.e. the string in the QUANTITY part reads "f1ve" instead of "5")_, +of data read is not in the correct format, or the attributes are unable to be parsed into its relevant data type (i.e. the string in the QUANTITY part reads "f1ve" instead of "5")_, the line will be ignored and a new `Item` will not be added to the list. The parsing of string data to an `Item` object is handled by the method `FileManager-parseItemData()`. @@ -208,36 +208,43 @@ A ListCommand instance is created by the `parseListCommand` method called by Par - `Inventory`: For getting the list of items in the inventory - `Ui`: To print the list of items in the inventory to the output -The 5 parameters in the constructor `hasQuantity`, `hasPrice`, `firstParam`, `sortBy`, `isReverse` are used to determine how the list should be printed out. +The 7 parameters in the constructor `hasQuantity`, `hasPrice`, `hasExpiry`, `firstParam`, `secondParam`, `sortBy`, `isReverse` are used to determine how the list should be printed out. - `hasQuantity` - - True if the user has input the quantity flag `q/`, false otherwise - - Quantity will be printed to the output if true + - True if the user has input the quantity flag `q/`, false otherwise + - Quantity will be printed to the output if true - `hasPrice` - - True if the user has input the price flag `p/`, false otherwise - - Price will be printed to the output if true + - True if the user has input the price flag `p/`, false otherwise + - Price will be printed to the output if true +- `hasExpiry` + - True if the user has input the expiry flag `e/`, false otherwise + - Expiry date will be printed to the output if true - `firstParam` - - Can only take 3 possible values `"q"`,`"p"` or `""`. - - `"q"` if the quantity flag comes before the price flag. - - `"p"` if the price flag comes before the quantity flag - - If both quantity and price flag do not exist, then `""` would be the default value (this variable would no longer be used in the execution of `ListCommand`) - - Quantity will be printed before price if `"q"` - - Price will be printed before quantity if `"p"` + - Can only take 4 possible values `"q"`,`"p"`,`"e"` or `""`. + - Value corresponds to the flag that comes first in the command + - If the command has none of these flags (`q/`,`p/`,`e/`), then `""` would be the default value (this variable would no longer be used in the execution of `ListCommand`) +- `secondParam` + - Can only take 4 possible values `"q"`,`"p"`,`"e"` or `""`. + - Value corresponds to the flag that comes second in the command + - If the command has less than 2 of these flags (`q/`,`p/`,`e/`), then `""` would be the default value (this variable would no longer be used in the execution of `ListCommand`) - `sortBy` - - Can only take 3 possible values `"q"`,`"p"` or `""` - - `"q"` if the user has input the sort by quantity flag `sq/` - - `"p"` if the user has input the sort by price flag `sp/` - - `""` would be the default value if the user did not input any sorting flag - - If multiple sorting flags are input by the user, `sortBy` will take the value corresponding to the first sorting flag + - Can only take 4 possible values `"q"`,`"p"`,`"e`, or `""` + - `"q"` if the user has input the sort by quantity flag `sq/` + - `"p"` if the user has input the sort by price flag `sp/` + - `"e"` if the user has input the sort by expiry flag `se/` + - `""` would be the default value if the user did not input any sorting flag + - If multiple sorting flags are input by the user, `sortBy` will take the value corresponding to the first sorting flag - `isReverse` - - True if the user has input the reverse flag `r/`, false otherwise. + - True if the user has input the reverse flag `r/`, false otherwise. -There are 6 sorting modes in total +There are 8 sorting modes in total 1. `sortBy == ""` and `isReverse == false`: Alphabetical ascending (e.g. A-Z) 2. `sortBy == ""` and `isReverse == true`: Alphabetical descending (e.g. Z-A) 3. `sortBy == "q"` and `isReverse == false`: Quantity ascending 4. `sortBy == "q"` and `isReverse == true`: Quantity descending 5. `sortBy == "p"` and `isReverse == false`: Price ascending 6. `sortBy == "p"` and `isReverse == true`: Price descending +7. `sortBy == "e"` and `isReverse == false`: Expiry date ascending (e.g. 2024-2025) +8. `sortBy == "e"` and `isReverse == true`: Expiry date descending (e.g. 2025-2024) The following sequence diagram shows the execution of a ListCommand
![ListCommandSequence](uml-diagrams/ListCommandSequence.png) @@ -245,7 +252,7 @@ The following sequence diagram shows the execution of a ListCommand
1. The `SuperTracker` class calls the `execute` method of `ListCommand` 2. The `getItems` method of the `Inventory` class is called to get an `ArrayList` of items in the inventory 3. The `listIntro` method of the `Ui` class is called to print out the total number of items in the inventory -4. Depending on the value of `sortBy`, either the `sortByQuantity`, `sortByPrice` or `sortByName` method of the `Item` class will be called. +4. Depending on the value of `sortBy`, either the `sortByQuantity`, `sortByPrice`, `sortByExpiry` or `sortByName` method of the `Item` class will be called. A comparator used to sort the `ArrayList` of items is returned 5. The `sort` method of the `ArrayList` of items is called with a comparator as an input parameter 6. If `isReverse` is true, the `reverse` method of the `Collections` class is called to reverse the `ArrayList` of items diff --git a/docs/uml-diagrams/DeleteCommandSequence.PNG b/docs/uml-diagrams/DeleteCommandSequence.png similarity index 100% rename from docs/uml-diagrams/DeleteCommandSequence.PNG rename to docs/uml-diagrams/DeleteCommandSequence.png From 544c1a192ab678670cdf22744600f5cf4e27df09 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 3 Apr 2024 18:39:26 +0800 Subject: [PATCH 158/423] Update user guide --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 422d5e6baa..711d2aa433 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -194,7 +194,7 @@ Format: `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` - `p/` will list the price of each item in each row - `e/` will list the expiry date of each item in each row if it contains a valid expiry date - In each row, quantity, price and expiry date will be printed in the same order as the flags - - e.g. if the command specifies `list p/ q/ e/`, the quantity will be printed first followed by price and lastly expiry date + - e.g. if the command specifies `list p/ q/ e/`, the quantity will be printed first followed by price and expiry date - `sq/` will list the items in order of ascending quantity - `sp/` will list the items in order of ascending price - `se/` will list the items in order of ascending date and items with no date are displayed at the bottom From d24e81800d99b50c7cc07358709aef4e447092bc Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 3 Apr 2024 18:40:39 +0800 Subject: [PATCH 159/423] Update Javadoc for list command --- src/main/java/supertracker/command/ListCommand.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index ca0c4f876b..8eb1c03975 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -80,7 +80,7 @@ public boolean isQuit() { * Checks if the provided string is valid. * * @param s The string to be validated. - * @return {@code true} if the string is equal to "q" or "p", + * @return {@code true} if the string is equal to "q" or "p" or "e", * or if the string is empty; {@code false} otherwise. */ private boolean isValid(String s) { From 4aa5afa3cc76fb67ed9f46a6d46d5f35106b8dfa Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Wed, 3 Apr 2024 18:42:41 +0800 Subject: [PATCH 160/423] edit ListCommand to list items without expiry date alphabatically when sorted by expiry --- .../supertracker/command/ListCommand.java | 66 +++++++++++++------ 1 file changed, 46 insertions(+), 20 deletions(-) diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index ca0c4f876b..679e082df6 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -4,9 +4,9 @@ import supertracker.item.Inventory; import supertracker.item.Item; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; +import java.util.*; public class ListCommand implements Command { private static final String QUANTITY_FLAG = "q"; @@ -19,6 +19,8 @@ public class ListCommand implements Command { private String secondParam; private String sortBy; private boolean isReverse; + private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); public ListCommand(boolean hasQuantity, boolean hasPrice, boolean hasExpiry, String firstParam, String secondParam, String sortBy, boolean isReverse) { @@ -44,25 +46,26 @@ public void execute() { Comparator comparator; - switch (sortBy) { - case QUANTITY_FLAG: - comparator = Item.sortByQuantity(); - break; - case PRICE_FLAG: - comparator = Item.sortByPrice(); - break; - case EX_DATE_FLAG: - comparator = Item.sortByExpiry(); - break; - default: - comparator = Item.sortByName(); - break; - } + if (!sortBy.equals(EX_DATE_FLAG)) { + switch (sortBy) { + case QUANTITY_FLAG: + comparator = Item.sortByQuantity(); + break; + case PRICE_FLAG: + comparator = Item.sortByPrice(); + break; + default: + comparator = Item.sortByName(); + break; + } - items.sort(comparator); + items.sort(comparator); - if (isReverse) { - Collections.reverse(items); + if (isReverse) { + Collections.reverse(items); + } + } else { + items = sortByExpiry(items); } for (Item item : items) { @@ -70,6 +73,29 @@ public void execute() { index++; } } + public List sortByExpiry(List items) throws NullPointerException { + Comparator nameComparator, expiryComparator; + List itemsWithExpiry = new ArrayList<>(); + List itemsWithoutExpiry = new ArrayList<>(); + nameComparator = Item.sortByName(); + expiryComparator = Item.sortByExpiry(); + for (Item item: items) { + if(item.getExpiryDate().isEqual(UNDEFINED_DATE)) { + itemsWithoutExpiry.add(item); + } else { + itemsWithExpiry.add(item); + } + } + + itemsWithExpiry.sort(expiryComparator); + itemsWithoutExpiry.sort(nameComparator); + if (isReverse) { + Collections.reverse(itemsWithExpiry); + } + + itemsWithExpiry.addAll(itemsWithoutExpiry); + return itemsWithExpiry; + } @Override public boolean isQuit() { From 67e36102e8d90f33b5cf30e8b8496b70a07b5882 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Wed, 3 Apr 2024 18:52:12 +0800 Subject: [PATCH 161/423] remove global import and fix checkstyle --- .../java/supertracker/command/ListCommand.java | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index 679e082df6..16d4c3cd36 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -6,12 +6,17 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; public class ListCommand implements Command { private static final String QUANTITY_FLAG = "q"; private static final String PRICE_FLAG = "p"; private static final String EX_DATE_FLAG = "e"; + private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private boolean hasQuantity; private boolean hasPrice; private boolean hasExpiry; @@ -19,8 +24,7 @@ public class ListCommand implements Command { private String secondParam; private String sortBy; private boolean isReverse; - private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); - private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); + public ListCommand(boolean hasQuantity, boolean hasPrice, boolean hasExpiry, String firstParam, String secondParam, String sortBy, boolean isReverse) { @@ -74,11 +78,10 @@ public void execute() { } } public List sortByExpiry(List items) throws NullPointerException { - Comparator nameComparator, expiryComparator; + Comparator nameComparator = Item.sortByName(); + Comparator expiryComparator = Item.sortByExpiry();; List itemsWithExpiry = new ArrayList<>(); List itemsWithoutExpiry = new ArrayList<>(); - nameComparator = Item.sortByName(); - expiryComparator = Item.sortByExpiry(); for (Item item: items) { if(item.getExpiryDate().isEqual(UNDEFINED_DATE)) { itemsWithoutExpiry.add(item); From eb65d3b8d2b73bf463d2733a0f4eea53486dc264 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 3 Apr 2024 20:06:55 +0800 Subject: [PATCH 162/423] Update list command --- .../supertracker/command/ListCommand.java | 67 +++++++++---------- 1 file changed, 31 insertions(+), 36 deletions(-) diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index 97ced1d72c..024714118a 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -48,28 +48,35 @@ public void execute() { List items = Inventory.getItems(); Ui.listIntro(items.size()); + List itemsWithoutExpiry = new ArrayList(); + Comparator comparator; - if (!sortBy.equals(EX_DATE_FLAG)) { - switch (sortBy) { - case QUANTITY_FLAG: - comparator = Item.sortByQuantity(); - break; - case PRICE_FLAG: - comparator = Item.sortByPrice(); - break; - default: - comparator = Item.sortByName(); - break; - } + switch (sortBy) { + case QUANTITY_FLAG: + comparator = Item.sortByQuantity(); + break; + case PRICE_FLAG: + comparator = Item.sortByPrice(); + break; + case EX_DATE_FLAG: + moveItemsWithoutExpiry(items, itemsWithoutExpiry); + itemsWithoutExpiry.sort(Item.sortByName()); + comparator = Item.sortByExpiry(); + break; + default: + comparator = Item.sortByName(); + break; + } - items.sort(comparator); + items.sort(comparator); - if (isReverse) { - Collections.reverse(items); - } - } else { - items = sortByExpiry(items); + if (isReverse) { + Collections.reverse(items); + } + + if (sortBy.equals(EX_DATE_FLAG)) { + items.addAll(itemsWithoutExpiry); } for (Item item : items) { @@ -77,27 +84,15 @@ public void execute() { index++; } } - public List sortByExpiry(List items) throws NullPointerException { - Comparator nameComparator = Item.sortByName(); - Comparator expiryComparator = Item.sortByExpiry();; - List itemsWithExpiry = new ArrayList<>(); - List itemsWithoutExpiry = new ArrayList<>(); - for (Item item: items) { - if(item.getExpiryDate().isEqual(UNDEFINED_DATE)) { + + private void moveItemsWithoutExpiry(List items, List itemsWithoutExpiry) { + for (int i = 0; i < items.size(); i++) { + if (items.get(i).getExpiryDate().isEqual(UNDEFINED_DATE)) { + Item item = items.remove(i); itemsWithoutExpiry.add(item); - } else { - itemsWithExpiry.add(item); + i--; } } - - itemsWithExpiry.sort(expiryComparator); - itemsWithoutExpiry.sort(nameComparator); - if (isReverse) { - Collections.reverse(itemsWithExpiry); - } - - itemsWithExpiry.addAll(itemsWithoutExpiry); - return itemsWithExpiry; } @Override From 5b83babad07b22753ccdf3e3c925aefb17d6c68a Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 3 Apr 2024 20:25:32 +0800 Subject: [PATCH 163/423] Add method to reset items.txt after running FileManagerTest --- .../supertracker/storage/FileManagerTest.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/test/java/supertracker/storage/FileManagerTest.java b/src/test/java/supertracker/storage/FileManagerTest.java index 0f57656dc4..3c72dc6310 100644 --- a/src/test/java/supertracker/storage/FileManagerTest.java +++ b/src/test/java/supertracker/storage/FileManagerTest.java @@ -1,5 +1,6 @@ package supertracker.storage; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import supertracker.command.NewCommand; @@ -55,4 +56,21 @@ void loadData_validData_correctlyRead() throws IOException { assertEquals(item.getExpiryDate(), loadedItem.getExpiryDate()); } } + + @AfterAll + public static void reset() throws IOException { + Inventory.clear(); + + NewCommand[] newCommands = { + new NewCommand("Apple", 10, 2.00, UNDEFINED_DATE), + new NewCommand("Banana", 20, 3.00, CURR_DATE), + new NewCommand("Cake", 30, 4.00, UNDEFINED_DATE) + }; + + for (NewCommand newCommand : newCommands) { + newCommand.execute(); + } + + FileManager.saveData(); + } } From 3ed87e0a18ac471bcc99baf80e5143a08feccb3a Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 3 Apr 2024 22:11:06 +0800 Subject: [PATCH 164/423] Update UML diagrams for list command --- docs/uml-diagrams/ListCommand.puml | 36 +++++++++++++++++++--- docs/uml-diagrams/ListCommandClass.png | Bin 86909 -> 55315 bytes docs/uml-diagrams/ListCommandSequence.png | Bin 91908 -> 86977 bytes 3 files changed, 32 insertions(+), 4 deletions(-) diff --git a/docs/uml-diagrams/ListCommand.puml b/docs/uml-diagrams/ListCommand.puml index 4fca792e94..b9a8d38fbb 100644 --- a/docs/uml-diagrams/ListCommand.puml +++ b/docs/uml-diagrams/ListCommand.puml @@ -27,6 +27,7 @@ class ListCommand { -secondParam:String -sortBy:String -isReverse:boolean + -moveItemsWithoutExpiry(items:List, itemsWithoutExpiry:List) +ListCommand(hasQuantity:boolean, hasPrice:boolean, hasExpiry:boolean, firstParam:String, secondParam:String, sortBy:String, isReverse:boolean) +execute():void @@ -45,7 +46,7 @@ class Inventory { } class Ui { - {static}+listIntro(size:int):void + {static}+listIntro(size:int):void {static}+listItem(item:Item, index:int, hasQuantity:boolean, hasPrice:boolean, {static}hasExpiry:boolean, firstParam:String, secondParam:String):void } @@ -64,6 +65,7 @@ participant "Item" as Item <> #fbffb2 participant "Collections" as Collections <> #ffcdd6 participant "Ui" as Ui <> #e5c2ea participant ":ArrayList" as ArrayList #bcf7cf +participant ":ArrayList" as ArrayList2 #dfe6ff SuperTracker -> ListCommand : execute() activate ListCommand #cbf7f4 @@ -84,6 +86,11 @@ activate Ui #e5c2ea Ui --> ListCommand deactivate Ui +ListCommand -> ArrayList2 ** : new ArrayList() +activate ArrayList2 #dfe6ff +ArrayList2 --> ListCommand : itemsWithoutExpiry:ArrayList +deactivate ArrayList2 + alt sortBy == "q" ListCommand -> Item : sortByQuantity() @@ -100,11 +107,25 @@ deactivate Item else sortBy == "e" -ListCommand -> Item : sortByExpiry() +ListCommand -> ListCommand : moveItemsWithoutExpiry(items:ArrayList, itemsWithoutExpiry:ArrayList) +activate ListCommand #cbf7f4 +ListCommand --> ListCommand +deactivate ListCommand + +ListCommand -> Item : sortByName() activate Item #fbffb2 Item --> ListCommand : comparator:Comparator deactivate Item +ListCommand -> ArrayList2 : sort(comparator:Comparator) +activate ArrayList2 #dfe6ff +ArrayList2 --> ListCommand +deactivate ArrayList2 + +ListCommand -> Item : sortByExpiry() +activate Item #fbffb2 +Item --> ListCommand : comparator:Comparator +deactivate Item else else @@ -113,8 +134,6 @@ activate Item #fbffb2 Item --> ListCommand : comparator:Comparator deactivate Item - - end ListCommand -> ArrayList : sort(comparator:Comparator) @@ -131,6 +150,15 @@ deactivate Collections end +opt sortBy == "e" + +ListCommand -> ArrayList : addAll(itemsWithoutExpiry:ArrayList) +activate ArrayList #bcf7cf +ArrayList --> ListCommand +deactivate + +end + loop items ListCommand -> Ui : listItem(item:Item, index:int, hasQuantity:boolean, hasPrice:boolean, hasExpiry:boolean, firstParam:String, secondParam:String):void) diff --git a/docs/uml-diagrams/ListCommandClass.png b/docs/uml-diagrams/ListCommandClass.png index cee50775fa688b28e9331a1ed96d08c27b5f3439..c786252d9c7427c50ea1cf7c23321db221674a46 100644 GIT binary patch literal 55315 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

u~g`-79HnXOK=@RQ)>kDpfCw7aHT# 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 V?TV>ejsGR7t7siaS2}t5KL9w@Qb+&* literal 86909 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 From b3d4d5d6eb95065afb4e54a1b5d3a667b75c3fab Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 3 Apr 2024 22:28:31 +0800 Subject: [PATCH 165/423] Update developer guide for list command --- docs/DeveloperGuide.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 6715b50f20..674936ffdf 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -252,11 +252,15 @@ The following sequence diagram shows the execution of a ListCommand
1. The `SuperTracker` class calls the `execute` method of `ListCommand` 2. The `getItems` method of the `Inventory` class is called to get an `ArrayList` of items in the inventory 3. The `listIntro` method of the `Ui` class is called to print out the total number of items in the inventory -4. Depending on the value of `sortBy`, either the `sortByQuantity`, `sortByPrice`, `sortByExpiry` or `sortByName` method of the `Item` class will be called. -A comparator used to sort the `ArrayList` of items is returned -5. The `sort` method of the `ArrayList` of items is called with a comparator as an input parameter -6. If `isReverse` is true, the `reverse` method of the `Collections` class is called to reverse the `ArrayList` of items -7. For each item in the list, the `listItem` method of the `Ui` class is called to print each item to the output +4. A new `ArrayList` to store the items without an expiry date is created +5. Depending on the value of `sortBy`, either the `sortByQuantity`, `sortByPrice`, `sortByExpiry` or `sortByName` method of the `Item` class will be called. +A comparator used to sort the `ArrayList` of items is returned. +> For the specific case where `sortBy == "e"`, the private method `moveItemsWithoutExpiry` is called. +Items without an expiry date are removed from the original `ArrayList` of items and added to the `ArrayList` created in step 4. This `ArrayList` is then sorted in ascending alphabetical order. +6. The `sort` method of the `ArrayList` of items is called with a comparator as an input parameter +7. If `isReverse` is true, the `reverse` method of the `Collections` class is called to reverse the `ArrayList` of items +8. If `sortBy == "e"`, the items without an expiry date are added back to the original `ArrayList` by calling the `addAll` method +9. For each item in the list, the `listItem` method of the `Ui` class is called to print each item to the output ## Product scope ### Target user profile From ec3c9e3062db61195cd683a02531bdbb9e11b83e Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 3 Apr 2024 22:36:43 +0800 Subject: [PATCH 166/423] Add missing quotation --- docs/DeveloperGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 674936ffdf..3eefa4f85d 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -227,7 +227,7 @@ The 7 parameters in the constructor `hasQuantity`, `hasPrice`, `hasExpiry`, `fir - Value corresponds to the flag that comes second in the command - If the command has less than 2 of these flags (`q/`,`p/`,`e/`), then `""` would be the default value (this variable would no longer be used in the execution of `ListCommand`) - `sortBy` - - Can only take 4 possible values `"q"`,`"p"`,`"e`, or `""` + - Can only take 4 possible values `"q"`,`"p"`,`"e"`, or `""` - `"q"` if the user has input the sort by quantity flag `sq/` - `"p"` if the user has input the sort by price flag `sp/` - `"e"` if the user has input the sort by expiry flag `se/` From 05abb8e65344554f8a50ab320ecc619051cb4b70 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sat, 6 Apr 2024 15:50:28 +0800 Subject: [PATCH 167/423] Fix UG error as stated in issue #135 --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 7716b40fb4..257e8b51f8 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -196,7 +196,7 @@ Format: `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` - `p/` will list the price of each item in each row - `e/` will list the expiry date of each item in each row if it contains a valid expiry date - In each row, quantity, price and expiry date will be printed in the same order as the flags - - e.g. if the command specifies `list p/ q/ e/`, the quantity will be printed first followed by price and expiry date + - e.g. if the command specifies `list p/ q/ e/`, the price will be printed first followed by quantity and expiry date - `sq/` will list the items in order of ascending quantity - `sp/` will list the items in order of ascending price - `se/` will list the items in order of ascending date, items with no date will be displayed at the bottom of the list and sorted in ascending alphabetical order (A-Z) by default From aabffec009956096b78774e62754fbfa3569f347 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sat, 6 Apr 2024 16:46:32 +0800 Subject: [PATCH 168/423] Fix integer overflow --- src/main/java/supertracker/parser/Parser.java | 12 ++++++++++ .../java/supertracker/ui/ErrorMessage.java | 2 ++ .../supertracker/command/AddCommandTest.java | 24 +++++++++++++------ .../command/RemoveCommandTest.java | 21 ++++++++-------- 4 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index fac4589576..badb2e3913 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -13,6 +13,7 @@ import supertracker.command.ReportCommand; import supertracker.command.UpdateCommand; import supertracker.item.Inventory; +import supertracker.item.Item; import supertracker.ui.ErrorMessage; import java.time.format.DateTimeFormatter; @@ -386,6 +387,16 @@ private static void validateReportType(String reportType) throws TrackerExceptio } } + private static void validateNoIntegerOverflow(String name, int quantityToAdd) throws TrackerException { + Item item = Inventory.get(name); + int currentQuantity = item.getQuantity(); + int maximumPossibleAddQuantity = Integer.MAX_VALUE - currentQuantity; + if (quantityToAdd > maximumPossibleAddQuantity) { + throw new TrackerException(ErrorMessage.INTEGER_OVERFLOW); + } + } + + private static Command parseNewCommand(String input) throws TrackerException { String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG}; Matcher matcher = getPatternMatcher(NEW_COMMAND_REGEX, input, flags); @@ -512,6 +523,7 @@ private static Command parseAddCommand(String input) throws TrackerException { int quantity = parseQuantity(quantityString); validateNonNegativeQuantity(quantityString, quantity); + validateNoIntegerOverflow(name, quantity); return new AddCommand(name,quantity); } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 8af1bc28ae..7cd127844c 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -35,4 +35,6 @@ public class ErrorMessage { public static final String FILE_LOAD_ERROR = "Oops! Unable to load your previous data due to an I/O error!"; public static final String FILE_CORRUPTED_ERROR = "Oops! Unable to load some of your previous data as the data in the save file has been corrupted!"; + public static final String INTEGER_OVERFLOW = "Unable to add your specified number of items. " + + "Why do you need more than 2147483647 items anyway?"; } diff --git a/src/test/java/supertracker/command/AddCommandTest.java b/src/test/java/supertracker/command/AddCommandTest.java index 2db6260d31..f98ba263c3 100644 --- a/src/test/java/supertracker/command/AddCommandTest.java +++ b/src/test/java/supertracker/command/AddCommandTest.java @@ -19,20 +19,24 @@ public class AddCommandTest { @BeforeEach public void setUp() { Inventory.clear(); + + String name = "Milk"; + int quantity = 100; + double price = 5.00; + LocalDate date = LocalDate.parse("01-01-2113", DateTimeFormatter.ofPattern("dd-MM-yyyy")); + + Command newCommand = new NewCommand(name, quantity, price, date); + newCommand.execute(); } @Test public void addCommand_validData_correctlyConstructed(){ String name = "Milk"; int quantity = 100; - double price = 5.00; - LocalDate date = LocalDate.parse("01-01-2113", DateTimeFormatter.ofPattern("dd-MM-yyyy")); int quantityToAdd = 50; int newQuantity = quantity + quantityToAdd; - Command newCommand = new NewCommand(name, quantity, price, date); - newCommand.execute(); Command addCommand = new AddCommand(name, quantityToAdd); addCommand.execute(); @@ -57,13 +61,19 @@ public void addCommand_emptyParamInput() { @Test public void addCommand_itemNotInList() { - String userInput = "add n/Milk q/100"; + String userInput = "add n/Cake q/100"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void addCommand_quantityLessThanZero() { + String userInput = "add n/Milk q/-100"; assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); } @Test - public void newCommand_quantityLessThanZero() { - String userInput = "new n/Milk q/-100"; + public void addCommand_integerOverflow() { + String userInput = "add n/Milk q/2147483647"; assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); } } diff --git a/src/test/java/supertracker/command/RemoveCommandTest.java b/src/test/java/supertracker/command/RemoveCommandTest.java index f9d8610f37..bece9115db 100644 --- a/src/test/java/supertracker/command/RemoveCommandTest.java +++ b/src/test/java/supertracker/command/RemoveCommandTest.java @@ -19,20 +19,24 @@ public class RemoveCommandTest { @BeforeEach public void setUp() { Inventory.clear(); + + String name = "Milk"; + int quantity = 100; + double price = 5.00; + LocalDate date = LocalDate.parse("22-08-2013", DateTimeFormatter.ofPattern("dd-MM-yyyy")); + + Command newCommand = new NewCommand(name, quantity, price, date); + newCommand.execute(); } @Test public void removeCommand_validData_correctlyConstructed(){ String name = "Milk"; int quantity = 100; - double price = 5.00; int quantityToRemove = 50; int newQuantity = quantity - quantityToRemove; - LocalDate date = LocalDate.parse("22-08-2013", DateTimeFormatter.ofPattern("dd-MM-yyyy")); - Command newCommand = new NewCommand(name, quantity, price, date); - newCommand.execute(); Command removeCommand = new RemoveCommand(name, quantityToRemove); removeCommand.execute(); @@ -57,28 +61,23 @@ public void removeCommand_emptyParamInput() { @Test public void removeCommand_itemNotInList() { - String userInput = "remove n/Milk q/50"; + String userInput = "remove n/Cake /50"; assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); } @Test public void removeCommand_quantityLessThanZero() { - String userInput = "new n/Milk q/-50"; + String userInput = "remove n/Milk q/-50"; assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); } @Test public void removeCommand_exceedCurrentQuantity() { String name = "Milk"; - int quantity = 50; - double price = 5.00; int quantityToRemove = 100; int newQuantity = 0; - LocalDate date = LocalDate.parse("22/08/2033", DateTimeFormatter.ofPattern("dd/MM/yyyy")); - Command newCommand = new NewCommand(name, quantity, price, date); - newCommand.execute(); Command removeCommand = new RemoveCommand(name, quantityToRemove); removeCommand.execute(); From 5ed5004f98ed2b5afed356ccb790ea31b7349880 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sat, 6 Apr 2024 16:48:44 +0800 Subject: [PATCH 169/423] Remove extra line --- src/main/java/supertracker/parser/Parser.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index badb2e3913..5864b4670b 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -396,7 +396,6 @@ private static void validateNoIntegerOverflow(String name, int quantityToAdd) th } } - private static Command parseNewCommand(String input) throws TrackerException { String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG}; Matcher matcher = getPatternMatcher(NEW_COMMAND_REGEX, input, flags); From 55d77e3e8f31cc503f736a47a1bde1e23662c7c4 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sat, 6 Apr 2024 17:16:40 +0800 Subject: [PATCH 170/423] Fix issue #173 --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 7716b40fb4..a9a9d40ff8 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -238,7 +238,7 @@ All items below the threshold value would be listed out. > Note: If report type is **low stock** threshold value must be **included**. However, if report type is **expiry** threshold value must be **excluded**. -Example: `report r/low stock` +Example: `report r/low stock t/31` ``` There are 3 items low on stocks! 1. Name: Orange From 997ddde6e190370d18ae92936fc968f70fc35e8a Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 6 Apr 2024 17:33:54 +0800 Subject: [PATCH 171/423] Update separator characters in text file --- src/main/java/supertracker/storage/FileManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/supertracker/storage/FileManager.java b/src/main/java/supertracker/storage/FileManager.java index ffa3f86f00..02980787cb 100644 --- a/src/main/java/supertracker/storage/FileManager.java +++ b/src/main/java/supertracker/storage/FileManager.java @@ -19,7 +19,7 @@ public class FileManager { protected static final String DATA_PATH = "./data/"; protected static final String FILE_NAME = "items.txt"; protected static final String SAVE_FILE_PATH = DATA_PATH + FILE_NAME; - protected static final String SEPARATOR = ",,,"; + protected static final String SEPARATOR = " ,,, "; protected static final String PLACEHOLDER = "*&_"; protected static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); protected static final String NO_DATE = "no date"; @@ -101,7 +101,7 @@ public static void loadData() throws IOException { private static String getItemData(Item item) { String name = item.getName(); - String excess = ""; + String excess = "w"; if (name.contains(SEPARATOR)) { excess = "e"; name = name.replace(SEPARATOR, PLACEHOLDER); From ff7770adb97f84343a1a904e007536ac4d15b451 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sat, 6 Apr 2024 17:36:49 +0800 Subject: [PATCH 172/423] Update features link --- docs/UserGuide.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index a9a9d40ff8..a49a1d97e8 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -6,7 +6,7 @@ SuperTracker is a desktop app for managing a supermarket's inventory, optimized for use via a Command Line Interface (CLI). - [Quick Start](#quick-start) -- [Features](#features-) +- [Features](#features) - [Create a new item: `new`](#create-a-new-item-new) - [Delete an item: `delete`](#delete-an-item-delete) - [Increase quantity: `add`](#increase-quantity-add) @@ -28,11 +28,11 @@ optimized for use via a Command Line Interface (CLI). 2. Download the latest `SuperTracker.jar` from [here](https://github.com/AY2324S2-CS2113-T13-4/tp/releases). 3. Open a command terminal, cd into the folder you put the jar file in, and use the `java -jar SuperTracker.jar` command to run the application. 4. Type the command in the command box and press Enter to execute it. -5. Refer to the [Features](#features-) below for details of each command and its format. +5. Refer to the [Features](#features) below for details of each command and its format. -------------------------------------------------------------------------------------------------------------------- -## Features +## Features > Notes about the command format: > - Words in uppercase are parameters to be specified by the user From e38bea55915d270752fd5a7052b55d5a94aa2549 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sat, 6 Apr 2024 18:13:13 +0800 Subject: [PATCH 173/423] Fix issue #135 --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index a49a1d97e8..ae46747f44 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -196,7 +196,7 @@ Format: `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` - `p/` will list the price of each item in each row - `e/` will list the expiry date of each item in each row if it contains a valid expiry date - In each row, quantity, price and expiry date will be printed in the same order as the flags - - e.g. if the command specifies `list p/ q/ e/`, the quantity will be printed first followed by price and expiry date + - e.g. if the command specifies `list q/ p/ e/`, the quantity will be printed first followed by price and expiry date - `sq/` will list the items in order of ascending quantity - `sp/` will list the items in order of ascending price - `se/` will list the items in order of ascending date, items with no date will be displayed at the bottom of the list and sorted in ascending alphabetical order (A-Z) by default From 0ad8576098adc9befe62dfbda2b504a89196d9cb Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sat, 6 Apr 2024 18:18:51 +0800 Subject: [PATCH 174/423] ug low stock update --- docs/UserGuide.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 257e8b51f8..d418ec3add 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -155,7 +155,7 @@ Here are your found items:
### Update an item: `update` -Update the quantity and/or price of an item +Update the quantity ,price and/or expiry of an item Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` - `NAME` is case-insensitive @@ -238,7 +238,7 @@ All items below the threshold value would be listed out. > Note: If report type is **low stock** threshold value must be **included**. However, if report type is **expiry** threshold value must be **excluded**. -Example: `report r/low stock` +Example: `report r/low stock t/35` ``` There are 3 items low on stocks! 1. Name: Orange @@ -249,12 +249,14 @@ There are 3 items low on stocks! Quantity: 30 ``` Example: `report r/expiry` + +[//]: # (updates dates to be valid for PE day) ``` There are 2 items close to expiry! 1. Name: Orange - Expiry Date: 08/04/2024 + Expiry Date: 08/04/2024 2. Name: Apple - Expiry Date: 09/05/2024 + Expiry Date: 09/04/2024 ```
From 018e454ae4d0fc11a7acff672fc4b03ecf7252b1 Mon Sep 17 00:00:00 2001 From: vimalapugazhan <111181615+vimalapugazhan@users.noreply.github.com> Date: Sat, 6 Apr 2024 18:34:23 +0800 Subject: [PATCH 175/423] Update docs/UserGuide.md Co-authored-by: awesomesjh <89649663+awesomesjh@users.noreply.github.com> --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 1921ca4968..d617b3acec 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -256,7 +256,7 @@ Example: `report r/expiry` ``` There are 2 items close to expiry! 1. Name: Orange - Expiry Date: 08/04/2024 + Expiry Date: 08/04/2024 2. Name: Apple Expiry Date: 09/04/2024 ``` From ac65f4e589ce1f618e58f84b709e149c2d1f915b Mon Sep 17 00:00:00 2001 From: vimalapugazhan <111181615+vimalapugazhan@users.noreply.github.com> Date: Sat, 6 Apr 2024 18:34:33 +0800 Subject: [PATCH 176/423] Update docs/UserGuide.md Co-authored-by: awesomesjh <89649663+awesomesjh@users.noreply.github.com> --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index d617b3acec..68a28fe007 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -155,7 +155,7 @@ Here are your found items:
### Update an item: `update` -Update the quantity ,price and/or expiry of an item +Update the quantity, price and/or expiry date of an item Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` - `NAME` is case-insensitive From 27a8d2d4b483a048b96737835ff6d53c21e22f14 Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 6 Apr 2024 18:40:40 +0800 Subject: [PATCH 177/423] Update JUnit tests --- .../java/supertracker/storage/FileManagerTest.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/test/java/supertracker/storage/FileManagerTest.java b/src/test/java/supertracker/storage/FileManagerTest.java index 3c72dc6310..80167a13c1 100644 --- a/src/test/java/supertracker/storage/FileManagerTest.java +++ b/src/test/java/supertracker/storage/FileManagerTest.java @@ -27,7 +27,10 @@ public static void setUp() throws IOException { new NewCommand("orange", 10, 2.00, CURR_DATE), new NewCommand("6969", 50, 15.9, UNDEFINED_DATE), new NewCommand("a1@ lol qwe^^%qw)e", 9431, 21.57, UNDEFINED_DATE), - new NewCommand("1_+$%$_)00", 9999999, 20.90, CURR_DATE) + new NewCommand("1_+$%$_)00", 9999999, 20.90, CURR_DATE), + new NewCommand("cheese,,,p/,,,,", 9, 7.00, UNDEFINED_DATE), + new NewCommand("cheese*&_yoyo*&_ ,,,q/-120,,", 9, 0, CURR_DATE), + new NewCommand("p ,,, l", 40, 0, UNDEFINED_DATE) }; for (NewCommand newItem : newItems) { @@ -45,7 +48,10 @@ void loadData_validData_correctlyRead() throws IOException { new Item("orange", 10, 2.00, CURR_DATE), new Item("6969", 50, 15.9, UNDEFINED_DATE), new Item("a1@ lol qwe^^%qw)e", 9431, 21.57, UNDEFINED_DATE), - new Item("1_+$%$_)00", 9999999, 20.90, CURR_DATE) + new Item("1_+$%$_)00", 9999999, 20.90, CURR_DATE), + new Item("cheese,,,p/,,,,", 9, 7.00, UNDEFINED_DATE), + new Item("cheese*&_yoyo*&_ ,,,q/-120,,", 9, 0, CURR_DATE), + new Item("p ,,, l", 40, 0, UNDEFINED_DATE) }; for (Item item : items) { From 2f8aa7cd55a42f52e818960d75a1d40e5e62bd23 Mon Sep 17 00:00:00 2001 From: rismm Date: Sat, 6 Apr 2024 18:49:13 +0800 Subject: [PATCH 178/423] Fix incomplete description --- docs/UserGuide.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 68a28fe007..8758e10e1e 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -278,7 +278,7 @@ the `SuperTracker.jar` file is in. Data will be saved automatically after any co ### Loading inventory data Data that has been saved to the hard disk will be loaded and read by the program each time it is launched. -If there is no data file, the program will the loading process. +If there is no data file, the program will the skip loading process.
From 48cb940ef81c07fafa91826dddd217d28d29679f Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sat, 6 Apr 2024 21:54:50 +0800 Subject: [PATCH 179/423] Add stable sorting e.g. list sp/ sq/ will first sort the least according to ascending quantity, followed by ascending price --- .../supertracker/command/ListCommand.java | 59 +++++++++---------- src/main/java/supertracker/parser/Parser.java | 29 ++++++--- 2 files changed, 50 insertions(+), 38 deletions(-) diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index 024714118a..11c38e3783 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -7,6 +7,7 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.ArrayList; +import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -15,6 +16,7 @@ public class ListCommand implements Command { private static final String QUANTITY_FLAG = "q"; private static final String PRICE_FLAG = "p"; private static final String EX_DATE_FLAG = "e"; + private static final String ALPHABET = ""; private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private boolean hasQuantity; @@ -22,19 +24,23 @@ public class ListCommand implements Command { private boolean hasExpiry; private String firstParam; private String secondParam; - private String sortBy; + private String firstSortParam; + private String secondSortParam; + private String thirdSortParam; private boolean isReverse; public ListCommand(boolean hasQuantity, boolean hasPrice, boolean hasExpiry, - String firstParam, String secondParam, String sortBy, boolean isReverse) { + String firstParam, String secondParam, String firstSortParam, String secondSortParam, String thirdSortParam, boolean isReverse) { this.hasQuantity = hasQuantity; this.hasPrice = hasPrice; this.hasExpiry = hasExpiry; this.firstParam = firstParam; this.secondParam = secondParam; - this.sortBy = sortBy; + this.firstSortParam = firstSortParam; + this.secondSortParam = secondSortParam; + this.thirdSortParam = thirdSortParam; this.isReverse = isReverse; } @@ -42,17 +48,33 @@ public ListCommand(boolean hasQuantity, boolean hasPrice, boolean hasExpiry, public void execute() { assert isValid(firstParam); assert isValid(secondParam); - assert isValid(sortBy); + assert isValid(firstSortParam); + assert isValid(secondSortParam); + assert isValid(thirdSortParam); int index = 1; List items = Inventory.getItems(); Ui.listIntro(items.size()); - List itemsWithoutExpiry = new ArrayList(); + sortBy(ALPHABET, items); + sortBy(thirdSortParam, items); + sortBy(secondSortParam, items); + sortBy(firstSortParam, items); + if (isReverse) { + Collections.reverse(items); + } + + for (Item item : items) { + Ui.listItem(item, index, hasQuantity, hasPrice, hasExpiry, firstParam, secondParam); + index++; + } + } + + private void sortBy(String sortParam, List items) { Comparator comparator; - switch (sortBy) { + switch (sortParam) { case QUANTITY_FLAG: comparator = Item.sortByQuantity(); break; @@ -60,8 +82,6 @@ public void execute() { comparator = Item.sortByPrice(); break; case EX_DATE_FLAG: - moveItemsWithoutExpiry(items, itemsWithoutExpiry); - itemsWithoutExpiry.sort(Item.sortByName()); comparator = Item.sortByExpiry(); break; default: @@ -70,29 +90,6 @@ public void execute() { } items.sort(comparator); - - if (isReverse) { - Collections.reverse(items); - } - - if (sortBy.equals(EX_DATE_FLAG)) { - items.addAll(itemsWithoutExpiry); - } - - for (Item item : items) { - Ui.listItem(item, index, hasQuantity, hasPrice, hasExpiry, firstParam, secondParam); - index++; - } - } - - private void moveItemsWithoutExpiry(List items, List itemsWithoutExpiry) { - for (int i = 0; i < items.size(); i++) { - if (items.get(i).getExpiryDate().isEqual(UNDEFINED_DATE)) { - Item item = items.remove(i); - itemsWithoutExpiry.add(item); - i--; - } - } } @Override diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 5864b4670b..ecdab4fec4 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -309,7 +309,7 @@ private static void validateNonEmptyParam(String string) throws TrackerException } private static ArrayList getParamPositions(String input, boolean hasQuantity, boolean hasPrice, - boolean hasExpiry) { + boolean hasExpiry, String quantityFlag, String priceFlag, String expiryFlag) { ArrayList paramPositions = new ArrayList<>(); // to check if p, q, e appears first and second @@ -318,15 +318,15 @@ private static ArrayList getParamPositions(String input, boolean hasQua int expiryPosition; if (hasQuantity) { - quantityPosition = input.indexOf(QUANTITY_FLAG + BASE_FLAG); + quantityPosition = input.indexOf(quantityFlag + BASE_FLAG); paramPositions.add(quantityPosition); } if (hasPrice) { - pricePosition = input.indexOf(PRICE_FLAG + BASE_FLAG); + pricePosition = input.indexOf(priceFlag + BASE_FLAG); paramPositions.add(pricePosition); } if (hasExpiry) { - expiryPosition = input.indexOf(EX_DATE_FLAG + BASE_FLAG); + expiryPosition = input.indexOf(expiryFlag + BASE_FLAG); paramPositions.add(expiryPosition); } @@ -468,7 +468,7 @@ private static Command parseListCommand(String input) throws TrackerException { boolean hasSortExpiry = !matcher.group(SORT_EX_DATE_GROUP).isEmpty(); boolean isReverse = !matcher.group(REVERSE_GROUP).isEmpty(); - ArrayList paramOrder = getParamPositions(input, hasQuantity, hasPrice, hasExpiry); + ArrayList paramOrder = getParamPositions(input, hasQuantity, hasPrice, hasExpiry, QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG); String firstParam = ""; String secondParam = ""; @@ -481,11 +481,26 @@ private static Command parseListCommand(String input) throws TrackerException { assert (paramOrder.size() < 2); } + ArrayList sortParamOrder = getParamPositions(input, hasSortQuantity, hasSortPrice, hasSortExpiry, SORT_QUANTITY_FLAG, SORT_PRICE_FLAG, SORT_EX_DATE_FLAG); + String firstSortParam = ""; + String secondSortParam = ""; + String thirdSortParam = ""; + try { + int firstSortParamPos = sortParamOrder.get(0); + firstSortParam = input.substring(firstSortParamPos + 1, firstSortParamPos + 2); + int secondSortParamPos = sortParamOrder.get(1); + secondSortParam = input.substring(secondSortParamPos + 1, secondSortParamPos + 2); + int thirdSortParamPos = sortParamOrder.get(2); + thirdSortParam = input.substring(thirdSortParamPos + 1, thirdSortParamPos + 2); + } catch (NullPointerException | IndexOutOfBoundsException ignored) { + assert (sortParamOrder.size() < 3); + } + // sort by whichever sorting method comes first // if sorting method is unspecified then sort by alphabet - String sortBy = getSortBy(input, hasSortQuantity, hasSortPrice, hasSortExpiry); + // String sortBy = getSortBy(input, hasSortQuantity, hasSortPrice, hasSortExpiry); - return new ListCommand(hasQuantity, hasPrice, hasExpiry, firstParam, secondParam, sortBy, isReverse); + return new ListCommand(hasQuantity, hasPrice, hasExpiry, firstParam, secondParam, firstSortParam, secondSortParam, thirdSortParam, isReverse); } //@@vimalapugazhan From a03bfd60a98dab51584906ce7b512d268aa866eb Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sat, 6 Apr 2024 22:58:53 +0800 Subject: [PATCH 180/423] Refactor code for listing items --- .../supertracker/command/ListCommand.java | 23 ++--- src/main/java/supertracker/item/Item.java | 6 ++ src/main/java/supertracker/parser/Parser.java | 88 ++++++------------ src/main/java/supertracker/ui/Ui.java | 91 +++++-------------- 4 files changed, 63 insertions(+), 145 deletions(-) diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index 11c38e3783..4ee9ef350d 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -4,10 +4,6 @@ import supertracker.item.Inventory; import supertracker.item.Item; -import java.time.LocalDate; -import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -17,27 +13,19 @@ public class ListCommand implements Command { private static final String PRICE_FLAG = "p"; private static final String EX_DATE_FLAG = "e"; private static final String ALPHABET = ""; - private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); - private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); - private boolean hasQuantity; - private boolean hasPrice; - private boolean hasExpiry; private String firstParam; private String secondParam; + private String thirdParam; private String firstSortParam; private String secondSortParam; private String thirdSortParam; private boolean isReverse; + public ListCommand(String firstParam, String secondParam, String thirdParam, String firstSortParam, String secondSortParam, String thirdSortParam, boolean isReverse) { - public ListCommand(boolean hasQuantity, boolean hasPrice, boolean hasExpiry, - String firstParam, String secondParam, String firstSortParam, String secondSortParam, String thirdSortParam, boolean isReverse) { - - this.hasQuantity = hasQuantity; - this.hasPrice = hasPrice; - this.hasExpiry = hasExpiry; this.firstParam = firstParam; this.secondParam = secondParam; + this.thirdParam = thirdParam; this.firstSortParam = firstSortParam; this.secondSortParam = secondSortParam; this.thirdSortParam = thirdSortParam; @@ -48,11 +36,11 @@ public ListCommand(boolean hasQuantity, boolean hasPrice, boolean hasExpiry, public void execute() { assert isValid(firstParam); assert isValid(secondParam); + assert isValid(thirdParam); assert isValid(firstSortParam); assert isValid(secondSortParam); assert isValid(thirdSortParam); - int index = 1; List items = Inventory.getItems(); Ui.listIntro(items.size()); @@ -65,8 +53,9 @@ public void execute() { Collections.reverse(items); } + int index = 1; for (Item item : items) { - Ui.listItem(item, index, hasQuantity, hasPrice, hasExpiry, firstParam, secondParam); + Ui.listItem(item, index, firstParam, secondParam, thirdParam); index++; } } diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java index 2273b1e5e6..e27de035e6 100644 --- a/src/main/java/supertracker/item/Item.java +++ b/src/main/java/supertracker/item/Item.java @@ -2,9 +2,11 @@ import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import java.util.Comparator; public class Item { + private static final DateTimeFormatter DATE_FORMAT_PRINT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); private String name; private int quantity; private double price; @@ -37,6 +39,10 @@ public String getPriceString() { return "$" + String.format("%.2f", price); } + public String getExpiryDateString() { + return expiryDate.format(DATE_FORMAT_PRINT); + } + public static Comparator sortByName() { return Comparator.comparing(Item::getName, String.CASE_INSENSITIVE_ORDER); } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index ecdab4fec4..bab61ceeb6 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -331,41 +331,21 @@ private static ArrayList getParamPositions(String input, boolean hasQua } Collections.sort(paramPositions); + assert paramPositions.size() <= 3; return paramPositions; } - private static String getSortBy(String input, boolean hasSortQuantity, boolean hasSortPrice, - boolean hasSortExpiry) { - String sortBy; - int sortQuantityPosition; - int sortPricePosition; - int sortExpiryPosition; - ArrayList sortParamPos = new ArrayList<>(); - - if (hasSortQuantity) { - sortQuantityPosition = input.indexOf(SORT_QUANTITY_FLAG + BASE_FLAG); - sortParamPos.add(sortQuantityPosition); - } - if (hasSortPrice) { - sortPricePosition = input.indexOf(SORT_PRICE_FLAG + BASE_FLAG); - sortParamPos.add(sortPricePosition); - } - if (hasSortExpiry) { - sortExpiryPosition = input.indexOf(SORT_EX_DATE_FLAG + BASE_FLAG); - sortParamPos.add(sortExpiryPosition); - } - - Collections.sort(sortParamPos); - int sortByPos; - - if (hasSortExpiry || hasSortPrice || hasSortQuantity) { - sortByPos = sortParamPos.get(0); - sortBy = input.substring(sortByPos + 1, sortByPos + 2); - } else { - sortBy = ""; + private static String extractParam(String input, ArrayList paramOrder, int index, boolean isSort) { + try { + int paramPos = paramOrder.get(index); + if (isSort) { + return input.substring(paramPos + 1, paramPos + 2); + } + return input.substring(paramPos, paramPos + 1); + } catch (IndexOutOfBoundsException | NullPointerException ignored) { + return ""; } - return sortBy; } private static void validateNonEmptyParamsReport(String reportType, String thresholdString) @@ -440,7 +420,6 @@ private static Command parseUpdateCommand(String input) throws TrackerException validateNonEmptyParamsUpdate(name, quantityString, priceString, dateString); validateItemExistsInInventory(name, ErrorMessage.ITEM_NOT_IN_LIST_UPDATE); - int quantity = parseQuantity(quantityString); double price = parsePrice(priceString); LocalDate expiryDate = parseExpiryDateUpdate(dateString); @@ -452,8 +431,15 @@ private static Command parseUpdateCommand(String input) throws TrackerException } private static Command parseListCommand(String input) throws TrackerException { - String[] flags = {QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG, SORT_QUANTITY_FLAG, SORT_PRICE_FLAG, - SORT_EX_DATE_FLAG, REVERSE_FLAG}; + String[] flags = { + QUANTITY_FLAG, + PRICE_FLAG, + EX_DATE_FLAG, + SORT_QUANTITY_FLAG, + SORT_PRICE_FLAG, + SORT_EX_DATE_FLAG, + REVERSE_FLAG + }; Matcher matcher = getPatternMatcher(LIST_COMMAND_REGEX, input, flags); if (!matcher.matches()) { @@ -469,38 +455,16 @@ private static Command parseListCommand(String input) throws TrackerException { boolean isReverse = !matcher.group(REVERSE_GROUP).isEmpty(); ArrayList paramOrder = getParamPositions(input, hasQuantity, hasPrice, hasExpiry, QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG); - String firstParam = ""; - String secondParam = ""; - - try { - int firstParamPos = paramOrder.get(0); - int secondParamPos = paramOrder.get(1); - firstParam = input.substring(firstParamPos, firstParamPos + 1); - secondParam = input.substring(secondParamPos, secondParamPos + 1); - } catch (NullPointerException | IndexOutOfBoundsException ignored) { - assert (paramOrder.size() < 2); - } + String firstParam = extractParam(input, paramOrder, 0, false); + String secondParam = extractParam(input, paramOrder, 1, false); + String thirdParam = extractParam(input, paramOrder, 2, false); ArrayList sortParamOrder = getParamPositions(input, hasSortQuantity, hasSortPrice, hasSortExpiry, SORT_QUANTITY_FLAG, SORT_PRICE_FLAG, SORT_EX_DATE_FLAG); - String firstSortParam = ""; - String secondSortParam = ""; - String thirdSortParam = ""; - try { - int firstSortParamPos = sortParamOrder.get(0); - firstSortParam = input.substring(firstSortParamPos + 1, firstSortParamPos + 2); - int secondSortParamPos = sortParamOrder.get(1); - secondSortParam = input.substring(secondSortParamPos + 1, secondSortParamPos + 2); - int thirdSortParamPos = sortParamOrder.get(2); - thirdSortParam = input.substring(thirdSortParamPos + 1, thirdSortParamPos + 2); - } catch (NullPointerException | IndexOutOfBoundsException ignored) { - assert (sortParamOrder.size() < 3); - } - - // sort by whichever sorting method comes first - // if sorting method is unspecified then sort by alphabet - // String sortBy = getSortBy(input, hasSortQuantity, hasSortPrice, hasSortExpiry); + String firstSortParam = extractParam(input, sortParamOrder, 0, true); + String secondSortParam = extractParam(input, sortParamOrder, 1, true); + String thirdSortParam = extractParam(input, sortParamOrder, 2, true); - return new ListCommand(hasQuantity, hasPrice, hasExpiry, firstParam, secondParam, firstSortParam, secondSortParam, thirdSortParam, isReverse); + return new ListCommand(firstParam, secondParam, thirdParam, firstSortParam, secondSortParam, thirdSortParam, isReverse); } //@@vimalapugazhan diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 821d72dd0d..e83bb75bda 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -20,7 +20,6 @@ public class Ui { private static final String BASIC_ERROR_MESSAGE = "Oh no! An error has occurred in your input"; private static final String FIND_OPENING_MESSAGE = "Here are your found items:"; private static final String REPORT_NO_ITEMS_OPENING = "There are no items that fit the criteria!"; - private static final DateTimeFormatter DATE_FORMAT_PRINT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); @@ -41,7 +40,7 @@ private static String getNewItemOpening(Item item) { } private static String expiryDateMessage(Item item) { - return "Expiry Date: " + item.getExpiryDate().format(DATE_FORMAT_PRINT); + return "Expiry Date: " + item.getExpiryDateString(); } private static String updateItemOpening(Item item) { @@ -79,7 +78,7 @@ private static String reportQuantityMessage(Item reportItem) { } private static String reportExpiryDateMessage(Item reportItem) { - return " Expiry Date: " + reportItem.getExpiryDate().format(DATE_FORMAT_PRINT); + return " Expiry Date: " + reportItem.getExpiryDateString(); } public static void printIndent(String string) { @@ -188,84 +187,44 @@ public static void findIntro() { printIndent(FIND_OPENING_MESSAGE); } - public static void listItem(Item item, int index, boolean hasQuantity, boolean hasPrice, - boolean hasExpiry, String firstParam, String secondParam) { - - String stringToPrint = index + ". Name: " + item.getName(); + public static void listItem(Item item, int index, String firstParam, String secondParam, String thirdParam) { + String nameString = index + ". Name: " + item.getName(); String quantityString = " Quantity: " + item.getQuantity(); String priceString = " Price: " + item.getPriceString(); String expiryString; if (!item.getExpiryDate().isEqual(UNDEFINED_DATE)) { - expiryString = " Expiry Date: " + item.getExpiryDate().format(DATE_FORMAT_PRINT); + expiryString = " Expiry Date: " + item.getExpiryDateString(); } else { expiryString = ""; } - stringToPrint = getStringToPrint(hasQuantity, hasPrice, hasExpiry, firstParam, secondParam, - stringToPrint, quantityString, priceString, expiryString); - printIndent(stringToPrint); - } - - private static String getStringToPrint(boolean hasQuantity, boolean hasPrice, boolean hasExpiry, String firstParam, - String secondParam, String stringToPrint, String quantityString, String priceString, String expiryString) { - - if (hasQuantity && hasPrice && hasExpiry) { - stringToPrint = getStringThreeInput (firstParam, secondParam, stringToPrint, - quantityString, priceString, expiryString); - } else if (hasQuantity && hasPrice) { - if (firstParam.equals(QUANTITY_FLAG)) { - stringToPrint += (quantityString + priceString); - } else { - stringToPrint += (priceString + quantityString); - } - } else if (hasQuantity && hasExpiry) { - if (firstParam.equals(QUANTITY_FLAG)) { - stringToPrint += (quantityString + expiryString); - } else { - stringToPrint += (expiryString + quantityString); - } - } else if (hasPrice && hasExpiry) { - if (firstParam.equals(PRICE_FLAG)) { - stringToPrint += (priceString + expiryString); - } else { - stringToPrint += (expiryString + priceString); - } - } else if (hasQuantity) { - stringToPrint += quantityString; - } else if (hasPrice) { - stringToPrint += priceString; - } else if (hasExpiry) { - stringToPrint += expiryString; - } - return stringToPrint; + String itemString = getItemString(firstParam, secondParam, thirdParam, nameString, quantityString, priceString, expiryString); + printIndent(itemString); } - private static String getStringThreeInput (String firstParam, String secondParam, String stringToPrint, - String quantityString, String priceString, String expiryString) { - switch (firstParam) { + private static String buildItemString(String param, String itemString, String quantityString, String priceString, String expiryString) { + switch (param) { case QUANTITY_FLAG: - if (secondParam.equals(PRICE_FLAG)) { - stringToPrint += (quantityString + priceString + expiryString); - } else { - stringToPrint += (quantityString + expiryString + priceString); - } + itemString += quantityString; break; case PRICE_FLAG: - if (secondParam.equals(QUANTITY_FLAG)) { - stringToPrint += (priceString + quantityString + expiryString); - } else { - stringToPrint += (priceString + expiryString + quantityString); - } + itemString += priceString; break; case EX_DATE_FLAG: - if (secondParam.equals(QUANTITY_FLAG)) { - stringToPrint += (expiryString + quantityString + priceString); - } else { - stringToPrint += (expiryString + priceString + quantityString); - } + itemString += expiryString; + break; + default: + assert param.isEmpty(); break; - default: return null; } - return stringToPrint; + return itemString; + } + + private static String getItemString(String firstParam, String secondParam, String thirdParam, String nameString, String quantityString, String priceString, String expiryString) { + String itemString = nameString; + itemString = buildItemString(firstParam, itemString, quantityString, priceString, expiryString); + itemString = buildItemString(secondParam, itemString, quantityString, priceString, expiryString); + itemString = buildItemString(thirdParam, itemString, quantityString, priceString, expiryString); + return itemString; } public static void printError(String errorMessage) { @@ -281,7 +240,7 @@ public static void printFoundItem(Item item, int index) { String priceString = " Price: " + item.getPriceString(); printIndent(priceString); if (!item.getExpiryDate().isEqual(UNDEFINED_DATE)) { - printIndent(" Expiry Date: " + item.getExpiryDate().format(DATE_FORMAT_PRINT)); + printIndent(" Expiry Date: " + item.getExpiryDateString()); } } From 9f6cad434ddf3de0f1ee957c0f4aba04a18735db Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sat, 6 Apr 2024 23:22:34 +0800 Subject: [PATCH 181/423] Refactor Ui code --- src/main/java/supertracker/ui/Ui.java | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index e83bb75bda..df6f9cf6fc 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -12,6 +12,7 @@ public class Ui { private static final String QUANTITY_FLAG = "q"; private static final String PRICE_FLAG = "p"; private static final String EX_DATE_FLAG = "e"; + private static final String EMPTY_STRING = ""; private static final String EMPTY_LIST_MESSAGE = "Nothing to list! No items in inventory!"; private static final String SINGLE_ITEM_LIST_MESSAGE= "There is 1 unique item in your inventory:"; private static final String INVALID_COMMAND_MESSAGE = "Sorry! Invalid command!"; @@ -39,8 +40,11 @@ private static String getNewItemOpening(Item item) { return item.getName() + " has been added to the inventory!"; } - private static String expiryDateMessage(Item item) { - return "Expiry Date: " + item.getExpiryDateString(); + private static String getExpiryDateMessage(Item item) { + if (!item.getExpiryDate().isEqual(UNDEFINED_DATE)) { + return "Expiry Date: " + item.getExpiryDateString(); + } + return EMPTY_STRING; } private static String updateItemOpening(Item item) { @@ -107,22 +111,14 @@ public static void newCommandSuccess(Item item) { printIndent(getNewItemOpening(item)); printIndent(getQuantityMessage(item)); printIndent(getPriceMessage(item)); - try { - if (!item.getExpiryDate().isEqual(UNDEFINED_DATE)) { - printIndent(expiryDateMessage(item)); - } - } catch (NullPointerException e) { - assert (item.getExpiryDate().isEqual(null)); - } + printIndent(getExpiryDateMessage(item)); } public static void updateCommandSuccess(Item item) { printIndent(updateItemOpening(item)); printIndent(getQuantityMessage(item)); printIndent(getPriceMessage(item)); - if (!item.getExpiryDate().isEqual(UNDEFINED_DATE)) { - printIndent(expiryDateMessage(item)); - } + printIndent(getExpiryDateMessage(item)); } public static void deleteCommandSuccess(String name) { @@ -195,7 +191,7 @@ public static void listItem(Item item, int index, String firstParam, String seco if (!item.getExpiryDate().isEqual(UNDEFINED_DATE)) { expiryString = " Expiry Date: " + item.getExpiryDateString(); } else { - expiryString = ""; + expiryString = EMPTY_STRING; } String itemString = getItemString(firstParam, secondParam, thirdParam, nameString, quantityString, priceString, expiryString); printIndent(itemString); From b97ec06874fb7646915b3933f6016a037eb0a8cf Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sat, 6 Apr 2024 23:26:18 +0800 Subject: [PATCH 182/423] Remove extra space from find command output --- docs/UserGuide.md | 8 ++++---- src/main/java/supertracker/ui/Ui.java | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 8758e10e1e..6b8adbf322 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -146,11 +146,11 @@ Example: `find n/Cheese` ``` Here are your found items: 1. Name: Cheese cake - Quantity: 100 - Price: $1.00 + Quantity: 100 + Price: $1.00 2. Name: Cheese - Quantity: 100 - Price: $1.00 + Quantity: 100 + Price: $1.00 ```
diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index df6f9cf6fc..cb63534a7a 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -231,12 +231,12 @@ public static void printError(String errorMessage) { public static void printFoundItem(Item item, int index) { String stringToPrint = index + ". Name: " + item.getName(); printIndent(stringToPrint); - String quantityString = " Quantity: " + item.getQuantity(); + String quantityString = " Quantity: " + item.getQuantity(); printIndent(quantityString); - String priceString = " Price: " + item.getPriceString(); + String priceString = " Price: " + item.getPriceString(); printIndent(priceString); if (!item.getExpiryDate().isEqual(UNDEFINED_DATE)) { - printIndent(" Expiry Date: " + item.getExpiryDateString()); + printIndent(" Expiry Date: " + item.getExpiryDateString()); } } From d98662b92e5fa8088c38994925a269b5c10a6949 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sat, 6 Apr 2024 23:38:36 +0800 Subject: [PATCH 183/423] Fix checkstyle --- .../supertracker/command/ListCommand.java | 11 ++++++++-- src/main/java/supertracker/parser/Parser.java | 9 +++++--- src/main/java/supertracker/ui/Ui.java | 21 ++++++++++++++++--- 3 files changed, 33 insertions(+), 8 deletions(-) diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index 4ee9ef350d..02c977799d 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -21,8 +21,15 @@ public class ListCommand implements Command { private String thirdSortParam; private boolean isReverse; - public ListCommand(String firstParam, String secondParam, String thirdParam, String firstSortParam, String secondSortParam, String thirdSortParam, boolean isReverse) { - + public ListCommand( + String firstParam, + String secondParam, + String thirdParam, + String firstSortParam, + String secondSortParam, + String thirdSortParam, + boolean isReverse + ) { this.firstParam = firstParam; this.secondParam = secondParam; this.thirdParam = thirdParam; diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index bab61ceeb6..e0204774b0 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -454,17 +454,20 @@ private static Command parseListCommand(String input) throws TrackerException { boolean hasSortExpiry = !matcher.group(SORT_EX_DATE_GROUP).isEmpty(); boolean isReverse = !matcher.group(REVERSE_GROUP).isEmpty(); - ArrayList paramOrder = getParamPositions(input, hasQuantity, hasPrice, hasExpiry, QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG); + ArrayList paramOrder = getParamPositions(input, hasQuantity, hasPrice, hasExpiry, + QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG); String firstParam = extractParam(input, paramOrder, 0, false); String secondParam = extractParam(input, paramOrder, 1, false); String thirdParam = extractParam(input, paramOrder, 2, false); - ArrayList sortParamOrder = getParamPositions(input, hasSortQuantity, hasSortPrice, hasSortExpiry, SORT_QUANTITY_FLAG, SORT_PRICE_FLAG, SORT_EX_DATE_FLAG); + ArrayList sortParamOrder = getParamPositions(input, hasSortQuantity, hasSortPrice, hasSortExpiry, + SORT_QUANTITY_FLAG, SORT_PRICE_FLAG, SORT_EX_DATE_FLAG); String firstSortParam = extractParam(input, sortParamOrder, 0, true); String secondSortParam = extractParam(input, sortParamOrder, 1, true); String thirdSortParam = extractParam(input, sortParamOrder, 2, true); - return new ListCommand(firstParam, secondParam, thirdParam, firstSortParam, secondSortParam, thirdSortParam, isReverse); + return new ListCommand(firstParam, secondParam, thirdParam, + firstSortParam, secondSortParam, thirdSortParam, isReverse); } //@@vimalapugazhan diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index cb63534a7a..3deac3a1f9 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -193,11 +193,18 @@ public static void listItem(Item item, int index, String firstParam, String seco } else { expiryString = EMPTY_STRING; } - String itemString = getItemString(firstParam, secondParam, thirdParam, nameString, quantityString, priceString, expiryString); + String itemString = getItemString(firstParam, secondParam, thirdParam, + nameString, quantityString, priceString, expiryString); printIndent(itemString); } - private static String buildItemString(String param, String itemString, String quantityString, String priceString, String expiryString) { + private static String buildItemString( + String param, + String itemString, + String quantityString, + String priceString, + String expiryString + ) { switch (param) { case QUANTITY_FLAG: itemString += quantityString; @@ -215,7 +222,15 @@ private static String buildItemString(String param, String itemString, String qu return itemString; } - private static String getItemString(String firstParam, String secondParam, String thirdParam, String nameString, String quantityString, String priceString, String expiryString) { + private static String getItemString( + String firstParam, + String secondParam, + String thirdParam, + String nameString, + String quantityString, + String priceString, + String expiryString + ) { String itemString = nameString; itemString = buildItemString(firstParam, itemString, quantityString, priceString, expiryString); itemString = buildItemString(secondParam, itemString, quantityString, priceString, expiryString); From 723639e59d9ed386ef232af8ddf66bea3b92a3d5 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sat, 6 Apr 2024 23:51:05 +0800 Subject: [PATCH 184/423] Fix bug --- src/main/java/supertracker/ui/Ui.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 3deac3a1f9..d1b2d20f8a 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -86,6 +86,9 @@ private static String reportExpiryDateMessage(Item reportItem) { } public static void printIndent(String string) { + if (string.isEmpty()) { + return; + } System.out.println(" " + string); } From bb7c86bcffaf8d2e3694334680edcef7a5137ab0 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 7 Apr 2024 01:44:00 +0800 Subject: [PATCH 185/423] Add author tags and addd validateexpiry method --- src/main/java/supertracker/parser/Parser.java | 14 ++++++++++++++ src/main/java/supertracker/ui/ErrorMessage.java | 1 + 2 files changed, 15 insertions(+) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index e0204774b0..5d242266ec 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -251,17 +251,28 @@ private static double parsePrice(String priceString) throws TrackerException { } } + //@@vimalapugazhan + private static void validateDate(LocalDate expiryDate, String dateString) throws TrackerException { + if (!expiryDate.format(DateTimeFormatter.ofPattern(EX_DATE_FORMAT)).equals(dateString)) { + throw new TrackerException(ErrorMessage.INVALID_DATE); + } + } + + //@@vimalapugazhan private static LocalDate parseExpiryDate(String dateString) throws TrackerException { LocalDate expiryDate = UNDEFINED_DATE; try { if (!dateString.isEmpty()) { expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); + validateDate(expiryDate, dateString); } return expiryDate; } catch (DateTimeParseException e) { throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); } } + + //@@vimalapugazhan private static LocalDate parseExpiryDateUpdate(String dateString) throws TrackerException { LocalDate expiryDate = LocalDate.parse("1-1-1", DateTimeFormatter.ofPattern("y-M-d")); @@ -271,6 +282,7 @@ private static LocalDate parseExpiryDateUpdate(String dateString) throws Tracker expiryDate = UNDEFINED_DATE; } else { expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); + validateDate(expiryDate, dateString); } } } catch (NumberFormatException e) { @@ -440,6 +452,7 @@ private static Command parseListCommand(String input) throws TrackerException { SORT_EX_DATE_FLAG, REVERSE_FLAG }; + Matcher matcher = getPatternMatcher(LIST_COMMAND_REGEX, input, flags); if (!matcher.matches()) { @@ -454,6 +467,7 @@ private static Command parseListCommand(String input) throws TrackerException { boolean hasSortExpiry = !matcher.group(SORT_EX_DATE_GROUP).isEmpty(); boolean isReverse = !matcher.group(REVERSE_GROUP).isEmpty(); + //@@vimalapugazhan ArrayList paramOrder = getParamPositions(input, hasQuantity, hasPrice, hasExpiry, QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG); String firstParam = extractParam(input, paramOrder, 0, false); diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 7cd127844c..d82c634baf 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -26,6 +26,7 @@ public class ErrorMessage { public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; public static final String INVALID_NUMBER_FORMAT = "Invalid values for price/quantity"; public static final String INVALID_DATE_FORMAT = "Invalid date. Follow \"dd-mm-yyyy\" format"; + public static final String INVALID_DATE = "This date is cannot exist"; public static final String QUANTITY_TOO_SMALL = "Quantity should be more than equal to 0"; public static final String PRICE_TOO_SMALL = "Price should be more than 0"; public static final String FILE_HANDLER_ERROR = "Error setting up file handler"; From 3653d71ac3ad5ceba95fcebdeefeb14e00602943 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 7 Apr 2024 03:28:14 +0800 Subject: [PATCH 186/423] Fix table formatting --- docs/UserGuide.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 6b8adbf322..4b47a313e7 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -303,14 +303,14 @@ with the file that contains the data of your previous SuperTracker inventory ## Command Summary -Action | Format | Examples ---------|--------------------------------------------------------------------|--------------- -**New** | `new n/NAME q/QUANTITY p/PRICE e/EXPIRY_DATE` | e.g. `new n/Milk q/100 p/5 e/05-12-2113` -**Delete**| `delete n/NAME` | e.g. `delete n/Milk` -**Add**| `add n/NAME q/QUANTITY` | e.g. `add n/Milk q/10` -**Remove**| `remove n/NAME q/QUANTITY` | e.g. `remove n/Milk q/10` -**Update**| `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` | e.g. `update n/Milk q/200 p/10 e/05-08-2113` -**Find**| `find n/NAME` | e.g. `find n/apple` -**List**| `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` | e.g. `list q/ p/ sp/ r/` -**Report**| `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` | e.g. `report r/low stock t/10` -**Quit**| `quit` | e.g. `quit` +| Action | Format | Examples | +|------------|--------------------------------------------------------------------|----------------------------------------------| +| **New** | `new n/NAME q/QUANTITY p/PRICE e/EXPIRY_DATE` | e.g. `new n/Milk q/100 p/5 e/05-12-2113` | +| **Delete** | `delete n/NAME` | e.g. `delete n/Milk` | +| **Add** | `add n/NAME q/QUANTITY` | e.g. `add n/Milk q/10` | +| **Remove** | `remove n/NAME q/QUANTITY` | e.g. `remove n/Milk q/10` | +| **Update** | `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` | e.g. `update n/Milk q/200 p/10 e/05-08-2113` | +| **Find** | `find n/NAME` | e.g. `find n/apple` | +| **List** | `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` | e.g. `list q/ p/ sp/ r/` | +| **Report** | `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` | e.g. `report r/low stock t/10` | +| **Quit** | `quit` | e.g. `quit` | From 011f8c1ff03aae24a5e68a4acb8985f007ede057 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 7 Apr 2024 03:40:16 +0800 Subject: [PATCH 187/423] Add new question to FAQ --- docs/UserGuide.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 4b47a313e7..d8ce4d712a 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -297,7 +297,12 @@ if they would like to do so. **Q**: How do I transfer my data to another computer? **A**: Install the app in the other computer and overwrite the empty data file it creates -with the file that contains the data of your previous SuperTracker inventory +with the file that contains the data of your previous SuperTracker inventory. + +**Q**: What if I want multiple items with the same name? + +**A**: Simply add a unique identifier after the item name when creating a new item. +e.g. `n/Milk-1`,`n/Milk-2`. The format of the unique identifier is completely up to the user's discretion. -------------------------------------------------------------------------------------------------------------------- From 07417c24b0bebd471237cbe6de59229a9a5ccac9 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 7 Apr 2024 03:59:25 +0800 Subject: [PATCH 188/423] Update user guide for list command --- docs/UserGuide.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index d8ce4d712a..ee8bdbd5aa 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -199,10 +199,11 @@ Format: `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` - e.g. if the command specifies `list q/ p/ e/`, the quantity will be printed first followed by price and expiry date - `sq/` will list the items in order of ascending quantity - `sp/` will list the items in order of ascending price -- `se/` will list the items in order of ascending date, items with no date will be displayed at the bottom of the list and sorted in ascending alphabetical order (A-Z) by default -- If the command has multiple sorting parameters, the list will be sorted according to the first sorting parameter - - e.g. if the command specifies `list sq/ sp/ se/`, list will be sorted in order of ascending quantity +- `se/` will list the items in order of ascending date - If the command has no sorting parameters, the list will be sorted in ascending alphabetical order (A-Z) by default +- If the command has multiple sorting parameters, the list will be sorted in the same order as the sorting flags + - e.g. if the command specifies `list sq/ sp/ se/`, list will be sorted in order of ascending quantity. + Ties will be sorted in order of ascending price, then ascending date, followed by ascending alphabetical order (A-Z) - `r/` will reverse the order of the list Example: `list q/ p/ e/ sp/ r/` From ea5392f6768aa4e9652fdf4070621e711b6abca2 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 7 Apr 2024 04:34:18 +0800 Subject: [PATCH 189/423] Update user guide to include price and quantity limits --- docs/UserGuide.md | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index ee8bdbd5aa..41fcd87752 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -56,10 +56,10 @@ Format: `new n/NAME q/QUANTITY p/PRICE [e/EXPIRY_DATE]` - `NAME` is case-insensitive - e.g. `Cheese` will be interpreted as `cheese` -- If `NAME` already exists in the inventory, use the **update** command instead -- `QUANTITY` must be a non-negative integer +- If `NAME` already exists in the inventory, use the [update](#update-an-item-update) command instead +- `QUANTITY` must be a non-negative integer and less than 2147483648 - e.g. 1, 10, 100 -- `PRICE` must be a non-negative integer or decimal number +- `PRICE` must be a non-negative integer or decimal number and less than 2147483648 - e.g. 1, 0.20, 12.3, 12.345 - If the `PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places - e.g. 12.345 ≈ 12.35 @@ -104,8 +104,9 @@ Format: `add n/NAME q/QUANTITY` - `NAME` is case-insensitive - e.g. `Cheese` will be interpreted as `cheese` - If `NAME` does not exist in the inventory, an error would be thrown -- `QUANTITY` must be a non-negative integer +- `QUANTITY` must be a non-negative integer and less than 2147483648 - e.g. 1, 10, 100 +- If the new quantity of the item exceeds 2147483647, an error would be thrown Example: `add n/Milk q/10` ``` @@ -122,7 +123,7 @@ Format: `remove n/NAME q/QUANTITY` - `NAME` is case-insensitive - e.g. `Cheese` will be interpreted as `cheese` - If `NAME` does not exist in the inventory, an error would be thrown -- `QUANTITY` must be a non-negative integer +- `QUANTITY` must be a non-negative integer and less than 2147483648 - e.g. 1, 10, 100 - If `QUANTITY` exceeds the current quantity of the item, the new quantity would be set to 0 @@ -161,9 +162,9 @@ Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` - `NAME` is case-insensitive - e.g. `Cheese` will be interpreted as `cheese` - If `NAME` does not exist in the inventory, an error would be thrown -- `NEW_QUANTITY` must be a non-negative integer +- `NEW_QUANTITY` must be a non-negative integer and less than 2147483648 - e.g. 1, 10, 100 -- `NEW_PRICE` must be a non-negative integer or decimal number +- `NEW_PRICE` must be a non-negative integer or decimal number and less than 2147483648 - e.g. 1, 0.20, 12.3, 12.345 - If the `NEW_PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places - e.g. 12.345 ≈ 12.35 From 81e5a932497b2c5033a61343aecf0b8273bedea5 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 7 Apr 2024 05:52:45 +0800 Subject: [PATCH 190/423] Add specific error checking for large values --- docs/UserGuide.md | 12 +++++----- src/main/java/supertracker/parser/Parser.java | 24 +++++++++++++++++-- .../java/supertracker/ui/ErrorMessage.java | 10 ++++++-- 3 files changed, 36 insertions(+), 10 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 41fcd87752..4d5b5f969f 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -57,9 +57,9 @@ Format: `new n/NAME q/QUANTITY p/PRICE [e/EXPIRY_DATE]` - `NAME` is case-insensitive - e.g. `Cheese` will be interpreted as `cheese` - If `NAME` already exists in the inventory, use the [update](#update-an-item-update) command instead -- `QUANTITY` must be a non-negative integer and less than 2147483648 +- `QUANTITY` must be a non-negative integer and less than or equal to 2147483647 - e.g. 1, 10, 100 -- `PRICE` must be a non-negative integer or decimal number and less than 2147483648 +- `PRICE` must be a non-negative integer or decimal number and less than or equal to 2147483647 - e.g. 1, 0.20, 12.3, 12.345 - If the `PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places - e.g. 12.345 ≈ 12.35 @@ -104,7 +104,7 @@ Format: `add n/NAME q/QUANTITY` - `NAME` is case-insensitive - e.g. `Cheese` will be interpreted as `cheese` - If `NAME` does not exist in the inventory, an error would be thrown -- `QUANTITY` must be a non-negative integer and less than 2147483648 +- `QUANTITY` must be a non-negative integer and less than or equal to 2147483647 - e.g. 1, 10, 100 - If the new quantity of the item exceeds 2147483647, an error would be thrown @@ -123,7 +123,7 @@ Format: `remove n/NAME q/QUANTITY` - `NAME` is case-insensitive - e.g. `Cheese` will be interpreted as `cheese` - If `NAME` does not exist in the inventory, an error would be thrown -- `QUANTITY` must be a non-negative integer and less than 2147483648 +- `QUANTITY` must be a non-negative integer and less than or equal to 2147483647 - e.g. 1, 10, 100 - If `QUANTITY` exceeds the current quantity of the item, the new quantity would be set to 0 @@ -162,9 +162,9 @@ Format: `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` - `NAME` is case-insensitive - e.g. `Cheese` will be interpreted as `cheese` - If `NAME` does not exist in the inventory, an error would be thrown -- `NEW_QUANTITY` must be a non-negative integer and less than 2147483648 +- `NEW_QUANTITY` must be a non-negative integer and less than or equal to 2147483647 - e.g. 1, 10, 100 -- `NEW_PRICE` must be a non-negative integer or decimal number and less than 2147483648 +- `NEW_PRICE` must be a non-negative integer or decimal number and less than or equal to 2147483647 - e.g. 1, 0.20, 12.3, 12.345 - If the `NEW_PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places - e.g. 12.345 ≈ 12.35 diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 5d242266ec..847897ba48 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -227,15 +227,32 @@ private static void validateNonNegativePrice(String priceString, double price) t } } + private static void validateContainsOnlyDigits(String string) throws TrackerException { + String regex = "\\d+"; + Pattern pattern = Pattern.compile(regex); + if (!pattern.matcher(string).matches()) { + throw new TrackerException(ErrorMessage.QUANTITY_NOT_INTEGER); + } + } + + private static void validateNotTooLarge(String string) throws TrackerException { + String maxIntString = String.valueOf(Integer.MAX_VALUE); + if (string.length() > 10 || (string.length() == 10 && string.compareTo(maxIntString) > 0)) { + throw new TrackerException(ErrorMessage.QUANTITY_TOO_LARGE); + } + } + private static int parseQuantity(String quantityString) throws TrackerException { int quantity = -1; try { if (!quantityString.isEmpty()) { + validateContainsOnlyDigits(quantityString); + validateNotTooLarge(quantityString); quantity = Integer.parseInt(quantityString); } return quantity; } catch (NumberFormatException e) { - throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); + throw new TrackerException(ErrorMessage.INVALID_QUANTITY_FORMAT); } } @@ -245,9 +262,12 @@ private static double parsePrice(String priceString) throws TrackerException { if (!priceString.isEmpty()) { price = roundTo2Dp(Double.parseDouble(priceString)); } + if (price > Integer.MAX_VALUE) { + throw new TrackerException(ErrorMessage.PRICE_TOO_LARGE); + } return price; } catch (NumberFormatException e) { - throw new TrackerException(ErrorMessage.INVALID_NUMBER_FORMAT); + throw new TrackerException(ErrorMessage.INVALID_PRICE_FORMAT); } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index d82c634baf..be3ae6c69a 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -24,11 +24,17 @@ public class ErrorMessage { public static final String ITEM_NOT_IN_LIST_REMOVE = " does not exist in inventory. Unable to decrease its quantity. =("; public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; + public static final String QUANTITY_NOT_INTEGER = "Quantity should be a non-negative integer"; + public static final String INVALID_NUMBER_FORMAT = "Invalid values for price/quantity"; + public static final String INVALID_QUANTITY_FORMAT = "Invalid value for quantity"; + public static final String INVALID_PRICE_FORMAT = "Invalid value for price"; public static final String INVALID_DATE_FORMAT = "Invalid date. Follow \"dd-mm-yyyy\" format"; public static final String INVALID_DATE = "This date is cannot exist"; - public static final String QUANTITY_TOO_SMALL = "Quantity should be more than equal to 0"; - public static final String PRICE_TOO_SMALL = "Price should be more than 0"; + public static final String QUANTITY_TOO_SMALL = "Quantity should be more than or equal to 0"; + public static final String PRICE_TOO_SMALL = "Price should be more than or equal to 0"; + public static final String QUANTITY_TOO_LARGE = "Quantity should be less than or equal to 2147483647"; + public static final String PRICE_TOO_LARGE = "Price should be less than or equal to 2147483647"; public static final String FILE_HANDLER_ERROR = "Error setting up file handler"; public static final String INVALID_FIND_FORMAT = "Please ensure the name of the item you are looking for is correct"; From 3982d33a64178f69974781ead0633d75e4c4487f Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 7 Apr 2024 06:07:13 +0800 Subject: [PATCH 191/423] Update user guide to address issue #141 --- docs/UserGuide.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 4d5b5f969f..0ec0eb495d 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -301,7 +301,8 @@ if they would like to do so. **A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous SuperTracker inventory. -**Q**: What if I want multiple items with the same name? +**Q**: What if I want multiple items with the same name? +What if I want different batches of the same item with different expiry dates? **A**: Simply add a unique identifier after the item name when creating a new item. e.g. `n/Milk-1`,`n/Milk-2`. The format of the unique identifier is completely up to the user's discretion. From 42426f9810a66422a59ab51a6dee353531e2f5a2 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 11:18:00 +0800 Subject: [PATCH 192/423] Updated report command to differentitate between items close to expiry and items that are expired --- .../supertracker/command/ReportCommand.java | 32 ++++++--- src/main/java/supertracker/ui/Ui.java | 65 ++++++++++++++---- supertracker.log.1 | 15 +++++ supertracker.log.1.lck | 0 supertracker.log.2 | 67 +++++++++++++++++++ 5 files changed, 154 insertions(+), 25 deletions(-) create mode 100644 supertracker.log.1 create mode 100644 supertracker.log.1.lck create mode 100644 supertracker.log.2 diff --git a/src/main/java/supertracker/command/ReportCommand.java b/src/main/java/supertracker/command/ReportCommand.java index 413e176ff1..51e1f41863 100644 --- a/src/main/java/supertracker/command/ReportCommand.java +++ b/src/main/java/supertracker/command/ReportCommand.java @@ -19,34 +19,44 @@ public ReportCommand(String reportType, int threshold) { @Override public void execute() { List items = Inventory.getItems(); - List reportItems = new ArrayList<>(); LocalDate currDate = LocalDate.now(); LocalDate expiryThresholdDate = currDate.plusWeeks(1); + LocalDate dayBeforeCurrDay = currDate.minusDays(1); if (reportType.equals("low stock")) { - createLowStockReport(items, reportItems); + createLowStockReport(items); } else if (reportType.equals("expiry")) { - createExpiryReport(items, expiryThresholdDate, reportItems); + createExpiryReport(items, expiryThresholdDate, currDate, dayBeforeCurrDay); } - Ui.reportCommandSuccess(reportItems, reportType); } - private void createExpiryReport(List items, LocalDate expiryThresholdDate, List reportItems) { + private void createExpiryReport(List items, LocalDate expiryThresholdDate, LocalDate currDate, + LocalDate dayBeforeCurrDay) { assert threshold == -1; + List reportExpiryItems = new ArrayList<>(); + List reportExpiredItems = new ArrayList<>(); for (Item item : items) { - if (item.getExpiryDate().isBefore(expiryThresholdDate)) { - reportItems.add(item); + if (item.getExpiryDate().isBefore(expiryThresholdDate) && item.getExpiryDate().isAfter(dayBeforeCurrDay)) { + reportExpiryItems.add(item); + } + if (item.getExpiryDate().isBefore(currDate)) { + reportExpiredItems.add(item); } } - reportItems.sort(Item.sortByExpiry()); + reportExpiryItems.sort(Item.sortByExpiry()); + reportExpiredItems.sort(Item.sortByExpiry()); + Ui.reportCommandSuccess(reportExpiryItems, reportType); + Ui.reportCommandSuccess(reportExpiredItems, "expired"); } - private void createLowStockReport(List items, List reportItems) { + private void createLowStockReport(List items) { + List reportLowStockItems = new ArrayList<>(); for (Item item : items) { if (item.getQuantity() < threshold) { - reportItems.add(item); + reportLowStockItems.add(item); } } - reportItems.sort(Item.sortByQuantity()); + reportLowStockItems.sort(Item.sortByQuantity()); + Ui.reportCommandSuccess(reportLowStockItems, reportType); } @Override diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index d1b2d20f8a..62df83611c 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -20,7 +20,9 @@ public class Ui { private static final String FAREWELL_MESSAGE = "Goodbye!"; private static final String BASIC_ERROR_MESSAGE = "Oh no! An error has occurred in your input"; private static final String FIND_OPENING_MESSAGE = "Here are your found items:"; - private static final String REPORT_NO_ITEMS_OPENING = "There are no items that fit the criteria!"; + private static final String REPORT_LOW_STOCK_NO_ITEMS_OPENING = "There are no items that fit the criteria!"; + private static final String REPORT_EXPIRY_NO_ITEMS_OPENING = "There are no items close to expiry!"; + private static final String REPORT_EXPIRED_NO_ITEMS_OPENING = "There are no items that are expired!"; private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); @@ -68,11 +70,18 @@ private static String reportLowStockOpening(int quantity) { String isOrAre = quantity == 1 ? "is " : "are "; return "There " + isOrAre + quantity + " items low on stocks!"; } - private static String reportExpiryOpening(int quantity) { - assert quantity >= 0; + private static String reportExpiryHasItemsOpening(int quantity) { String isOrAre = quantity == 1 ? "is " : "are "; - return "There " + isOrAre + quantity + " items close to expiry!"; + String itemOrItems = quantity == 1 ? " item " : "items "; + return "There " + isOrAre + quantity + itemOrItems +"close to expiry!"; } + + private static String reportExpiredHasItemsOpening(int quantity) { + String isOrAre = quantity == 1 ? "is " : "are "; + String itemOrItems = quantity == 1 ? " item " : "items "; + return "There " + isOrAre + quantity + itemOrItems +"that " + isOrAre + "expired!"; + } + private static String reportNameMessage(Item reportItem, int count) { return count + ". Name: " + reportItem.getName(); } @@ -141,18 +150,45 @@ public static void removeCommandSuccess(Item item, int quantityRemoved) { } public static void reportCommandSuccess(List reportItems, String reportType) { + int numReportItems = reportItems.size(); + switch (reportType) { + case "low stock": + if (reportItems.isEmpty()) { + printIndent(REPORT_LOW_STOCK_NO_ITEMS_OPENING); + } else { + lowStockSuccess(reportItems, numReportItems); + } + break; + case "expiry": + if (reportItems.isEmpty()) { + printIndent(REPORT_EXPIRY_NO_ITEMS_OPENING); + } else { + expirySuccess(reportItems, numReportItems); + } + break; + case "expired": + if (reportItems.isEmpty()) { + printIndent(REPORT_EXPIRED_NO_ITEMS_OPENING); + } else { + expiredSuccess(reportItems, numReportItems); + } + break; + } + } + + private static void expirySuccess(List reportItems, int numReportItems) { int count = 1; - if (reportItems.isEmpty()) { - printIndent(REPORT_NO_ITEMS_OPENING); - } else if (reportType.equals("low stock")) { - lowStockSuccess(reportItems, count); - } else if (reportType.equals("expiry")) { - expirySuccess(reportItems, count); + printIndent(reportExpiryHasItemsOpening(numReportItems)); + for (Item item : reportItems) { + printIndent(reportNameMessage(item, count)); + printIndent(reportExpiryDateMessage(item)); + count += 1; } } - private static void expirySuccess(List reportItems, int count) { - printIndent(reportExpiryOpening(reportItems.size())); + private static void expiredSuccess(List reportItems, int numReportItems) { + int count = 1; + printIndent(reportExpiredHasItemsOpening(numReportItems)); for (Item item : reportItems) { printIndent(reportNameMessage(item, count)); printIndent(reportExpiryDateMessage(item)); @@ -160,8 +196,9 @@ private static void expirySuccess(List reportItems, int count) { } } - private static void lowStockSuccess(List reportItems, int count) { - printIndent(reportLowStockOpening(reportItems.size())); + private static void lowStockSuccess(List reportItems, int numReportItems) { + int count = 1; + printIndent(reportLowStockOpening(numReportItems)); for (Item item : reportItems) { printIndent(reportNameMessage(item, count)); printIndent(reportQuantityMessage(item)); diff --git a/supertracker.log.1 b/supertracker.log.1 new file mode 100644 index 0000000000..be5ccc624d --- /dev/null +++ b/supertracker.log.1 @@ -0,0 +1,15 @@ + + + + + 2024-04-07T02:13:45.431101400Z + 1712456025431 + 101400 + 0 + supertracker.SuperTracker + INFO + supertracker.SuperTracker + run + 1 + Starting SuperTracker application + diff --git a/supertracker.log.1.lck b/supertracker.log.1.lck new file mode 100644 index 0000000000..e69de29bb2 diff --git a/supertracker.log.2 b/supertracker.log.2 new file mode 100644 index 0000000000..a56d28992b --- /dev/null +++ b/supertracker.log.2 @@ -0,0 +1,67 @@ + + + + + 2024-04-07T02:26:56.985074300Z + 1712456816985 + 74300 + 0 + supertracker.SuperTracker + INFO + supertracker.SuperTracker + run + 1 + Starting SuperTracker application + + + 2024-04-07T02:27:01.871664300Z + 1712456821871 + 664300 + 1 + supertracker.SuperTracker + INFO + supertracker.SuperTracker + handleCommands + 1 + Command passed successfully: + supertracker.command.ListCommand@64729b1e + + + 2024-04-07T02:27:15.964401600Z + 1712456835964 + 401600 + 2 + supertracker.SuperTracker + INFO + supertracker.SuperTracker + handleCommands + 1 + Command passed successfully: + supertracker.command.ReportCommand@2833cc44 + + + 2024-04-07T02:27:21.003998100Z + 1712456841003 + 998100 + 3 + supertracker.SuperTracker + INFO + supertracker.SuperTracker + handleCommands + 1 + Command passed successfully: + supertracker.command.QuitCommand@27a8c74e + + + 2024-04-07T02:27:21.005073600Z + 1712456841005 + 73600 + 4 + supertracker.SuperTracker + INFO + supertracker.SuperTracker + run + 1 + Exiting SuperTracker application + + From a6916a801ea38e6d1650b0e6535dd713a70ee457 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 11:34:47 +0800 Subject: [PATCH 193/423] Updated report command It outputs different messages if the inventory is empty and User guide for report command has also been updated --- docs/UserGuide.md | 20 ++++++++++--------- .../supertracker/command/ReportCommand.java | 8 ++++++++ src/main/java/supertracker/ui/Ui.java | 6 ++++++ 3 files changed, 25 insertions(+), 9 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 6b8adbf322..c0793bdd45 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -230,13 +230,15 @@ The report will be printed to the terminal and will contain the name of each ite - The expiry date of each item would be listed - The report would be sorted in order of ascending expiry date -Format: `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` +Format (low stock):`report r/REPORT_TYPE t/THRESHOLD_VALUE` +Format (expiry):`report r/REPORT_TYPE [t/THRESHOLD_VALUE]` + - `r/` parameter that specifies the type of report. e.g. **low stock** or **expiry** - `t/` parameter that specifies the threshold value to be compared to for **low stock report**. All items below the threshold value would be listed out. > Note: If report type is **low stock** threshold value must be **included**. However, if report type is **expiry** -threshold value must be **excluded**. +threshold value must be **excluded** or left **empty**. Example: `report r/low stock t/35` @@ -250,15 +252,15 @@ There are 3 items low on stocks! 3. Name: Apple Quantity: 30 ``` -Example: `report r/expiry` +Example: `report r/expiry` or `report r/expiry t/` -[//]: # (updates dates to be valid for PE day) ``` -There are 2 items close to expiry! -1. Name: Orange - Expiry Date: 08/04/2024 -2. Name: Apple - Expiry Date: 09/04/2024 +There is 1 item close to expiry! + 1. Name: apple + Expiry Date: 20/04/2024 + There is 1 item that is expired! + 1. Name: orange + Expiry Date: 29/03/2024 ```
diff --git a/src/main/java/supertracker/command/ReportCommand.java b/src/main/java/supertracker/command/ReportCommand.java index 51e1f41863..ebad7e3489 100644 --- a/src/main/java/supertracker/command/ReportCommand.java +++ b/src/main/java/supertracker/command/ReportCommand.java @@ -19,6 +19,14 @@ public ReportCommand(String reportType, int threshold) { @Override public void execute() { List items = Inventory.getItems(); + if (items.isEmpty()) { + Ui.reportNoItems(); + } else { + reportHasItemsExecute(items); + } + } + + private void reportHasItemsExecute(List items) { LocalDate currDate = LocalDate.now(); LocalDate expiryThresholdDate = currDate.plusWeeks(1); LocalDate dayBeforeCurrDay = currDate.minusDays(1); diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 62df83611c..12b1d415e8 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -23,6 +23,8 @@ public class Ui { private static final String REPORT_LOW_STOCK_NO_ITEMS_OPENING = "There are no items that fit the criteria!"; private static final String REPORT_EXPIRY_NO_ITEMS_OPENING = "There are no items close to expiry!"; private static final String REPORT_EXPIRED_NO_ITEMS_OPENING = "There are no items that are expired!"; + private static final String REPORT_INVENTORY_NO_ITEMS = "There are no items in the inventory, " + + "please consider adding some in!"; private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); @@ -149,6 +151,10 @@ public static void removeCommandSuccess(Item item, int quantityRemoved) { printIndent(getQuantityMessage(item)); } + public static void reportNoItems() { + printIndent(REPORT_INVENTORY_NO_ITEMS); + } + public static void reportCommandSuccess(List reportItems, String reportType) { int numReportItems = reportItems.size(); switch (reportType) { From e7d9080870a15f639fc35641e2681484fc198e1a Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 11:45:48 +0800 Subject: [PATCH 194/423] Updated checkstyle and junit tests for report command --- src/main/java/supertracker/ui/Ui.java | 3 +++ .../java/supertracker/command/ReportCommandTest.java | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 12b1d415e8..a2319effd0 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -179,6 +179,9 @@ public static void reportCommandSuccess(List reportItems, String reportTyp expiredSuccess(reportItems, numReportItems); } break; + default: + assert reportType.isEmpty(); + break; } } diff --git a/src/test/java/supertracker/command/ReportCommandTest.java b/src/test/java/supertracker/command/ReportCommandTest.java index 5f20788a6c..6ef3059fda 100644 --- a/src/test/java/supertracker/command/ReportCommandTest.java +++ b/src/test/java/supertracker/command/ReportCommandTest.java @@ -70,11 +70,12 @@ public void reportCommand_expiry_correctlyConstructed() throws TrackerException String dateToday = currDate.format(VALID_EX_DATE_FORMAT); String dateTwoWeeksAgo = currDate.minusWeeks(2).format(VALID_EX_DATE_FORMAT); - String expected = " There are 2 items close to expiry!" + LINE_SEPARATOR + + String expected = " There is 1 item close to expiry!" + LINE_SEPARATOR + + " 1. Name: orange" + LINE_SEPARATOR + + " Expiry Date: " + dateToday + LINE_SEPARATOR + + " There is 1 item that is expired!" + LINE_SEPARATOR + " 1. Name: banana" + LINE_SEPARATOR + - " Expiry Date: " + dateTwoWeeksAgo + LINE_SEPARATOR + - " 2. Name: orange" + LINE_SEPARATOR + - " Expiry Date: " + dateToday + LINE_SEPARATOR; + " Expiry Date: " + dateTwoWeeksAgo + LINE_SEPARATOR; String actual = outContent.toString(); assertEquals(expected, actual); } From 914746607d1d6d325021368647449fb6724d0222 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 11:48:02 +0800 Subject: [PATCH 195/423] fixed typo in report command ui --- src/main/java/supertracker/ui/Ui.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index a2319effd0..2e23dfe41d 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -81,7 +81,7 @@ private static String reportExpiryHasItemsOpening(int quantity) { private static String reportExpiredHasItemsOpening(int quantity) { String isOrAre = quantity == 1 ? "is " : "are "; String itemOrItems = quantity == 1 ? " item " : "items "; - return "There " + isOrAre + quantity + itemOrItems +"that " + isOrAre + "expired!"; + return "There " + isOrAre + quantity + itemOrItems +" that " + isOrAre + "expired!"; } private static String reportNameMessage(Item reportItem, int count) { From 1c15d7ed4e81f26e86ff78c04d5fdd2b5c0c1be3 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 11:56:11 +0800 Subject: [PATCH 196/423] fix typo in ui --- src/main/java/supertracker/ui/Ui.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 2e23dfe41d..2b10ee4895 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -80,8 +80,8 @@ private static String reportExpiryHasItemsOpening(int quantity) { private static String reportExpiredHasItemsOpening(int quantity) { String isOrAre = quantity == 1 ? "is " : "are "; - String itemOrItems = quantity == 1 ? " item " : "items "; - return "There " + isOrAre + quantity + itemOrItems +" that " + isOrAre + "expired!"; + String itemOrItems = quantity == 1 ? " item " : " items "; + return "There " + isOrAre + quantity + itemOrItems +"that " + isOrAre + "expired!"; } private static String reportNameMessage(Item reportItem, int count) { From c025261a456f8077b6795066bec97b75726f5a03 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Sun, 7 Apr 2024 15:21:04 +0800 Subject: [PATCH 197/423] Add buy and sell commands --- .../java/supertracker/command/AddCommand.java | 4 +- .../java/supertracker/command/BuyCommand.java | 25 ++++++ .../supertracker/command/RemoveCommand.java | 4 +- .../supertracker/command/SellCommand.java | 25 ++++++ src/main/java/supertracker/item/Item.java | 8 +- .../java/supertracker/item/Transaction.java | 16 ++++ .../supertracker/item/TransactionList.java | 15 ++++ src/main/java/supertracker/parser/Parser.java | 77 +++++++++++++++++-- .../java/supertracker/ui/ErrorMessage.java | 6 ++ 9 files changed, 167 insertions(+), 13 deletions(-) create mode 100644 src/main/java/supertracker/command/BuyCommand.java create mode 100644 src/main/java/supertracker/command/SellCommand.java create mode 100644 src/main/java/supertracker/item/Transaction.java create mode 100644 src/main/java/supertracker/item/TransactionList.java diff --git a/src/main/java/supertracker/command/AddCommand.java b/src/main/java/supertracker/command/AddCommand.java index e091127b7b..86043e8cd1 100644 --- a/src/main/java/supertracker/command/AddCommand.java +++ b/src/main/java/supertracker/command/AddCommand.java @@ -9,8 +9,8 @@ import java.io.IOException; public class AddCommand implements Command { - private String name; - private int quantity; + protected String name; + protected int quantity; public AddCommand(String name, int quantity) { this.name = name; diff --git a/src/main/java/supertracker/command/BuyCommand.java b/src/main/java/supertracker/command/BuyCommand.java new file mode 100644 index 0000000000..7763235dd9 --- /dev/null +++ b/src/main/java/supertracker/command/BuyCommand.java @@ -0,0 +1,25 @@ +package supertracker.command; + +import supertracker.item.Transaction; +import supertracker.item.TransactionList; + +import java.time.LocalDate; + +public class BuyCommand extends AddCommand { + private static final String BUY_FLAG = "b"; + private double price; + private LocalDate currentDate; + + public BuyCommand(String name, int quantity, double price, LocalDate currentDate) { + super(name, quantity); + this.price = price; + this.currentDate = currentDate; + } + + @Override + public void execute() { + super.execute(); + Transaction transaction = new Transaction(name, quantity, price, currentDate, BUY_FLAG); + TransactionList.add(transaction); + } +} diff --git a/src/main/java/supertracker/command/RemoveCommand.java b/src/main/java/supertracker/command/RemoveCommand.java index eb51bea45a..e3343468bf 100644 --- a/src/main/java/supertracker/command/RemoveCommand.java +++ b/src/main/java/supertracker/command/RemoveCommand.java @@ -9,8 +9,8 @@ import java.io.IOException; public class RemoveCommand implements Command { - private String name; - private int quantity; + protected String name; + protected int quantity; public RemoveCommand(String name, int quantity) { this.name = name; diff --git a/src/main/java/supertracker/command/SellCommand.java b/src/main/java/supertracker/command/SellCommand.java new file mode 100644 index 0000000000..570acc3b36 --- /dev/null +++ b/src/main/java/supertracker/command/SellCommand.java @@ -0,0 +1,25 @@ +package supertracker.command; + +import supertracker.item.Transaction; +import supertracker.item.TransactionList; + +import java.time.LocalDate; + +public class SellCommand extends RemoveCommand { + private static final String SELL_FLAG = "s"; + private double price; + private LocalDate currentDate; + + public SellCommand(String name, int quantity, double price, LocalDate currentDate) { + super(name, quantity); + this.price = price; + this.currentDate = currentDate; + } + + @Override + public void execute() { + super.execute(); + Transaction transaction = new Transaction(name, quantity, price, currentDate, SELL_FLAG); + TransactionList.add(transaction); + } +} diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java index e27de035e6..1e57b57481 100644 --- a/src/main/java/supertracker/item/Item.java +++ b/src/main/java/supertracker/item/Item.java @@ -7,10 +7,10 @@ public class Item { private static final DateTimeFormatter DATE_FORMAT_PRINT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); - private String name; - private int quantity; - private double price; - private LocalDate expiryDate; + protected String name; + protected int quantity; + protected double price; + protected LocalDate expiryDate; public Item(String name, int quantity, double price, LocalDate expiryDate) { this.name = name; diff --git a/src/main/java/supertracker/item/Transaction.java b/src/main/java/supertracker/item/Transaction.java new file mode 100644 index 0000000000..eb393937a2 --- /dev/null +++ b/src/main/java/supertracker/item/Transaction.java @@ -0,0 +1,16 @@ +package supertracker.item; + +import java.time.LocalDate; + +public class Transaction extends Item { + private String type; + + public Transaction(String name, int quantity, double price, LocalDate expiryDate, String type) { + super(name, quantity, price, expiryDate); + this.type = type; + } + + public String getType() { + return type; + } +} diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java new file mode 100644 index 0000000000..42269cb39b --- /dev/null +++ b/src/main/java/supertracker/item/TransactionList.java @@ -0,0 +1,15 @@ +package supertracker.item; + +import java.util.ArrayList; + +public class TransactionList { + private static ArrayList transactionList = new ArrayList<>(); + + public static Item get(int index) { + return transactionList.get(index); + } + + public static void add(Item item) { + transactionList.add(item); + } +} diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 847897ba48..7f9857fe7a 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -2,6 +2,7 @@ import supertracker.TrackerException; import supertracker.command.AddCommand; +import supertracker.command.BuyCommand; import supertracker.command.Command; import supertracker.command.DeleteCommand; import supertracker.command.FindCommand; @@ -11,6 +12,7 @@ import supertracker.command.QuitCommand; import supertracker.command.RemoveCommand; import supertracker.command.ReportCommand; +import supertracker.command.SellCommand; import supertracker.command.UpdateCommand; import supertracker.item.Inventory; import supertracker.item.Item; @@ -35,6 +37,8 @@ public class Parser { private static final String REMOVE_COMMAND = "remove"; private static final String FIND_COMMAND = "find"; private static final String REPORT_COMMAND = "report"; + private static final String BUY_COMMAND = "buy"; + private static final String SELL_COMMAND = "sell"; private static final double ROUNDING_FACTOR = 100.0; private static final String BASE_FLAG = "/"; private static final String NAME_FLAG = "n"; @@ -47,7 +51,7 @@ public class Parser { private static final String EX_DATE_GROUP = "expiry"; private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); - private static final String EX_DATE_FORMAT = "dd-MM-yyyy"; + private static final DateTimeFormatter EX_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); private static final String SORT_QUANTITY_FLAG = "sq"; private static final String SORT_PRICE_FLAG = "sp"; private static final String SORT_EX_DATE_FLAG = "se"; @@ -86,7 +90,11 @@ public class Parser { private static final String REPORT_COMMAND_REGEX = REPORT_TYPE_FLAG + BASE_FLAG + "(?<" + REPORT_TYPE_GROUP + ">.*) " + "(?<" + THRESHOLD_GROUP + ">(?:" + THRESHOLD_FLAG + BASE_FLAG + ".*)?) "; - + private static final String BUY_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) " + + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) "; + private static final String SELL_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; /** * Returns the command word specified in the user input string @@ -153,6 +161,12 @@ public static Command parseCommand(String input) throws TrackerException { case REPORT_COMMAND: command = parseReportCommand(params); break; + case BUY_COMMAND: + command = parseBuyCommand(params); + break; + case SELL_COMMAND: + command = parseSellCommand(params); + break; default: command = new InvalidCommand(); break; @@ -273,7 +287,7 @@ private static double parsePrice(String priceString) throws TrackerException { //@@vimalapugazhan private static void validateDate(LocalDate expiryDate, String dateString) throws TrackerException { - if (!expiryDate.format(DateTimeFormatter.ofPattern(EX_DATE_FORMAT)).equals(dateString)) { + if (!expiryDate.format(EX_DATE_FORMAT).equals(dateString)) { throw new TrackerException(ErrorMessage.INVALID_DATE); } } @@ -283,7 +297,7 @@ private static LocalDate parseExpiryDate(String dateString) throws TrackerExcept LocalDate expiryDate = UNDEFINED_DATE; try { if (!dateString.isEmpty()) { - expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); + expiryDate = LocalDate.parse(dateString, EX_DATE_FORMAT); validateDate(expiryDate, dateString); } return expiryDate; @@ -301,7 +315,7 @@ private static LocalDate parseExpiryDateUpdate(String dateString) throws Tracker if (dateString.equals("nil")) { expiryDate = UNDEFINED_DATE; } else { - expiryDate = LocalDate.parse(dateString, DateTimeFormatter.ofPattern(EX_DATE_FORMAT)); + expiryDate = LocalDate.parse(dateString, EX_DATE_FORMAT); validateDate(expiryDate, dateString); } } @@ -602,4 +616,57 @@ private static Command parseReportCommand(String input) throws TrackerException } return new ReportCommand(reportType, threshold); } + + private static Command parseBuyCommand(String input) throws TrackerException { + String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG}; + Matcher matcher = getPatternMatcher(BUY_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_BUY_FORMAT); + } + + String name = matcher.group(NAME_GROUP).trim(); + String quantityString = matcher.group(QUANTITY_GROUP).trim(); + String priceString = matcher.group(PRICE_GROUP).trim(); + + validateNonEmptyParam(name); + validateNonEmptyParam(quantityString); + validateNonEmptyParam(priceString); + validateItemExistsInInventory(name, ErrorMessage.ITEM_NOT_IN_LIST_BUY); + + int quantity = parseQuantity(quantityString); + double price = parsePrice(priceString); + + validateNonNegativeQuantity(quantityString, quantity); + validateNonNegativePrice(priceString, price); + validateNoIntegerOverflow(name, quantity); + + LocalDate currentDate = LocalDate.now(); + + return new BuyCommand(name, quantity, price, currentDate); + } + + private static Command parseSellCommand(String input) throws TrackerException { + String[] flags = {NAME_FLAG, QUANTITY_FLAG}; + Matcher matcher = getPatternMatcher(SELL_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_SELL_FORMAT); + } + + String name = matcher.group(NAME_GROUP).trim(); + String quantityString = matcher.group(QUANTITY_GROUP).trim(); + + validateNonEmptyParam(name); + validateNonEmptyParam(quantityString); + validateItemExistsInInventory(name, ErrorMessage.ITEM_NOT_IN_LIST_SELL); + + int quantity = parseQuantity(quantityString); + validateNonNegativeQuantity(quantityString, quantity); + + double price = Inventory.get(name).getPrice(); + LocalDate currentDate = LocalDate.now(); + + return new SellCommand(name, quantity, price, currentDate); + } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index be3ae6c69a..6fc9aa0aed 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -9,6 +9,8 @@ public class ErrorMessage { public static final String INVALID_NEW_ITEM_FORMAT = "Invalid new command format!"; public static final String INVALID_ADD_FORMAT = "Invalid add command format!"; public static final String INVALID_REMOVE_FORMAT = "Invalid remove command format!"; + public static final String INVALID_BUY_FORMAT = "Invalid buy command format!"; + public static final String INVALID_SELL_FORMAT = "Invalid sell command format!"; public static final String INVALID_REPORT_FORMAT = "Invalid report command format! Follow 'report r/{report type}" + " t/{threshold}"; public static final String INVALID_REPORT_TYPE = "Please select a valid report type. Only 'low stock' and " + @@ -23,6 +25,10 @@ public class ErrorMessage { " does not exist in inventory. Unable to increase its quantity. =("; public static final String ITEM_NOT_IN_LIST_REMOVE = " does not exist in inventory. Unable to decrease its quantity. =("; + public static final String ITEM_NOT_IN_LIST_BUY = + " does not exist in inventory. Unable to buy. =("; + public static final String ITEM_NOT_IN_LIST_SELL = + " does not exist in inventory. Unable to sell. =("; public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; public static final String QUANTITY_NOT_INTEGER = "Quantity should be a non-negative integer"; From 31795702973ea8a0b35b59185452e165356ac37d Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 16:09:01 +0800 Subject: [PATCH 198/423] update transaction --- src/main/java/supertracker/command/BuyCommand.java | 2 +- .../java/supertracker/command/Expenditure.java | 14 ++++++++++++++ .../java/supertracker/command/SellCommand.java | 2 +- src/main/java/supertracker/item/Transaction.java | 8 +++++++- .../java/supertracker/item/TransactionList.java | 6 +++--- 5 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 src/main/java/supertracker/command/Expenditure.java diff --git a/src/main/java/supertracker/command/BuyCommand.java b/src/main/java/supertracker/command/BuyCommand.java index 7763235dd9..016ed82a96 100644 --- a/src/main/java/supertracker/command/BuyCommand.java +++ b/src/main/java/supertracker/command/BuyCommand.java @@ -19,7 +19,7 @@ public BuyCommand(String name, int quantity, double price, LocalDate currentDate @Override public void execute() { super.execute(); - Transaction transaction = new Transaction(name, quantity, price, currentDate, BUY_FLAG); + Transaction transaction = new Transaction(name, quantity, price, currentDate, BUY_FLAG, currentDate); TransactionList.add(transaction); } } diff --git a/src/main/java/supertracker/command/Expenditure.java b/src/main/java/supertracker/command/Expenditure.java new file mode 100644 index 0000000000..fa5a5ee8dc --- /dev/null +++ b/src/main/java/supertracker/command/Expenditure.java @@ -0,0 +1,14 @@ +package supertracker.command; + +public class Expenditure implements Command{ + @Override + public void execute() { + + } + + @Override + public boolean isQuit() { + return false; + } + +} diff --git a/src/main/java/supertracker/command/SellCommand.java b/src/main/java/supertracker/command/SellCommand.java index 570acc3b36..9047a50cba 100644 --- a/src/main/java/supertracker/command/SellCommand.java +++ b/src/main/java/supertracker/command/SellCommand.java @@ -19,7 +19,7 @@ public SellCommand(String name, int quantity, double price, LocalDate currentDat @Override public void execute() { super.execute(); - Transaction transaction = new Transaction(name, quantity, price, currentDate, SELL_FLAG); + Transaction transaction = new Transaction(name, quantity, price, currentDate, SELL_FLAG, currentDate); TransactionList.add(transaction); } } diff --git a/src/main/java/supertracker/item/Transaction.java b/src/main/java/supertracker/item/Transaction.java index eb393937a2..a02e04b114 100644 --- a/src/main/java/supertracker/item/Transaction.java +++ b/src/main/java/supertracker/item/Transaction.java @@ -4,13 +4,19 @@ public class Transaction extends Item { private String type; + LocalDate transactionDate; - public Transaction(String name, int quantity, double price, LocalDate expiryDate, String type) { + //@@ author dtaywd + public Transaction(String name, int quantity, double price, LocalDate expiryDate, String type, + LocalDate transactionDate) { super(name, quantity, price, expiryDate); this.type = type; + this.transactionDate = transactionDate; } public String getType() { return type; } + + public LocalDate getTransactionDate() { return transactionDate; } } diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index 42269cb39b..b2ad294ba6 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -3,13 +3,13 @@ import java.util.ArrayList; public class TransactionList { - private static ArrayList transactionList = new ArrayList<>(); + private static ArrayList transactionList = new ArrayList<>(); public static Item get(int index) { return transactionList.get(index); } - public static void add(Item item) { - transactionList.add(item); + public static void add(Transaction transaction) { + transactionList.add(transaction); } } From e7110e5a64f8496a99e5baae67786b749ba881e9 Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 7 Apr 2024 16:36:16 +0800 Subject: [PATCH 199/423] Remove corrupted data on load Loaded item data that is corrupted will be removed from the save file after loading completes --- src/main/java/supertracker/storage/FileManager.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/supertracker/storage/FileManager.java b/src/main/java/supertracker/storage/FileManager.java index 02980787cb..1a8a5e89b8 100644 --- a/src/main/java/supertracker/storage/FileManager.java +++ b/src/main/java/supertracker/storage/FileManager.java @@ -95,15 +95,18 @@ public static void loadData() throws IOException { } if (corruptedData != 0) { Ui.printError(ErrorMessage.FILE_CORRUPTED_ERROR); + saveData(); } fileScanner.close(); } private static String getItemData(Item item) { String name = item.getName(); - String excess = "w"; + String excess = "end"; + // The item name should not contain the separator, but we perform another check + // as an additional means of security. if (name.contains(SEPARATOR)) { - excess = "e"; + excess = "bad end"; name = name.replace(SEPARATOR, PLACEHOLDER); } @@ -128,7 +131,7 @@ private static Item parseItemData(String itemData) throws Exception { assert data.length == MAX_NUMBER_OF_PARAMS; String name = data[NAME_INDEX].trim(); - if (data[EXTRA_INDEX].equals("e")) { + if (data[EXTRA_INDEX].equals("bad end")) { name = name.replace(PLACEHOLDER, SEPARATOR); } From 47a6a7bf158a6f18ff68e9404d6ef4e0ecec9fb9 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 16:44:58 +0800 Subject: [PATCH 200/423] bug fix --- src/main/java/supertracker/command/BuyCommand.java | 2 +- src/main/java/supertracker/command/SellCommand.java | 2 +- src/main/java/supertracker/item/Transaction.java | 12 +++++------- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/main/java/supertracker/command/BuyCommand.java b/src/main/java/supertracker/command/BuyCommand.java index 016ed82a96..7763235dd9 100644 --- a/src/main/java/supertracker/command/BuyCommand.java +++ b/src/main/java/supertracker/command/BuyCommand.java @@ -19,7 +19,7 @@ public BuyCommand(String name, int quantity, double price, LocalDate currentDate @Override public void execute() { super.execute(); - Transaction transaction = new Transaction(name, quantity, price, currentDate, BUY_FLAG, currentDate); + Transaction transaction = new Transaction(name, quantity, price, currentDate, BUY_FLAG); TransactionList.add(transaction); } } diff --git a/src/main/java/supertracker/command/SellCommand.java b/src/main/java/supertracker/command/SellCommand.java index 9047a50cba..570acc3b36 100644 --- a/src/main/java/supertracker/command/SellCommand.java +++ b/src/main/java/supertracker/command/SellCommand.java @@ -19,7 +19,7 @@ public SellCommand(String name, int quantity, double price, LocalDate currentDat @Override public void execute() { super.execute(); - Transaction transaction = new Transaction(name, quantity, price, currentDate, SELL_FLAG, currentDate); + Transaction transaction = new Transaction(name, quantity, price, currentDate, SELL_FLAG); TransactionList.add(transaction); } } diff --git a/src/main/java/supertracker/item/Transaction.java b/src/main/java/supertracker/item/Transaction.java index a02e04b114..9e421a3b34 100644 --- a/src/main/java/supertracker/item/Transaction.java +++ b/src/main/java/supertracker/item/Transaction.java @@ -4,19 +4,17 @@ public class Transaction extends Item { private String type; - LocalDate transactionDate; - //@@ author dtaywd - public Transaction(String name, int quantity, double price, LocalDate expiryDate, String type, - LocalDate transactionDate) { - super(name, quantity, price, expiryDate); + public Transaction(String name, int quantity, double price, LocalDate transactionDate, String type) { + super(name, quantity, price, transactionDate); this.type = type; - this.transactionDate = transactionDate; } public String getType() { return type; } - public LocalDate getTransactionDate() { return transactionDate; } + public LocalDate getTransactionDate() { + return getExpiryDate(); + } } From b0132fde4242f93fe9d8208cae3fb8bd7bce6ca7 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 16:49:42 +0800 Subject: [PATCH 201/423] formatting --- .../command/{Expenditure.java => ExpenditureCommand.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/java/supertracker/command/{Expenditure.java => ExpenditureCommand.java} (74%) diff --git a/src/main/java/supertracker/command/Expenditure.java b/src/main/java/supertracker/command/ExpenditureCommand.java similarity index 74% rename from src/main/java/supertracker/command/Expenditure.java rename to src/main/java/supertracker/command/ExpenditureCommand.java index fa5a5ee8dc..ffde38ac16 100644 --- a/src/main/java/supertracker/command/Expenditure.java +++ b/src/main/java/supertracker/command/ExpenditureCommand.java @@ -1,6 +1,6 @@ package supertracker.command; -public class Expenditure implements Command{ +public class ExpenditureCommand implements Command { @Override public void execute() { From 7de0f61ceda94c0f2b61e27790dda138c7d7af29 Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 7 Apr 2024 17:02:58 +0800 Subject: [PATCH 202/423] Add new item name limitations Item names cannot contain the program's file delimiter --- src/main/java/supertracker/SuperTracker.java | 2 +- src/main/java/supertracker/parser/Parser.java | 22 ++++++++++++++----- .../supertracker/storage/FileManager.java | 4 +++- src/main/java/supertracker/ui/Ui.java | 17 +++++++++++++- 4 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index 334f2abda1..38a257ade6 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -40,7 +40,7 @@ private static void run() { try { FileManager.loadData(); } catch (IOException e) { - Ui.printError(ErrorMessage.FILE_CORRUPTED_ERROR); + Ui.printError(ErrorMessage.FILE_LOAD_ERROR); } Ui.greetUser(); diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 847897ba48..9b91afd252 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -15,6 +15,7 @@ import supertracker.item.Inventory; import supertracker.item.Item; import supertracker.ui.ErrorMessage; +import supertracker.ui.Ui; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; @@ -60,6 +61,8 @@ public class Parser { private static final String REPORT_TYPE_GROUP = "reportType"; private static final String THRESHOLD_FLAG = "t"; private static final String THRESHOLD_GROUP = "threshold"; + // Do note that the file delimiter constant needs to follow the separator constant in the FileManager class + private static final String FILE_DELIMITER = " ,,, "; //To be used in getPatternMatcher to split the input into its respective parameter groups private static final String NEW_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " @@ -320,10 +323,17 @@ private static void validateItemExistsInInventory(String name, String errorMessa } } - private static void validateItemNotInInventory(String name) throws TrackerException { - if (Inventory.contains(name)) { - throw new TrackerException(name + ErrorMessage.ITEM_IN_LIST_NEW); + private static String validateItemNotInInventory(String name) throws TrackerException { + String itemName = name; + if (name.contains(FILE_DELIMITER)) { + itemName = name.replace(FILE_DELIMITER, ""); + Ui.printItemNameLimitation(name, FILE_DELIMITER, itemName); } + + if (Inventory.contains(itemName)) { + throw new TrackerException(itemName + ErrorMessage.ITEM_IN_LIST_NEW); + } + return itemName; } private static void validateNonEmptyParamsUpdate(String name, String quantityString, String priceString, @@ -416,15 +426,15 @@ private static Command parseNewCommand(String input) throws TrackerException { throw new TrackerException(ErrorMessage.INVALID_NEW_ITEM_FORMAT); } - String name = matcher.group(NAME_GROUP).trim(); + String nameInput = matcher.group(NAME_GROUP).trim(); String quantityString = matcher.group(QUANTITY_GROUP).trim(); String priceString = matcher.group(PRICE_GROUP).trim(); String dateString = matcher.group(EX_DATE_GROUP).trim().replace(EX_DATE_FLAG + BASE_FLAG, ""); - validateNonEmptyParam(name); + validateNonEmptyParam(nameInput); validateNonEmptyParam(quantityString); validateNonEmptyParam(priceString); - validateItemNotInInventory(name); + String name = validateItemNotInInventory(nameInput); int quantity = parseQuantity(quantityString); double price = parsePrice(priceString); diff --git a/src/main/java/supertracker/storage/FileManager.java b/src/main/java/supertracker/storage/FileManager.java index 1a8a5e89b8..fce451acbb 100644 --- a/src/main/java/supertracker/storage/FileManager.java +++ b/src/main/java/supertracker/storage/FileManager.java @@ -19,6 +19,7 @@ public class FileManager { protected static final String DATA_PATH = "./data/"; protected static final String FILE_NAME = "items.txt"; protected static final String SAVE_FILE_PATH = DATA_PATH + FILE_NAME; + // Do note that the separator should also follow the file delimiter constant in the Parser class accordingly protected static final String SEPARATOR = " ,,, "; protected static final String PLACEHOLDER = "*&_"; protected static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); @@ -119,7 +120,8 @@ private static String getItemData(Item item) { date = exDate.format(DATE_FORMAT); } - return name + SEPARATOR + quantity + SEPARATOR + price + SEPARATOR + date + SEPARATOR + excess + "\n"; + return name + SEPARATOR + quantity + SEPARATOR + price + SEPARATOR + + date + SEPARATOR + excess + System.lineSeparator(); } private static Item parseItemData(String itemData) throws Exception { diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 2b10ee4895..9a4827a2ed 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -18,7 +18,7 @@ public class Ui { private static final String INVALID_COMMAND_MESSAGE = "Sorry! Invalid command!"; private static final String WELCOME_MESSAGE = "Hello, welcome to SuperTracker, how may I help you?"; private static final String FAREWELL_MESSAGE = "Goodbye!"; - private static final String BASIC_ERROR_MESSAGE = "Oh no! An error has occurred in your input"; + private static final String BASIC_ERROR_MESSAGE = "Oh no! An error has occurred"; private static final String FIND_OPENING_MESSAGE = "Here are your found items:"; private static final String REPORT_LOW_STOCK_NO_ITEMS_OPENING = "There are no items that fit the criteria!"; private static final String REPORT_EXPIRY_NO_ITEMS_OPENING = "There are no items close to expiry!"; @@ -308,4 +308,19 @@ public static void printNoItemFound(String name) { String stringToPrint = "So sorry, Your item: " + name + " could not be found."; printIndent(stringToPrint); } + + public static void printItemNameLimitation(String name, String delimiter, String newName) { + String nameOutputString = padStringWithQuotes(name, true); + String delimiterOutputString = padStringWithQuotes(delimiter, false); + String newNameOutputString = padStringWithQuotes(newName, false); + printIndent("It appears that the input item name, " + nameOutputString); + printIndent("contains the program's file delimiter, " + delimiterOutputString); + printIndent("Unfortunately due to system limitations, " + nameOutputString); + printIndent("will be renamed and saved as " + newNameOutputString + System.lineSeparator()); + } + + private static String padStringWithQuotes(String name, boolean hasComma) { + String end = hasComma ? "\"," : "\""; + return "\"" + name + end; + } } From 57dbf6a5fd6bcaf9ec0a7cb4ac822616160b25c8 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 7 Apr 2024 17:14:19 +0800 Subject: [PATCH 203/423] Start of RevenueCommand --- .../supertracker/command/RevenueCommand.java | 34 ++++++++++++ .../supertracker/item/TransactionList.java | 53 +++++++++++++++++-- 2 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 src/main/java/supertracker/command/RevenueCommand.java diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java new file mode 100644 index 0000000000..3bb4159805 --- /dev/null +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -0,0 +1,34 @@ +package supertracker.command; + +import java.time.LocalDate; +import supertracker.item.TransactionList; + +public class RevenueCommand implements Command { + private String timeFrame; + private LocalDate startDate; + private LocalDate endDate; + + public RevenueCommand (String timeFrame, LocalDate startDate, LocalDate endDate) { + this.timeFrame = timeFrame; + this.startDate = startDate; + this.endDate = endDate; + } + + @Override + public void execute() { + int numberOfOrders; + double revenue; + switch (timeFrame) { + case "today": + revenue = TransactionList.calculateDayRevenue(LocalDate.now()); + break; + + default: + } + } + + @Override + public boolean isQuit() { + return false; + } +} diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index 42269cb39b..8fcb9f4758 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -1,15 +1,62 @@ package supertracker.item; +import java.time.LocalDate; import java.util.ArrayList; public class TransactionList { - private static ArrayList transactionList = new ArrayList<>(); + private static ArrayList transactionList = new ArrayList<>(); + private static final String SELL_FLAG = "s"; public static Item get(int index) { return transactionList.get(index); } - public static void add(Item item) { - transactionList.add(item); + public static void add(Transaction transaction) { + transactionList.add(transaction); + } + + //@@vimalapugazhan + public static double calculateRangeRevenue(LocalDate start, LocalDate end) { + double revenue = 0; + int totalItemsSold = 0; + for (Transaction transaction : transactionList) { + LocalDate transactionDate = transaction.expiryDate; + String transactionType = transaction.getType(); + if (transactionType.equals(SELL_FLAG) && transactionDate.isBefore(end) && transactionDate.isAfter(start)) { + revenue += transaction.getPrice() * transaction.getQuantity(); + totalItemsSold += transaction.getQuantity(); + } + } + return revenue; + } + + //@@vimalapugazhan + public static double calculateDayRevenue(LocalDate day) { + double revenue = 0; + int totalItemsSold = 0; + for (Transaction transaction : transactionList) { + LocalDate transactionDate = transaction.expiryDate; + String transactionType = transaction.getType(); + if (transactionType.equals(SELL_FLAG) && transactionDate.isEqual(day)) { + revenue = transaction.getPrice() * transaction.getQuantity(); + totalItemsSold += transaction.getQuantity(); + } + } + return revenue; + } + + //@@vimalapugazhan + public static double calculateTotalRevenue() { + double revenue = 0; + int totalItemsSold = 0; + for (Transaction transaction : transactionList) { + LocalDate transactionDate = transaction.expiryDate; + String transactionType = transaction.getType(); + if (transactionType.equals(SELL_FLAG)) { + revenue = transaction.getPrice() * transaction.getQuantity(); + totalItemsSold += transaction.getQuantity(); + } + } + return revenue; } } From 603e3371744f37f992877573d81a934958496651 Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 7 Apr 2024 17:20:29 +0800 Subject: [PATCH 204/423] Update docs --- docs/DeveloperGuide.md | 14 +++++++++----- docs/UserGuide.md | 4 +++- src/main/java/supertracker/ui/Ui.java | 3 ++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 3eefa4f85d..67ea633ddd 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -41,7 +41,7 @@ Thus, it would be necessary to convert the user's input into a consistent format > - All command regex are in the format:\ > `a/(?.*) b/(?.*) c/(?.*) ` with `a/`, `b/`, `c/` being the respective parameter flags > and `/` as the flag character. -> - As of now, parameter flags must only contain 1 character right before the `/` +> - Parameter flags can contain more than 1 character right before the `/` > - Suppose we have `a/aaa b/bbb c/ccc ` as an input, according to the regex above, > aaa will be in the named capture group "grp1", bbb in "grp2", ccc in "grp3" > - If a parameter is optional, we would have it in a non-capture group with a `?` at the end @@ -86,8 +86,9 @@ Item data is saved into a text file in `./data/items.txt` by generating a string The string generated will have the attributes in the format and order of `NAME,QUANTITY,PRICE,EXPIRY_DATE`. Since an `Item`'s expiry date is optional, `EXPIRY_DATE` can be the string `"no date"` if the expiry date is determined to not exist. This string will be written to the text file as mentioned. > For example, suppose the program wants to save the `Item` with attributes `name = "Apple"`, `quantity = 5`, `price = 2.50`, `expiryDate = 19-04-2024` -> and the program uses `"|"` to indicate separation between groups.\ -> The program generates the string `"Apple|5|2.50|19-04-2024|"` +> and the program uses `" ,,, "` to indicate separation between groups.\ +> The program generates the string `"Apple ,,, 5 ,,, 2.50 ,,, 19-04-2024 ,,, end"` with `end` signifying the end of the data string.\ +> Do note that the `end` is only a placeholder and can be any string of characters. This string is generated by the method `FileManager-getItemData()` @@ -96,8 +97,8 @@ Loading is performed at the start of the program in `SuperTracker-run()` where i `loadData()` looks for the save text file at `./data/items.txt` and reads the lines from the file `items.txt` exists. As indicated earlier, each line containing a single `Item`'s data will be in the format and order of `NAME,QUANTITY,PRICE,EXPIRY_DATE`. Each attribute will be parsed into its relevant data type, creating a new `Item` with the extracted attributes, which is then added to the item list in `Inventory`. In the event where the line -of data read is not in the correct format, or the attributes are unable to be parsed into its relevant data type (i.e. the string in the QUANTITY part reads "f1ve" instead of "5")_, -the line will be ignored and a new `Item` will not be added to the list. +of data read is not in the correct format, or the attributes are unable to be parsed into its relevant data type _(i.e. the string in the QUANTITY part reads "f1ve" instead of "5")_, +the line will be ignored and a new `Item` will not be added to the list. The corrupted lines of data will also be erased from the save file. The parsing of string data to an `Item` object is handled by the method `FileManager-parseItemData()`. @@ -123,6 +124,9 @@ The following sequence diagram shows the execution of a NewCommand
4. The `newCommandSuccess` method of the `Ui` class is called to notify that `NewCommand` has been successfully executed 5. The `saveData` method of the `FileManager` class is called to save the new item added onto the hard disk +> Note that if the user inputs a name parameter that contains the file delimiter of the save file, the file delimiter in the name will be +> erased. e.g. If the file delimiter is determined to be `" ,,, "`, the item name `"app ,,, le` will be renamed to `"apple"` + ### Update Command The following is a class diagram of the UpdateCommand and its relevant dependencies
![UpdateCommandClass](uml-diagrams/UpdateCommandClass.png) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 1c2e6e8d32..c9927684f6 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -57,6 +57,8 @@ Format: `new n/NAME q/QUANTITY p/PRICE [e/EXPIRY_DATE]` - `NAME` is case-insensitive - e.g. `Cheese` will be interpreted as `cheese` - If `NAME` already exists in the inventory, use the [update](#update-an-item-update) command instead +- If `NAME` contains the character sequence `" ,,, "`, it will be passed without the character sequence + - e.g. `"Ba ,,, ll"` will be passed as `"Ball"` instead - `QUANTITY` must be a non-negative integer and less than or equal to 2147483647 - e.g. 1, 10, 100 - `PRICE` must be a non-negative integer or decimal number and less than or equal to 2147483647 @@ -291,7 +293,7 @@ Inventory data of the `SuperTracker` program is stored in a text file `items.txt the directory the `SuperTracker.jar` file is in. Users can edit and update the inventory data directly through the data file if they would like to do so. > Note: Edit the data file at your own caution. If the changes made to the data file are in an invalid format, the program -> will ignore those changes on its next load. The changes will be erased on the next automatic save, so do keep a backup of the data +> will ignore those changes on its next load. The corrupted changes will be erased, so do keep a backup of the data > file before editing. -------------------------------------------------------------------------------------------------------------------- diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 9a4827a2ed..8f8f97f1f9 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -316,7 +316,8 @@ public static void printItemNameLimitation(String name, String delimiter, String printIndent("It appears that the input item name, " + nameOutputString); printIndent("contains the program's file delimiter, " + delimiterOutputString); printIndent("Unfortunately due to system limitations, " + nameOutputString); - printIndent("will be renamed and saved as " + newNameOutputString + System.lineSeparator()); + printIndent("will be renamed and saved as " + newNameOutputString); + printIndent("Please avoid using the file delimiter in your item names" + System.lineSeparator()); } private static String padStringWithQuotes(String name, boolean hasComma) { From 78da2990fcfb784f6545de3c860d405e7a8d1b42 Mon Sep 17 00:00:00 2001 From: rismm Date: Sun, 7 Apr 2024 17:22:52 +0800 Subject: [PATCH 205/423] Fix text ui tests --- text-ui-test/EXPECTED.TXT | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index d21cbfbb99..235f4d539e 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -12,7 +12,7 @@ Price: $10.00 -------------------------------------------------------------------------- -------------------------------------------------------------------------- - Oh no! An error has occurred in your input + Oh no! An error has occurred Invalid new command format! -------------------------------------------------------------------------- -------------------------------------------------------------------------- From e4e949cbe2e4e513b5821012e26c76205853c588 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 7 Apr 2024 17:45:13 +0800 Subject: [PATCH 206/423] Declare ParserRevenueCommand --- .../supertracker/command/RevenueCommand.java | 31 ++++++++++++++----- .../supertracker/item/TransactionList.java | 12 +++---- src/main/java/supertracker/parser/Parser.java | 5 +++ 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java index 3bb4159805..8f1d082e59 100644 --- a/src/main/java/supertracker/command/RevenueCommand.java +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -4,26 +4,37 @@ import supertracker.item.TransactionList; public class RevenueCommand implements Command { - private String timeFrame; + private String task; private LocalDate startDate; private LocalDate endDate; + private double revenue; - public RevenueCommand (String timeFrame, LocalDate startDate, LocalDate endDate) { - this.timeFrame = timeFrame; + //@@vimalapugazhan + public RevenueCommand (String task, LocalDate startDate, LocalDate endDate) { + this.task = task; this.startDate = startDate; this.endDate = endDate; } + //@@vimalapugazhan @Override public void execute() { - int numberOfOrders; - double revenue; - switch (timeFrame) { +// int numberOfOrders; + switch (task) { case "today": revenue = TransactionList.calculateDayRevenue(LocalDate.now()); break; - - default: + case "total": + revenue = TransactionList.calculateTotalRevenue(); + break; + case "day": + revenue = TransactionList.calculateDayRevenue(startDate); + break; + case "range": + revenue = TransactionList.calculateRangeRevenue(startDate, endDate); + break; + default: assert task.isEmpty(); + break; } } @@ -31,4 +42,8 @@ public void execute() { public boolean isQuit() { return false; } + + public double getRevenue() { + return revenue; + } } diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index 8fcb9f4758..371ca7d064 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -18,13 +18,13 @@ public static void add(Transaction transaction) { //@@vimalapugazhan public static double calculateRangeRevenue(LocalDate start, LocalDate end) { double revenue = 0; - int totalItemsSold = 0; +// int totalItemsSold = 0; for (Transaction transaction : transactionList) { LocalDate transactionDate = transaction.expiryDate; String transactionType = transaction.getType(); if (transactionType.equals(SELL_FLAG) && transactionDate.isBefore(end) && transactionDate.isAfter(start)) { revenue += transaction.getPrice() * transaction.getQuantity(); - totalItemsSold += transaction.getQuantity(); +// totalItemsSold += transaction.getQuantity(); } } return revenue; @@ -33,13 +33,13 @@ public static double calculateRangeRevenue(LocalDate start, LocalDate end) { //@@vimalapugazhan public static double calculateDayRevenue(LocalDate day) { double revenue = 0; - int totalItemsSold = 0; +// int totalItemsSold = 0; for (Transaction transaction : transactionList) { LocalDate transactionDate = transaction.expiryDate; String transactionType = transaction.getType(); if (transactionType.equals(SELL_FLAG) && transactionDate.isEqual(day)) { revenue = transaction.getPrice() * transaction.getQuantity(); - totalItemsSold += transaction.getQuantity(); +// totalItemsSold += transaction.getQuantity(); } } return revenue; @@ -48,13 +48,13 @@ public static double calculateDayRevenue(LocalDate day) { //@@vimalapugazhan public static double calculateTotalRevenue() { double revenue = 0; - int totalItemsSold = 0; +// int totalItemsSold = 0; for (Transaction transaction : transactionList) { LocalDate transactionDate = transaction.expiryDate; String transactionType = transaction.getType(); if (transactionType.equals(SELL_FLAG)) { revenue = transaction.getPrice() * transaction.getQuantity(); - totalItemsSold += transaction.getQuantity(); +// totalItemsSold += transaction.getQuantity(); } } return revenue; diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 7f9857fe7a..f7120e5226 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -669,4 +669,9 @@ private static Command parseSellCommand(String input) throws TrackerException { return new SellCommand(name, quantity, price, currentDate); } + + //@@vimalapugazhan + private static Command parseRevenueCommand(String Input) { + + } } From baf940a9b0408e0f6fd5663329f59ef6c69cd3ee Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 20:10:26 +0800 Subject: [PATCH 207/423] expenditure command parser and command --- .../command/ExpenditureCommand.java | 57 ++++++++++++++++++- .../supertracker/command/UpdateCommand.java | 1 + .../supertracker/item/TransactionList.java | 41 ++++++++++++- src/main/java/supertracker/parser/Parser.java | 28 +++++++++ .../java/supertracker/ui/ErrorMessage.java | 2 + 5 files changed, 127 insertions(+), 2 deletions(-) diff --git a/src/main/java/supertracker/command/ExpenditureCommand.java b/src/main/java/supertracker/command/ExpenditureCommand.java index ffde38ac16..bb506b9882 100644 --- a/src/main/java/supertracker/command/ExpenditureCommand.java +++ b/src/main/java/supertracker/command/ExpenditureCommand.java @@ -1,14 +1,69 @@ package supertracker.command; +import supertracker.item.Transaction; +import supertracker.item.TransactionList; + +import java.time.LocalDate; + + public class ExpenditureCommand implements Command { + private static final String BUY_FLAG = "b"; + private LocalDate from; + private LocalDate to; + private String task; + + public ExpenditureCommand(String task, LocalDate startDate, LocalDate endDate) { + this.task = task; + this.from = startDate; + this.to = endDate; + } + @Override public void execute() { + switch (task) { + case "today": + todayExpenditure(); + break; + + case "total": + totalExpenditure(); + break; + + case "day": + dayExpenditure(to); + break; + + case "range": + rangeExpenditure(to, from); + break; + + default: + assert task.isEmpty(); + break; + } + } + + private void todayExpenditure() { + LocalDate currDate = LocalDate.now(); + double expenditure = TransactionList.calculateDay(currDate, BUY_FLAG); + + } + + private void totalExpenditure() { + double expenditure = TransactionList.calculateTotal(BUY_FLAG); + } + + private void dayExpenditure(LocalDate day) { + double expenditure = TransactionList.calculateDay(day, BUY_FLAG); } + private void rangeExpenditure(LocalDate to, LocalDate from) { + double expenditure = TransactionList.calculateRange(to, from, BUY_FLAG); + } + @Override public boolean isQuit() { return false; } - } diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index 26c70b3a7a..58e4364fe2 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -23,6 +23,7 @@ public UpdateCommand(String name, int newQuantity, double newPrice, LocalDate ne this.newExpiryDate = newExpiryDate; } + // @@ author dtaywd @Override public void execute() { assert Inventory.contains(name); diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index b2ad294ba6..44b37c58c5 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -1,5 +1,6 @@ package supertracker.item; +import java.time.LocalDate; import java.util.ArrayList; public class TransactionList { @@ -12,4 +13,42 @@ public static Item get(int index) { public static void add(Transaction transaction) { transactionList.add(transaction); } -} + + //@@vimalapugazhan + public static double calculateRange(LocalDate start, LocalDate end, String flag) { + double totalAmount = 0; + for (Transaction transaction : transactionList) { + LocalDate transactionDate = transaction.getTransactionDate(); + String transactionType = transaction.getType(); + if (transactionType.equals(flag) && transactionDate.isBefore(end) && transactionDate.isAfter(start)) { + totalAmount += transaction.getPrice() * transaction.getQuantity(); + } + } + return totalAmount; + } + + //@@vimalapugazhan + public static double calculateDay(LocalDate day, String flag) { + double totalAmount = 0; + for (Transaction transaction : transactionList) { + LocalDate transactionDate = transaction.getTransactionDate(); + String transactionType = transaction.getType(); + if (transactionType.equals(flag) && transactionDate.isEqual(day)) { + totalAmount = transaction.getPrice() * transaction.getQuantity(); + } + } + return totalAmount; + } + + //@@vimalapugazhan + public static double calculateTotal(String flag) { + double totalAmount = 0; + for (Transaction transaction : transactionList) { + String transactionType = transaction.getType(); + if (transactionType.equals(flag)) { + totalAmount = transaction.getPrice() * transaction.getQuantity(); + } + } + return totalAmount; + } +} \ No newline at end of file diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 7f9857fe7a..5014f5dc6a 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -39,6 +39,7 @@ public class Parser { private static final String REPORT_COMMAND = "report"; private static final String BUY_COMMAND = "buy"; private static final String SELL_COMMAND = "sell"; + private static final String EXPENDITURE_COMMAND = "expenditure"; private static final double ROUNDING_FACTOR = 100.0; private static final String BASE_FLAG = "/"; private static final String NAME_FLAG = "n"; @@ -64,6 +65,12 @@ public class Parser { private static final String REPORT_TYPE_GROUP = "reportType"; private static final String THRESHOLD_FLAG = "t"; private static final String THRESHOLD_GROUP = "threshold"; + private static final String TYPE_FLAG = "type"; + private static final String TYPE_GROUP = "type"; + private static final String TO_FLAG = "to"; + private static final String TO_GROUP = "to"; + private static final String FROM_FLAG = "from"; + private static final String FROM_GROUP = "from"; //To be used in getPatternMatcher to split the input into its respective parameter groups private static final String NEW_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " @@ -96,6 +103,10 @@ public class Parser { private static final String SELL_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; + private static final String EXPENDITURE_COMMAND_REGEX = TYPE_FLAG + BASE_FLAG + "(?<" + TYPE_GROUP + ">.*) " + + "(?<" + FROM_GROUP + ">(?:" + FROM_FLAG + BASE_FLAG + ".*)?) " + + "(?<" + TO_GROUP + ">(?:" + TO_FLAG + BASE_FLAG + ".*)?) "; + /** * Returns the command word specified in the user input string * @@ -669,4 +680,21 @@ private static Command parseSellCommand(String input) throws TrackerException { return new SellCommand(name, quantity, price, currentDate); } + + private static Command parseExpenditureCommand(String input) throws TrackerException { + String[] flags = {TYPE_FLAG, FROM_FLAG, TO_FLAG}; + Matcher matcher = getPatternMatcher(EXPENDITURE_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_EXPENDITURE_FORMAT); + } + + String type = matcher.group(TYPE_GROUP).trim(); + String toString = matcher.group(TO_GROUP).replace(TO_FLAG + BASE_FLAG, "").trim(); + String fromString = matcher.group(FROM_GROUP).replace(FROM_FLAG + BASE_FLAG, "").trim(); + + validateNonEmptyParam(type); + LocalDate to = parseExpiryDate(toString); + LocalDate from = parseExpiryDate(fromString); + } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 6fc9aa0aed..0f2de4887b 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -13,6 +13,8 @@ public class ErrorMessage { public static final String INVALID_SELL_FORMAT = "Invalid sell command format!"; public static final String INVALID_REPORT_FORMAT = "Invalid report command format! Follow 'report r/{report type}" + " t/{threshold}"; + public static final String INVALID_EXPENDITURE_FORMAT = "Invalid expenditure command format! Follow " + + "'expenditure t/{task type} to/{startDate} from/{endDate}"; public static final String INVALID_REPORT_TYPE = "Please select a valid report type. Only 'low stock' and " + "'expiry' are available."; public static final String INVALID_EXPIRY_REPORT_FORMAT = "If report type is 'expiry' threshold should not be " + From 5342cb1551e30ebf65186899155a98d1c1fea9fd Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 7 Apr 2024 19:02:34 +0800 Subject: [PATCH 208/423] Finish up Revenue Command. Add print for revenue command --- .../supertracker/command/RevenueCommand.java | 19 +++-- .../supertracker/item/TransactionList.java | 44 ++++------ src/main/java/supertracker/parser/Parser.java | 82 +++++++++++++++++-- .../java/supertracker/ui/ErrorMessage.java | 7 ++ src/main/java/supertracker/ui/Ui.java | 27 ++++++ 5 files changed, 137 insertions(+), 42 deletions(-) diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java index 8f1d082e59..f0da61ef06 100644 --- a/src/main/java/supertracker/command/RevenueCommand.java +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -1,13 +1,18 @@ package supertracker.command; import java.time.LocalDate; + import supertracker.item.TransactionList; +import supertracker.ui.Ui; + public class RevenueCommand implements Command { private String task; + private LocalDate startDate; private LocalDate endDate; private double revenue; + private static final String SELL_FLAG = "s"; //@@vimalapugazhan public RevenueCommand (String task, LocalDate startDate, LocalDate endDate) { @@ -19,31 +24,27 @@ public RevenueCommand (String task, LocalDate startDate, LocalDate endDate) { //@@vimalapugazhan @Override public void execute() { -// int numberOfOrders; switch (task) { case "today": - revenue = TransactionList.calculateDayRevenue(LocalDate.now()); + revenue = TransactionList.calculateDay(LocalDate.now(), SELL_FLAG); break; case "total": - revenue = TransactionList.calculateTotalRevenue(); + revenue = TransactionList.calculateTotal(SELL_FLAG); break; case "day": - revenue = TransactionList.calculateDayRevenue(startDate); + revenue = TransactionList.calculateDay(startDate, SELL_FLAG); break; case "range": - revenue = TransactionList.calculateRangeRevenue(startDate, endDate); + revenue = TransactionList.calculateRange(startDate, endDate, SELL_FLAG); break; default: assert task.isEmpty(); break; } + Ui.printRevenue(task, revenue, startDate, endDate); } @Override public boolean isQuit() { return false; } - - public double getRevenue() { - return revenue; - } } diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index 371ca7d064..44b37c58c5 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -5,7 +5,6 @@ public class TransactionList { private static ArrayList transactionList = new ArrayList<>(); - private static final String SELL_FLAG = "s"; public static Item get(int index) { return transactionList.get(index); @@ -16,47 +15,40 @@ public static void add(Transaction transaction) { } //@@vimalapugazhan - public static double calculateRangeRevenue(LocalDate start, LocalDate end) { - double revenue = 0; -// int totalItemsSold = 0; + public static double calculateRange(LocalDate start, LocalDate end, String flag) { + double totalAmount = 0; for (Transaction transaction : transactionList) { - LocalDate transactionDate = transaction.expiryDate; + LocalDate transactionDate = transaction.getTransactionDate(); String transactionType = transaction.getType(); - if (transactionType.equals(SELL_FLAG) && transactionDate.isBefore(end) && transactionDate.isAfter(start)) { - revenue += transaction.getPrice() * transaction.getQuantity(); -// totalItemsSold += transaction.getQuantity(); + if (transactionType.equals(flag) && transactionDate.isBefore(end) && transactionDate.isAfter(start)) { + totalAmount += transaction.getPrice() * transaction.getQuantity(); } } - return revenue; + return totalAmount; } //@@vimalapugazhan - public static double calculateDayRevenue(LocalDate day) { - double revenue = 0; -// int totalItemsSold = 0; + public static double calculateDay(LocalDate day, String flag) { + double totalAmount = 0; for (Transaction transaction : transactionList) { - LocalDate transactionDate = transaction.expiryDate; + LocalDate transactionDate = transaction.getTransactionDate(); String transactionType = transaction.getType(); - if (transactionType.equals(SELL_FLAG) && transactionDate.isEqual(day)) { - revenue = transaction.getPrice() * transaction.getQuantity(); -// totalItemsSold += transaction.getQuantity(); + if (transactionType.equals(flag) && transactionDate.isEqual(day)) { + totalAmount = transaction.getPrice() * transaction.getQuantity(); } } - return revenue; + return totalAmount; } //@@vimalapugazhan - public static double calculateTotalRevenue() { - double revenue = 0; -// int totalItemsSold = 0; + public static double calculateTotal(String flag) { + double totalAmount = 0; for (Transaction transaction : transactionList) { - LocalDate transactionDate = transaction.expiryDate; String transactionType = transaction.getType(); - if (transactionType.equals(SELL_FLAG)) { - revenue = transaction.getPrice() * transaction.getQuantity(); -// totalItemsSold += transaction.getQuantity(); + if (transactionType.equals(flag)) { + totalAmount = transaction.getPrice() * transaction.getQuantity(); } } - return revenue; + return totalAmount; } -} +} \ No newline at end of file diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index e2bf7b7afd..1dcd6cb880 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -1,6 +1,7 @@ package supertracker.parser; import supertracker.TrackerException; + import supertracker.command.AddCommand; import supertracker.command.BuyCommand; import supertracker.command.Command; @@ -12,8 +13,10 @@ import supertracker.command.QuitCommand; import supertracker.command.RemoveCommand; import supertracker.command.ReportCommand; +import supertracker.command.RevenueCommand; import supertracker.command.SellCommand; import supertracker.command.UpdateCommand; + import supertracker.item.Inventory; import supertracker.item.Item; import supertracker.ui.ErrorMessage; @@ -40,6 +43,7 @@ public class Parser { private static final String REPORT_COMMAND = "report"; private static final String BUY_COMMAND = "buy"; private static final String SELL_COMMAND = "sell"; + private static final String REVENUE_COMMAND = "rev"; private static final double ROUNDING_FACTOR = 100.0; private static final String BASE_FLAG = "/"; private static final String NAME_FLAG = "n"; @@ -65,6 +69,17 @@ public class Parser { private static final String REPORT_TYPE_GROUP = "reportType"; private static final String THRESHOLD_FLAG = "t"; private static final String THRESHOLD_GROUP = "threshold"; + private static final String TYPE_FLAG = "type"; + private static final String TYPE_GROUP = "type"; + private static final String TO_FLAG = "to"; + private static final String TO_GROUP = "to"; + private static final String FROM_FLAG = "from"; + private static final String FROM_GROUP = "from"; + private static final String TODAY = "today"; + private static final String TOTAL = "total"; + private static final String DAY = "day"; + private static final String RANGE = "range"; + // Do note that the file delimiter constant needs to follow the separator constant in the FileManager class private static final String FILE_DELIMITER = " ,,, "; @@ -98,6 +113,10 @@ public class Parser { + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) "; private static final String SELL_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; + private static final String REV_COMMAND_REGEX = TYPE_FLAG + BASE_FLAG + "(?<" + TYPE_GROUP + ">.*) " + + "(?<" + TO_GROUP + ">(?:" + TO_FLAG + BASE_FLAG + ".*)?) " + + "(?<" + FROM_GROUP + ">(?:" + FROM_FLAG + BASE_FLAG + ".*)?) "; + /** * Returns the command word specified in the user input string @@ -170,6 +189,9 @@ public static Command parseCommand(String input) throws TrackerException { case SELL_COMMAND: command = parseSellCommand(params); break; + case REVENUE_COMMAND: + command = parseRevenueCommand(params); + break; default: command = new InvalidCommand(); break; @@ -296,14 +318,14 @@ private static void validateDate(LocalDate expiryDate, String dateString) throws } //@@vimalapugazhan - private static LocalDate parseExpiryDate(String dateString) throws TrackerException { - LocalDate expiryDate = UNDEFINED_DATE; + private static LocalDate parseDate(String dateString) throws TrackerException { + LocalDate date = UNDEFINED_DATE; try { if (!dateString.isEmpty()) { - expiryDate = LocalDate.parse(dateString, EX_DATE_FORMAT); - validateDate(expiryDate, dateString); + date = LocalDate.parse(dateString, EX_DATE_FORMAT); + validateDate(date, dateString); } - return expiryDate; + return date; } catch (DateTimeParseException e) { throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); } @@ -452,7 +474,7 @@ private static Command parseNewCommand(String input) throws TrackerException { int quantity = parseQuantity(quantityString); double price = parsePrice(priceString); - LocalDate expiryDate = parseExpiryDate(dateString); + LocalDate expiryDate = parseDate(dateString); validateNonNegativeQuantity(quantityString, quantity); validateNonNegativePrice(priceString, price); @@ -681,7 +703,53 @@ private static Command parseSellCommand(String input) throws TrackerException { } //@@vimalapugazhan - private static Command parseRevenueCommand(String Input) { + private static void validateRevFormat(String taskType, boolean hasStart, boolean hasEnd) throws TrackerException { + switch (taskType) { + case TODAY: + if (hasStart || hasEnd) { + throw new TrackerException(ErrorMessage.INVALID_REV_TODAY_FORMAT); + } + break; + case TOTAL: + if (hasStart || hasEnd) { + throw new TrackerException(ErrorMessage.INVALID_REV_TOTAL_FORMAT); + } + break; + case DAY: + if (!hasStart || hasEnd) { + throw new TrackerException(ErrorMessage.INVALID_REV_DAY_FORMAT); + } + break; + case RANGE: + if (!hasStart || !hasEnd) { + throw new TrackerException(ErrorMessage.INVALID_REV_RANGE_FORMAT); + } + break; + default: assert taskType.isEmpty(); + break; + } + } + + //@@vimalapugazhan + private static Command parseRevenueCommand(String input) throws TrackerException { + String[] flags = {TYPE_FLAG, TO_FLAG, FROM_FLAG}; + Matcher matcher = getPatternMatcher(REV_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_REV_FORMAT); + } + + boolean hasStart = !matcher.group(FROM_GROUP).isEmpty(); + boolean hasEnd = !matcher.group(TO_GROUP).isEmpty(); + + String taskType = matcher.group(TYPE_GROUP).trim(); + String startDateString = matcher.group(FROM_GROUP).replace(FROM_GROUP + BASE_FLAG, "").trim(); + String endDateString = matcher.group(TO_GROUP).replace(TO_GROUP + BASE_FLAG, "").trim(); + + validateRevFormat(taskType, hasStart, hasEnd); + LocalDate startDate = parseDate(startDateString); + LocalDate endDate = parseDate(endDateString); + return new RevenueCommand(taskType, startDate, endDate); } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 6fc9aa0aed..1a4d4a140d 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -50,4 +50,11 @@ public class ErrorMessage { "Oops! Unable to load some of your previous data as the data in the save file has been corrupted!"; public static final String INTEGER_OVERFLOW = "Unable to add your specified number of items. " + "Why do you need more than 2147483647 items anyway?"; + public static final String INVALID_REV_FORMAT = "Invalid revenue command format. rev task/taskType [from/startDate] [to/endDate]"; + public static final String INVALID_REV_TODAY_FORMAT = "Invalid revenue command format. \"rev task/today\""; + + public static final String INVALID_REV_TOTAL_FORMAT = "Invalid revenue command format. \"rev task/total\""; + public static final String INVALID_REV_DAY_FORMAT = "Invalid revenue command format. \"rev task/day from/DATE\""; + public static final String INVALID_REV_RANGE_FORMAT = "Invalid revenue command format. " + + "\"rev task/range from/START_DATE to/END_DATE\""; } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 8f8f97f1f9..f391660e7d 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -1,6 +1,7 @@ package supertracker.ui; import supertracker.item.Item; +import supertracker.item.TransactionList; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -26,7 +27,12 @@ public class Ui { private static final String REPORT_INVENTORY_NO_ITEMS = "There are no items in the inventory, " + "please consider adding some in!"; private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + private static final DateTimeFormatter DATE_FORMAT_PRINT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); + private static final String TODAY = "today"; + private static final String TOTAL = "total"; + private static final String DAY = "day"; + private static final String RANGE = "range"; private static String getListSize(int size){ return ("There are " + size + " unique items in your inventory:"); @@ -215,6 +221,27 @@ private static void lowStockSuccess(List reportItems, int numReportItems) } } + //@@vimalapugazhan + public static void printRevenue(String task, double revenue, LocalDate startDate, LocalDate endDate) { + switch (task) { + case TODAY: + printIndent("Today's revenue is $" + revenue); + break; + case TOTAL: + printIndent("Total revenue is $" + revenue); + break; + case DAY: + printIndent("Revenue on " + startDate.format(DATE_FORMAT_PRINT) + " was $" + revenue); + break; + case RANGE: + printIndent("Revenue between " + startDate.format(DATE_FORMAT_PRINT) + " and " + + endDate.format(DATE_FORMAT_PRINT) + " was $" + revenue); + break; + default: assert task.isEmpty(); + break; + } + } + public static void listIntro(int size) { assert size >= 0; if (size == 0) { From 20ccea3cddccb6e12f71b5763e4a47bb8e7a65eb Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 7 Apr 2024 20:17:06 +0800 Subject: [PATCH 209/423] Fix checkstyle --- src/main/java/supertracker/command/RevenueCommand.java | 4 ++-- src/main/java/supertracker/item/TransactionList.java | 2 +- src/main/java/supertracker/ui/ErrorMessage.java | 3 ++- src/main/java/supertracker/ui/Ui.java | 1 - 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java index f0da61ef06..451b8fd98a 100644 --- a/src/main/java/supertracker/command/RevenueCommand.java +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -7,12 +7,12 @@ public class RevenueCommand implements Command { + private static final String SELL_FLAG = "s"; private String task; - private LocalDate startDate; private LocalDate endDate; private double revenue; - private static final String SELL_FLAG = "s"; + //@@vimalapugazhan public RevenueCommand (String task, LocalDate startDate, LocalDate endDate) { diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index 44b37c58c5..96e4e19c87 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -51,4 +51,4 @@ public static double calculateTotal(String flag) { } return totalAmount; } -} \ No newline at end of file +} diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 1a4d4a140d..155e120e99 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -50,7 +50,8 @@ public class ErrorMessage { "Oops! Unable to load some of your previous data as the data in the save file has been corrupted!"; public static final String INTEGER_OVERFLOW = "Unable to add your specified number of items. " + "Why do you need more than 2147483647 items anyway?"; - public static final String INVALID_REV_FORMAT = "Invalid revenue command format. rev task/taskType [from/startDate] [to/endDate]"; + public static final String INVALID_REV_FORMAT = "Invalid revenue command format. " + + "rev task/taskType [from/startDate] [to/endDate]"; public static final String INVALID_REV_TODAY_FORMAT = "Invalid revenue command format. \"rev task/today\""; public static final String INVALID_REV_TOTAL_FORMAT = "Invalid revenue command format. \"rev task/total\""; diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index f391660e7d..1d2387d249 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -1,7 +1,6 @@ package supertracker.ui; import supertracker.item.Item; -import supertracker.item.TransactionList; import java.time.LocalDate; import java.time.format.DateTimeFormatter; From 3dec0f894daa5ebf90656dcd203b6fc34e924855 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 20:54:20 +0800 Subject: [PATCH 210/423] Expenditure command unified with revenue command --- .../command/ExpenditureCommand.java | 34 ++++++------------- .../supertracker/command/RevenueCommand.java | 2 +- src/main/java/supertracker/parser/Parser.java | 10 ++++-- src/main/java/supertracker/ui/Ui.java | 19 +++++++---- 4 files changed, 31 insertions(+), 34 deletions(-) diff --git a/src/main/java/supertracker/command/ExpenditureCommand.java b/src/main/java/supertracker/command/ExpenditureCommand.java index bb506b9882..092a725b77 100644 --- a/src/main/java/supertracker/command/ExpenditureCommand.java +++ b/src/main/java/supertracker/command/ExpenditureCommand.java @@ -1,7 +1,7 @@ package supertracker.command; -import supertracker.item.Transaction; import supertracker.item.TransactionList; +import supertracker.ui.Ui; import java.time.LocalDate; @@ -12,6 +12,8 @@ public class ExpenditureCommand implements Command { private LocalDate to; private String task; + private double expenditure; + public ExpenditureCommand(String task, LocalDate startDate, LocalDate endDate) { this.task = task; this.from = startDate; @@ -20,46 +22,30 @@ public ExpenditureCommand(String task, LocalDate startDate, LocalDate endDate) { @Override public void execute() { + switch (task) { case "today": - todayExpenditure(); + LocalDate currDate = LocalDate.now(); + expenditure = TransactionList.calculateDay(currDate, BUY_FLAG); break; case "total": - totalExpenditure(); + expenditure = TransactionList.calculateTotal(BUY_FLAG); break; case "day": - dayExpenditure(to); + expenditure = TransactionList.calculateDay(from, BUY_FLAG); break; case "range": - rangeExpenditure(to, from); + expenditure = TransactionList.calculateRange(to, from, BUY_FLAG); break; default: assert task.isEmpty(); break; } - } - - private void todayExpenditure() { - LocalDate currDate = LocalDate.now(); - double expenditure = TransactionList.calculateDay(currDate, BUY_FLAG); - - } - - private void totalExpenditure() { - double expenditure = TransactionList.calculateTotal(BUY_FLAG); - } - - private void dayExpenditure(LocalDate day) { - double expenditure = TransactionList.calculateDay(day, BUY_FLAG); - - } - - private void rangeExpenditure(LocalDate to, LocalDate from) { - double expenditure = TransactionList.calculateRange(to, from, BUY_FLAG); + Ui.printRevenueExpenditure(task, expenditure, to, from, "expenditure"); } @Override diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java index 451b8fd98a..9a9acc5808 100644 --- a/src/main/java/supertracker/command/RevenueCommand.java +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -40,7 +40,7 @@ public void execute() { default: assert task.isEmpty(); break; } - Ui.printRevenue(task, revenue, startDate, endDate); + Ui.printRevenueExpenditure(task, revenue, startDate, endDate, "revenue"); } @Override diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index f62b0290a0..f2d312bf48 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -44,7 +44,7 @@ public class Parser { private static final String REPORT_COMMAND = "report"; private static final String BUY_COMMAND = "buy"; private static final String SELL_COMMAND = "sell"; - private static final String EXPENDITURE_COMMAND = "expenditure"; + private static final String EXPENDITURE_COMMAND = "exp"; private static final String REVENUE_COMMAND = "rev"; private static final double ROUNDING_FACTOR = 100.0; private static final String BASE_FLAG = "/"; @@ -198,6 +198,9 @@ public static Command parseCommand(String input) throws TrackerException { case REVENUE_COMMAND: command = parseRevenueCommand(params); break; + case EXPENDITURE_COMMAND: + command = parseExpenditureCommand(params); + break; default: command = new InvalidCommand(); break; @@ -721,8 +724,8 @@ private static Command parseExpenditureCommand(String input) throws TrackerExcep boolean hasEnd = !matcher.group(TO_GROUP).isEmpty(); String type = matcher.group(TYPE_GROUP).trim(); - String toString = matcher.group(TO_GROUP).replace(TO_FLAG + BASE_FLAG, "").trim(); String fromString = matcher.group(FROM_GROUP).replace(FROM_FLAG + BASE_FLAG, "").trim(); + String toString = matcher.group(TO_GROUP).replace(TO_FLAG + BASE_FLAG, "").trim(); validateRevExpFormat(type, hasStart, hasEnd); LocalDate to = parseDate(toString); @@ -731,7 +734,8 @@ private static Command parseExpenditureCommand(String input) throws TrackerExcep } //@@vimalapugazhan - private static void validateRevExpFormat(String taskType, boolean hasStart, boolean hasEnd) throws TrackerException { + private static void validateRevExpFormat(String taskType, boolean hasStart, boolean hasEnd) + throws TrackerException { switch (taskType) { case TODAY: if (hasStart || hasEnd) { diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 1d2387d249..2cb7fa237c 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -32,6 +32,7 @@ public class Ui { private static final String TOTAL = "total"; private static final String DAY = "day"; private static final String RANGE = "range"; + private static final double ROUNDING_FACTOR = 100.0; private static String getListSize(int size){ return ("There are " + size + " unique items in your inventory:"); @@ -221,20 +222,22 @@ private static void lowStockSuccess(List reportItems, int numReportItems) } //@@vimalapugazhan - public static void printRevenue(String task, double revenue, LocalDate startDate, LocalDate endDate) { + public static void printRevenueExpenditure(String task, double amount, LocalDate startDate, LocalDate endDate, + String financeType) { + amount = roundTo2Dp(amount); switch (task) { case TODAY: - printIndent("Today's revenue is $" + revenue); + printIndent("Today's " + financeType + " is $" + amount); break; case TOTAL: - printIndent("Total revenue is $" + revenue); + printIndent("Total " + financeType + " is $" + amount); break; case DAY: - printIndent("Revenue on " + startDate.format(DATE_FORMAT_PRINT) + " was $" + revenue); + printIndent(financeType + " on " + startDate.format(DATE_FORMAT_PRINT) + " was $" + amount); break; case RANGE: - printIndent("Revenue between " + startDate.format(DATE_FORMAT_PRINT) + " and " - + endDate.format(DATE_FORMAT_PRINT) + " was $" + revenue); + printIndent( financeType + " between " + startDate.format(DATE_FORMAT_PRINT) + " and " + + endDate.format(DATE_FORMAT_PRINT) + " was $" + amount); break; default: assert task.isEmpty(); break; @@ -350,4 +353,8 @@ private static String padStringWithQuotes(String name, boolean hasComma) { String end = hasComma ? "\"," : "\""; return "\"" + name + end; } + + private static double roundTo2Dp(double unroundedValue) { + return Math.round(unroundedValue * ROUNDING_FACTOR) / ROUNDING_FACTOR; + } } From a4488fc835916419a57223309623b0341f7746e2 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Sun, 7 Apr 2024 21:54:31 +0800 Subject: [PATCH 211/423] JUnit for FindCommand and some typo changes --- .../command/DeleteCommandTest.java | 4 +- .../supertracker/command/FindCommandTest.java | 87 +++++++++++++++++++ 2 files changed, 89 insertions(+), 2 deletions(-) create mode 100644 src/test/java/supertracker/command/FindCommandTest.java diff --git a/src/test/java/supertracker/command/DeleteCommandTest.java b/src/test/java/supertracker/command/DeleteCommandTest.java index 46bf331dda..0ce8ada4d0 100644 --- a/src/test/java/supertracker/command/DeleteCommandTest.java +++ b/src/test/java/supertracker/command/DeleteCommandTest.java @@ -45,13 +45,13 @@ public void deleteCommand_missingParamInput() { } @Test - public void addCommand_emptyParamInput() { + public void deleteCommand_emptyParamInput() { String userInput = "delete n/"; assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); } @Test - public void addCommand_itemNotInList() { + public void deleteCommand_itemNotInList() { String userInput = "delete n/cake"; assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); } diff --git a/src/test/java/supertracker/command/FindCommandTest.java b/src/test/java/supertracker/command/FindCommandTest.java new file mode 100644 index 0000000000..671a1cd9ec --- /dev/null +++ b/src/test/java/supertracker/command/FindCommandTest.java @@ -0,0 +1,87 @@ +package supertracker.command; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import supertracker.TrackerException; +import supertracker.item.Inventory; +import supertracker.parser.Parser; + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +//@@author [TimothyLKM] +public class FindCommandTest { + private static final String LINE_SEPARATOR = System.lineSeparator(); + private static final String FIND_INTRO = " Here are your found items:" + LINE_SEPARATOR; + private static final String INDEX = " 1."; + private final ByteArrayOutputStream outContent = new ByteArrayOutputStream(); + private final PrintStream originalOut = System.out; + + @BeforeAll + public static void setUp() { + Inventory.clear(); + String name = "Milk"; + int quantity = 100; + double price = 5.00; + LocalDate date = LocalDate.parse("01-01-2113", DateTimeFormatter.ofPattern("dd-MM-yyyy")); + + Command newCommand = new NewCommand(name, quantity, price, date); + newCommand.execute(); + } + @BeforeEach + public void setUpStreams() { + System.setOut(new PrintStream(outContent)); + } + @Test + public void findCommand_validData_correctlyConstructed() throws TrackerException { + String word = "Milk"; + + String userInput = "find n/" + word; + Command c = Parser.parseCommand(userInput); + c.execute(); + + String expected = FIND_INTRO + + INDEX + " Name: Milk" + LINE_SEPARATOR + + " Quantity: 100" + LINE_SEPARATOR + + " Price: $5.00" + LINE_SEPARATOR + + " Expiry Date: 01/01/2113" + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @Test + public void findCommand_missingParamInput() { + String userInput = "find"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void findCommand_emptyParamInput() { + String userInput = "find n/"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @Test + public void findCommand_itemNotInList() throws TrackerException { + String userInput = "find n/cake"; + Command c = Parser.parseCommand(userInput); + c.execute(); + + String expected = FIND_INTRO + + " So sorry, Your item: cake could not be found." + LINE_SEPARATOR; + String actual = outContent.toString(); + assertEquals(expected, actual); + } + + @AfterEach + public void restoreStreams() { + System.setOut(originalOut); + } +} From f91fca4f6ef3d7930b6af722a4492addc14f6195 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 22:25:15 +0800 Subject: [PATCH 212/423] Cleaned up code for expenditure and revenue. Updated user guide, aligned date format with the other functions, unified functions between expenditure and revenue, updated ui output as well to more closely align with other functions --- docs/UserGuide.md | 34 ++++++++++ .../command/ExpenditureCommand.java | 21 ++++--- .../supertracker/command/RevenueCommand.java | 8 ++- .../supertracker/item/TransactionList.java | 62 ++++++++++++++++++- src/main/java/supertracker/parser/Parser.java | 2 +- src/main/java/supertracker/ui/Ui.java | 20 +++++- 6 files changed, 134 insertions(+), 13 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index c9927684f6..a5b19536f2 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -235,6 +235,7 @@ The report will be printed to the terminal and will contain the name of each ite - The report would be sorted in order of ascending expiry date Format (low stock):`report r/REPORT_TYPE t/THRESHOLD_VALUE` + Format (expiry):`report r/REPORT_TYPE [t/THRESHOLD_VALUE]` - `r/` parameter that specifies the type of report. e.g. **low stock** or **expiry** @@ -269,6 +270,39 @@ There is 1 item close to expiry!
+### Print expenditure `exp` +There are 4 types of expenditures: +1. **today** - lists all expenditures that occurred today +2. **total** - lists all expenditures in total +3. **day** - lists all expenditures that occurred during the specified day +4. **range** - lists all expenditures that occurred in the specified range of dates + +The cumulative expenditures would be first printed to the terminal. +Afterwords, the expenditures will be printed to the terminal and will contain the name, +quantity and price of each purchase. +All expenditures would be listed according to alphabetical order. + +Format: `exp type/expenditureType [from/startDate] [to/endDate]` + +> Note: If the type is **today** or **total**, startDate and endDate are not supposed to be filled. +> If the type is **day**, startDate is compulsory and endDate is not supposed to be filled. +> If the type is **range**, both startDate and endDate are compulsory. + +Example: `exp type/today` + +``` +Today's expenditure is $94.5 +1. Name: apple + Quantity: 30 + Price: 2.15 + Transaction Date: 19/04/2024 +2. Name: banana + Quantity: 10 + Price: 3.0 + Transaction Date: 19/04/2024 +``` +
+ ### Quit the program: `quit` Quits the program diff --git a/src/main/java/supertracker/command/ExpenditureCommand.java b/src/main/java/supertracker/command/ExpenditureCommand.java index 092a725b77..bf51cdde2d 100644 --- a/src/main/java/supertracker/command/ExpenditureCommand.java +++ b/src/main/java/supertracker/command/ExpenditureCommand.java @@ -1,28 +1,31 @@ package supertracker.command; +import supertracker.item.Item; +import supertracker.item.Transaction; import supertracker.item.TransactionList; import supertracker.ui.Ui; import java.time.LocalDate; +import java.util.ArrayList; public class ExpenditureCommand implements Command { private static final String BUY_FLAG = "b"; - private LocalDate from; - private LocalDate to; + private LocalDate startDate; + private LocalDate endDate; private String task; private double expenditure; public ExpenditureCommand(String task, LocalDate startDate, LocalDate endDate) { this.task = task; - this.from = startDate; - this.to = endDate; + this.startDate = startDate; + this.endDate = endDate; } @Override public void execute() { - + ArrayList filteredList = new ArrayList<>(); switch (task) { case "today": LocalDate currDate = LocalDate.now(); @@ -34,18 +37,20 @@ public void execute() { break; case "day": - expenditure = TransactionList.calculateDay(from, BUY_FLAG); + expenditure = TransactionList.calculateDay(startDate, BUY_FLAG); break; case "range": - expenditure = TransactionList.calculateRange(to, from, BUY_FLAG); + expenditure = TransactionList.calculateRange(startDate, endDate, BUY_FLAG); break; default: assert task.isEmpty(); break; } - Ui.printRevenueExpenditure(task, expenditure, to, from, "expenditure"); + filteredList = TransactionList.getFilteredTransactionList(task, startDate, endDate, BUY_FLAG); + filteredList.sort(Item.sortByName()); + Ui.printRevenueExpenditure(task, expenditure, startDate, endDate, "expenditure", filteredList); } @Override diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java index 9a9acc5808..2cafb55a54 100644 --- a/src/main/java/supertracker/command/RevenueCommand.java +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -1,7 +1,10 @@ package supertracker.command; import java.time.LocalDate; +import java.util.ArrayList; +import supertracker.item.Item; +import supertracker.item.Transaction; import supertracker.item.TransactionList; import supertracker.ui.Ui; @@ -24,6 +27,7 @@ public RevenueCommand (String task, LocalDate startDate, LocalDate endDate) { //@@vimalapugazhan @Override public void execute() { + ArrayList filteredList = new ArrayList<>(); switch (task) { case "today": revenue = TransactionList.calculateDay(LocalDate.now(), SELL_FLAG); @@ -40,7 +44,9 @@ public void execute() { default: assert task.isEmpty(); break; } - Ui.printRevenueExpenditure(task, revenue, startDate, endDate, "revenue"); + filteredList = TransactionList.getFilteredTransactionList(task, startDate, endDate, SELL_FLAG); + filteredList.sort(Item.sortByName()); + Ui.printRevenueExpenditure(task, revenue, startDate, endDate, "revenue", filteredList); } @Override diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index b54ca50900..62b52071d8 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -4,6 +4,10 @@ import java.util.ArrayList; public class TransactionList { + private static final String TODAY = "today"; + private static final String TOTAL = "total"; + private static final String DAY = "day"; + private static final String RANGE = "range"; private static ArrayList transactionList = new ArrayList<>(); public static Item get(int index) { @@ -34,7 +38,7 @@ public static double calculateDay(LocalDate day, String flag) { LocalDate transactionDate = transaction.getTransactionDate(); String transactionType = transaction.getType(); if (transactionType.equals(flag) && transactionDate.isEqual(day)) { - totalAmount = transaction.getPrice() * transaction.getQuantity(); + totalAmount += transaction.getPrice() * transaction.getQuantity(); } } return totalAmount; @@ -46,10 +50,64 @@ public static double calculateTotal(String flag) { for (Transaction transaction : transactionList) { String transactionType = transaction.getType(); if (transactionType.equals(flag)) { - totalAmount = transaction.getPrice() * transaction.getQuantity(); + totalAmount += transaction.getPrice() * transaction.getQuantity(); } } return totalAmount; } + + public static ArrayList getFilteredTransactionList(String type, LocalDate start, LocalDate end, + String flag) { + ArrayList filteredList= new ArrayList<>(); + LocalDate currDate = LocalDate.now(); + switch (type) { + case TODAY: + getDayTransactionList(currDate, flag, filteredList); + break; + case TOTAL: + getTotalTransactionList(flag, filteredList); + break; + case DAY: + getDayTransactionList(start, flag, filteredList); + break; + case RANGE: + getRangeTransactionList(start, end, flag, filteredList); + break; + default: + assert type.isEmpty(); + break; + } + return filteredList; + } + + private static void getTotalTransactionList(String flag, ArrayList filteredList) { + for (Transaction transaction : transactionList) { + String transactionType = transaction.getType(); + if (transactionType.equals(flag)) { + filteredList.add(transaction); + } + } + } + + private static void getDayTransactionList(LocalDate start, String flag, ArrayList filteredList) { + for (Transaction transaction : transactionList) { + LocalDate transactionDate = transaction.getTransactionDate(); + String transactionType = transaction.getType(); + if (transactionType.equals(flag) && transactionDate.isEqual(start)) { + filteredList.add(transaction); + } + } + } + + private static void getRangeTransactionList(LocalDate start, LocalDate end, String flag, + ArrayList filteredList) { + for (Transaction transaction : transactionList) { + LocalDate transactionDate = transaction.getTransactionDate(); + String transactionType = transaction.getType(); + if (transactionType.equals(flag) && transactionDate.isBefore(end) && transactionDate.isAfter(start)) { + filteredList.add(transaction); + } + } + } } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index f2d312bf48..abd05620f2 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -730,7 +730,7 @@ private static Command parseExpenditureCommand(String input) throws TrackerExcep validateRevExpFormat(type, hasStart, hasEnd); LocalDate to = parseDate(toString); LocalDate from = parseDate(fromString); - return new ExpenditureCommand(type, to, from); + return new ExpenditureCommand(type, from, to); } //@@vimalapugazhan diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 2cb7fa237c..365f236ee3 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -1,10 +1,12 @@ package supertracker.ui; import supertracker.item.Item; +import supertracker.item.Transaction; import java.time.LocalDate; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.List; public class Ui { @@ -223,27 +225,43 @@ private static void lowStockSuccess(List reportItems, int numReportItems) //@@vimalapugazhan public static void printRevenueExpenditure(String task, double amount, LocalDate startDate, LocalDate endDate, - String financeType) { + String financeType, ArrayList filteredList) { amount = roundTo2Dp(amount); switch (task) { case TODAY: printIndent("Today's " + financeType + " is $" + amount); + printFilteredList(filteredList); break; case TOTAL: printIndent("Total " + financeType + " is $" + amount); + printFilteredList(filteredList); break; case DAY: printIndent(financeType + " on " + startDate.format(DATE_FORMAT_PRINT) + " was $" + amount); + printFilteredList(filteredList); break; case RANGE: printIndent( financeType + " between " + startDate.format(DATE_FORMAT_PRINT) + " and " + endDate.format(DATE_FORMAT_PRINT) + " was $" + amount); + printFilteredList(filteredList); break; default: assert task.isEmpty(); break; } } + private static void printFilteredList(ArrayList filteredList) { + int count = 1; + for (Transaction transaction: filteredList) { + String formattedTransactionDate = transaction.getTransactionDate().format(DATE_FORMAT_PRINT); + printIndent(count + ". Name: " + transaction.getName()); + printIndent(" Quantity: " + transaction.getQuantity()); + printIndent(" Price: " + transaction.getPrice()); + printIndent(" Transaction Date: " + formattedTransactionDate); + count += 1; + } + } + public static void listIntro(int size) { assert size >= 0; if (size == 0) { From 12366c93d5ce10bf094dce85f9488dd414e1a912 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Sun, 7 Apr 2024 22:34:26 +0800 Subject: [PATCH 213/423] edited userguide --- docs/UserGuide.md | 3 ++- src/main/java/supertracker/command/ExpenditureCommand.java | 1 + src/main/java/supertracker/item/TransactionList.java | 4 ++++ src/main/java/supertracker/parser/Parser.java | 2 +- src/main/java/supertracker/ui/Ui.java | 1 + 5 files changed, 9 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index a5b19536f2..2c805166eb 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -275,7 +275,8 @@ There are 4 types of expenditures: 1. **today** - lists all expenditures that occurred today 2. **total** - lists all expenditures in total 3. **day** - lists all expenditures that occurred during the specified day -4. **range** - lists all expenditures that occurred in the specified range of dates +4. **range** - lists all expenditures that occurred in the specified range of dates +not inclusive of the start and end dates The cumulative expenditures would be first printed to the terminal. Afterwords, the expenditures will be printed to the terminal and will contain the name, diff --git a/src/main/java/supertracker/command/ExpenditureCommand.java b/src/main/java/supertracker/command/ExpenditureCommand.java index bf51cdde2d..4c41dc95b7 100644 --- a/src/main/java/supertracker/command/ExpenditureCommand.java +++ b/src/main/java/supertracker/command/ExpenditureCommand.java @@ -9,6 +9,7 @@ import java.util.ArrayList; +// @@ author dtaywd public class ExpenditureCommand implements Command { private static final String BUY_FLAG = "b"; private LocalDate startDate; diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index 62b52071d8..c8047e2fa2 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -56,6 +56,7 @@ public static double calculateTotal(String flag) { return totalAmount; } + // @@ author dtaywd public static ArrayList getFilteredTransactionList(String type, LocalDate start, LocalDate end, String flag) { ArrayList filteredList= new ArrayList<>(); @@ -80,6 +81,7 @@ public static ArrayList getFilteredTransactionList(String type, Loc return filteredList; } + // @@ author dtaywd private static void getTotalTransactionList(String flag, ArrayList filteredList) { for (Transaction transaction : transactionList) { String transactionType = transaction.getType(); @@ -89,6 +91,7 @@ private static void getTotalTransactionList(String flag, ArrayList } } + // @@ author dtaywd private static void getDayTransactionList(LocalDate start, String flag, ArrayList filteredList) { for (Transaction transaction : transactionList) { LocalDate transactionDate = transaction.getTransactionDate(); @@ -99,6 +102,7 @@ private static void getDayTransactionList(LocalDate start, String flag, ArrayLis } } + // @@ author dtaywd private static void getRangeTransactionList(LocalDate start, LocalDate end, String flag, ArrayList filteredList) { for (Transaction transaction : transactionList) { diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index abd05620f2..488d57a482 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -711,7 +711,7 @@ private static Command parseSellCommand(String input) throws TrackerException { return new SellCommand(name, quantity, price, currentDate); } - + // @@ author dtaywd private static Command parseExpenditureCommand(String input) throws TrackerException { String[] flags = {TYPE_FLAG, FROM_FLAG, TO_FLAG}; Matcher matcher = getPatternMatcher(EXPENDITURE_COMMAND_REGEX, input, flags); diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 365f236ee3..9909c1235c 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -250,6 +250,7 @@ public static void printRevenueExpenditure(String task, double amount, LocalDate } } + // author dtaywd private static void printFilteredList(ArrayList filteredList) { int count = 1; for (Transaction transaction: filteredList) { From 4480d004d89eaf47dda0a97dc0075a8097e3d9f3 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 7 Apr 2024 22:52:42 +0800 Subject: [PATCH 214/423] Fix Author Tags --- .../java/supertracker/command/RevenueCommand.java | 4 ++-- .../java/supertracker/item/TransactionList.java | 6 +++--- src/main/java/supertracker/parser/Parser.java | 14 +++++++------- src/main/java/supertracker/ui/Ui.java | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java index 2cafb55a54..7afcfd1139 100644 --- a/src/main/java/supertracker/command/RevenueCommand.java +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -17,14 +17,14 @@ public class RevenueCommand implements Command { private double revenue; - //@@vimalapugazhan + //@@author vimalapugazhan public RevenueCommand (String task, LocalDate startDate, LocalDate endDate) { this.task = task; this.startDate = startDate; this.endDate = endDate; } - //@@vimalapugazhan + //@@author vimalapugazhan @Override public void execute() { ArrayList filteredList = new ArrayList<>(); diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index c8047e2fa2..d1803c2b03 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -18,7 +18,7 @@ public static void add(Transaction transaction) { transactionList.add(transaction); } - //@@vimalapugazhan + //@@author vimalapugazhan public static double calculateRange(LocalDate start, LocalDate end, String flag) { double totalAmount = 0; for (Transaction transaction : transactionList) { @@ -31,7 +31,7 @@ public static double calculateRange(LocalDate start, LocalDate end, String flag) return totalAmount; } - //@@vimalapugazhan + //@@author vimalapugazhan public static double calculateDay(LocalDate day, String flag) { double totalAmount = 0; for (Transaction transaction : transactionList) { @@ -44,7 +44,7 @@ public static double calculateDay(LocalDate day, String flag) { return totalAmount; } - //@@vimalapugazhan + //@@author vimalapugazhan public static double calculateTotal(String flag) { double totalAmount = 0; for (Transaction transaction : transactionList) { diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 488d57a482..1203dcdf90 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -319,14 +319,14 @@ private static double parsePrice(String priceString) throws TrackerException { } } - //@@vimalapugazhan + //@@author vimalapugazhan private static void validateDate(LocalDate expiryDate, String dateString) throws TrackerException { if (!expiryDate.format(EX_DATE_FORMAT).equals(dateString)) { throw new TrackerException(ErrorMessage.INVALID_DATE); } } - //@@vimalapugazhan + //@@author vimalapugazhan private static LocalDate parseDate(String dateString) throws TrackerException { LocalDate date = UNDEFINED_DATE; try { @@ -340,7 +340,7 @@ private static LocalDate parseDate(String dateString) throws TrackerException { } } - //@@vimalapugazhan + //@@author vimalapugazhan private static LocalDate parseExpiryDateUpdate(String dateString) throws TrackerException { LocalDate expiryDate = LocalDate.parse("1-1-1", DateTimeFormatter.ofPattern("y-M-d")); @@ -542,7 +542,7 @@ private static Command parseListCommand(String input) throws TrackerException { boolean hasSortExpiry = !matcher.group(SORT_EX_DATE_GROUP).isEmpty(); boolean isReverse = !matcher.group(REVERSE_GROUP).isEmpty(); - //@@vimalapugazhan + //@@author vimalapugazhan ArrayList paramOrder = getParamPositions(input, hasQuantity, hasPrice, hasExpiry, QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG); String firstParam = extractParam(input, paramOrder, 0, false); @@ -559,7 +559,7 @@ private static Command parseListCommand(String input) throws TrackerException { firstSortParam, secondSortParam, thirdSortParam, isReverse); } - //@@vimalapugazhan + //@@author vimalapugazhan private static Command parseDeleteCommand(String input) throws TrackerException { String[] flags = {NAME_FLAG}; Matcher matcher = getPatternMatcher(DELETE_COMMAND_REGEX, input, flags); @@ -733,7 +733,7 @@ private static Command parseExpenditureCommand(String input) throws TrackerExcep return new ExpenditureCommand(type, from, to); } - //@@vimalapugazhan + //@@author vimalapugazhan private static void validateRevExpFormat(String taskType, boolean hasStart, boolean hasEnd) throws TrackerException { switch (taskType) { @@ -762,7 +762,7 @@ private static void validateRevExpFormat(String taskType, boolean hasStart, bool } } - //@@vimalapugazhan + //@@author vimalapugazhan private static Command parseRevenueCommand(String input) throws TrackerException { String[] flags = {TYPE_FLAG, TO_FLAG, FROM_FLAG}; Matcher matcher = getPatternMatcher(REV_COMMAND_REGEX, input, flags); diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 9909c1235c..6c09dbfbe5 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -223,7 +223,7 @@ private static void lowStockSuccess(List reportItems, int numReportItems) } } - //@@vimalapugazhan + //@@author vimalapugazhan public static void printRevenueExpenditure(String task, double amount, LocalDate startDate, LocalDate endDate, String financeType, ArrayList filteredList) { amount = roundTo2Dp(amount); From e86e5737d84461168aa0fbbe563ff2363502c014 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 7 Apr 2024 23:03:41 +0800 Subject: [PATCH 215/423] Fix Tags 2 --- src/main/java/supertracker/command/RevenueCommand.java | 5 +---- src/main/java/supertracker/item/TransactionList.java | 3 +-- src/main/java/supertracker/parser/Parser.java | 7 +++++++ src/main/java/supertracker/ui/Ui.java | 2 ++ 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java index 7afcfd1139..e52b520b96 100644 --- a/src/main/java/supertracker/command/RevenueCommand.java +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -1,3 +1,4 @@ +//@@author vimalapugazhan package supertracker.command; import java.time.LocalDate; @@ -8,7 +9,6 @@ import supertracker.item.TransactionList; import supertracker.ui.Ui; - public class RevenueCommand implements Command { private static final String SELL_FLAG = "s"; private String task; @@ -16,15 +16,12 @@ public class RevenueCommand implements Command { private LocalDate endDate; private double revenue; - - //@@author vimalapugazhan public RevenueCommand (String task, LocalDate startDate, LocalDate endDate) { this.task = task; this.startDate = startDate; this.endDate = endDate; } - //@@author vimalapugazhan @Override public void execute() { ArrayList filteredList = new ArrayList<>(); diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index d1803c2b03..f2971509c8 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -31,7 +31,6 @@ public static double calculateRange(LocalDate start, LocalDate end, String flag) return totalAmount; } - //@@author vimalapugazhan public static double calculateDay(LocalDate day, String flag) { double totalAmount = 0; for (Transaction transaction : transactionList) { @@ -44,7 +43,6 @@ public static double calculateDay(LocalDate day, String flag) { return totalAmount; } - //@@author vimalapugazhan public static double calculateTotal(String flag) { double totalAmount = 0; for (Transaction transaction : transactionList) { @@ -55,6 +53,7 @@ public static double calculateTotal(String flag) { } return totalAmount; } + //@@author // @@ author dtaywd public static ArrayList getFilteredTransactionList(String type, LocalDate start, LocalDate end, diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 1203dcdf90..4bd0ca9d9b 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -325,6 +325,7 @@ private static void validateDate(LocalDate expiryDate, String dateString) throws throw new TrackerException(ErrorMessage.INVALID_DATE); } } + //@@author //@@author vimalapugazhan private static LocalDate parseDate(String dateString) throws TrackerException { @@ -339,6 +340,7 @@ private static LocalDate parseDate(String dateString) throws TrackerException { throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); } } + //@@author //@@author vimalapugazhan private static LocalDate parseExpiryDateUpdate(String dateString) throws TrackerException { @@ -360,6 +362,7 @@ private static LocalDate parseExpiryDateUpdate(String dateString) throws Tracker } return expiryDate; } + //@@author private static void validateItemExistsInInventory(String name, String errorMessage) throws TrackerException { @@ -558,6 +561,7 @@ private static Command parseListCommand(String input) throws TrackerException { return new ListCommand(firstParam, secondParam, thirdParam, firstSortParam, secondSortParam, thirdSortParam, isReverse); } + //@@author //@@author vimalapugazhan private static Command parseDeleteCommand(String input) throws TrackerException { @@ -575,6 +579,7 @@ private static Command parseDeleteCommand(String input) throws TrackerException return new DeleteCommand(name); } + //@@author private static Command parseAddCommand(String input) throws TrackerException { String[] flags = {NAME_FLAG, QUANTITY_FLAG}; @@ -761,6 +766,7 @@ private static void validateRevExpFormat(String taskType, boolean hasStart, bool break; } } + //@@author //@@author vimalapugazhan private static Command parseRevenueCommand(String input) throws TrackerException { @@ -784,4 +790,5 @@ private static Command parseRevenueCommand(String input) throws TrackerException return new RevenueCommand(taskType, startDate, endDate); } + //@@author } diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 6c09dbfbe5..af5cc7ef9d 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -249,6 +249,7 @@ public static void printRevenueExpenditure(String task, double amount, LocalDate break; } } + //@@author // author dtaywd private static void printFilteredList(ArrayList filteredList) { @@ -262,6 +263,7 @@ private static void printFilteredList(ArrayList filteredList) { count += 1; } } + //@@author public static void listIntro(int size) { assert size >= 0; From 3f05a1d811fc9fc5f550b7e236181b8fa636609e Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 7 Apr 2024 23:07:09 +0800 Subject: [PATCH 216/423] Fix Tags 3 --- src/main/java/supertracker/parser/Parser.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 4bd0ca9d9b..9ab2ddcf89 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -737,6 +737,7 @@ private static Command parseExpenditureCommand(String input) throws TrackerExcep LocalDate from = parseDate(fromString); return new ExpenditureCommand(type, from, to); } + //@@author //@@author vimalapugazhan private static void validateRevExpFormat(String taskType, boolean hasStart, boolean hasEnd) From 7bb083e1a21f3f34432aff63d08af15628378679 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 7 Apr 2024 23:24:45 +0800 Subject: [PATCH 217/423] Add revenue command entry to UG --- docs/UserGuide.md | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 2c805166eb..96b6c034a3 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -304,6 +304,40 @@ Today's expenditure is $94.5 ```
+### Print revenue `rev` +There are 4 types of revenue: +1. **today** - lists the revenue earned today +2. **total** - lists the revenue earned in total +3. **day** - lists the revenue that earned on the specified day +4. **range** - lists the revenue earned in the specified range of dates + not inclusive of the start and end dates + +The cumulative revenue would be first printed to the terminal. +Afterwords, each sell order will be printed to the terminal and will contain the name, +quantity and price of each purchase. +All orders would be listed according to alphabetical order. + +Format: `rev type/revenueType [from/startDate] [to/endDate]` + +> Note: If the type is **today** or **total**, startDate and endDate are not supposed to be filled. +> If the type is **day**, startDate is compulsory and endDate is not supposed to be filled. +> If the type is **range**, both startDate and endDate are compulsory. + +Example: `rev type/today` + +``` +Today's revenue is $39.8 +1. Name: apple + Quantity: 20 + Price: 0.99 + Transaction Date: 19/04/2024 +2. Name: ball + Quantity: 10 + Price: 2.0 + Transaction Date: 19/04/2024 +``` +
+ ### Quit the program: `quit` Quits the program From 2b505b5629329d5f75eb3d8883a5e728ed6efb0b Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 7 Apr 2024 23:29:15 +0800 Subject: [PATCH 218/423] Add UG links to expeditureCommand and revenue report sections --- docs/UserGuide.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 96b6c034a3..bd08d2de24 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -15,6 +15,8 @@ optimized for use via a Command Line Interface (CLI). - [Find an item: `find`](#find-an-item-find) - [List all items: `list`](#list-all-items-list) - [Print report: `report`](#print-report-report) + - [Print expenditure: `exp`](#print-expenditure-exp) + - [Print revenue: `rev`](#print-revenue-rev) - [Quit the program: `quit`](#quit-the-program-quit) - [Saving inventory data](#saving-inventory-data) - [Loading inventory data](#loading-inventory-data) @@ -270,7 +272,7 @@ There is 1 item close to expiry!
-### Print expenditure `exp` +### Print expenditure: `exp` There are 4 types of expenditures: 1. **today** - lists all expenditures that occurred today 2. **total** - lists all expenditures in total @@ -304,7 +306,7 @@ Today's expenditure is $94.5 ```
-### Print revenue `rev` +### Print revenue: `rev` There are 4 types of revenue: 1. **today** - lists the revenue earned today 2. **total** - lists the revenue earned in total From 6a3bcdf15a3a167b29575ad4c09d4a1710a28711 Mon Sep 17 00:00:00 2001 From: vimalapugazhan Date: Sun, 7 Apr 2024 23:29:51 +0800 Subject: [PATCH 219/423] Edit printing for printRevenueExpenditure to print money to 2dp --- src/main/java/supertracker/ui/Ui.java | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index af5cc7ef9d..740beee0f3 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -223,33 +223,32 @@ private static void lowStockSuccess(List reportItems, int numReportItems) } } - //@@author vimalapugazhan public static void printRevenueExpenditure(String task, double amount, LocalDate startDate, LocalDate endDate, String financeType, ArrayList filteredList) { amount = roundTo2Dp(amount); + String amountString = String.format("%.2f", amount); switch (task) { case TODAY: - printIndent("Today's " + financeType + " is $" + amount); + printIndent("Today's " + financeType + " is $" + amountString); printFilteredList(filteredList); break; case TOTAL: - printIndent("Total " + financeType + " is $" + amount); + printIndent("Total " + financeType + " is $" + amountString); printFilteredList(filteredList); break; case DAY: - printIndent(financeType + " on " + startDate.format(DATE_FORMAT_PRINT) + " was $" + amount); + printIndent(financeType + " on " + startDate.format(DATE_FORMAT_PRINT) + " was $" + amountString); printFilteredList(filteredList); break; case RANGE: printIndent( financeType + " between " + startDate.format(DATE_FORMAT_PRINT) + " and " - + endDate.format(DATE_FORMAT_PRINT) + " was $" + amount); + + endDate.format(DATE_FORMAT_PRINT) + " was $" + amountString); printFilteredList(filteredList); break; default: assert task.isEmpty(); break; } } - //@@author // author dtaywd private static void printFilteredList(ArrayList filteredList) { From dff335a46744ee89e9c9f4740eafb9cebb015eae Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 04:45:07 +0800 Subject: [PATCH 220/423] Update user guide for buy and sell commands --- docs/UserGuide.md | 57 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index bd08d2de24..b89206d9b6 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -263,15 +263,59 @@ Example: `report r/expiry` or `report r/expiry t/` ``` There is 1 item close to expiry! - 1. Name: apple + 1. Name: Apple Expiry Date: 20/04/2024 There is 1 item that is expired! - 1. Name: orange + 1. Name: Orange Expiry Date: 29/03/2024 ```
+### Buy items: `buy` +Buy items from suppliers and add them to the inventory. +This buy transaction will create a new entry in the transaction list. + +Format: `buy n/NAME q/QUANTITY p/PRICE` +- `NAME` is case-insensitive + - e.g. `Cheese` will be interpreted as `cheese` +- If `NAME` does not exist in the inventory, an error would be thrown +- `QUANTITY` must be a non-negative integer and less than or equal to 2147483647 + - e.g. 1, 10, 100 +- If the new quantity of the item exceeds 2147483647, an error would be thrown +- `PRICE` must be a non-negative integer or decimal number and less than or equal to 2147483647 + - e.g. 1, 0.20, 12.3, 12.345 +- If the `PRICE` given has more than 2 decimal places, it will be rounded off to the nearest 2 decimal places + - e.g. 12.345 ≈ 12.35 + +Example: `buy n/Milk q/10 p/3` +``` +10 Milk bought at $3.00 each for $30.00 in total +Quantity: 110 +``` + +
+ +### Sell items: `sell` +Sell items to customers and remove them from the inventory. +This sell transaction will create a new entry in the transaction list. + +Format: `sell n/NAME q/QUANTITY` +- `NAME` is case-insensitive + - e.g. `Cheese` will be interpreted as `cheese` +- If `NAME` does not exist in the inventory, an error would be thrown +- `QUANTITY` must be a non-negative integer and less than or equal to 2147483647 + - e.g. 1, 10, 100 +- If `QUANTITY` exceeds the current quantity of the item, the new quantity would be set to 0 + +Example: `sell n/Milk q/10` +``` +10 Milk sold at $5.00 each for $50.00 in total +Quantity: 90 +``` + +
+ ### Print expenditure: `exp` There are 4 types of expenditures: 1. **today** - lists all expenditures that occurred today @@ -382,6 +426,13 @@ What if I want different batches of the same item with different expiry dates? **A**: Simply add a unique identifier after the item name when creating a new item. e.g. `n/Milk-1`,`n/Milk-2`. The format of the unique identifier is completely up to the user's discretion. +**Q**: Why can't I add new items to the inventory using the buy command? + +**A**: The buy command should mainly be used when you want to replenish the stock of an existing item. +If you wish to add a newly bought item to the inventory, +first create a new item in the inventory with its quantity set to 0 using the [new](#create-a-new-item-new) command, +then use the buy command to increase its quantity. + -------------------------------------------------------------------------------------------------------------------- ## Command Summary @@ -396,4 +447,6 @@ e.g. `n/Milk-1`,`n/Milk-2`. The format of the unique identifier is completely up | **Find** | `find n/NAME` | e.g. `find n/apple` | | **List** | `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` | e.g. `list q/ p/ sp/ r/` | | **Report** | `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` | e.g. `report r/low stock t/10` | +| **Buy** | `buy n/NAME q/QUANTITY p/PRICE` | e.g. `buy n/Milk q/10 p/3` | +| **Sell** | `sell n/NAME q/QUANTITY` | e.g. `sell n/Milk q/10` | | **Quit** | `quit` | e.g. `quit` | From b18682e2cf6e4ecb613f5661ca0df59eee57e691 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 04:46:13 +0800 Subject: [PATCH 221/423] Add proper output for buy and sell commands --- .../java/supertracker/command/AddCommand.java | 13 +++++++---- .../java/supertracker/command/BuyCommand.java | 6 +++-- .../supertracker/command/RemoveCommand.java | 16 +++++++++----- .../supertracker/command/SellCommand.java | 16 +++++++++----- .../java/supertracker/item/Transaction.java | 5 +++++ src/main/java/supertracker/parser/Parser.java | 3 +-- src/main/java/supertracker/ui/Ui.java | 22 +++++++++++++++++++ 7 files changed, 63 insertions(+), 18 deletions(-) diff --git a/src/main/java/supertracker/command/AddCommand.java b/src/main/java/supertracker/command/AddCommand.java index 86043e8cd1..528b3d44f6 100644 --- a/src/main/java/supertracker/command/AddCommand.java +++ b/src/main/java/supertracker/command/AddCommand.java @@ -11,22 +11,21 @@ public class AddCommand implements Command { protected String name; protected int quantity; + protected Item newItem; public AddCommand(String name, int quantity) { this.name = name; this.quantity = quantity; } - @Override - public void execute() { + protected void executeWithoutUi() { assert Inventory.contains(name); assert quantity >= 0; Item oldItem = Inventory.get(name); int newQuantity = oldItem.getQuantity() + quantity; - Item newItem = new Item(oldItem.getName(), newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); + newItem = new Item(oldItem.getName(), newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); Inventory.put(name, newItem); - Ui.addCommandSuccess(newItem, quantity); try { FileManager.saveData(); @@ -35,6 +34,12 @@ public void execute() { } } + @Override + public void execute() { + executeWithoutUi(); + Ui.addCommandSuccess(newItem, quantity); + } + @Override public boolean isQuit() { return false; diff --git a/src/main/java/supertracker/command/BuyCommand.java b/src/main/java/supertracker/command/BuyCommand.java index 7763235dd9..c126a9e53a 100644 --- a/src/main/java/supertracker/command/BuyCommand.java +++ b/src/main/java/supertracker/command/BuyCommand.java @@ -2,6 +2,7 @@ import supertracker.item.Transaction; import supertracker.item.TransactionList; +import supertracker.ui.Ui; import java.time.LocalDate; @@ -18,8 +19,9 @@ public BuyCommand(String name, int quantity, double price, LocalDate currentDate @Override public void execute() { - super.execute(); - Transaction transaction = new Transaction(name, quantity, price, currentDate, BUY_FLAG); + super.executeWithoutUi(); + Transaction transaction = new Transaction(newItem.getName(), quantity, price, currentDate, BUY_FLAG); TransactionList.add(transaction); + Ui.buyCommandSuccess(newItem, transaction); } } diff --git a/src/main/java/supertracker/command/RemoveCommand.java b/src/main/java/supertracker/command/RemoveCommand.java index e3343468bf..54e76e1172 100644 --- a/src/main/java/supertracker/command/RemoveCommand.java +++ b/src/main/java/supertracker/command/RemoveCommand.java @@ -11,24 +11,24 @@ public class RemoveCommand implements Command { protected String name; protected int quantity; + protected int quantityRemoved; + protected Item newItem; public RemoveCommand(String name, int quantity) { this.name = name; this.quantity = quantity; } - @Override - public void execute() { + protected void executeWithoutUi() { assert Inventory.contains(name); assert quantity >= 0; Item oldItem = Inventory.get(name); int newQuantity = oldItem.getQuantity() - quantity; newQuantity = Math.max(newQuantity, 0); - int quantityRemoved = oldItem.getQuantity() - newQuantity; - Item newItem = new Item(oldItem.getName(), newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); + quantityRemoved = oldItem.getQuantity() - newQuantity; + newItem = new Item(oldItem.getName(), newQuantity, oldItem.getPrice(), oldItem.getExpiryDate()); Inventory.put(name, newItem); - Ui.removeCommandSuccess(newItem, quantityRemoved); try { FileManager.saveData(); @@ -37,6 +37,12 @@ public void execute() { } } + @Override + public void execute() { + executeWithoutUi(); + Ui.removeCommandSuccess(newItem, quantityRemoved); + } + @Override public boolean isQuit() { return false; diff --git a/src/main/java/supertracker/command/SellCommand.java b/src/main/java/supertracker/command/SellCommand.java index 570acc3b36..48ea45af65 100644 --- a/src/main/java/supertracker/command/SellCommand.java +++ b/src/main/java/supertracker/command/SellCommand.java @@ -2,24 +2,30 @@ import supertracker.item.Transaction; import supertracker.item.TransactionList; +import supertracker.ui.Ui; import java.time.LocalDate; public class SellCommand extends RemoveCommand { private static final String SELL_FLAG = "s"; - private double price; private LocalDate currentDate; - public SellCommand(String name, int quantity, double price, LocalDate currentDate) { + public SellCommand(String name, int quantity, LocalDate currentDate) { super(name, quantity); - this.price = price; this.currentDate = currentDate; } @Override public void execute() { - super.execute(); - Transaction transaction = new Transaction(name, quantity, price, currentDate, SELL_FLAG); + super.executeWithoutUi(); + Transaction transaction = new Transaction( + newItem.getName(), + quantityRemoved, + newItem.getPrice(), + currentDate, + SELL_FLAG + ); TransactionList.add(transaction); + Ui.sellCommandSuccess(newItem, transaction); } } diff --git a/src/main/java/supertracker/item/Transaction.java b/src/main/java/supertracker/item/Transaction.java index 9e421a3b34..41fe311524 100644 --- a/src/main/java/supertracker/item/Transaction.java +++ b/src/main/java/supertracker/item/Transaction.java @@ -17,4 +17,9 @@ public String getType() { public LocalDate getTransactionDate() { return getExpiryDate(); } + + public String getTotalPriceString() { + double totalPrice = quantity * price; + return "$" + String.format("%.2f", totalPrice); + } } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 9ab2ddcf89..6f456b5d46 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -710,10 +710,9 @@ private static Command parseSellCommand(String input) throws TrackerException { int quantity = parseQuantity(quantityString); validateNonNegativeQuantity(quantityString, quantity); - double price = Inventory.get(name).getPrice(); LocalDate currentDate = LocalDate.now(); - return new SellCommand(name, quantity, price, currentDate); + return new SellCommand(name, quantity, currentDate); } // @@ author dtaywd diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 740beee0f3..42bc0b997e 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -75,6 +75,18 @@ private static String removeItemOpening(Item item, int quantityRemoved) { return quantityRemoved + " " + item.getName() + " removed from inventory!"; } + private static String buyItemOpening(Transaction transaction) { + return transaction.getQuantity() + " " + transaction.getName() + " bought at " + + transaction.getPriceString() + " each for " + + transaction.getTotalPriceString() + " in total"; + } + + private static String sellItemOpening(Transaction transaction) { + return transaction.getQuantity() + " " + transaction.getName() + " sold at " + + transaction.getPriceString() + " each for " + + transaction.getTotalPriceString() + " in total"; + } + private static String reportLowStockOpening(int quantity) { assert quantity >= 0; String isOrAre = quantity == 1 ? "is " : "are "; @@ -159,6 +171,16 @@ public static void removeCommandSuccess(Item item, int quantityRemoved) { printIndent(getQuantityMessage(item)); } + public static void buyCommandSuccess(Item item, Transaction transaction) { + printIndent(buyItemOpening(transaction)); + printIndent(getQuantityMessage(item)); + } + + public static void sellCommandSuccess(Item item, Transaction transaction) { + printIndent(sellItemOpening(transaction)); + printIndent(getQuantityMessage(item)); + } + public static void reportNoItems() { printIndent(REPORT_INVENTORY_NO_ITEMS); } From f88a1b854851d0b16811c7e1910479db27ed79e5 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 04:49:54 +0800 Subject: [PATCH 222/423] Update feature list --- docs/UserGuide.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index b89206d9b6..d97438c161 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -15,6 +15,8 @@ optimized for use via a Command Line Interface (CLI). - [Find an item: `find`](#find-an-item-find) - [List all items: `list`](#list-all-items-list) - [Print report: `report`](#print-report-report) + - [Buy items: `buy`](#buy-items-buy) + - [Sell items: `sell`](#sell-items-sell) - [Print expenditure: `exp`](#print-expenditure-exp) - [Print revenue: `rev`](#print-revenue-rev) - [Quit the program: `quit`](#quit-the-program-quit) From 2894008f6b5ed4ae65c9e0d46a314cd18935e715 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 8 Apr 2024 09:53:49 +0800 Subject: [PATCH 223/423] update user guide --- docs/UserGuide.md | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index d97438c161..360df20ddc 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -439,16 +439,18 @@ then use the buy command to increase its quantity. ## Command Summary -| Action | Format | Examples | -|------------|--------------------------------------------------------------------|----------------------------------------------| -| **New** | `new n/NAME q/QUANTITY p/PRICE e/EXPIRY_DATE` | e.g. `new n/Milk q/100 p/5 e/05-12-2113` | -| **Delete** | `delete n/NAME` | e.g. `delete n/Milk` | -| **Add** | `add n/NAME q/QUANTITY` | e.g. `add n/Milk q/10` | -| **Remove** | `remove n/NAME q/QUANTITY` | e.g. `remove n/Milk q/10` | -| **Update** | `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` | e.g. `update n/Milk q/200 p/10 e/05-08-2113` | -| **Find** | `find n/NAME` | e.g. `find n/apple` | -| **List** | `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` | e.g. `list q/ p/ sp/ r/` | -| **Report** | `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` | e.g. `report r/low stock t/10` | -| **Buy** | `buy n/NAME q/QUANTITY p/PRICE` | e.g. `buy n/Milk q/10 p/3` | -| **Sell** | `sell n/NAME q/QUANTITY` | e.g. `sell n/Milk q/10` | -| **Quit** | `quit` | e.g. `quit` | +| Action | Format | Examples | +|-----------------|--------------------------------------------------------------------|----------------------------------------------| +| **New** | `new n/NAME q/QUANTITY p/PRICE e/EXPIRY_DATE` | e.g. `new n/Milk q/100 p/5 e/05-12-2113` | +| **Delete** | `delete n/NAME` | e.g. `delete n/Milk` | +| **Add** | `add n/NAME q/QUANTITY` | e.g. `add n/Milk q/10` | +| **Remove** | `remove n/NAME q/QUANTITY` | e.g. `remove n/Milk q/10` | +| **Update** | `update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]` | e.g. `update n/Milk q/200 p/10 e/05-08-2113` | +| **Find** | `find n/NAME` | e.g. `find n/apple` | +| **List** | `list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]` | e.g. `list q/ p/ sp/ r/` | +| **Report** | `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` | e.g. `report r/low stock t/10` | +| **Buy** | `buy n/NAME q/QUANTITY p/PRICE` | e.g. `buy n/Milk q/10 p/3` | +| **Sell** | `sell n/NAME q/QUANTITY` | e.g. `sell n/Milk q/10` | +| **Expenditure** | `exp type/expenditureType [from/startDate] [to/endDate]` | e.g. `exp type/today` | +| **Revenue** | `rev type/revenueType [from/startDate] [to/endDate]` | e.g. `rev type/today` | +| **Quit** | `quit` | e.g. `quit` | From 8c35dd39d7b2edc6460c4dd58de1b8137200d4b2 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 8 Apr 2024 10:35:30 +0800 Subject: [PATCH 224/423] add handling for negative revenue and expenditure --- .../supertracker/item/TransactionList.java | 9 ++++-- src/main/java/supertracker/parser/Parser.java | 30 +++++++++++++++++++ .../java/supertracker/ui/ErrorMessage.java | 1 + 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index f2971509c8..5e76e29c4e 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -25,7 +25,8 @@ public static double calculateRange(LocalDate start, LocalDate end, String flag) LocalDate transactionDate = transaction.getTransactionDate(); String transactionType = transaction.getType(); if (transactionType.equals(flag) && transactionDate.isBefore(end) && transactionDate.isAfter(start)) { - totalAmount += transaction.getPrice() * transaction.getQuantity(); + double newAmount = transaction.getPrice() * transaction.getQuantity(); + totalAmount += newAmount; } } return totalAmount; @@ -37,7 +38,8 @@ public static double calculateDay(LocalDate day, String flag) { LocalDate transactionDate = transaction.getTransactionDate(); String transactionType = transaction.getType(); if (transactionType.equals(flag) && transactionDate.isEqual(day)) { - totalAmount += transaction.getPrice() * transaction.getQuantity(); + double newAmount = transaction.getPrice() * transaction.getQuantity(); + totalAmount += newAmount; } } return totalAmount; @@ -48,7 +50,8 @@ public static double calculateTotal(String flag) { for (Transaction transaction : transactionList) { String transactionType = transaction.getType(); if (transactionType.equals(flag)) { - totalAmount += transaction.getPrice() * transaction.getQuantity(); + double newAmount = transaction.getPrice() * transaction.getQuantity(); + totalAmount += newAmount; } } return totalAmount; diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 6f456b5d46..96fa435cba 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -20,6 +20,7 @@ import supertracker.item.Inventory; import supertracker.item.Item; +import supertracker.item.TransactionList; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; @@ -734,6 +735,8 @@ private static Command parseExpenditureCommand(String input) throws TrackerExcep validateRevExpFormat(type, hasStart, hasEnd); LocalDate to = parseDate(toString); LocalDate from = parseDate(fromString); + validateNonNegativeForExpRev(type, from, to, "b"); + return new ExpenditureCommand(type, from, to); } //@@author @@ -787,8 +790,35 @@ private static Command parseRevenueCommand(String input) throws TrackerException validateRevExpFormat(taskType, hasStart, hasEnd); LocalDate startDate = parseDate(startDateString); LocalDate endDate = parseDate(endDateString); + validateNonNegativeForExpRev(taskType, startDate, endDate, "s"); return new RevenueCommand(taskType, startDate, endDate); } //@@author + + private static void validateNonNegativeForExpRev(String taskType, LocalDate startDate, + LocalDate endDate, String flag) throws TrackerException { + double expenditure = 0; + switch (taskType) { + case "today": + LocalDate currDate = LocalDate.now(); + expenditure = TransactionList.calculateDay(currDate, flag); + break; + case "total": + expenditure = TransactionList.calculateTotal(flag); + break; + case "day": + expenditure = TransactionList.calculateDay(startDate, flag); + break; + case "range": + expenditure = TransactionList.calculateRange(startDate, endDate, flag); + break; + default: + assert taskType.isEmpty(); + } + + if (expenditure < 0) { + throw new TrackerException(ErrorMessage.INVALID_REV_DAY_FORMAT); + } + } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index f43bf6e153..dbb1739931 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -52,6 +52,7 @@ public class ErrorMessage { "Oops! Unable to load some of your previous data as the data in the save file has been corrupted!"; public static final String INTEGER_OVERFLOW = "Unable to add your specified number of items. " + "Why do you need more than 2147483647 items anyway?"; + public static final String DOUBLE_OVERFLOW = "Your revenue/expenditure exceeded the double overflow limit! How?"; public static final String INVALID_REV_FORMAT = "Invalid revenue command format. " + "rev task/taskType [from/startDate] [to/endDate]"; public static final String INVALID_REV_TODAY_FORMAT = "Invalid revenue command format. \"rev task/today\""; From 1309f040b953f77a0fbd615d6540f2e904e748b0 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 8 Apr 2024 10:40:55 +0800 Subject: [PATCH 225/423] change error message --- src/main/java/supertracker/parser/Parser.java | 2 +- src/main/java/supertracker/ui/ErrorMessage.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 96fa435cba..b8389b08b2 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -818,7 +818,7 @@ private static void validateNonNegativeForExpRev(String taskType, LocalDate star } if (expenditure < 0) { - throw new TrackerException(ErrorMessage.INVALID_REV_DAY_FORMAT); + throw new TrackerException(ErrorMessage.DOUBLE_OVERFLOW_REV_EXP); } } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index dbb1739931..44bfdcffc9 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -52,7 +52,8 @@ public class ErrorMessage { "Oops! Unable to load some of your previous data as the data in the save file has been corrupted!"; public static final String INTEGER_OVERFLOW = "Unable to add your specified number of items. " + "Why do you need more than 2147483647 items anyway?"; - public static final String DOUBLE_OVERFLOW = "Your revenue/expenditure exceeded the double overflow limit! How?"; + public static final String DOUBLE_OVERFLOW_REV_EXP = "Your revenue/expenditure exceeded the double overflow limit! " + + "How?"; public static final String INVALID_REV_FORMAT = "Invalid revenue command format. " + "rev task/taskType [from/startDate] [to/endDate]"; public static final String INVALID_REV_TODAY_FORMAT = "Invalid revenue command format. \"rev task/today\""; From 467a3979c60bc4dad54e399dd6c483d99e3bc366 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 8 Apr 2024 10:45:04 +0800 Subject: [PATCH 226/423] addhere to checkstyle --- src/main/java/supertracker/ui/ErrorMessage.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 44bfdcffc9..eb6385b914 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -52,8 +52,8 @@ public class ErrorMessage { "Oops! Unable to load some of your previous data as the data in the save file has been corrupted!"; public static final String INTEGER_OVERFLOW = "Unable to add your specified number of items. " + "Why do you need more than 2147483647 items anyway?"; - public static final String DOUBLE_OVERFLOW_REV_EXP = "Your revenue/expenditure exceeded the double overflow limit! " + - "How?"; + public static final String DOUBLE_OVERFLOW_REV_EXP = "Your revenue/expenditure exceeded the double overflow " + + "limit! How?"; public static final String INVALID_REV_FORMAT = "Invalid revenue command format. " + "rev task/taskType [from/startDate] [to/endDate]"; public static final String INVALID_REV_TODAY_FORMAT = "Invalid revenue command format. \"rev task/today\""; From 3734ea259484fd7fb0b687ccf9ea5dac640375d1 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 18:59:03 +0800 Subject: [PATCH 227/423] Change format of rev and exp to caps --- docs/UserGuide.md | 4 ++-- src/main/java/supertracker/item/Transaction.java | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index d97438c161..8bbad1c4ac 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -331,7 +331,7 @@ Afterwords, the expenditures will be printed to the terminal and will contain th quantity and price of each purchase. All expenditures would be listed according to alphabetical order. -Format: `exp type/expenditureType [from/startDate] [to/endDate]` +Format: `exp type/EXPENDITURE_TYPE [from/START_DATE] [to/END_DATE]` > Note: If the type is **today** or **total**, startDate and endDate are not supposed to be filled. > If the type is **day**, startDate is compulsory and endDate is not supposed to be filled. @@ -365,7 +365,7 @@ Afterwords, each sell order will be printed to the terminal and will contain the quantity and price of each purchase. All orders would be listed according to alphabetical order. -Format: `rev type/revenueType [from/startDate] [to/endDate]` +Format: `rev type/REVENUE_TYPE [from/START_DATE] [to/END_DATE]` > Note: If the type is **today** or **total**, startDate and endDate are not supposed to be filled. > If the type is **day**, startDate is compulsory and endDate is not supposed to be filled. diff --git a/src/main/java/supertracker/item/Transaction.java b/src/main/java/supertracker/item/Transaction.java index 41fe311524..d16cccdcf1 100644 --- a/src/main/java/supertracker/item/Transaction.java +++ b/src/main/java/supertracker/item/Transaction.java @@ -1,5 +1,6 @@ package supertracker.item; +import java.math.BigDecimal; import java.time.LocalDate; public class Transaction extends Item { @@ -19,7 +20,9 @@ public LocalDate getTransactionDate() { } public String getTotalPriceString() { - double totalPrice = quantity * price; + BigDecimal bigQuantity = new BigDecimal(quantity); + BigDecimal bigPrice = new BigDecimal(price); + BigDecimal totalPrice = bigQuantity.multiply(bigPrice); return "$" + String.format("%.2f", totalPrice); } } From f607cf92df9b2e2fd68a502652177f7549780e49 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 19:01:45 +0800 Subject: [PATCH 228/423] Reformat table --- docs/UserGuide.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 79b966b3f7..bbd6b452a6 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -451,6 +451,6 @@ then use the buy command to increase its quantity. | **Report** | `report r/REPORT_TYPE [t/THRESHOLD_VALUE]` | e.g. `report r/low stock t/10` | | **Buy** | `buy n/NAME q/QUANTITY p/PRICE` | e.g. `buy n/Milk q/10 p/3` | | **Sell** | `sell n/NAME q/QUANTITY` | e.g. `sell n/Milk q/10` | -| **Expenditure** | `exp type/expenditureType [from/startDate] [to/endDate]` | e.g. `exp type/today` | -| **Revenue** | `rev type/revenueType [from/startDate] [to/endDate]` | e.g. `rev type/today` | +| **Expenditure** | `exp type/EXPENDITURE_TYPE [from/START_DATE] [to/END_DATE]` | e.g. `exp type/today` | +| **Revenue** | `rev type/REVENUE_TYPE [from/START_DATE] [to/END_DATE]` | e.g. `rev type/today` | | **Quit** | `quit` | e.g. `quit` | From 23372642221e3caeabf7a64cb26eedafb1b8fc3f Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 19:18:39 +0800 Subject: [PATCH 229/423] Fix error messages --- src/main/java/supertracker/parser/Parser.java | 64 +++++++++---------- .../java/supertracker/ui/ErrorMessage.java | 13 ++-- 2 files changed, 37 insertions(+), 40 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index b8389b08b2..1fac0fc7e8 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -116,15 +116,13 @@ public class Parser { + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) "; private static final String SELL_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; + private static final String EXP_COMMAND_REGEX = TYPE_FLAG + BASE_FLAG + "(?<" + TYPE_GROUP + ">.*) " + + "(?<" + FROM_GROUP + ">(?:" + FROM_FLAG + BASE_FLAG + ".*)?) " + + "(?<" + TO_GROUP + ">(?:" + TO_FLAG + BASE_FLAG + ".*)?) "; private static final String REV_COMMAND_REGEX = TYPE_FLAG + BASE_FLAG + "(?<" + TYPE_GROUP + ">.*) " + "(?<" + TO_GROUP + ">(?:" + TO_FLAG + BASE_FLAG + ".*)?) " + "(?<" + FROM_GROUP + ">(?:" + FROM_FLAG + BASE_FLAG + ".*)?) "; - - private static final String EXPENDITURE_COMMAND_REGEX = TYPE_FLAG + BASE_FLAG + "(?<" + TYPE_GROUP + ">.*) " + - "(?<" + FROM_GROUP + ">(?:" + FROM_FLAG + BASE_FLAG + ".*)?) " + - "(?<" + TO_GROUP + ">(?:" + TO_FLAG + BASE_FLAG + ".*)?) "; - /** * Returns the command word specified in the user input string * @@ -716,13 +714,13 @@ private static Command parseSellCommand(String input) throws TrackerException { return new SellCommand(name, quantity, currentDate); } - // @@ author dtaywd + //@@author dtaywd private static Command parseExpenditureCommand(String input) throws TrackerException { String[] flags = {TYPE_FLAG, FROM_FLAG, TO_FLAG}; - Matcher matcher = getPatternMatcher(EXPENDITURE_COMMAND_REGEX, input, flags); + Matcher matcher = getPatternMatcher(EXP_COMMAND_REGEX, input, flags); if (!matcher.matches()) { - throw new TrackerException(ErrorMessage.INVALID_EXPENDITURE_FORMAT); + throw new TrackerException(ErrorMessage.INVALID_EXP_FORMAT); } boolean hasStart = !matcher.group(FROM_GROUP).isEmpty(); @@ -741,6 +739,31 @@ private static Command parseExpenditureCommand(String input) throws TrackerExcep } //@@author + //@@author vimalapugazhan + private static Command parseRevenueCommand(String input) throws TrackerException { + String[] flags = {TYPE_FLAG, TO_FLAG, FROM_FLAG}; + Matcher matcher = getPatternMatcher(REV_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_REV_FORMAT); + } + + boolean hasStart = !matcher.group(FROM_GROUP).isEmpty(); + boolean hasEnd = !matcher.group(TO_GROUP).isEmpty(); + + String taskType = matcher.group(TYPE_GROUP).trim(); + String startDateString = matcher.group(FROM_GROUP).replace(FROM_GROUP + BASE_FLAG, "").trim(); + String endDateString = matcher.group(TO_GROUP).replace(TO_GROUP + BASE_FLAG, "").trim(); + + validateRevExpFormat(taskType, hasStart, hasEnd); + LocalDate startDate = parseDate(startDateString); + LocalDate endDate = parseDate(endDateString); + validateNonNegativeForExpRev(taskType, startDate, endDate, "s"); + + return new RevenueCommand(taskType, startDate, endDate); + } + //@@author + //@@author vimalapugazhan private static void validateRevExpFormat(String taskType, boolean hasStart, boolean hasEnd) throws TrackerException { @@ -771,31 +794,6 @@ private static void validateRevExpFormat(String taskType, boolean hasStart, bool } //@@author - //@@author vimalapugazhan - private static Command parseRevenueCommand(String input) throws TrackerException { - String[] flags = {TYPE_FLAG, TO_FLAG, FROM_FLAG}; - Matcher matcher = getPatternMatcher(REV_COMMAND_REGEX, input, flags); - - if (!matcher.matches()) { - throw new TrackerException(ErrorMessage.INVALID_REV_FORMAT); - } - - boolean hasStart = !matcher.group(FROM_GROUP).isEmpty(); - boolean hasEnd = !matcher.group(TO_GROUP).isEmpty(); - - String taskType = matcher.group(TYPE_GROUP).trim(); - String startDateString = matcher.group(FROM_GROUP).replace(FROM_GROUP + BASE_FLAG, "").trim(); - String endDateString = matcher.group(TO_GROUP).replace(TO_GROUP + BASE_FLAG, "").trim(); - - validateRevExpFormat(taskType, hasStart, hasEnd); - LocalDate startDate = parseDate(startDateString); - LocalDate endDate = parseDate(endDateString); - validateNonNegativeForExpRev(taskType, startDate, endDate, "s"); - - return new RevenueCommand(taskType, startDate, endDate); - } - //@@author - private static void validateNonNegativeForExpRev(String taskType, LocalDate startDate, LocalDate endDate, String flag) throws TrackerException { double expenditure = 0; diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index eb6385b914..6c2352737e 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -1,7 +1,6 @@ package supertracker.ui; public class ErrorMessage { - public static final String INVALID_UPDATE_FORMAT = "Invalid update command format!"; public static final String EMPTY_PARAM_INPUT = "Parameters cannot be left empty!"; public static final String INVALID_DELETE_FORMAT = "Invalid delete command format!"; @@ -11,10 +10,12 @@ public class ErrorMessage { public static final String INVALID_REMOVE_FORMAT = "Invalid remove command format!"; public static final String INVALID_BUY_FORMAT = "Invalid buy command format!"; public static final String INVALID_SELL_FORMAT = "Invalid sell command format!"; - public static final String INVALID_REPORT_FORMAT = "Invalid report command format! Follow 'report r/{report type}" + - " t/{threshold}"; - public static final String INVALID_EXPENDITURE_FORMAT = "Invalid expenditure command format! Follow " + - "'expenditure t/{task type} to/{startDate} from/{endDate}"; + public static final String INVALID_REPORT_FORMAT = "Invalid report command format! " + + "Follow 'report r/REPORT_TYPE [t/THRESHOLD_VALUE]'"; + public static final String INVALID_EXP_FORMAT = "Invalid expenditure command format! " + + "Follow 'exp type/EXPENDITURE_TYPE [from/START_DATE] [to/END_DATE]'"; + public static final String INVALID_REV_FORMAT = "Invalid revenue command format! " + + "Follow 'rev type/REVENUE_TYPE [from/START_DATE] [to/END_DATE]'"; public static final String INVALID_REPORT_TYPE = "Please select a valid report type. Only 'low stock' and " + "'expiry' are available."; public static final String INVALID_EXPIRY_REPORT_FORMAT = "If report type is 'expiry' threshold should not be " + @@ -54,8 +55,6 @@ public class ErrorMessage { "Why do you need more than 2147483647 items anyway?"; public static final String DOUBLE_OVERFLOW_REV_EXP = "Your revenue/expenditure exceeded the double overflow " + "limit! How?"; - public static final String INVALID_REV_FORMAT = "Invalid revenue command format. " + - "rev task/taskType [from/startDate] [to/endDate]"; public static final String INVALID_REV_TODAY_FORMAT = "Invalid revenue command format. \"rev task/today\""; public static final String INVALID_REV_TOTAL_FORMAT = "Invalid revenue command format. \"rev task/total\""; From 521263d63a8171f5142af2fb86e29e4e8305f7ee Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 19:42:47 +0800 Subject: [PATCH 230/423] Fix alignment for revenue command --- docs/UserGuide.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index bbd6b452a6..ee5993c31f 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -376,13 +376,13 @@ Example: `rev type/today` ``` Today's revenue is $39.8 1. Name: apple - Quantity: 20 - Price: 0.99 - Transaction Date: 19/04/2024 + Quantity: 20 + Price: 0.99 + Transaction Date: 19/04/2024 2. Name: ball - Quantity: 10 - Price: 2.0 - Transaction Date: 19/04/2024 + Quantity: 10 + Price: 2.0 + Transaction Date: 19/04/2024 ```
From e9ffe533260d158f10bfd025dd4b7a30ecd7ee9c Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 20:14:10 +0800 Subject: [PATCH 231/423] Fix overflow for total exp and rev --- .../command/ExpenditureCommand.java | 7 +++-- .../supertracker/command/RevenueCommand.java | 3 +- .../java/supertracker/item/Transaction.java | 8 +++-- .../supertracker/item/TransactionList.java | 25 ++++++++-------- src/main/java/supertracker/parser/Parser.java | 29 ------------------- .../java/supertracker/ui/ErrorMessage.java | 3 -- src/main/java/supertracker/ui/Ui.java | 11 ++----- 7 files changed, 28 insertions(+), 58 deletions(-) diff --git a/src/main/java/supertracker/command/ExpenditureCommand.java b/src/main/java/supertracker/command/ExpenditureCommand.java index 4c41dc95b7..bb6af83e1b 100644 --- a/src/main/java/supertracker/command/ExpenditureCommand.java +++ b/src/main/java/supertracker/command/ExpenditureCommand.java @@ -5,6 +5,7 @@ import supertracker.item.TransactionList; import supertracker.ui.Ui; +import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; @@ -16,7 +17,7 @@ public class ExpenditureCommand implements Command { private LocalDate endDate; private String task; - private double expenditure; + private BigDecimal expenditure; public ExpenditureCommand(String task, LocalDate startDate, LocalDate endDate) { this.task = task; @@ -26,7 +27,6 @@ public ExpenditureCommand(String task, LocalDate startDate, LocalDate endDate) { @Override public void execute() { - ArrayList filteredList = new ArrayList<>(); switch (task) { case "today": LocalDate currDate = LocalDate.now(); @@ -49,8 +49,9 @@ public void execute() { assert task.isEmpty(); break; } - filteredList = TransactionList.getFilteredTransactionList(task, startDate, endDate, BUY_FLAG); + ArrayList filteredList = TransactionList.getFilteredTransactionList(task, startDate, endDate, BUY_FLAG); filteredList.sort(Item.sortByName()); + Ui.printRevenueExpenditure(task, expenditure, startDate, endDate, "expenditure", filteredList); } diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java index e52b520b96..2973495ea3 100644 --- a/src/main/java/supertracker/command/RevenueCommand.java +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -1,6 +1,7 @@ //@@author vimalapugazhan package supertracker.command; +import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; @@ -14,7 +15,7 @@ public class RevenueCommand implements Command { private String task; private LocalDate startDate; private LocalDate endDate; - private double revenue; + private BigDecimal revenue; public RevenueCommand (String task, LocalDate startDate, LocalDate endDate) { this.task = task; diff --git a/src/main/java/supertracker/item/Transaction.java b/src/main/java/supertracker/item/Transaction.java index d16cccdcf1..2d922df6c0 100644 --- a/src/main/java/supertracker/item/Transaction.java +++ b/src/main/java/supertracker/item/Transaction.java @@ -19,10 +19,14 @@ public LocalDate getTransactionDate() { return getExpiryDate(); } - public String getTotalPriceString() { + public BigDecimal getTotalPrice() { BigDecimal bigQuantity = new BigDecimal(quantity); BigDecimal bigPrice = new BigDecimal(price); - BigDecimal totalPrice = bigQuantity.multiply(bigPrice); + return bigQuantity.multiply(bigPrice); + } + + public String getTotalPriceString() { + BigDecimal totalPrice = getTotalPrice(); return "$" + String.format("%.2f", totalPrice); } } diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index 5e76e29c4e..5cbf3d195a 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -1,5 +1,6 @@ package supertracker.item; +import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; @@ -19,39 +20,39 @@ public static void add(Transaction transaction) { } //@@author vimalapugazhan - public static double calculateRange(LocalDate start, LocalDate end, String flag) { - double totalAmount = 0; + public static BigDecimal calculateRange(LocalDate start, LocalDate end, String flag) { + BigDecimal totalAmount = BigDecimal.ZERO; for (Transaction transaction : transactionList) { LocalDate transactionDate = transaction.getTransactionDate(); String transactionType = transaction.getType(); if (transactionType.equals(flag) && transactionDate.isBefore(end) && transactionDate.isAfter(start)) { - double newAmount = transaction.getPrice() * transaction.getQuantity(); - totalAmount += newAmount; + BigDecimal newAmount = transaction.getTotalPrice(); + totalAmount = totalAmount.add(newAmount); } } return totalAmount; } - public static double calculateDay(LocalDate day, String flag) { - double totalAmount = 0; + public static BigDecimal calculateDay(LocalDate day, String flag) { + BigDecimal totalAmount = BigDecimal.ZERO; for (Transaction transaction : transactionList) { LocalDate transactionDate = transaction.getTransactionDate(); String transactionType = transaction.getType(); if (transactionType.equals(flag) && transactionDate.isEqual(day)) { - double newAmount = transaction.getPrice() * transaction.getQuantity(); - totalAmount += newAmount; + BigDecimal newAmount = transaction.getTotalPrice(); + totalAmount = totalAmount.add(newAmount); } } return totalAmount; } - public static double calculateTotal(String flag) { - double totalAmount = 0; + public static BigDecimal calculateTotal(String flag) { + BigDecimal totalAmount = BigDecimal.ZERO; for (Transaction transaction : transactionList) { String transactionType = transaction.getType(); if (transactionType.equals(flag)) { - double newAmount = transaction.getPrice() * transaction.getQuantity(); - totalAmount += newAmount; + BigDecimal newAmount = transaction.getTotalPrice(); + totalAmount = totalAmount.add(newAmount); } } return totalAmount; diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 1fac0fc7e8..633d242e62 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -20,7 +20,6 @@ import supertracker.item.Inventory; import supertracker.item.Item; -import supertracker.item.TransactionList; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; @@ -733,7 +732,6 @@ private static Command parseExpenditureCommand(String input) throws TrackerExcep validateRevExpFormat(type, hasStart, hasEnd); LocalDate to = parseDate(toString); LocalDate from = parseDate(fromString); - validateNonNegativeForExpRev(type, from, to, "b"); return new ExpenditureCommand(type, from, to); } @@ -758,7 +756,6 @@ private static Command parseRevenueCommand(String input) throws TrackerException validateRevExpFormat(taskType, hasStart, hasEnd); LocalDate startDate = parseDate(startDateString); LocalDate endDate = parseDate(endDateString); - validateNonNegativeForExpRev(taskType, startDate, endDate, "s"); return new RevenueCommand(taskType, startDate, endDate); } @@ -793,30 +790,4 @@ private static void validateRevExpFormat(String taskType, boolean hasStart, bool } } //@@author - - private static void validateNonNegativeForExpRev(String taskType, LocalDate startDate, - LocalDate endDate, String flag) throws TrackerException { - double expenditure = 0; - switch (taskType) { - case "today": - LocalDate currDate = LocalDate.now(); - expenditure = TransactionList.calculateDay(currDate, flag); - break; - case "total": - expenditure = TransactionList.calculateTotal(flag); - break; - case "day": - expenditure = TransactionList.calculateDay(startDate, flag); - break; - case "range": - expenditure = TransactionList.calculateRange(startDate, endDate, flag); - break; - default: - assert taskType.isEmpty(); - } - - if (expenditure < 0) { - throw new TrackerException(ErrorMessage.DOUBLE_OVERFLOW_REV_EXP); - } - } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 6c2352737e..61b6108c2b 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -53,10 +53,7 @@ public class ErrorMessage { "Oops! Unable to load some of your previous data as the data in the save file has been corrupted!"; public static final String INTEGER_OVERFLOW = "Unable to add your specified number of items. " + "Why do you need more than 2147483647 items anyway?"; - public static final String DOUBLE_OVERFLOW_REV_EXP = "Your revenue/expenditure exceeded the double overflow " + - "limit! How?"; public static final String INVALID_REV_TODAY_FORMAT = "Invalid revenue command format. \"rev task/today\""; - public static final String INVALID_REV_TOTAL_FORMAT = "Invalid revenue command format. \"rev task/total\""; public static final String INVALID_REV_DAY_FORMAT = "Invalid revenue command format. \"rev task/day from/DATE\""; public static final String INVALID_REV_RANGE_FORMAT = "Invalid revenue command format. " diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 42bc0b997e..de620c3a0f 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -3,6 +3,7 @@ import supertracker.item.Item; import supertracker.item.Transaction; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -34,7 +35,6 @@ public class Ui { private static final String TOTAL = "total"; private static final String DAY = "day"; private static final String RANGE = "range"; - private static final double ROUNDING_FACTOR = 100.0; private static String getListSize(int size){ return ("There are " + size + " unique items in your inventory:"); @@ -245,9 +245,8 @@ private static void lowStockSuccess(List reportItems, int numReportItems) } } - public static void printRevenueExpenditure(String task, double amount, LocalDate startDate, LocalDate endDate, + public static void printRevenueExpenditure(String task, BigDecimal amount, LocalDate startDate, LocalDate endDate, String financeType, ArrayList filteredList) { - amount = roundTo2Dp(amount); String amountString = String.format("%.2f", amount); switch (task) { case TODAY: @@ -279,7 +278,7 @@ private static void printFilteredList(ArrayList filteredList) { String formattedTransactionDate = transaction.getTransactionDate().format(DATE_FORMAT_PRINT); printIndent(count + ". Name: " + transaction.getName()); printIndent(" Quantity: " + transaction.getQuantity()); - printIndent(" Price: " + transaction.getPrice()); + printIndent(" Price: " + transaction.getPriceString()); printIndent(" Transaction Date: " + formattedTransactionDate); count += 1; } @@ -395,8 +394,4 @@ private static String padStringWithQuotes(String name, boolean hasComma) { String end = hasComma ? "\"," : "\""; return "\"" + name + end; } - - private static double roundTo2Dp(double unroundedValue) { - return Math.round(unroundedValue * ROUNDING_FACTOR) / ROUNDING_FACTOR; - } } From 4fc411b12a26b8a7f3b8f3936dd1cebe9ab9e4a2 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 8 Apr 2024 20:37:42 +0800 Subject: [PATCH 232/423] change error message --- .../supertracker/command/ExpenditureCommand.java | 2 +- .../java/supertracker/command/RevenueCommand.java | 2 +- src/main/java/supertracker/parser/Parser.java | 8 ++++---- src/main/java/supertracker/ui/ErrorMessage.java | 13 ++++++++----- 4 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/main/java/supertracker/command/ExpenditureCommand.java b/src/main/java/supertracker/command/ExpenditureCommand.java index 4c41dc95b7..558f9fb8f7 100644 --- a/src/main/java/supertracker/command/ExpenditureCommand.java +++ b/src/main/java/supertracker/command/ExpenditureCommand.java @@ -50,7 +50,7 @@ public void execute() { break; } filteredList = TransactionList.getFilteredTransactionList(task, startDate, endDate, BUY_FLAG); - filteredList.sort(Item.sortByName()); + filteredList.sort(Item.sortByExpiry()); Ui.printRevenueExpenditure(task, expenditure, startDate, endDate, "expenditure", filteredList); } diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java index e52b520b96..6c16322460 100644 --- a/src/main/java/supertracker/command/RevenueCommand.java +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -42,7 +42,7 @@ public void execute() { break; } filteredList = TransactionList.getFilteredTransactionList(task, startDate, endDate, SELL_FLAG); - filteredList.sort(Item.sortByName()); + filteredList.sort(Item.sortByExpiry()); Ui.printRevenueExpenditure(task, revenue, startDate, endDate, "revenue", filteredList); } diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index b8389b08b2..290ad3cf43 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -747,22 +747,22 @@ private static void validateRevExpFormat(String taskType, boolean hasStart, bool switch (taskType) { case TODAY: if (hasStart || hasEnd) { - throw new TrackerException(ErrorMessage.INVALID_REV_TODAY_FORMAT); + throw new TrackerException(ErrorMessage.INVALID_REV_EXP_TODAY_FORMAT); } break; case TOTAL: if (hasStart || hasEnd) { - throw new TrackerException(ErrorMessage.INVALID_REV_TOTAL_FORMAT); + throw new TrackerException(ErrorMessage.INVALID_REV_EXP_TOTAL_FORMAT); } break; case DAY: if (!hasStart || hasEnd) { - throw new TrackerException(ErrorMessage.INVALID_REV_DAY_FORMAT); + throw new TrackerException(ErrorMessage.INVALID_REV_EXP_DAY_FORMAT); } break; case RANGE: if (!hasStart || !hasEnd) { - throw new TrackerException(ErrorMessage.INVALID_REV_RANGE_FORMAT); + throw new TrackerException(ErrorMessage.INVALID_REV_EXP_RANGE_FORMAT); } break; default: assert taskType.isEmpty(); diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index eb6385b914..47a79441e3 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -56,10 +56,13 @@ public class ErrorMessage { "limit! How?"; public static final String INVALID_REV_FORMAT = "Invalid revenue command format. " + "rev task/taskType [from/startDate] [to/endDate]"; - public static final String INVALID_REV_TODAY_FORMAT = "Invalid revenue command format. \"rev task/today\""; + public static final String INVALID_REV_EXP_TODAY_FORMAT = "Invalid revenue/expenditure command format. " + + "\"rev task/today\" or \"exp task/today\""; - public static final String INVALID_REV_TOTAL_FORMAT = "Invalid revenue command format. \"rev task/total\""; - public static final String INVALID_REV_DAY_FORMAT = "Invalid revenue command format. \"rev task/day from/DATE\""; - public static final String INVALID_REV_RANGE_FORMAT = "Invalid revenue command format. " - + "\"rev task/range from/START_DATE to/END_DATE\""; + public static final String INVALID_REV_EXP_TOTAL_FORMAT = "Invalid revenue/expenditure command format. " + + "\"rev task/total\" or \"exp task/total\""; + public static final String INVALID_REV_EXP_DAY_FORMAT = "Invalid revenue/expenditure command format. " + + "\"rev task/day from/DATE\" or \"exp task/day from/DATE\""; + public static final String INVALID_REV_EXP_RANGE_FORMAT = "Invalid revenue/expenditure command format. " + + "\"rev task/range from/START_DATE to/END_DATE\" or \"exp task/range from/START_DATE to/END_DATE\""; } From e93d6e55e802c344d7a0bfdcbd1d2aa411a5bcb7 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 20:46:25 +0800 Subject: [PATCH 233/423] Update exp and rev commands --- docs/UserGuide.md | 62 ++++++++++--------- .../command/ExpenditureCommand.java | 10 +-- .../supertracker/command/ListCommand.java | 2 +- .../supertracker/command/ReportCommand.java | 5 +- .../supertracker/command/RevenueCommand.java | 4 +- src/main/java/supertracker/item/Item.java | 2 +- 6 files changed, 44 insertions(+), 41 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index ee5993c31f..f16867b1ee 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -319,17 +319,17 @@ Quantity: 90
### Print expenditure: `exp` -There are 4 types of expenditures: -1. **today** - lists all expenditures that occurred today -2. **total** - lists all expenditures in total -3. **day** - lists all expenditures that occurred during the specified day -4. **range** - lists all expenditures that occurred in the specified range of dates +There are 4 types of expenditure commands: +1. **today** - list all buy transactions that occurred today +2. **total** - list all buy transactions in total +3. **day** - list all buy transactions that occurred during the specified day +4. **range** - list all buy transactions that occurred in the specified range of dates not inclusive of the start and end dates -The cumulative expenditures would be first printed to the terminal. -Afterwords, the expenditures will be printed to the terminal and will contain the name, -quantity and price of each purchase. -All expenditures would be listed according to alphabetical order. +The cumulative expenditure will be first printed to the terminal. +Afterward, each buy transaction will be printed to the terminal containing its name, +quantity, price and transaction date. +All buy transactions will be listed from most recent to least recent. Format: `exp type/EXPENDITURE_TYPE [from/START_DATE] [to/END_DATE]` @@ -340,30 +340,31 @@ Format: `exp type/EXPENDITURE_TYPE [from/START_DATE] [to/END_DATE]` Example: `exp type/today` ``` -Today's expenditure is $94.5 -1. Name: apple +Today's expenditure is $94.50 +1. Name: Apple Quantity: 30 - Price: 2.15 + Price: $2.15 Transaction Date: 19/04/2024 -2. Name: banana +2. Name: Banana Quantity: 10 - Price: 3.0 + Price: $3.00 Transaction Date: 19/04/2024 ``` +
### Print revenue: `rev` -There are 4 types of revenue: -1. **today** - lists the revenue earned today -2. **total** - lists the revenue earned in total -3. **day** - lists the revenue that earned on the specified day -4. **range** - lists the revenue earned in the specified range of dates - not inclusive of the start and end dates - -The cumulative revenue would be first printed to the terminal. -Afterwords, each sell order will be printed to the terminal and will contain the name, -quantity and price of each purchase. -All orders would be listed according to alphabetical order. +There are 4 types of revenue commands: +1. **today** - list all sell transactions that occurred today +2. **total** - list all sell transactions in total +3. **day** - list all sell transactions that occurred during the specified day +4. **range** - list all sell transactions that occurred in the specified range of dates +not inclusive of the start and end dates + +The cumulative revenue will be first printed to the terminal. +Afterward, each sell transaction will be printed to the terminal containing its name, +quantity, price and transaction date. +All sell transactions will be listed from most recent to least recent. Format: `rev type/REVENUE_TYPE [from/START_DATE] [to/END_DATE]` @@ -374,16 +375,17 @@ Format: `rev type/REVENUE_TYPE [from/START_DATE] [to/END_DATE]` Example: `rev type/today` ``` -Today's revenue is $39.8 -1. Name: apple +Today's revenue is $39.80 +1. Name: Apple Quantity: 20 - Price: 0.99 + Price: $0.99 Transaction Date: 19/04/2024 -2. Name: ball +2. Name: Banana Quantity: 10 - Price: 2.0 + Price: $2.00 Transaction Date: 19/04/2024 ``` +
### Quit the program: `quit` diff --git a/src/main/java/supertracker/command/ExpenditureCommand.java b/src/main/java/supertracker/command/ExpenditureCommand.java index bb6af83e1b..b9e289f655 100644 --- a/src/main/java/supertracker/command/ExpenditureCommand.java +++ b/src/main/java/supertracker/command/ExpenditureCommand.java @@ -8,7 +8,7 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; - +import java.util.Collections; // @@ author dtaywd public class ExpenditureCommand implements Command { @@ -16,7 +16,6 @@ public class ExpenditureCommand implements Command { private LocalDate startDate; private LocalDate endDate; private String task; - private BigDecimal expenditure; public ExpenditureCommand(String task, LocalDate startDate, LocalDate endDate) { @@ -49,9 +48,10 @@ public void execute() { assert task.isEmpty(); break; } - ArrayList filteredList = TransactionList.getFilteredTransactionList(task, startDate, endDate, BUY_FLAG); - filteredList.sort(Item.sortByName()); - + ArrayList filteredList = TransactionList.getFilteredTransactionList( + task, startDate, endDate, BUY_FLAG); + filteredList.sort(Item.sortByDate()); + Collections.reverse(filteredList); Ui.printRevenueExpenditure(task, expenditure, startDate, endDate, "expenditure", filteredList); } diff --git a/src/main/java/supertracker/command/ListCommand.java b/src/main/java/supertracker/command/ListCommand.java index 02c977799d..d61d2ff81f 100644 --- a/src/main/java/supertracker/command/ListCommand.java +++ b/src/main/java/supertracker/command/ListCommand.java @@ -78,7 +78,7 @@ private void sortBy(String sortParam, List items) { comparator = Item.sortByPrice(); break; case EX_DATE_FLAG: - comparator = Item.sortByExpiry(); + comparator = Item.sortByDate(); break; default: comparator = Item.sortByName(); diff --git a/src/main/java/supertracker/command/ReportCommand.java b/src/main/java/supertracker/command/ReportCommand.java index ebad7e3489..efb9aba01e 100644 --- a/src/main/java/supertracker/command/ReportCommand.java +++ b/src/main/java/supertracker/command/ReportCommand.java @@ -11,6 +11,7 @@ public class ReportCommand implements Command{ private String reportType; private int threshold; + public ReportCommand(String reportType, int threshold) { this.reportType = reportType; this.threshold = threshold; @@ -50,8 +51,8 @@ private void createExpiryReport(List items, LocalDate expiryThresholdDate, reportExpiredItems.add(item); } } - reportExpiryItems.sort(Item.sortByExpiry()); - reportExpiredItems.sort(Item.sortByExpiry()); + reportExpiryItems.sort(Item.sortByDate()); + reportExpiredItems.sort(Item.sortByDate()); Ui.reportCommandSuccess(reportExpiryItems, reportType); Ui.reportCommandSuccess(reportExpiredItems, "expired"); } diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java index 2973495ea3..b8d8e0f2f9 100644 --- a/src/main/java/supertracker/command/RevenueCommand.java +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -25,7 +25,6 @@ public RevenueCommand (String task, LocalDate startDate, LocalDate endDate) { @Override public void execute() { - ArrayList filteredList = new ArrayList<>(); switch (task) { case "today": revenue = TransactionList.calculateDay(LocalDate.now(), SELL_FLAG); @@ -42,7 +41,8 @@ public void execute() { default: assert task.isEmpty(); break; } - filteredList = TransactionList.getFilteredTransactionList(task, startDate, endDate, SELL_FLAG); + ArrayList filteredList = TransactionList.getFilteredTransactionList( + task, startDate, endDate, SELL_FLAG); filteredList.sort(Item.sortByName()); Ui.printRevenueExpenditure(task, revenue, startDate, endDate, "revenue", filteredList); } diff --git a/src/main/java/supertracker/item/Item.java b/src/main/java/supertracker/item/Item.java index 1e57b57481..281eb3e3e0 100644 --- a/src/main/java/supertracker/item/Item.java +++ b/src/main/java/supertracker/item/Item.java @@ -55,7 +55,7 @@ public static Comparator sortByPrice() { return Comparator.comparingDouble(Item::getPrice); } - public static Comparator sortByExpiry() { + public static Comparator sortByDate() { return Comparator.comparing(Item::getExpiryDate); } } From bfc3db0a39533c219c746daac415f056be8e8cd8 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 8 Apr 2024 21:02:04 +0800 Subject: [PATCH 234/423] author tag --- src/main/java/supertracker/command/UpdateCommand.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index 58e4364fe2..a41261b429 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -55,6 +55,7 @@ public void execute() { Ui.printError(ErrorMessage.FILE_SAVE_ERROR); } } + //@@author @Override public boolean isQuit() { From beb459e176ea94d0854ee33571ad48b32a3fd9f8 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 8 Apr 2024 21:04:46 +0800 Subject: [PATCH 235/423] solve merge conflict --- src/main/java/supertracker/command/RevenueCommand.java | 5 ----- src/main/java/supertracker/ui/ErrorMessage.java | 2 -- 2 files changed, 7 deletions(-) diff --git a/src/main/java/supertracker/command/RevenueCommand.java b/src/main/java/supertracker/command/RevenueCommand.java index c33b36dca8..b8d8e0f2f9 100644 --- a/src/main/java/supertracker/command/RevenueCommand.java +++ b/src/main/java/supertracker/command/RevenueCommand.java @@ -41,14 +41,9 @@ public void execute() { default: assert task.isEmpty(); break; } -<<<<<<< HEAD - filteredList = TransactionList.getFilteredTransactionList(task, startDate, endDate, SELL_FLAG); - filteredList.sort(Item.sortByExpiry()); -======= ArrayList filteredList = TransactionList.getFilteredTransactionList( task, startDate, endDate, SELL_FLAG); filteredList.sort(Item.sortByName()); ->>>>>>> upstream/master Ui.printRevenueExpenditure(task, revenue, startDate, endDate, "revenue", filteredList); } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index edb07a4b91..1421d538ea 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -53,8 +53,6 @@ public class ErrorMessage { "Oops! Unable to load some of your previous data as the data in the save file has been corrupted!"; public static final String INTEGER_OVERFLOW = "Unable to add your specified number of items. " + "Why do you need more than 2147483647 items anyway?"; - public static final String DOUBLE_OVERFLOW_REV_EXP = "Your revenue/expenditure exceeded the double overflow " + - "limit! How?"; public static final String INVALID_REV_EXP_TODAY_FORMAT = "Invalid revenue/expenditure command format. " + "\"rev task/today\" or \"exp task/today\""; From c0c3719d3ca1d00f2b8f1bc3adcbb57129aaceda Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 8 Apr 2024 21:08:54 +0800 Subject: [PATCH 236/423] edit blank line --- src/main/java/supertracker/ui/ErrorMessage.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 1421d538ea..12554615f4 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -55,7 +55,6 @@ public class ErrorMessage { "Why do you need more than 2147483647 items anyway?"; public static final String INVALID_REV_EXP_TODAY_FORMAT = "Invalid revenue/expenditure command format. " + "\"rev task/today\" or \"exp task/today\""; - public static final String INVALID_REV_EXP_TOTAL_FORMAT = "Invalid revenue/expenditure command format. " + "\"rev task/total\" or \"exp task/total\""; public static final String INVALID_REV_EXP_DAY_FORMAT = "Invalid revenue/expenditure command format. " + From 9cdd6894a83c332ee5f04aa88bc339ceadb18492 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 21:29:49 +0800 Subject: [PATCH 237/423] Fix formatting in ErrorMessage --- src/main/java/supertracker/ui/ErrorMessage.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 12554615f4..c897ce8fda 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -19,7 +19,7 @@ public class ErrorMessage { public static final String INVALID_REPORT_TYPE = "Please select a valid report type. Only 'low stock' and " + "'expiry' are available."; public static final String INVALID_EXPIRY_REPORT_FORMAT = "If report type is 'expiry' threshold should not be " + - "specified. "; + "specified."; public static final String ITEM_NOT_IN_LIST_UPDATE = " does not exist in inventory. Unable to update its values. =("; public static final String ITEM_NOT_IN_LIST_DELETE = @@ -34,7 +34,6 @@ public class ErrorMessage { " does not exist in inventory. Unable to sell. =("; public static final String ITEM_IN_LIST_NEW = " already exists in inventory. Use the update command instead."; public static final String QUANTITY_NOT_INTEGER = "Quantity should be a non-negative integer"; - public static final String INVALID_NUMBER_FORMAT = "Invalid values for price/quantity"; public static final String INVALID_QUANTITY_FORMAT = "Invalid value for quantity"; public static final String INVALID_PRICE_FORMAT = "Invalid value for price"; From 05a7b3056968a6039a17d077c593a9b5d98e0d28 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 21:37:14 +0800 Subject: [PATCH 238/423] Update about us --- docs/AboutUs.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/AboutUs.md b/docs/AboutUs.md index c2bfbc65f2..981012e367 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -1,11 +1,11 @@ # About us -Display | Name | Github Profile | Portfolio ---------|:-----------------:|:--------------:|:---------: -![](https://via.placeholder.com/100.png?text=Photo) | Sim Jing Jie Ryan | [Github](https://github.com/rismm) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Tay Wen Duan David | [Github](https://github.com/dtaywd) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Timothy Lau | [Github](https://github.com/TimothyLKM) | [Portfolio](docs/team/johndoe.md) -![](https://via.placeholder.com/100.png?text=Photo) | Sim Jun Hong | [Github](https://github.com/awesomesjh) | [Portfolio](docs/team/johndoe.md) -![](team/vimal-face.jpg) | Vimalapugazhan Purushothaman | [Github](https://github.com/vimalapugazhan) | [Portfolio](docs/team/johndoe.md) +| Display | Name | Github Profile | Portfolio | +|--------------------------|:----------------------------:|:-------------------------------------------:|:---------------------------------:| +| ![](team/vimal-face.jpg) | Sim Jing Jie Ryan | [Github](https://github.com/rismm) | [Portfolio](docs/team/johndoe.md) | +| ![](team/vimal-face.jpg) | Sim Jun Hong | [Github](https://github.com/awesomesjh) | [Portfolio](docs/team/johndoe.md) | +| ![](team/vimal-face.jpg) | Tay Wen Duan David | [Github](https://github.com/dtaywd) | [Portfolio](docs/team/johndoe.md) | +| ![](team/vimal-face.jpg) | Timothy Lau | [Github](https://github.com/TimothyLKM) | [Portfolio](docs/team/johndoe.md) | +| ![](team/vimal-face.jpg) | Vimalapugazhan Purushothaman | [Github](https://github.com/vimalapugazhan) | [Portfolio](docs/team/johndoe.md) | From f3d12240cc2ba136898f2f4a27dc9657610c38e9 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 21:52:46 +0800 Subject: [PATCH 239/423] Update description for buy and sell commands --- docs/UserGuide.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index f16867b1ee..ee361e1c4c 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -276,7 +276,8 @@ There is 1 item close to expiry! ### Buy items: `buy` Buy items from suppliers and add them to the inventory. -This buy transaction will create a new entry in the transaction list. +This buy transaction will create a new entry in the transaction list, +with the current date saved as the transaction date. Format: `buy n/NAME q/QUANTITY p/PRICE` - `NAME` is case-insensitive @@ -300,7 +301,8 @@ Quantity: 110 ### Sell items: `sell` Sell items to customers and remove them from the inventory. -This sell transaction will create a new entry in the transaction list. +This sell transaction will create a new entry in the transaction list, +with the current date saved as the transaction date. Format: `sell n/NAME q/QUANTITY` - `NAME` is case-insensitive From ff3360336190544a5393dd36d42d4edbedb29181 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 22:07:35 +0800 Subject: [PATCH 240/423] Update user guide FAQ --- docs/UserGuide.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index ee361e1c4c..9d520d209b 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -439,6 +439,11 @@ If you wish to add a newly bought item to the inventory, first create a new item in the inventory with its quantity set to 0 using the [new](#create-a-new-item-new) command, then use the buy command to increase its quantity. +**Q**: Why am I allowed to set the quantity and/or price of an item to 0? + +**A**: We want to provide our users with more flexibility. +This can be handy for placeholders or situations where items are free. + -------------------------------------------------------------------------------------------------------------------- ## Command Summary From 32c18c2ebd7ac36471b87e31b4cc80458502d296 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Mon, 8 Apr 2024 22:17:33 +0800 Subject: [PATCH 241/423] Update FAQ for expiry date --- docs/UserGuide.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 9d520d209b..4fe07fdfb4 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -444,6 +444,12 @@ then use the buy command to increase its quantity. **A**: We want to provide our users with more flexibility. This can be handy for placeholders or situations where items are free. +**Q**: Why am I allowed to set expiry dates that have already passed? + +**A**: We want to provide our users with more flexibility. +This can be useful if the user has previously entered an incorrect expiry date, +allowing them to fix their mistake. + -------------------------------------------------------------------------------------------------------------------- ## Command Summary From 9b2a2d5fd7c08ad66615008232656da717c073a9 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Mon, 8 Apr 2024 23:58:34 +0800 Subject: [PATCH 242/423] Add rename command edit FindCommand sequence --- .../supertracker/command/FindCommand.java | 1 - .../supertracker/command/RenameCommand.java | 49 +++++++++++++++++++ src/main/java/supertracker/parser/Parser.java | 29 ++++++++++- .../java/supertracker/ui/ErrorMessage.java | 7 +-- src/main/java/supertracker/ui/Ui.java | 19 +++++++ .../supertracker/command/FindCommandTest.java | 3 +- 6 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 src/main/java/supertracker/command/RenameCommand.java diff --git a/src/main/java/supertracker/command/FindCommand.java b/src/main/java/supertracker/command/FindCommand.java index 03ba4a4131..a5edbe9bcf 100644 --- a/src/main/java/supertracker/command/FindCommand.java +++ b/src/main/java/supertracker/command/FindCommand.java @@ -19,7 +19,6 @@ public void execute() { boolean isFound = false; List items = Inventory.getItems(); - Ui.findIntro(); for (Item item : items) { if (item.getName().toLowerCase().contains(name.toLowerCase())) { Ui.printFoundItem(item, index); diff --git a/src/main/java/supertracker/command/RenameCommand.java b/src/main/java/supertracker/command/RenameCommand.java new file mode 100644 index 0000000000..de78d30027 --- /dev/null +++ b/src/main/java/supertracker/command/RenameCommand.java @@ -0,0 +1,49 @@ +package supertracker.command; + +import supertracker.item.Inventory; +import supertracker.item.Item; +import supertracker.storage.FileManager; +import supertracker.ui.ErrorMessage; +import supertracker.ui.Ui; + +import java.io.IOException; +import java.time.LocalDate; + +// @@ author TimothyLKM +public class RenameCommand implements Command { + private String name; + private String newName; + + public RenameCommand(String name, String newName) { + this.name = name; + this.newName = newName; + } + + + @Override + public void execute() { + assert Inventory.contains(name); + + Item oldItem = Inventory.get(name); + int quantity = oldItem.getQuantity(); + double price = oldItem.getPrice(); + LocalDate expiryDate = oldItem.getExpiryDate(); + + Item newItem = new Item(newName, quantity, price, expiryDate); + Inventory.delete(name); + + Inventory.put(newName, newItem); + Ui.renameCommandSuccess(newItem, name); + + try { + FileManager.saveData(); + } catch (IOException e) { + Ui.printError(ErrorMessage.FILE_SAVE_ERROR); + } + } + + @Override + public boolean isQuit() { + return false; + } +} diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 488d57a482..17b70b446b 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -12,12 +12,14 @@ import supertracker.command.NewCommand; import supertracker.command.QuitCommand; import supertracker.command.RemoveCommand; +import supertracker.command.RenameCommand; import supertracker.command.ReportCommand; import supertracker.command.RevenueCommand; import supertracker.command.SellCommand; import supertracker.command.UpdateCommand; import supertracker.command.ExpenditureCommand; + import supertracker.item.Inventory; import supertracker.item.Item; import supertracker.ui.ErrorMessage; @@ -44,15 +46,18 @@ public class Parser { private static final String REPORT_COMMAND = "report"; private static final String BUY_COMMAND = "buy"; private static final String SELL_COMMAND = "sell"; + private static final String RENAME_COMMAND = "rename"; private static final String EXPENDITURE_COMMAND = "exp"; private static final String REVENUE_COMMAND = "rev"; private static final double ROUNDING_FACTOR = 100.0; private static final String BASE_FLAG = "/"; private static final String NAME_FLAG = "n"; + private static final String NEW_NAME_FLAG = "r"; private static final String QUANTITY_FLAG = "q"; private static final String PRICE_FLAG = "p"; private static final String EX_DATE_FLAG = "e"; private static final String NAME_GROUP = "name"; + private static final String NEW_NAME_GROUP = "rename"; private static final String QUANTITY_GROUP = "quantity"; private static final String PRICE_GROUP = "price"; private static final String EX_DATE_GROUP = "expiry"; @@ -118,8 +123,8 @@ public class Parser { private static final String REV_COMMAND_REGEX = TYPE_FLAG + BASE_FLAG + "(?<" + TYPE_GROUP + ">.*) " + "(?<" + TO_GROUP + ">(?:" + TO_FLAG + BASE_FLAG + ".*)?) " + "(?<" + FROM_GROUP + ">(?:" + FROM_FLAG + BASE_FLAG + ".*)?) "; - - + private static final String RENAME_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + + "(?<" + NEW_NAME_GROUP + ">(?:" + NEW_NAME_FLAG + BASE_FLAG + ".*)?) "; private static final String EXPENDITURE_COMMAND_REGEX = TYPE_FLAG + BASE_FLAG + "(?<" + TYPE_GROUP + ">.*) " + "(?<" + FROM_GROUP + ">(?:" + FROM_FLAG + BASE_FLAG + ".*)?) " + "(?<" + TO_GROUP + ">(?:" + TO_FLAG + BASE_FLAG + ".*)?) "; @@ -198,6 +203,9 @@ public static Command parseCommand(String input) throws TrackerException { case REVENUE_COMMAND: command = parseRevenueCommand(params); break; + case RENAME_COMMAND: + command = parseRenameCommand(params); + break; case EXPENDITURE_COMMAND: command = parseExpenditureCommand(params); break; @@ -517,6 +525,23 @@ private static Command parseUpdateCommand(String input) throws TrackerException return new UpdateCommand(name, quantity, price, expiryDate); } + private static Command parseRenameCommand(String input) throws TrackerException { + String[] flags = {NAME_FLAG, NEW_NAME_FLAG}; + Matcher matcher = getPatternMatcher(RENAME_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_RENAME_FORMAT); + } + + String name = matcher.group(NAME_GROUP).trim(); + validateNonEmptyParam(name); + String newName = matcher.group(NEW_NAME_GROUP).replace(NEW_NAME_FLAG + BASE_FLAG, "").trim(); + validateNonEmptyParam(newName); + validateItemExistsInInventory(name, ErrorMessage.ITEM_NOT_IN_LIST_RENAME); + + return new RenameCommand(name, newName); + } + private static Command parseListCommand(String input) throws TrackerException { String[] flags = { QUANTITY_FLAG, diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index f43bf6e153..de3b58d8bd 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -3,6 +3,7 @@ public class ErrorMessage { public static final String INVALID_UPDATE_FORMAT = "Invalid update command format!"; + public static final String INVALID_RENAME_FORMAT = "Invalid rename command format!"; public static final String EMPTY_PARAM_INPUT = "Parameters cannot be left empty!"; public static final String INVALID_DELETE_FORMAT = "Invalid delete command format!"; public static final String INVALID_LIST_FORMAT = "Invalid list command format!"; @@ -27,6 +28,8 @@ public class ErrorMessage { " does not exist in inventory. Unable to increase its quantity. =("; public static final String ITEM_NOT_IN_LIST_REMOVE = " does not exist in inventory. Unable to decrease its quantity. =("; + public static final String ITEM_NOT_IN_LIST_RENAME = + " does not exist in inventory. Unable to rename your desired item."; public static final String ITEM_NOT_IN_LIST_BUY = " does not exist in inventory. Unable to buy. =("; public static final String ITEM_NOT_IN_LIST_SELL = @@ -44,8 +47,7 @@ public class ErrorMessage { public static final String QUANTITY_TOO_LARGE = "Quantity should be less than or equal to 2147483647"; public static final String PRICE_TOO_LARGE = "Price should be less than or equal to 2147483647"; public static final String FILE_HANDLER_ERROR = "Error setting up file handler"; - public static final String INVALID_FIND_FORMAT = - "Please ensure the name of the item you are looking for is correct"; + public static final String INVALID_FIND_FORMAT = "Invalid find command format!"; public static final String FILE_SAVE_ERROR = "Oops! Unable to save data due to an I/O error!"; public static final String FILE_LOAD_ERROR = "Oops! Unable to load your previous data due to an I/O error!"; public static final String FILE_CORRUPTED_ERROR = @@ -55,7 +57,6 @@ public class ErrorMessage { public static final String INVALID_REV_FORMAT = "Invalid revenue command format. " + "rev task/taskType [from/startDate] [to/endDate]"; public static final String INVALID_REV_TODAY_FORMAT = "Invalid revenue command format. \"rev task/today\""; - public static final String INVALID_REV_TOTAL_FORMAT = "Invalid revenue command format. \"rev task/total\""; public static final String INVALID_REV_DAY_FORMAT = "Invalid revenue command format. \"rev task/day from/DATE\""; public static final String INVALID_REV_RANGE_FORMAT = "Invalid revenue command format. " diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 9909c1235c..e66d3859fb 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -44,6 +44,10 @@ private static String getPriceMessage(Item item) { return "Price: " + item.getPriceString(); } + private static String getNameMessage(Item item) { + return "Name: " + item.getName(); + } + private static String getQuantityMessage(Item item) { return "Quantity: " + item.getQuantity(); } @@ -63,6 +67,10 @@ private static String updateItemOpening(Item item) { return item.getName() + " has been successfully updated!"; } + private static String renameItemOpening(Item item, String name) { + return name + " has been successfully renamed to " + item.getName() + "."; + } + private static String deleteItemOpening(String name) { return name + " has been deleted!"; } @@ -143,6 +151,14 @@ public static void updateCommandSuccess(Item item) { printIndent(getExpiryDateMessage(item)); } + public static void renameCommandSuccess(Item item, String name) { + printIndent(renameItemOpening(item, name)); + printIndent(getNameMessage(item)); + printIndent(getQuantityMessage(item)); + printIndent(getPriceMessage(item)); + printIndent(getExpiryDateMessage(item)); + } + public static void deleteCommandSuccess(String name) { printIndent(deleteItemOpening(name)); } @@ -341,6 +357,9 @@ public static void printError(String errorMessage) { } public static void printFoundItem(Item item, int index) { + if(index == 1) { + Ui.findIntro(); + } String stringToPrint = index + ". Name: " + item.getName(); printIndent(stringToPrint); String quantityString = " Quantity: " + item.getQuantity(); diff --git a/src/test/java/supertracker/command/FindCommandTest.java b/src/test/java/supertracker/command/FindCommandTest.java index 671a1cd9ec..58679015bb 100644 --- a/src/test/java/supertracker/command/FindCommandTest.java +++ b/src/test/java/supertracker/command/FindCommandTest.java @@ -74,8 +74,7 @@ public void findCommand_itemNotInList() throws TrackerException { Command c = Parser.parseCommand(userInput); c.execute(); - String expected = FIND_INTRO + - " So sorry, Your item: cake could not be found." + LINE_SEPARATOR; + String expected = " So sorry, Your item: cake could not be found." + LINE_SEPARATOR; String actual = outContent.toString(); assertEquals(expected, actual); } From 814f3352eeebf0e4aa839ed127f9520b5d54f263 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 9 Apr 2024 01:32:46 +0800 Subject: [PATCH 243/423] Update UML diagrams --- docs/uml-diagrams/DeleteCommand.puml | 6 ++++-- docs/uml-diagrams/DeleteCommandClass.png | Bin 50638 -> 28147 bytes docs/uml-diagrams/FileManager.puml | 2 ++ docs/uml-diagrams/FileManagerClass.png | Bin 28187 -> 24709 bytes docs/uml-diagrams/FindCommand.puml | 8 +++++--- docs/uml-diagrams/FindCommandClass.png | Bin 23692 -> 19333 bytes docs/uml-diagrams/ListCommand.puml | 8 +++++--- docs/uml-diagrams/ListCommandClass.png | Bin 55315 -> 51858 bytes docs/uml-diagrams/NewCommand.puml | 14 +++++++++----- docs/uml-diagrams/NewCommandClass.png | Bin 39469 -> 34165 bytes docs/uml-diagrams/Parser.puml | 8 +++++--- docs/uml-diagrams/ParserClass.png | Bin 20956 -> 18918 bytes docs/uml-diagrams/ParserSequence.png | Bin 20090 -> 20106 bytes docs/uml-diagrams/UpdateCommand.puml | 12 ++++++++---- docs/uml-diagrams/UpdateCommandClass.png | Bin 42906 -> 36656 bytes 15 files changed, 38 insertions(+), 20 deletions(-) diff --git a/docs/uml-diagrams/DeleteCommand.puml b/docs/uml-diagrams/DeleteCommand.puml index 541268d563..1bc6902985 100644 --- a/docs/uml-diagrams/DeleteCommand.puml +++ b/docs/uml-diagrams/DeleteCommand.puml @@ -1,6 +1,8 @@ @startuml 'https://plantuml.com/sequence-diagram skinparam classAttributeIconSize 0 +skinparam CircledCharacterFontSize 0 +skinparam CircledCharacterRadius 0 abstract class Command class Inventory @@ -9,14 +11,14 @@ class Ui class Parser class DeleteCommand -Command <|.. DeleteCommand +Command <|. DeleteCommand Inventory <.. DeleteCommand FileManager <.. DeleteCommand Inventory <.. FileManager DeleteCommand <.. Parser Ui <.. DeleteCommand -interface Command { +interface Command <> { + execute(): void + isQuit(): boolean } diff --git a/docs/uml-diagrams/DeleteCommandClass.png b/docs/uml-diagrams/DeleteCommandClass.png index d99b0a4d9158fdc4e1ff3756a8ec23bb5b721cfc..80ecaaeff09198e674db9c6d4c2d0495fbaf3def 100644 GIT binary patch literal 28147 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�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 literal 50638 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

Mr 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 z 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

vz*WZ__PM; z)4zP;e0ta3E*p?ke*RHFe3c#5H(MWcw$>{WY_d4_fo-eQ{|ka{dfz1zhn8*KDuXV) zCAGtL+(+q3k!F_epQ+SNJE<=PAm0-a5xI{t^4ODu^M64L_V4kI*Z`lpf7*A~v)X~` zTZI1-6&6NXumCczlJ1a@5FDVJA=;Tyoe6*U-7yGnkPc;?4R%Cg!>}3E3TkRhq=ls2 zS+DU%g-48r8WK#R-`>&_(A2$i#iGd*KmGg@Z8}G zn9Dmg%cfBDv*>YsP-VSb!OkJfIG*AYr(6c-5tVn*S67lURSlksjJIGIfUg_pdHT`C z_^Nkl`Ej*TlT@m$?Zh!1aCn^RoWzBI!=W=V6plYmu)Nuf1*ld=CMK8@cv7hni=*d! z6yyOM7rTh>BzKQ)_FmHwvC+NfdX`*DZa2f>6D$*+X}!m+p;-S|(q@)MgfS(2zo?j) z`}nAbg1(+!km?NlK5l43QnA_JhFX$j)9k!YUVTH4N+)}|lB>Ac2Cs!-4LxGp!o4Hv zj>gK*7rXQEh%i2u%{$56d_}Qjab{`RsIir(`P(CGjCT~@BmF2VD73ix>wYgT4)_}} zK+W^oxQM=Gh;S>kBU}nCXPN#!IOuR7&)4&w?20ruAD_IgMV~ZK+{}H4689#P`)H@4 zbHM$rSbJpF;$XcD2E|W-rCMZioagtL8sXG6GofnAS!NRt`_*>`a#|(LlL5Qu>n_eP zfb|ikYXnUHLPhNyek~EuK#e?PoEZ#MC{48~|JdouUAa{kB#;R14uqZUZva6}>21PB z<{9ZfNX^VkVS{F7ZoXB=f$zkhK3KBrWNe!&VMoAWkVr7*MGr4~?^ZkfqJCKWG)8fw znpy}|Po(pWs&x)?est4N!r0gGX_1)+x}I+_?D-LI!2YwJfsCxI3b^B)74f5`lBp2{ zfm&WZ$p1G%o>VF7-Zk9*VM7)F<{W#paGB`Z!ClU&!uCq`WCsR9$OyY((cR^fel*Q6 zG%PD{L3P;lGi||y7D-B~w8d)z*er}sGw^2?w8Og}KW%(YVYt-URva{$g!+YtB1FTl zU$09rk)HRVwYAJ5>FychRU=0O8QW>lL7?!*cnkxh{~BH^!K20@!y>2h!CxQEGV66c zyVmzhHo~9_%{pYYK5RC;j@=r70>eczS#+$BzCyu7?PFMHzT zCq`NyrwHQWHTh4ZI{e;_dy-y;)*@w=&|E%&By2eq^@z&BTaMn9K z{BlRix9~zH#PIBE81rr!jD;T6T9R<)&KOq>p-Rsrj;-EbJp?Mc-If?7>eSmt8Q9y~ z{owgr*JmRB_$Fl9Cc4!B6&_ zGet2Nhk+C-o3VDs8sG6z@HvaylOO8%R?j{-keG)t63@GZ|LNzbwEwg8D<0=5xQd6z NP|sNR-p_Xa{{kfn1kwNi literal 28187 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 { +execute():void - +isExit():boolean + +isQuit():boolean } class FindCommand { -name:String +FindCommand(name:String) +execute():void - +isExit():boolean + +isQuit():boolean } class Inventory { diff --git a/docs/uml-diagrams/FindCommandClass.png b/docs/uml-diagrams/FindCommandClass.png index f1f7243914383b56da331a82feb4cca8e2aa9ef9..3aade35890c0d921950c36f9cad71e94b9b5f401 100644 GIT binary patch literal 19333 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 literal 23692 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 OHd7;u-FFNe&;J+7fLC7t diff --git a/docs/uml-diagrams/ListCommand.puml b/docs/uml-diagrams/ListCommand.puml index b9a8d38fbb..cf4bed5323 100644 --- a/docs/uml-diagrams/ListCommand.puml +++ b/docs/uml-diagrams/ListCommand.puml @@ -1,5 +1,7 @@ @startuml skinparam classAttributeIconSize 0 +skinparam CircledCharacterFontSize 0 +skinparam CircledCharacterRadius 0 abstract class Command class Inventory @@ -14,9 +16,9 @@ Ui <.. ListCommand Inventory <.. ListCommand ListCommand <... Parser -interface Command { +interface Command <> { +execute():void - +isExit():boolean + +isQuit():boolean } class ListCommand { @@ -31,7 +33,7 @@ class ListCommand { +ListCommand(hasQuantity:boolean, hasPrice:boolean, hasExpiry:boolean, firstParam:String, secondParam:String, sortBy:String, isReverse:boolean) +execute():void - +isExit():boolean + +isQuit():boolean } class Item { diff --git a/docs/uml-diagrams/ListCommandClass.png b/docs/uml-diagrams/ListCommandClass.png index c786252d9c7427c50ea1cf7c23321db221674a46..5cb5077bcaabfe008c5aea54baba2ff3c91faca7 100644 GIT binary patch literal 51858 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 Y+!c~0H`R>4!H0zPD%#3x%jrk{3AcdUl>h($ literal 55315 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

u~g`-79HnXOK=@RQ)>kDpfCw7aHT# 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 V?TV>ejsGR7t7siaS2}t5KL9w@Qb+&* diff --git a/docs/uml-diagrams/NewCommand.puml b/docs/uml-diagrams/NewCommand.puml index 320bb9953d..cbc7d2b601 100644 --- a/docs/uml-diagrams/NewCommand.puml +++ b/docs/uml-diagrams/NewCommand.puml @@ -1,6 +1,8 @@ @startuml 'https://plantuml.com/class-diagram skinparam classAttributeIconSize 0 +skinparam CircledCharacterFontSize 0 +skinparam CircledCharacterRadius 0 abstract class Command class Inventory @@ -18,9 +20,9 @@ NewCommand <... Parser FileManager <.. NewCommand Inventory <.. FileManager -interface Command { +interface Command <> { +execute():void - +isExit():boolean + +isQuit():boolean } class NewCommand { @@ -28,13 +30,13 @@ class NewCommand { -quantity:int -price:double -expiryDate:LocalDate - +NewCommand(name:String, quantity:int, price:double, expiryDate:LocalDate) + +NewCommand() +execute():void - +isExit():boolean + +isQuit():boolean } class Item { - +Item(name:String, quantity:int, price:double, expiryDate: LocalDate) + +Item() } class Inventory { @@ -53,6 +55,8 @@ class FileManager { {static}+saveData():void } +note "Some parameters and methods \nomitted for brevity" as n1 + @enduml @startuml diff --git a/docs/uml-diagrams/NewCommandClass.png b/docs/uml-diagrams/NewCommandClass.png index 1c4fb1f3f00cbf8f16445f8755240cd8ae96d426..eb39861ed6e269f384182f8cff35f47a5209fd30 100644 GIT binary patch literal 34165 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 E0kbzX?EnA( diff --git a/docs/uml-diagrams/Parser.puml b/docs/uml-diagrams/Parser.puml index 64040749c4..bffd591cbb 100644 --- a/docs/uml-diagrams/Parser.puml +++ b/docs/uml-diagrams/Parser.puml @@ -2,6 +2,8 @@ @startuml 'https://plantuml.com/class-diagram skinparam classAttributeIconSize 0 +skinparam CircledCharacterFontSize 0 +skinparam CircledCharacterRadius 0 class SuperTracker class Parser @@ -13,9 +15,9 @@ Command <.. SuperTracker TrackerException <.. SuperTracker TrackerException <.. Parser -interface Command { +interface Command <> { execute():void - isExit():boolean + isQuit():boolean } class TrackerException { @@ -51,6 +53,6 @@ else invalid userInput deactivate Parser end -SuperTracker -> User : Output +SuperTracker --> User : Output @enduml \ No newline at end of file diff --git a/docs/uml-diagrams/ParserClass.png b/docs/uml-diagrams/ParserClass.png index 8d31212ad4ac39df85b55fc8b4c899d795e589bd..1f8f838e79949e76b557873a2a6a5c95bc348e3d 100644 GIT binary patch literal 18918 zcmbWfXINC*wk=wUfT9Egpr8bioFofaphN{pA~`3?h-8YWNEQ(hQIMRWBqJG=AczVS zL697!$N~jOe!bAW*FN{0ci;QYkM%7rXU#e07=85KdTVV|sH(C&DG3b;0)ZgCeM{yp z0&&C_{#!kM6h1L)<3A4n<8YDHb}@V4=xJwh-vuFW;b7rp;$mUWVCuKP#EXK?0 zXlLT!;%aZlWA?z_t-XyNZqa6aPut~RpCgXIeLUVS-cwQ;yg^aBTyQ=oSWN1g^6`u4 z+x2Q>;C$;loo3CMcLRjWrp}^Q&R))KQTs5ueP$3s$5lEr7b<+M;dotM_Vsd za6)I-q+N6JteB-i(8w3&Oi{^To&3;R<}UMKvu_3)wfZ>Pgm&9?w}ALK6}t;vbDjkb zoo)>w^n#s=Ea`)bC7+HfVXobI`u_gT)vn;E{l;5b-+1R(s-IAbjh@1U@7(sIpqEk4 zG6_40y>!#*IoS(A(I?Rlwl31tF{LhelZ_CyaB`Q9Ry-pVGiA{_lOMonU_xSKBUn-r zPK{u>pOGL$Npq%Ta6xFys?aa@gpF!TGB@ve7%mQb>ff8*Cw5$|;;jtIu9S%jd7NGG zQ=_}BhimsCGVk5`lOhj6H%NzJWvd z6EL6iJUt`)FmYkfNfiS-1SgLzO|u#|y!#*yTju`%P7uScR8Q3$S5n_iB8{rL%2?I?!8m{BJ34BY-C zBkCnQRQot4?N}=D2dNM`W(p*OnD_5O?W58ZNCgH|+d~1F1#<~z+S8GlPy0XT=4#}9 z8hk$zt0;|QdxYitT9x(o#XELSw8cWbJar)c=4P+=XXRsl|MqZq-yEs+>YjKbU`a$y zH&klf4PSn5Kj=32-X5)Y^XA8FwKSXW=-I_ZA8aS%zII)LLABerL}Ywf4yMqg@lyn? zO5*j(!ouh7ua<5d+)y+~m!lBFq4(a-#FhKT;Y-{( zc#@@Xw1}wn z+N@h^7e`;Bq@<*wiHnVO-&&o9FWim)GuZRGgE{J1@gfg?PEB>b@tbHm0mF@0X#MhK ze(G~{DQ{TJhYvRlElI7tKEGhTdGn^H1r@L1?tpE<3fZ}+ER`f4cJ?1No&p)ilTD6-!{$;Cm%WQTPB51lI zI?Z(AxmVx+``t)R#0c4b_dub#TuCk3w$^602H;vsYHCHVxi-3L)Vd7~s#ChFyIUtp z*_H9jc@z0<`3AMN>uX;HO22*mdPkG5!ktMxHC*U><|92=bPt1pV4=C5oW``^;>^1l z3R1)Y;d4QM!;}5Wy`kY@Uc;K!0hi{FeO;YFNgWrBXsM`#ou+Pm-&k3xbR2I;O4v8v z{(Og8zw{=F&@5r>J}h5I{t=ycF+uCDCw&<{+G%Dj&$>?X?9>0sq<^=~fZs{5N+c&J zX>4U=WieKlMMW#6gUP%X--BS!x3}KcLqidZTiOVbuCu#Cg7np-N|OCbWs8+VElW zC{LD|CDwRR8siec%+a5{~qN2fpCjfxeiDJu}A%%VzE{b zn#C9o&18RZPT~Lb@ZuC=D1%*PvOJqmAdGmR>$y{ARLL$j~HB|L! zSlH_NI%Syh^gx;I&Kjoe3b9cr9Q_CiL@LJT)C%`@B;*j%w)=kAa{Q`Gaw_(w67XpO0?db0a`s z5V(I!#W=vrQe^xcEM|SZqxB$Ds z)aTlJt6v*)4yz*kvEo+>C1D0KMn4x~-q_n(uTmSLc3MCS{0NNl6_w zVwQ>AkG3HFkH_7YA-DLJ7AcX-sYv3RrI3KpL!I0ti{+uI3@+cl)M9;%&${c1jW-S> zzYrFgysMMxCx^;MI{QK>`2-Sob{O?(rL>V1b_BHOmM=L=?Ab@aB6kxJ+= zxmHRa4Ti#GVuPcgq3*Q2CM3btI4|cgYj2Jj^73$B9Ec&3*gfd+G;mnf2Q;wH&cWR_ zjI7lwci5$iUs+knT#gd7=?SrXlE09d{E`O!?h0y(?8L>Rn6xJsFanNaH{7y@p_bZ> z)+O{s40XkCVvGbg=|(<&{MeJp$(zDc?#|0w0Q-%G&HhJmpr4X$AuK#@eZEiS?X{@) zcPzai6~W~6Kqg|(iKLfQ?%?6(jv(_|=r6L1`6wPIKq(hF#P~=WGU8Px)G6N2&6%V$!Q20PWD+5EnBtUJC785^LMV~a8^IaC3lUJMn{Ab&eFa3 zewdD1ZMxD=kUq95by}a(sQT);T)Wvs=Qi^sINjnfDHU%l{OHb6XRV^J?a5X%HcrOb zn#n(GknZA#;QfDtM~9h(krr98!smawVx>sxf0>ksWyl@st;Id;7f-;-5TweZc9cY< zulU3`y^D`sg5>kT{|I`x-p@~$tA5|TqAVvGf@0hs86ceLl0EyxJOOI|59~*t~Xlq+R#AHg+GyUZCr^RhFw|hLXs71t|Z#PVWQ?E!kcky zydxw<79LJC{yp;LytSN!Ll&LFo>jhst z#}DhML?&BBk?_Aa{vJw4R^BAo`ZCsHw9ZHH`*TgJ*65cnue|GzU?)BW!G)$kRxoGY zq^jW(bP#jFQrN2F;lgy^;44C6^uzyh!NZ3S_qNx~>}_BJrR|~yi^u$h$RH#rQ;BcH zAJ$O>*Z&2!w}@R8$Z7m>An$)TGiy7`46&?k{7Ek&Lgdxu7R)so&;>7qenz!N*{J6W zxpG;~d^U-=qn-x<-YgJ1&b5DpHr?D-fzI}V?V_6BcRJdK&N(?|qT(uKw&roVP@yhB zL@imOjodjU<+FzLQwa$P)8ry@bxJbJ%S8@c4QIb&qb*@4q3s>r)DD5!sSEs9goR&~ z0WjFcb*s#qZ{$ahs>#SSF-2a#TkpHKGTBlxTJ0Qd9F8uD($ObXR?C%?&mH2kvYFGi zCf-pY<4nlZ#J|o@3{ygyx&seJr{un@oZQcunQonTl5fVLuNd{5x%B;2yurQxsQsv` zrSH|VltmtleEs}6Ws^Q0-7)r`Xj`n2fPla=K`7mxsicDDZR)+(Ouem#Ph-bFOhoA& z%=go8Y4T$7Sub69)WqIoI0y0D+3svCrZJwVPmDc$Ogy6gh zI^{)p+rIH|EI^ZUZQyim$6Rlod=~Tn450^Gx$=p!*eHMA5^_2f7bm7^{AW4CVYZ%P z$I~Uxv+q@@M#U?ZLcPTKzS!uALB7hbnk7~tACDer{nul}_!2#TUKn7B$k%DcPgMxd zckTEQH15^3t2O=itF}~H2_qMCnq{xZLh7}-x|fFqvznJR$2a1V*7bI>D}zxycM`j2XlEB($;~Vl-toPH9U)rG(X!X zIKD>NOr3wq6<4i3lO(3uwjbTtrt~Km`>-(VmqFX{!uF}#0Q=Un#4;X|7;JRU#4GzA z-kbsIOnWIF6}$a-;J7U3){~(a`|{;ET_M-GdsQ!uT>}K7d$y#Z9|CP;TMp)3^nfW6#bsv>ve8;qa7&C&#%ONh|)dnXpmK_&gr=^XWN@N+;4r# z%8@t5DcIaQPWQi-A}gqt6K@Du1TG>KUvaUsv!6DyM*NnRlluhC zSd#$po%`2NWOUane0JPcnu(CqJo=771sv$hoSb9rxuC%8rXy-;84! z5B4|fV;|K3xe#lJn#IV|X9QKW3t=>bkqLkivVUIqp=@qG1?_H=GtpP5dd5wD2Row@ zKHJwe>*e0^?2>g&W4lUMnml_r_RQT1swX({MF$kOQC} zZlU*kJK(oBZ^Ua<$K^(-N`z5=WaPK!x;Rkg;yJy%d@vQQQn#~It)`}Sl8Wos%1TQ2 z3#w+~ifanJuekMq0PtP!)jHVjtA~euFMlu!?OSK~4c@?h+7EX_5=qR>&C@e86%NFi zu3mM71ra=+iq)y}u1qhWDNIhm42^vZP*haZSy>vc9`!re3q8x)wnI$W@Vlw zsBe+Tjq^LmVSwp->ji!pVf`m=@X18x_-;*8OG--8kQFw2Z7!AB{dnO=o66Fir82X4 z;w;P8coCK2Gatk#keS=#!Sqs6Qt2@eAGfQrX>xLMYTj{H_dYRa_IG7KaY4hv^9u1n zFof>QN;og#Ds^g$)8_IhwIafpMur@54UtOx)p6~o($n=1927{(TM7zyrw@|#?gP>T zB7!mx@lzUi-g%-aG!f}F(ZNy)AG!h^#LO(Kf5ezYCX$ay{@Kub`*`i%_m{-oaI@Vr z0N5u;5Y7xJ^8_*1Tp0cNRc!oKlZIe=UpCDnUmszkC@ClkExu3{kyzAE3_%~Ao_^&a zq5o$JWRTC!V!4akcs_yCGkVGWNWWca^wHO+FlPO)`OJhLjBsfl!3Sj!Mu;%zI^uo6 z|4GUj6Vm(bu3*ySn>qZi%aCh-Opy+*a+!t3{Bl0x`6KLB_ukHCmQs9>i`1f0BrZ%O#3enRvni$EooD0-k|Gj>TgotYcBFPE@FX=1 zyg$$_ja5?8i0g=dEnN2D5x|ZT^Ur6BNOT`#j}Wu*@GJqi1A+sFbs>b#@o4}t`S#Av zyo=aFLMwt);)_2U$tB-jdzh+CXnzCe-#Ap~18{f*{-e_JC$i!}EsfUuEe(klk&roU zEa<=n*?km9WX*$We=E8MO<<^oa+yzb!$JfGr`4;O*!%hP<p_Zlq=l0?V}b81yI1 zrF2LtX&eG*lOhU0ivW3nH9-Jv3xM&6DsZukK%_t?13WL{Wv2t~;x)&yFTC~V@>ryC z{n3N;bSP|!nCskAI^_21^cPcBM|M~Wz*_eGg*VZ0urE~3iPiW()&%Z!yfOHol1Bfz zTbgBO@=Zu&Xa3wp5OvGf*B5fN_RiNg0x;nY1Etozxf;OoR@)B>Yi0#QWvH&M-dq}v zr-JmXpP>)~2xn(!M?K+z4J;rjt+3rt#R~AECr_Rvm7ub_nTA=LFQ^BCMt4Ii?Nn+@ z;uGv=0Ct7O_C`jdK!ywr>C=#YOOhOIYz*j~Wju1^$UPM$r3~4&OA1M;si{iw!kEa! z_0X^|5>nD{U%sS$DaTW@gJWhNsRU_|v$L}*5?kroLd09 zk|S{xw%yV|e|^%zbg}>^!OJgrw5`4UXZXm-2%7Qw;Rs7$Y?KZV4D2Azbt6x z+-0sJLrq4ASdBIIv0S4yu!-5rU48WzyY@UeG#WfLe4HL99uB9h?Pm_ zhIC?fHXBWiYNiXe^Cl0frluw}Ee+P9-0lZZr<9tf{&18A)dqFmp8LC7K06y0u1wVg zwl{I09GI!d6*EXk)Io(2vgt`4(y8|aB?y|!yTN#c;$Y6Sd17LMT|E=%#bf}b0Ysz< zDk_%$+<+h%>K8~42+$sY1NU3LeA@J6kI&CnTX(Y*1+PVo zIC%8s8xRnk>MYQcEwkxuy88wyF)-Hcjg4tGy}5~riGnKKjpuWqLsmHH&vb|W@-y55K8KhVa!rU(&RlVt@$oro`{mC%Q33o2aI`= zghYGqPqN7rq44SYD=O9ad3)DXS9>jw)LK7;$j|_(=MPKTyLI2PBXRh@s7jQU-{ORz zK8*x>Z%xMzSGk%kLY#tF)nzH}W48f71M)0d*$W~e{T)O$)(8M$L*U7I=+4B4i!H)K zFFm~;`)^U{_COMu2Y?!vU%2P6CM#NY2m5MiXz97nEJT&nETJdppeKm9}k_ju~( z&sABm+SxZW-XS>o#_};1XOAf$fnkFjA=S_pea9bkmbKGst~tx)JgD zgxX2j+1Z_)s@u3~@2yoJmU6z$K}r`#;n-}QnVFfjb;?zF_ z9ra#Qg0hSa*aLpqpv*?&kYM%+(c7X|3JjK)%q+3&DBb{snjWv9tSmeq_odgb_%77d z&$5y6jA-Q~4s-|X6`Q{NZ}d_R9&V%QB)qTHF6&r+2MCe02`WJfiNQ?w^LW2aopJ|* zSwrkvSTBf*x2wk@DevWJMi|AZ1xSXy|1jV4Gby7>nt$Xb>w$iHOXIxD<>4C7=&}O+ z%7%GdO}ca>N%}K=FJH<~&vemq*gE2F)6&uorpZS_S5QcjVAkdAzqYah3Sg9`RUc$X^F_c9zcw$_ zKEQG$lx27c_6uvje6QrqLo}K!cx}d2Y-a29oH^NzY+7&oj6LfBr@^ST^*$roi#INa zo(fn8%>G)QJVNJ5TI#=pVNs4eh5kw{k7=(Ul}razOYI%lc1m%ACid>`?h=9-MR`Ny zF=>oqMzSp`@f=XkaI-RfC%Z^$t+zK8zYIW|@RIDymLDyxcgO8PqVTTwp&fy|ZnIs} z@HFE^Kk)8IIbkWG`od`wt+6V-?jI_h__t5+USKtMpiY>NuhE|BaZ zR-OKS&ZnuUSoZi|@JwhAk9jE%{GC(pC^26BisxhjhOhDss#j4E(qtE}C65|8h&vT< z?>Hp#(6hO3ug|yabYsT=PwjF|V~boI=p}vMlCeWu_{{#0qsKAIku@487#=`l+Et{6 zz&uo_#&oBri2Mx_!Ar<+DsB>Ta_YRyoU5o~xVdiHj6>?f_t6dd0Kwd>BOH4&IRQiD zLVSEtVx41e6O_@~`uf)`+RmZY0Q%ViKm?RkBN-8Puu)!*VYPwCnx(Oa#OzIpoZH(R zEr6%pd(%LeHJPbAc4+0puyFZyO>460n%m(|DJrVRBq z{CHf3Z)U-4>3RBzabhXcwB)KzOZAO8|NNTLjfNWKaxa=iX`-*hi9Cv@t@rcO3j$yZ z7%jF?q)G4mpWC$WOF#VbGke?6g%( zqui%gc@lJ8aOoAgk3vaaMNUqxz_7L{*O~$;ESr=cOm^u^9{=0jGJ8-MBFXOCv_y0sQqZ*nXLb z3Cd{-Me)w_2eV~aZRwWIxQDDELwfZqmbJ1_J$fWaF?1F?L)z{f~zO+{0VF+k&G zKT;#=;}ORBp_1F6N)T@ZNuWTEoyo`7%E?F(+wWf|Bm<9Frd49u+1M)F7UQ%DSvS@? zB;DtFJ~uW_hO#F9-rren?j4I0q()*e7*PAp=8d5h6cvfdF7}sNtA{1RoP#v2vT!8- zwlijJ*nO1r{M8%i$0a1EPT}P=WLqa;A5bMtbcgoNb~l;f;l3_`66adM#DL=%JM zVC+YUB?OEz`mw+kjC8QndJX#9#Ot0;z`gU<@2)}|v!S*(mwDX?`_h}STNB~DEO%Zr zXnwTbh3*=J3=ghIBj-*dF0RUxWWK384D@x(~)zhM$;Wi6dl;WNkS!sfjbFBEl;9ER~-erIlBahv+1EMUpM)*fiH@Z-4dq58MuH8nHi zuH&Xgu%!=UKex9pffN9ZWi|9{&v^{0V3c7Rj%1PtyCvF3DKRd%JJ7_!PB5i>`vE#G z5E!1v#oA@zA{4Lk-K&a>B;U_dV}k9#1Xa4++1fcnE2po7%>Qv%G?gT;Rk7Z}&<|b7?O3;5KHR~;) zFo``}w<#q8O^Q)hhJ9XM?hc$u#Zd$rN3ZTw2R)q4? z@%i)VykwgYx+vu=uZd9BrJ+iue8ix!Ulp_F%|!|%5uQunEJi;>S|j@2elT$-!z2I zj79lvNNC#;yCWF0ub{mU96j2^q1^~?1ynPerjqJE4mD%aXI0&TsV%P|!6Shp27Ea| zqPl>^q;*Ih)MyKR{OejXW`<6dkB@I6&&~@NRmjz!7$wj5o`hDj)GA6_=!lPMxFtE; z*^3vs>e|2^mvaLknGY8%pB+fGuZH)CFlMd*+0GbQ48ltjynOYlE5=SuEvljcm=O@S z{58|l(_xzA(Q)`oL+CogfM~drBw_H+2hJ9U30)H=Df@hC%N%eglqG(+^o$H4`+fMqL;G%xK#*Umhk)uU56BbLO)y$FwJ-a$fxw%(a_DV0qukG@UR1Mox{N|c>_whx3@Pq z;kJNbGN|#0;($qmdz~U9%U4SaDrF^2gWRUlj5k0K{V)`^>+h`bbOv`FX!M$x(c}mQ z)LWWb^1u6MfgTA(GX+B;1pJe*X;TQ`=LAvbpFrdCaBwKxzMb+rSpzn*Lr*pax@#bj zC4Y|*gt2lMRyd{@)}jRNf35IbyKiT=AkcBWQMeyWU(AZHreAio`0--^heK@Aljle-aTtQ|hnM~h z4M(5{8AZ)==c)=m2@EU>R;>lPtS5Qw7Y>(RL|!H>CG`mksF;4W+al0=&{x6&2zI5k z`5z$wj`r(!ej<@uVr~l_Q>~|g4}v_p|3mMBOk_#gqfLAf;&?p?`Hbp7j@+yoo06Wq z(hB7ZO3dw>jbSHFoPeyBB?m+dw7WVFI}(vNQJDyTe*{Vq+g7(S9((VJl!Deqx!PHl zJI3T&Et3019xJ9co$Ke`t*@*tOZ@UM?W9DyH&qztcRdg>g2gT z9TIrx(nzf$y{6c%Wb9FBu1z=m&ZY_zshJXnQtSl8NR0yZRc3g?$7=uR!n z&GBY0R#tf}w`M_Tf^E8Ix+fzg+v~1p@|{EKY*19mK-Rb_1b|q^2Z-p|?eHLh1<9J4 z+FIaCmHLeAo-mhx1b^cOuzH^?fIcY^~!x{tRfP#J2>sk_Y(6nzpeU%BJ(~^?BxS3Wy(& zBD*HHX*d=-v)RFN-W_S;r4Nq?KxewY*wfQPZRA}9g*Ec}YHP*ANj5nh9~c{y%1eS) z6r?Xf-g!oc9H?}j0ng<-osv&YWPJrje)I3j!6um_4b=b&V(T2v3H(47P^{?a=pdD* zQ$OzoF{DMy$fpeUFJRm(^M&E+P3YBraD+3W^zTSXHJs$F0T}iiR8!k;D^}sy6qVDy z4)b5y+cQrug;8=A7ZSU>4Qrr}!5tLw+6vK}Ih#}1 z2*p|)HZgcT2b}KRy9W(Q|Ervl6lvnH7{yo~j2U~p)s(iX>J8erfD1tmg?LcZb9Qzf zgw~y2-UbZM;akvnzH>dDf&#K9P5l;3HWg+PqKbgNXge6Jb!fxdI9|g_r$C=tCvg68 zXyg_OB;{jrHQ!Z%PNxYyIKM%KM*pJ+(J6=t0i=k-&^0!;kTUjkt2-`Rs}>5EXQzAN zWjHl*WhPk+i%z8y_k>F14VKw%j(sF}7$|FZ8VSwOWS{CbP^?xjKT=y$G_fqD=CKNk zbBOxxUNg8*B;1Rqmps)>hzHn_37`iepUy9~x&aK${kDCz|M&LXpx;;or-`$3jk%XUbrL}V9l zk<#o80TA;HO3kfnt`K}k0gM1aPa|x1i{PRSnDJ~uZb2)FopTFUCwE}QN%AV5O`9%9b^{(o9 zD1_GF%Ldk-E0nG9w^j{+ugLIlGyB{Uc2&-WUrlFKK#mULL6gx-41o?UA|fK3ox-PV zXU8>v2XByYOIXJvQyCf6TL5-=7#RGwOWu%E0!e-ED-|Yi;G|?@x5u#d_X5M)hNn1zphOSpIAU*c~HClN?QYj zCID!vF@z_nU_Io}e=;z6b{nMM_9RJOO-gBeewAm2z< zKBD=RX^)wG2%W|oVS8NNjq^crNJ!*yfy9pGt46~$((qT`oAxrIY&hWYyaJ?UM&<~ zYsj;2g31Ffn&#YfhQktNLviNJnRDl^XufN?klMmgPU}V&LgxzY+lb%(8huf&AtdOI zZ{H~MzE7UQsK3({Dl%_{O-FR<{D%Pu@~r07dG7I_KUrS2we~7K!m4F;b#;L*JZQRo z+})UIifmwk&Y6^kOa{l!0q+xT|g#R(&J|Ewvu7z;01GbhCpht`c@4i(&;I!KnlFF`s_Y38 zk~U81OTb15eSfr!f-C}-T}FdJ{J9d4abQSxUFo;q?+hMQ;yaIo@(jAIca$Y@HKPzI zy_LUl4Qqr@y6dNxSOCd5oABGp%HQjMrb-Bwrtndhu`>g5@*Qs=v?;gkdsh5(z0zg& zOs`J-a@^f@ylS@x!un;@heABp?x7d&*JWWql$HfW)`I#*eV$>hSROScrJ7(*o>pYL z;UqHWW`a(a$NgM@Xhz4`Qx zC{5lW0HW|~TiXjw?7DSNc2sGDYLg&D27nP4jpoS$XmIeyFh;k$`ykH>-IJV4jL=D7pSA0*Z(?Z0pP{bNPu?X_Rp_xN^_3lVhYf*D(R_&$N^^uEuU!+1AxdjG0TU6KADT`{vwDS@`8KCAoE76)fcyt#wy1HLr&0m;oa~a=uTkZ6IXuZ( z;7$eXiHS>5XNjdskqrUQIiyPrq$bJlnMC#5&cY#d?~+rX6KQGA4c`Gqg%!`r*?$O3 zZP8#rl|Gg@W#qeMQACmnLNcUxPVh_3%*@0BO_Yx~dzc8*7{|xQfhDBOGd_A);{*XI z<4;jRKA0fM4v|ikx9C1YLV+CM_u0mQ$W=r_3Hy<9U&_GHkgj$N+V))7FMHyitLC#@ zqE5f>2U?#{dh1)*kj5WX_MV9tlg159HEx44PxW*F#_VDQ5731Y(3}9l19sD_j12Ii zf9>et6%o-|;E=wy1z+yejWT(+*m@IZ)m~7)&+$sX8`c=c&Z=qOXpH+69lbY8Kx)6c zw>LRCsl&&{W(8%-Z-b`<4)Fn#S@Pb|VNLeCV|3>m;XQ^2aLmE2Dde>4Tu(~m8wlm1 zs-aU)oLpyxN!vp_ARK{06M@+WdK>Z|P+PQq#vUFX0Doa$$?yW8(EII{4g}W=;A`>b zq$Iz69eoqpPiet>A1&3?Fo2@2Bau34VtG`tFJ7b`h`eb?^_8|<#RXIq%VT)DQqT|)YUlZhbbPt9gFz;)#l~jSFh$l4PDA9ZM zc9D$$JWuWzq}pk%ePQZIRZNW1vXP-dpkHN{BALd5TxiQEE_n; z$>ab*5KM;(DVu$?u)Mx?`GF!M>H~9gQ&a!U=IaZS7-{0hPc)!ZPn3{-&o=LQ zXJQ>E0gATXt&!>bGU<7uRaH+zLcq+HYH9PUaGhFIhP)yjuvpg*9!>kq2CND8atL)S zuTguwT4s|cn9gP|KZIV;P!TPfBY|axoxcaVdMKyeCl4G@eX{cM-Tn9@M!R|%y0Azhq~EZ` z;Y5UxozQAQ)+iQT&v~3aU>#vTE1Fx^2c#cX)*4U*>3W?;#aPu!y&VC&ML_DbEIY31`b40m13ir zLr+5hG2(ixcyU9JI12oBiC{7#-7N0k?~4Bk#0~h-%&wxiZkWBrI|UUDb}Qdb15EkHSkXs~r$fRq8B zfUC0(n(iW!=|7}^D!3wDfzefggvJMr1>k{mdBX3VrWIyK`5sAuNnhN3>D(W-ae5zA zEnos}p$D{Y-#(F{;^^r3{KU_g(|HV0z+Klhxk0P)r3|K{uuv5(77P{wu&y@4v?tbE zlV$=$4D^N08HoK54OYirV;?P(eBMJ(1U&$6E$#(a)Cp2sZV%V_=y8d@IoO?%1b#MC z+x0D^CI?^*yTIJ|iq68S^(-wd=LW%yKlY&rnL&iw4<(^~#kHjh(jE*4Gj~V)Q?c2c5cbSpxAE zNQT>@2lOw2U8>H`zJ(UMr>v|DF#}1B-5pBKMl-ch2=aq9u#bI%59(`u_fSP7{9q?O z0C8vx$fQhRSryRaAC^sjr9igN|6wuQsy{zftcJz~-#7p%QzRQkH#GV6Gb8Hl003Y! zQ`066>>EkHeXyy0UA6@_1bU%WgAbMP7(7D(u3d3hGmv76*tt9i56Y)^DUiuT4HmON zrZE~EV+G$2Wy6CrVv;iCuNPrluB*2fU0eGjP5rj#GR9CLN>$%(U|3h-zy zVj;=?P9V?<#y%u<$y^++)lHonD7IyuG_yW#EZyz540fA=9 zF&hdb&m`DAL4~}ds0eq{f=21Ui%`7UW%fm6WCz}5N;&oz9yyhCuxkmYleEit6O>~? z=+U$g)nA(dhzCKa{~44XnY%omf+2b(pJO*x|do zyG^;I&?j%g%IjCTG|EFal zPXZ*zfE}(W_ZzS*V%M%|qjd-2d>6!;6O8L2At*{Mfx{IK)4)dNM*AD|fS-p(MNKeb z8v)vhNQ{NY5o0C?7DRu6A+-A4LC_@L7u(hbs*N0Yo$i-E>VWltvb#K5&zp}ZJf7Mz z{lj^Tz?eIPE>@l(Nh41)R0A;+^vBfe&lCvM1AY%bCSpK+Fo8bgm(eVqE^Gnq=1F8E z91yLlI9dvZFv>67Oq!HnTfwcbD=903RrEds>RzDo?0jEAxJEOWRnLJ5T9aEtUw;Vb zasUh=oHrCHkhy2zNb$o7nW9{6I9+aPnyOva107`Xp<$IK02)kKw`MA%gvrLALuEN9I^57idsnM^3Q6$z7OmWY+6%Fy!(6`&ZN#As&6dG z{i`c0r}OX*f3vMdh}+WKd+&DtWNg0mFbm@eH9O=H%fqEHaf^U}C$=Toz!4h1S9N0>cg zY1}2+$HDnf#Ji6aAO+5{OZ;Gv9^xp2PNdf_-?k5^D{LEpW!O#fthV z)TCY5mDN=-&($jy-@)Jq$F_8k92^{if`Yuf%V1H4X~+;hw7DffoaqGi9X@?_exCNs z8L4m=4?I%MllpG|@4o+~|4WJ8B6JZjC+;Jj!DZjXuE<1kFrqGk{pnw)iVG+3r;43< z85tiH@Sj0KsYfTgdL=jBJOF)tSG{UXPy=jAj|749NFw+-0y(ii&a_{%2kcybetzLb zQ++=F{6Fu+2Ssj$<1 zJg_X|$zn-ZXLRawB29p;S>987)?cY*L4q^yx-yUtk*)YN$}Nxnca%um!yBp&?@9 z$w0bVM8c0V2t_=^GD7=OF=?MpFui7ehbN~&Zm=>IG z`;QL`0zlW?o;_fuvR&06yP~?<2xQALI3IlYYYLY1Eqy_Ofe{x)U;LN(&QwlN&=Q2O z%IdrgC>8`TK;S=ep^*XIq%uAIiBlGwi0;CIl^J>rl7s`CV-=0*dS_=R5QC~Ku>3At za2m&GBuVJlwrh&iWGvpd{2t8B?%2*p1qlL&RCRV8uzirDN-i5I_L+{1j0k#nzwx{U z{2m~m*ZR25Pz6i=gej;78ESY%_BSQTG+BlUxYBjOljJ(DX^n&5OsM;F)C-Xkp8UtU z?9UTIL`u_CfI5{pBPQ*da)zE>Ma$3SrhKKe*OV zoU)=p&LN z@q1l$zsKkM`TX^}ACLQScXM{0$8nsm}~6QC*Zc7y*EP1&dtvArnlX#i#7ol9lgEpcu5Ed+_` zYfp^pQ29JmAA@e{uNaVi`}{?*gHUYW$lg7XZ!p>Ss#qf-MF?qFz{C?P|D2zn_WB~W zZte~0RaE6Zh^?^Zjc?RR+4wSC^#;G`Do$gI$DwX%-13X07MJ11m}QLt z0Xq?8qtBG|pTft+%Py)daqChu&4hhM#cItrY+s1TR8{p7`kY8_Q_7lwoV&g){@auv zrR1>T9r$x>_jBL{e)^-bQE$g-Jyw?6zl10T)2Ckvv6*?-AqFQ+51D_-2yaENk6GC* zy}Qg@%dWV2?Sj^9*zyp)R1VwY$AaR@94aXcHpllu8Id8Jl4jO-ifPD+Dc*j+^b7Ar z;q#AOBX3@FwZ0@B`_&PrgmCb+tFI6>dGO0;m-3Ft*oi%@*Oo4!rNbS0v4Ub_;Yyxt zyw{BvV#(X@l-wTk&A4bXcJ|zEqi%iYH}aQfb1LUrbCVGWts0fJ3uwBzm;Ro>omUzeBm2OB|Rz9WhA^&6Lj*j2R!+h}jg z*|wgh)-TghSO2kh5}~rlWWUE-7wCJl>*u}QF^A7$3u%1Y>)m6M;&#Wx2n3tv1tExw zwlk|Zhy+}1azrL&2nvD7K@8y`IPo)?5VBmEmdJpB0Ad>cG)cd821JO&?$2ofU;0eq z)!_=q{#QjsMYxC%lFiLc4-XHUUK~@jC6d)=Gx;=v(r&6g0Q(a>3?h@`WzfOvFJ2)d zvPi@-;Sl-rWL*BL zq2Xw;C)K2UqS~FDP9$ITIk%>!=I`CLIiCPY?9T{)O@t)m>*Z-49bnqyn1g>#AuWw- zS%z6|?yL^;NK0qrh`EjrRk@7fCO6Q0`suhbkR$MZ-=^5KN->63&d20Q^Hq~?_4W0c znHSB>%;@P;A2Uj3NZ(5ldvmMfS*}KEB9Bptd<0Q>c{#7!d+eK4$6TwqRy5<($Kkr8?ZC_JU9)t&G zNcy>HUaGL~LH%B<4#3g9Wol{~6m;AcOWz?~Uy_WA;rt*xJorv!uGq7(cD@^FZ$Hn#N0qY@+qNSzf zz%yMf6+eANM&4-ivrJ5yBeW9UoYDD{bq^TXSXs-wQK(upnkB9xTtuVh7JuS<@0Ihx z?5`0OOw;pDSMVXq?F!mEhE05i6z*kAt((O?Qq^tHv7jq>7~7dS9>FP(CUm;Bw>~+v z_8aqkv_8Pg@;xkBfs9r5*MtPhE!zitPJDloO0}YQs!}~ zb?W>`C2M`x=+vfbyz)$|oTWaWAMnmmeZH?AdwxJMpI@y)Bjc*x-*A=i-O@vj>Q#S; z-tj%Th2b?AC8%bbkhbNxUMW{aO!(BUD{*XWtiS$2n&-ieQ-)cU^KgB=lvBt3kG0V> z0=Zdd48((vrHFNnXw2Kr`eFz2M!ni?GQTG#hUD)^UUkr^4L0?(wLNIhu`_;!!mOGj z=Tl%lg!n^lDJ*|?S$r5rVNmn%Nm%vrnq`Gs@#Z#epD8-f5|5)uuy(DRA}_`YmFDL#uc&*H3j;qm*P@l+}zGHO`*JNtE;HR?&K4ygEMQA zS2W(`%RNi+{+Lq>%koP6qMBalX;Qk4caQN=6-`aIxe3Fw zow>~uLqRp`3rj2scZYut+XRm`bD;+!!USHI1NdY0($do2pBx9ODk&;{ejya5E@vUZ%iG=CtHoL58y}yMvA(vJZbq>7F#XP- zceS;%BjvM7X{V8P?Wz4^UQN8T=1B4@{TmJObJ=;x2Fxkr8eXUV1PzCb%yemd<7#R0 zT+px81{DRfYt@ynotuLU_CL4madGlhY;0>mO({AmO*W`|au)K7x3_n;3Q>SVPl~8i z63YIi^gV8)k{^qUzB5fY)CnUR%F3DC^Ta6^G+qd1`L2zNsIB&+&%Av2+SlHIh^W#0 zWVNu=_=0nM58Lp%Mf2n3Pv2>TQ9F*(=0xP=dCv?A^l#evv&^-{7V4lC;Ss<0eg<#N zt4tB7E=|Mv*EJdU z<$w2awslRo`0hvNlSprz+&X$*99blJ8)P8Yn1+atGjM|DYr!i?%w`Vb}3f-$J!cHg6>)Th`4HO z!1kHd`+JlJCQxUdd7hr$BPL+}PP^L8!tg=!)rd1)oqG2(rv4VR$7I*8UQHBZ^Ha{8 zhb7J|MrGeqRF(U-!yzmz%)!BN<%-v@t%Za|1IJs}ksCk8Dhg7eq9j@tudG#1Cl=mt z-q_f%t~rI#U5VJ4-_=AWURMZv3|qf1K}q4sqFeUWahBM;j~_pNdcdn$-0*w7PNXUu z?}??1np>PM10!Q|bMtFCA#{G0J~MCJV6(cKT32tcL+ve(8U@@OT!3$`!_Ap)9VKaM zwx@!gveU`kva{P1hO*Bq$H*co`n)|tV>NBSMStsxQb83Fk$_{s#*Cb*HjUldwk1ck zAKmjJ^O|SvqNj4czQ0#@d+ZIb2H(lS_fp=YNxx~TIwdZd<9*xh#U3Zx;f6pzRM`4d zL#hMes?NPK-Vgjk94!lEgb760*wQAi$@Q3P!;i?FNqW!bJe04ah^ygXoHj5(>`$Ef zoZDblk4n`s-$2{{bxpZ#yY6hfmh{al(o^5(cbRBtlu|!`{yfk+HGG;-7q92|0P|hx z{S4n=_9OL{0g)gs-#AZP@^%GEHtN07Mk+x|6}{(134UJ&oMJk zzjd7uvTbuD;5U04!)~RP#IK>ElEt{0XyyM6f2!C0>$|KTriK0E-#=GAnV23RhNX>3 z|LYa#Y5U(m9+2dTnUd3Uf?zAnwUsEEqy5I!;~~3 z>2PvFTtckk}s2&AB(sG4Tcfk<3`c>iM|NxZ1B=_AzqzgM}} zrL>`qe{vEwTd`U7mjA6=^D!5$xJ}ioa9CV@+6j2xH!wm)JWK>;Vo&)R* zVUOAC!k7VFzIczupx;j4ky-n^_V=5x}YqaqgDj?S-{_4H?`CD7c zu!Y8|P3i87+|3+&5*tfur!$?%)HL4_?=oC4Tx4=3<*`AL@l*VTUC!bcsi{ys^`FrV zztW+K9o=V$6}e7TsQ>!1{!_QkR^nU#UaL4!ug%%kXTLCScVEn0GNJ#I7)|Iz9A(2U z(iNN6`NrmoGY21*8^3B1`k?T}{!c!Ab9ZmjkBNy%_-Xcs*^qagTOb~pXWIQ`l zGw+{U3G46A|uY91T30Bv*w1f&7Fy1Lm<&nu+jo&LL^ z=CMY6C@DS>xAAIsW;MN!lamdO?>+kGLW&vSX{WWxOWF#lkr|2M;irOwgA;RGjI8b% zh)lm*_GmIBgWQh?b^rVS0U-VzmqH}QOl3n{zmgCD1aXG8_sDUgFH;XNvc*1B(tBw9 zDU(1=K-JS*p;kLfN2nA-FV0pkkA6^fnK+Zl4winDNA@Y?t>c7rMsr`{h#MzkV zJiLCg)o;pHv|I%qmo8UlS`8N%tQ@iOnP?j)*-!3#)T4U;Cj4LPrND@WMtg`ow&d?T z9 zj=R6r=;-L+ogusB1Zy-urCZP!$ttR>8?X6JANvMG&fIe1?#qmC|X>oOvV11T&sD5WI^2+;!FcOIhfwkdRQpchZ4t5xGY@zYH%nw!Hjm zrg{;HOh=izU8-ccx@LrJX8*fE%016p;u|3Q?`PD2iZw7TMXS zg!CjREp)yP6F|{pRt6&%cX!6RdMi}Fv$L{lQ*A}S5*4^}{poR*cyzQ=e{}g&1&)@n zNNgQM#4sUK$diWn$@9PKMt#ICP-v3QK@$i$&!z5Kb53FNv6_l`t(nUniMQR5k>LqJHCD~vv2{C0P8iACL2r-AUhwLmW9X}ydZ zL(r1tD~S;iovh0q4ZeK>>`gRVcXCrx6B(mK-<p2G(qQ+ot@n$)dl}dO$EV5vBCFR1hz%p*$hj}RnTGdVr~!Fy3>IC8Jx30*TA$SB_$o~ z?V}f`WHndml zW4z;YEp)%(TA$5iy7*rBA{Gp6G6`!qKjC?sr}G+h$~B|ttG@D z;Z4x!{OyUKQ|i<=l2TI<-@g+cyIsN9LwqNLx3m_MGYw&5n0{F zv6lKn!b6LVP{sLYB25UXpu_!7Pg!gz5doP@)`+qYsXnUwJc7Yojk@5I_q6z?Wl-+k z-}^nQ^gvcEGvmYqh)8S^kHKBLxKc)ZCh7u~zy8GxFzVoNySJ6Ik1pj-e`Peg6%2@5 z78&gId)M{MnKOs-Mwdj^R!2*x;RV2aqi`{Y8v6P}*(&iZoPFm~d}EoA5HfF6V14~DgZLZQiL3DYA-ot>Ma2gd z72D5wj9N&nF|x>}cSWXE1;HoB`%f>OEpx_51@7{4asoJ3vNC-GorDL$srY6(*a2 zsGV(%hFjr^tf?w1H#tj(*fy++qjvHe8yjiy5eWn%g&AdKWe*<`!1y@N73m{ICa~E( z__+QB&fgzg*VKGWi;GC094Tbdj)K=hJMC*Cu1(H~4=ipZ^99pCf8LnpM_@t*E=fqx zovdLIzqUl#iEpt*onbd(By{-o5{%LKc=EdSAisHamqfV)=5VV^V81JW1^XVMzkQ@* zjc=Tey3E2N^J|_$h)9(%#TR*ZUpoeur)hO)urc_gA#g8B2O-;GW3l>cE>6a@(ot^D z<^lELMl(50zKjW$;#=<2r`+lJky=MsmX85ad$A@ zsqZhRd9(PT&Be6#HbdvUyu4c3Lz40S+*J(1;`>;mQPPx!EqUAPRmFEY$@~p5!aw>~2IAJ5K-n$9SFD%)D&*CF{?|rKsJti9H}uqI6&v?y&sd z`i}KmxbS{h*l3Xni(=L3)&8)Wv^7{^bq>Ye@i}IcFN~eACoXroTs~d)s(WJ zb#S!Q3V1G+#-O9)BvSR$JO;hVR~%rdE&2Q~o|*4I>CaVPKifG&9{EJTGXIyn_O0bb zmQ5btk|1Peo+(Cq6573ovD7yTm}W5QbK%GIi;YRAeFVSx zyE|*+qJN)ptwy5oF-jQ+ZqG#VJR39|5zlkhOOBcAZ!o^IpER9Y!VlVPP7*1MQa4^)`#JdWb&j^D z&6n)HK5bYf$2&Nr_W@zG4@8nN4rDU50r3)$SXlTSLN03YB*NT6n^!vy7-!Uzw6w2n z)x{SRG$N~CA9+r8^(t}xDwr-DKP*uqIl?0iz={?d@|r;Teq)Q^hL-93NO2vM_1m{^ zM-WjN3knN+w#8f!@$2gDCLt!?-rlzLAg#kof&F^w&sMzKsCit_X#e>4Lg5}esq43| z1GxpHzYV@gQcUM%R(5~vm01Hhro7R9Wad8TwMt4#^z`&wpMi{;A5!o|<1Tb1Iav9W zTU%OAg%eUZ!y3ZU06s~R3C?I0{XymkJ02)=nf#ML|AtrJgWtVnh}zrS{1E((7i3*n zx&}fbBGge2)A)%O^4lmQhyXMU47^uQbzgAN?|pS6I%xmf8KDBulcpd}$^I|FplH8ypY7yHk}qLt#J zbO6UB#J_m)1*mN!$@dZ-sF}{vk)rA9N8S~i?eBW4+fVfpY;NzN&C{mK^^0_nYZKMI zpFW*MOWbGYO;Z5n%V7o$ZB@}OFP%x0qxk_jTg zI(D_Zx;igT4?9FC17(UB5tor4pmzS}0u>DnDur6C4d9fEewMgt3{QhXy>^~2N zZsYD|D-Aq&qYgBVHr3!!igV}6tv}$xHMIZyEuf6rW9c~*eNKUzK{%410nP-crVyO} z47cX)FHfKeTJj(NDR6Yd+t7@3cdP&BLA0m-*HE_?@?Hj=S7^;rqRPAggI704LfFtF zQQiQuAa1{Y{d)EGmy3yl$m~&p>G$^n0jucGoz4OU-zNXb_t8>vX6dgZBX4b5qkMgR z0m;pco;)km&79eg@LN|W*NdT!tZ94$I8;mB1e*lCeSIw}9s47QX*@kW-~U=neLzYN z?T;a^gN^cZCXf=+cVw`7I{|q>J%zuN3b5IF8{>>LY}OBb7h{8Y!_z zeZUQxaN>ITU&`@rJPRL7>sKoiEdLyPZN@Cj8eNu(OhsoQ#bn)rxm$^c*xh z-2)6k;tgW}$kHXn@}59JX*k-Q;MELdxOV4a?9z&b^5fr)C%+ZzwJ2KB{8yZqidwY7?5FYf^dCZ-TBkn6vG2p!iJ`Hw_lroXE zP1qm!5s`9E63R@YZ$c=)l|yg!&|z~62r!_EZJiEw7CmmhWkVvW);=Mt3j{*PuPwDR z2j8Bm7r$2q6xq?Bmds>BpjhuSLoU6YKclxhz>Hd%96(Kszgh+Ib^4Hxh1A= zi9U9qHGkyO>%15V<1}dleqb{d3QP)8JR?1Kfffhu3w{V&eL84{|x3^YDPu| zjezB?6;MPsuJ!N>SiSEaz!yGqv1M4gdSJ`R$;or=&gw{U7o!~1oF^bVt<6zgU6_@Y zmcA{a01~)rbU*Qj&$nD2{WC(X45>>`K~R_N?ju7EDU_bMcdNgBsO1rb(@f{AHwo-K z5&uhh%37ZYhZz|dpuQ-*bOK}0;VsL*npM6Ws=1#bv=QHFw;y61x}5$lEtW&bG((UR zUe-K}ih7n2ldZxKU3jloWzacnpfWKo!d>@f%I?6;zQNhGwVpYMYJg}4d;+77zj}3j z?it((t)Kh(v$tz-c?KA%`XtYMe#~0f8S;TkSP82fWY-uwl|sjBBvl@$V;PXUB(9!6 z%a~V5i|jVC42by8`d=@#Y;fG+RIEZ9V+i^xwA>R8BKoe!X`NlReFAk=HpeJ|=u<;J zNF@3pr5r^n?=9+lsnFx# znK=%~)K9+V@ro9gojlf$TEJ2r_q+u5BA_6kNJGV@yb{s@TV)6!9hPsr&?HsPk2yP8 z=XbJ@WCc`&tK+9JAWMLbv~zHX4uD@vU{2xV-#h-bWJCEv@b&B0J*i^VRaLH&wHRzq zecL(%`h4K{M0|f33lXVPZE1ET^0^XkZfs;aB^l$s;4sX~*xA_u`tqTU^|L2_U@!n{ zMa$6K?CcgiGAbe@z{Y1a;9zIvg^+CqGLYRKK@nCzx4gWsdkKaNP+DXS$bqNEWY}9V zSyMmp`*aOUp!)hgj*0@N#|o?M&20B8F+aKy8URo$J}lPnV0SI`#S7)sz}+7g1g&N3 zeAgVehU@&?%S8kM>{^?`-o5?xosfV)oD$d<-a^+3e8g3^uU{r6%yg+=2x*fG`bc;$ zHzg+BJvrKQ5@EH++Xnc>u3>11Z4iK5GN}dg*1lYY9WY(-57@1kgZ3{?$3#VaBv0YP z<1x@uRBVGg!-^uM_h-WP_x<1h0wM@{0@bb18k>gI&8@BT=%yX((IyIX(_y(T=B%5W zn~8}DP-NPdq2hs)5Gp;EXaXX~2x)b9^MH4SHcbjEs!# zleKL22t-UAreLWt0t{L}3cvtJ%N`fo0pEm^8&g{PGe<3{g|mzj79r|ueZU}?s*Zwj zjagyBH((irJ?E8$hTUdzxVIo zPqGTS(3p;&$r_3}ex>zN8u&#DGy;Lf!5p>%(*>T6R!&5dBbJu?@kMB5d=7!I1yD{g z3q3Qu*>mWo^T3%B3i+*n1y~7;*&`TQ_%aX>Ko!H#2w>b1K+;#=9^3ju!j)Zzd2_?x zUYb5Ru7;TrVXwGw#U88xFtaRKvRL;Z-QgSb8y27I_)0 zXVY)&qTw~tf=!84TKf2CZ<+??9EOW|_!Vd|a6~`^SZf32cCfQPDapd35Q7_idKD)} z9pa-9=s~cU*(3h^q#NM#1Ck4%MC9OMLUiq65A9#bqr!zh=Ylf>YLyM8v4nOUFStH? zGmsExne$6aFe0Mh$v5(uOeV{NU}9>vp`=Yvh$L&+n+k;Mao~C|ib4X#z6u3Uh&=%| zLFSPOJ~r=0AUL6uybfC~jzRpgA`T)72v;8=u;-Wg@M4vky{#4^L%bndrb8g0K@GB@T<(gZ;>p!a2L?hR z5Oa5Lt%PjtumLIg7$tLe?Ea)xiNx{bBE7ekQKzVGn)sF-B?d{g65d_?&?1ohE z$&sHB-f}Bsy`AI8sH>}4qb{@I7yZP3CTCea`|AN;MgC}LlJxUzW#?tgZ@=xol zH`mI^=@Df>9sps?G*rAD;wrRc;KTAYU%grr5B2`)M#=NBGpj=MkRqhP$_Mmon$7SP zC*3|5i_=qGZ7pa3BYlGk!sy<_aApYGeNvJaa_@aC`SvF@ zJzx0I8XAme;C=M)@-k~cRT+QWQC3rP`BIiedvpf6*vY=k4CwXalzMax$Qy;Ao{zZ> z^(EUXo_-WdO?i8~@-?6W2!CYo@gXGjpd*YCv~J^+UCFc%HtZHr{lOuq5TDIvav7ii zAL>}Z{a_>Un?1>1r3@M@%E;M{zdPY~ZX8^r2`^txgUvhp1KbF*PfFqINPvb+2DkA4rzIcK|_d zLXA0rKm8c5`VKlDD`j9{U<&!b!$+sJe?>If@V=D=j#EKi9*lbV3(L#PP`BPBa;?wK z%A3}Jw|baOY+-S6>ixY`ItH1bL&&s`nUJc*M;PVC-|H_~s2~OVWF6iQrW+c}RvC1^ zYH8p@)aYbLKJ5DS-J`zT^mInjyWtld0BJ%0x|nKIYH62ewEne5FH0VOWZUVnVYy8! zXs#)(AjD}=RND}5T)n`W3C`+rZ}8tkcIX;l<)Wjov$uctD0{FlmR=0}^N-s!q%OlI z=9vZ3PDCr+~Oh=z3YsQ7S@r?ph^Xr5S`tI2HmN#FJH9p+iL-OaR9Ft z`9Sx>94^ZWdyTCd<@k2})a-MyFlLSqyuIJuu>WN60Mf!0~R#i5y&d4ZbE zk>Pq6J2k8041kkQVg@j6Dr{K8^P_bb`~L({iRBx!VXnhm6QtS_N5d*l#`o8T#p6J> zhFgQD1G;5)rnJg|0(+FR~dNX1Q1Qz(E?13S_T6oTdl zq^Y2owgP!_2wuaAk1ar%SO%_%s`h02lLu4Gu17sjE|>Gp|we zo9Ew+;3i!qBqb%y5P=Z^Pq|e0(fu8}CIR*M&fea1rBl3!{MEzZ~8y_!tHrLV8PtSSz$@3<4ps-ORn=2J;-SRS>xL3_*-Xes1T6(F;FO zxYnVs68J`R1lx zJy-!Xm6c)9^0KoX^)i9v2gr$jGz`a7hG2I|SYOT064JbTSBgj7`};^Nwr2XS z>T$JSP6}d_tSC)9mG3^NUjnj$$S>!Kw|p7_{?xx7{?LOio$eS)&y$x-B}S!84M=|p z7M8G_R8f~U65ZQ4<6MurffSmW%2133Dw3^E2Y9nY8uk=1_s^Y!XJ11Qd4~f*^2+0E z6-zoH_HFWjEHAQ0jc(e9vB-T3es}lo_}vPXrIR}WmAhHBHeQLuL$)Pp$iNXmCBV;s zC@7pV4ED;aw`5O(e|~+{EHi5L^Xf%TWvMRPFHlO$It`$SmqQ_T$36O=5t&NQhhz(qdp-;ICk@yk2S>@zC_0rMf^*rmj z1s-2qr(%o+w3z9B8mIaZWinNqt|-=(qsIuIr=S4KAz%y{Hvip&VJ?sFL6cRO#l_xW ziwbY8nRh0o2M2m32I;#^lxE!j__O|5e7u5!LY>d|#r1VJ7Zjxz^*oNzYwhipMYxBeyNzmW-fpXfxi zGZaMvPH|r5x3&4S!!-Hr7iE!&P2f`l!8=fh==c&hcV|eW{6!38|85*2<7zj?AzQ*H zD9hj@ANci6NWiBL(I*TsD6kIL5`u=?Ju&ecOxHH2Iax1WYzi3_2*WW|tb+;yVAb&t3^69_ zeJOMD7paSA$H`&M?Xlwf7I8K}30r>yUW)U|6}=d4TQWuD1F!=ms>{kY!Sq}6h5y2s z=mmKHySux9ys54v;9#&+uQBgZ?@I`)23iA>KMO?6%E8gD-DQ(33fuzFmsDr~ZrDkL z9zuT#HfZRhXs#5+fYAh~8leK(zssg#Y)p$eE97jq|NA%noIur|@$q7*Wg40!aD_!( z7`g84y#v1TmV6s^Ib@1}gBysf)LpRSKmcmt)Q;iG&%-jt%8Zboeh%cod7AaF$ycKn zzbimNYtg>s=^>uU6wSuQwoo-{Nr9FX%FSfr`yBxK2~^dlfrQMSSHB)y?@|C{NZkc} z4j5a2NCF6K_vtkUD{D41_F&{-hQb7ilXCzJztC$X);SI4LQ(I0&gwS(9_iSZ3B1`g zadE&marhC(-B-Jmtv#wp*ZKdo5B-J$awZte1o|X6t@#F8|I+U??d=!AOUb42 z0gwmE-~VevVA6pXKx=YF309+L1poHqVYAcjO}VPobF-eLkHMF7eE6%LRtSJCkt$0| z@bUIbzz3TeC~sKl+!k#A@;NG|ne&=Dxd9fb}`=)_HPi_S{TZI(MeNPqEu(IU~ zs(E!fW--;A<^oC3$1>)kLjO}`mKZ>Fd?s(g&x`y(9braI${;N6t}7Bw@lK0sv?v?! zYHXvvX-DI);!uBbczI8edC_J_78Voe8OIVI3^+~S%*FP^pwX0ehf#YE^)5) z4xJ1aD3yGGh4%6jbd0}0Kwt~@ZGncJ^NifF-f!I|JMY6AS{jDJqE})ro@iLel;SIg zM9^*tw-@9a#1$6uq~;Oyh4a7xCon?a{m5qYjNKewKIQ#^Bwt6>y|9D~rm4$#M19?rlr{LZ3*U8Bo3jSjs>FKJxyrtG?8WR*CMQ!pj-{Zq=Ejl|X z)Q)nu;92KkiVGLSZQDpZ&-jd%l?eh1NtBzH2XJhO8nn`G%`1g`D(XPcLgg0;f-W=b zBd>9md;~zA#igZqzr&-WfW6#H9iUYu)6LWEY;1g~^Ak|J;<)|X$nvS;HHa*9{~(m@ zfbbYDWKTEwBW4ANMSuTm3mFnVQB3SZctdB;pZA2L4MNUY4C0>IV4SiUx|44}PD;(L z{zALX*EL0~e+n{^mG=I^0XT44iCE#toxtdDB5OYR9&~wdv2!yUnZ$R7&v>4|)1 zZsV1Y{M=W!^&8+IB^@2s!4aX5(*u~dywaM8Zd4lsXK^j)6V^IA8CJQL?B>-d^AdrutBdb~!l6&^-nWH9aY~K?OHntmdTsJbA z3TNVEjx%xoI&ai&K^H61au)rd*?dUh-Me=iRvfy2Ji(SrC6JeZwd3Wlo_TF@zmC zl&h|$utQMXHnz3_lDe=k;q`Ot>p@GO8HJkDuqR@osri^>f_Uv|>3UXgo{0AL^yF+N zrKhL=9e|~=san^tCNYtVxTNF>ID+7;qAB!EkWh`y-9G5mT$`@@idzKn13f$_vQTu$ ziHTVPHlsk41G)kZW~jIDg7wIl3-BfNEXhqoyl%sbUgx;&<8xI5-5_4+r zbN9|Z!YwwEBrW3#3&-3(n?^lCw{GXFLRLKgz*tOI`QAG&=^#&bS zVkuilDk3BfE1d>g^3U}ZWkApfN6e8uleF5TTcN!jQABBslt zqN38$??JKyHch98O4~xtU_3HFXw676$5cez#wn%KpxE?z&H}a6^XTn{F1{w!3UP@a zK+=J-k|ur6bnRxLnU*=7vj~(bLqlEXh;N!bsUg?pY4*ZFvPWp3O zas@XWL%J<+BMgQ-WaVifqZz`B!t&97m?y{U6)3=UubBt*AKn{o^)ldkVj}n4j*8L( z-{AMKCKuzmb2^Z3;B+*U@TZgi1c8A(lVuHdut#}XL25Ug71MThL)bf zYE7RUbbN2L{*a#aIBXLfklWo75>e^_ReH!j@M%CdE&>OGs8|BN4uB91S`iP7UJ$$I zUyeP)Ulk%`lD_*6xDg>|c6IQ_f+}D$~F*&A6TyBxr8 zFDRoeBwjPIVpE(QE``V7MT5?eN>a}Q?2|Y4H8O`ifyn|_$(%*9sahtJ-c9IlcOINY zv-g4<)U48R6Y^U0g*G7kg0e<{PY(zTgd^nMBSj`Q83u2lWj}9hooNhz@f-M29zT8z z8|VBL^;9VL2fv}c9JGdV5)>2!O#;>e3>qVkeV8uHX*#wx)dquUH%TbU%Yb3WV7f$46c;PatwcUB~sE8B&}@Z-3dy zNwPfX4L)WuMC6cS|H_kgN==*;N#L?U)XxpTHfKmFDZvS0IY^04l$4ZkG|^*iyb9~q z4b9OZw>M)4qL!D4?g|;L;6*scJ^)(_PLgc`h-{H>It6Ua4I$qjU%)X8F5n-H5#MFU z$H#5n+ND5q;JFVX0%~u)r_^H?_;oNZTmSvVD}ZUQy(@-JSP21)t0znY+ZIMHEx6!b zH!v^&d?tsYM$B~3Zw(ThLBy(%1)N&0^q5l=aux$|q0{{1~>KPBX=*of93!jHJfiu1}sBuZ7pD*=nGAUp{VXS za_N0*EWK5ky*!xL3j`XkVl1NP2bfU60?Gl-*i+hZzdY8zim%4!Y#EG#9n1{A9)MfO z2v(7a_I3vlo^4KJWsQpLO6tz68ZEGNL2jp&^u2xSR`y>F!`m8QGvwiOXhkf3IIGa~ z2GRxMzrP)V6?0~=Rv-dnXvPBKQ&J>gUkEw7fiLdE!~`}$bR)36_Y}l2R1K^)cVV#^ z0v$XeSYnpMx*yi17sR>;7f)4^++cO`+V3R3<%y6M;04AIP6yYEkdO--b zc_4?Sub_(FJdxZ5^ah-cq@bX7H^LB@6v85_MsRJ&#?U1|HUMqZB!-)Xlhbiy=EG@b z6`TshYWXQg<$)3lN%V2yHuRdn(bdx$G(mv}_w8Sb+4zihTm*R7ZV$->Xr+j7v9l}2 z;ARSFllMizpz?BZ9_b)<0C=};0uI{W-yh~`-rbk(-gso#fmnqeAFSy4?e`zW#;#3+C3-j= zdO*7CHxbJ4q(sm=cUK0LIzkp2PYxd^uY)}t+GT`BpMRtx5=56)S)?olq@Gb9u2Qhb zJi3JaCQ1nVC&^pPLfpOJs|Sh#wg$M(Who@mZ8cR@onb?QAov0&gb3F1`t93AyGt)* ze*dVj3O)ksdL~(Z`#U&8zz4wt^}s8{1ADM;O{UHS z*Y~x*`C=53l`Q6-v0slD4>Uf%wie-EDML~a-1Bp|m;?k+>VQ9KdRA*v1I5-SiksVF z9hXL@KD73ajEwZRc2vjzR0?J0SX1fj?WN&C_yBDWJKB7HC_eQi4MpSB#AthA!(Q3U z({pA?MH(hA@7SD~)JwT+$yhJxy)#+kl4nej59ts5ejYl78L8D3(~Q607v@duP<_j$ zuc2S44SY+MCdDNtW^@}@8FI%t7 z{u!|xQl$6QCRu>P#O7MTE1f{}v(koNC~fU0m5djmo&n6ByPVI#9)$eQH)`thsvQ91 zR&q7LzQH~S+^u4JC2{WbJxhM`ZZC_{hF^Pe++E6{&TnT3Ma4wxBR!_wFsn1g1<(1E zC~y_Y-TEqT=5#){^ejtdI5+S<@C=8RL)Hs-rD^E-r^bOk04f7$C$n;!8_-|^b#USL zUF{1#4ULEcI*DgIIc@e}Ainu@=5nv%f+CF%jVM_Z0sz%4s;wZxU_>=s}`K?rUIZXArgvp^-)t1BxjL&FFL{m z`tOA#`%LDt=XN%HU^%C4C|y2LeeUW0+;rs~x0Swe9nPBdNMrbL!&C|yZ3|7NMxB2+ zS`PX5z#zK=oD6}}7AdW8@`Qzj#mm!E_{tSn9Zjb{E;J%I*^_v~|L*|*b_A6wku+da ztB^P3y>`tXEXII>F5^AB=Wmht1pqCaA2Bh_Q@H=HAow32n$hta_hhwvSXje2(O>DL zH#H6k{tJBDh0f6X=T!Q^6y&*p#M2mTGYj93k?4rdX{fKy<_T2Jd6JUSImb}7s$=#h z^G>!N_M0^9o3HsVeKb{5RegnXPR1f<@RHo${gb`w;q9T%h|#XjUa!Qw$Y&j%SUj4@ zMl)Roi3vWf^MLBFyXp{jyNP)i3er#801#fF0??_ALN1F52gl&{mWcdKCocKlyq6PL zsRo(~fGD3=vdl0wMAB&1aB*?n%E8h-nVONO{v9}B!DoiOkUsSF%9AVc!xj1#EMMP$ zDc3}mD9r%0Ttd@M4L`!ZeGOGm_2YA#1fhj%9+kHYT3FR3;8BA)5lYd#NZHh`1(D*>}=FW-U^9d)}J-kEnd`@gkOvO9k zh_89h4Tq1w@lfDd9b!**nur6_@S=y&jeUrCX^(mE`uXZ#+0S;w@2kqcbV2N#ZtkjE z8{$Rx8Go$h@;bdHV*e(fH!sB-2fHtw=QDQ?aJ8(-DPXHaXZ}LqLKZtSOsGqIP>K~i4`mhe~@1{cXt`ExW4w)KIXp6-J8G(lBfS42Hnor1=f_{;_}rZ z$;Qd*rLQl?{;ps5-eTwLwe|Z&fs4PlEM^BbC1rsn@*-eN`trz#e7H4xefH+K^L_FE zKAi)$XhQc-z6RV|J%bNaO@#V8F02KPliKXHwU5;NJ@*$dn$||_pY$x!8{wwwwD(FcY*U^sohPjxBDu2pRqd*^vqyUmie>p_=yMQwrRjFRLrx4E6Fu@R3kZR!91aai;G-gO@Rqj8_ul^JbB_o z1aKN0)))XTXX)?n7vIfoAn;@^a2^~ug4cN-+%Q-?dBTJbng)EpC56BZlVbA=6Zl|z g2(cWM_fP)g&6YWNiX0n($LTS6y85}Sb4q9e0HOQQ+5i9m diff --git a/docs/uml-diagrams/ParserSequence.png b/docs/uml-diagrams/ParserSequence.png index e4dcac6d3c4e0d99a8931742f27606321c2d23ae..8602ae892a8e3cea8d33d98c1abc002105fe5fbc 100644 GIT binary patch delta 543 zcmV+)0^t4noB@iR0gzgMxM@^abZ~58Zgh2RYybfO004NLbyD4L+At7*_g``9UO;Lq zK07t4P&Wz^tkKYb?)h*oskOw8>@#Ek{T!0E0k*u@y8C^dbB~VEvM+M+suF_K7~YwK zK*`3!){zBt$5WI6r=%)TGhD5GNp@pV{vvx-LD~g)c#t_dH<`eHr*uq1ygwzc(7J|J zU)uz^OFyS0A&%ZRlT+acd?+t;=~xAdj-`wa*B{L5Di0R(95dHF%3S2Y`y@@r zCl+mwCe+5v4kSH)(-D}^nanx;?AsJunB>~zZ z&ki+;pjes=$!aWElHM7ac7@rJAyHoT?<>b{o5$vh1oC@P=A&b@?2BBys)QglhIeK! zP_nVGbz}kE;S^=SDXB`-3|DJklHFL8zsX+JkmCY8JjfiKn@r$;OFE_@-k*|JXkANd zuEzwqOTVTgAr9U*lT+acd?+t;=~xAdj-`zD*PqPmIu91}95dHF$Xw*W`y@@r zCl<#ZZK#cz?MZrnrUNjcGnsSx*}GkcQ0^#<*v$R!IWJWf4ZeNc{{*4Xx%fNVW|p6x zYZvhtK=smzRUTGi8$Uxu)+wW*e>><6Mz_Px+$xyU4*GY{8%CpE)EmS4`v&TES9IdV z2AuI$5+us8RXfjt-xW)&5Po^hs-R$4l3qUjcrUJ_GLUW|Nss-4rmHF$Gz# RPdNYp002ovPDHLkV1i(i^zr}z diff --git a/docs/uml-diagrams/UpdateCommand.puml b/docs/uml-diagrams/UpdateCommand.puml index b7d48b71f9..87af5a7c29 100644 --- a/docs/uml-diagrams/UpdateCommand.puml +++ b/docs/uml-diagrams/UpdateCommand.puml @@ -1,6 +1,8 @@ @startuml 'https://plantuml.com/class-diagram skinparam classAttributeIconSize 0 +skinparam CircledCharacterFontSize 0 +skinparam CircledCharacterRadius 0 interface Command class Ui @@ -18,9 +20,9 @@ Item <.. UpdateCommand FileManager <.. UpdateCommand Inventory <.. FileManager -interface Command { +interface Command <> { +execute():void - +isExit():boolean + +isQuit():boolean } class UpdateCommand { @@ -28,13 +30,13 @@ class UpdateCommand { -newQuantity: int -newPrice: double -newExpiryDate : LocalDate - +UpdateCommand(name: String, newQuantity: int, newPrice: double, newExpiryDate: LocalDate) + +UpdateCommand() +execute(): void +isQuit(): boolean } class Item { - +Item(name: String, quantity: int, price: double, expiryDate: LocalDate) + +Item() } class Ui { @@ -54,6 +56,8 @@ class FileManager { {static}+saveData():void } +note "Some parameters and methods \nomitted for brevity" as n1 + @enduml @startuml diff --git a/docs/uml-diagrams/UpdateCommandClass.png b/docs/uml-diagrams/UpdateCommandClass.png index 5013c8d58755a31bfcdbbc4eb09060e0cc5240ba..1c5343da1302b9596bcb38c84f755fc47bcad766 100644 GIT binary patch literal 36656 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 F|6gIgaLNDx diff --git a/docs/uml-diagrams/UpdateCommandSequence.png b/docs/uml-diagrams/UpdateCommandSequence.png index 54b543a8d5c70c21d30b3f141c0b589b82acf70d..e2995a76629ae22da3ad93e4adc69167efe4f6f3 100644 GIT binary patch literal 36641 zcmbTeby(D27d?v7D6OEhq=cZfAl+R`rwrZQASEEu-3=n$(t-#MA>A>A(kb2d41V){ z-`{iZ{r%y?!!UEs{+zSV+H0+S#t=n$2}}$k3PrtWBHW9w#VWbB9_VPtJ&Z{TPIp?K{^Ve05;>%hapVryw&?dW7>$!ut2<@~*y z91Njo_EO#P&({%dfpJ_@^IlrnOg+W9+Saqn))OSUk7Qc&L2UG~V~ODFI|q$R+KC+H zR9(>SRu~P_{QCrX3rexQQ@8DOUfAiQnwbg9Dq{gi0FH%~$Ym!UtMnuMQYLmkCZVdQ z+83h32T{|+flsu;gqQ>(NDnTy*C+{ zN#4!(erdq4ST*Hnw+!O-nd@HCSL0AS10#74ll8WBV|%A>UxV&XvYt~4xzoN7KRaWV3m2BkQ`LPn!3KgR8 zfGww2-qOX4Ws#u_Q$;Dn^t&0kao-}=8Pb{<%`f65tGt+wBsFrT^XvA)n-Ev1h_H3P zhc-68Vdy z&~zqEflx{3dFj?`Syb11sjk~jN->)I$AVq2W(F-=^3Bx0=SSv9<*5!dAMxm3H;kt~ zK*ztE<$;)%4%<0NyM?51=W(r8@hN-8GFdJU8#{HB?3(PC-sm6#kA>$!I}ha^l5*ZF zT7Es|r?36cpxEB5dTJn~B4KeIluez1clji37{n&y3*kL=#Bt6Mtd-#IKr8886-;V;#kK*fRSrS1U zBq1D8tXNs_1BssCaT0hPO_@oN6&Jjas~$|VzZ`b(DMU%7^#anJ=xy44v=>`}i+Z#} z@Cw@?@O?^BM*jmoQ_bGbg@dNJDmg*&5BHXQn-^L66jZ+-vJ`Z5hDQ+bZ&%qHMCH(m z?(mgMq^|7Gd`f4dckZ6}u&3wE8IBoB!o}>~e#M8{kwnoc$dtrJE2eX9^);=>V(?ux zrk;XUqjSlJH)!~GGoBl(bhgbN%V#U4)Y&DSxs&labqu!FrnPuyzL-?AApB^;=hiVI zP22 zXJd0x^_NP%y-ufHjt#L%20nW5Np->{vrH>PjP5ezK@LW@7iTZ z(G-v*x{rZpkY|vTO@zNY6B6HTtHg>SonKs7W)dq~E6c~y@l=sj#^}@IhsZQ4V~3tY@OWIb%c`638qid)Er+>4dfP|@puoMf2<4|i3G^_m}dXIoQ_Xgmx4=MrkR z(+g$^7ZWpWI`HWpN!H`bhQY~_26k&!mHsL9XgB+%veMDn+`URR_^<;xkWwxFrs*Qz zp-)(tAVO1`B>eGyt3z?rzeXUWk=vTc3;T0~dV6!_6;7SMMo?#s*nV#@UD*;=V^n0^ z(n_u?=%;tr!^81_cOG)lvKWJ{Tez){il~V)_I&pe!m8iZP;t2aNv*naw`ixH@25WW43v20&fE;Ko~dinDC)dlQj%P4TD`FX!6P|1?aIKs zMoPU-oxYOK;3|4P_2o@xA5rOSlpsp+3_Gl#G$Ag|XcmQ^u_dJdkG*%Kic^r)g#|`9 z@+qz+&S_u#NjUAbtluEH57|D{*7m!lz;RoO7s(c>fuQ~uV*%<-3dFH~*vs*v(zv`= zUKuDG%U%U|O!@H5e;Y#WaC*@%+)zVZ#_qb7VDx=-D}g1r_r%cXAX9%zqh*fX_VV4r zyyNzRr}mQlp#|~AX*$i8@&N^nR1XopmtrniU!+yL??n=Q6e@4vx28M(?l-P-Zakb> z0ne!iN~{v4i8K7U_-=V^hiXTvPR%ptkboBo)LZJB`23HXHiLGaqp+&Yqg&2)H3XP&dF^1Lm=6AG6(`UF`?!2 z>!moFrTBW@#v-IPbC0pfj05~8GD+z?p{SeXr>EYJpt|GLq>Xj;G*4B|WI%w3oU6$N zV#>9s$9Ea0V??~zSpV|;T(rp)Z(^|J-IKjpoua-}3Vwx23U$j7ttCSb?1;NbPZ#;t z#*~TRnHmrA-e2M5${-5$KAS3uM_nZk^I^TJN{=GPyKX!{taXkH-dSCa_4G~vBUVH= z>ntF+tO!-T4Mq8e(#HP)_iQcT+p(dDK-vTPS@Smlz+Ou)Z)d2yXr7I6p&i+^N4(70 zYs+arySplOL1j{>T3JQY5>vF)qQ~`))|Yf^lMx>_S#tJ)-d_w6;;(-hbolU>nCo>G zIVLG7^DKkKx(1`vvX8R&k^S*pa(PvL3Lyxv>ungu2FII|RvSL8$+7Sg=I~NFt}BLQ zBUHnN{LM zJIc_p>$~lVWs@=1BxN;NA#EeZ++8+a{E*LV@nmgyP}ca)(h@np=i@8t^e*-2H5fAv zPpi09^5>$bSaQ^>A55Q08gdXy*k)F33RsyI9P8R#cFL5qteWQ3%0Uy8c;ns2_O~aB zHa2HN93>_xCWZ{5hsmc;o;T#{ItUC_++{mF)Ru)>j`1Myw0@@WalPM}6@o;19}~r_ zczY88%P~G9BGh$%>pP2!)tz&{a88TS#P=E%cGe{g9C|(*aj#Mc2S|&gZdrrdbzBQ!>$qwhgqQCNr`YwI_Q zKr|Ie;~4Qdx}#ppb-g>ffp!w8jlBYDAt*j|?xG0^DR1_5`<(}fwqdO3BUoo6@C{>h{FJHuYDhuUvkc{y+u^E&TvCevGW zowmLW5BA!f_dVIi(Px4d59fL>_HS%(S|OCRyWa2mC;%ZRz)Y_+GYBoUYFj(-<}$@3 zB+@n#k>D82*5<54& zbzhHA+UK>&pQNUkKI)aE@CD-MI|~a9E%)p(q$Sf!-u+^KKuMA<-WH+yOKjZ4V zNWQZqtkS>nxh)K4_3-$y4_m+U+WLAFRnAD+eM;F!NrnPGE+YeVU6?zVW$mAIj8fji z)NlmKE3iplytY-aWl*bZ`DHO%7EjKN>bY~^}QrNI2UlmoJ)jfffg^eHiS8WeP z+-K@t15<8;DXsZA2*|HGbL9JSVXXywH&~w!5f8f?7QDvg`tm^&#!}p-<+Xz~@7`td zNRB_M=<%hCg;B}~8!Tpiu(fVdt!CQJ5_586H$&i!!)~42GQqMVgW0ZQ+m^C|&2j8( zPm`zlCU;AG=cpW?1r3yhjK^NRHF2U`X_w)>T5Sz))g{Ru@wkOBD)t&NraVnbcR{Ow zh@X$;dE-Z&(GiZWZ@R6QyL8;GmS=r4Gk)?km{%&cjUzp?9_N*_HRdNIx*n;WV)^Og z)oX}k{FBtLaOXCEjY1A@PRVk=hso)fvw#MetMyEIi9SaFNe3w`_2Mfk^+dD9eoe@; z`H?+4t$T#&mukxEwPsHcHxiSQW?x+QrTLXP1c@P;r0Jw_yC{a{JAKow6e^Fje$twJ ztkKV<*;ceW(8+oz_S|tDvNlT6$4)>46MuD^Gn}Rr>KS72<_g4{YY@olZuw zGD97m>Zfe8L@1!p+pF*jW& z538V7fyQ4~4tBu^i8|`|&-KUC@Tpff*Uq*kt>$}StsjjM$$Q?#b9gqR^pRMv=wp*o zcf?$sWZ9h?hi+H64Ytl zv&zcO3g&Y?80~AnhvQI4>qMsH&^NiLPz3(lw2Ju5E+hwngeE50 zJxdfWYep=>q6@PMec0i`LYMuwwuzNBUk}8COAeJX4(a^2`B#H*jp9D2c%wUh&w~Wi z%U{#@!{v^c$ZrV)&CS<+j0+b+hnhJztBwg*PK21h)zJTs$!p}P+19=(4C&W%9Y&zQ zg;r>O38eJ=nGzBEyF!z&XbolFqkR&yfyb)iY(<39qINWFm&f-Pym)xk>gt}BDHi4L zCnoB;5w^r(v1KPgACammvvpICj9BQ9Km+#aS+lLh!t2VbV^Q*I=`J%|P%$0tUFwR} zD@t3hM{J^V4G)YN>Wh5XrK3-0%snt>sqJHnRdX7?B*@_)2hqtN>>bBpjl~rb%1NeqnO}c1}9|+}_Ne^o-i8_0e z>o413LDmrF3j-M^uDTG$1R06-?w86c*QPJ2Rfw3@9z0N_%OpFE<9!W)-i@PJ=SO&Q ziu+)7TyG`sJNGf#7}=Z@cU>d8Bxx$l+RBuqM34yg)L0ocHM9lxH|a+DFPl2RFI^6L_iFgmI_tthoI?jvSz@rw3^{F&M>zCT~)g0Lak_x~DEsLLQj2~wDu!?a{$J>avCE>J+ z7Kq9MW$}Z1 z#NL;AI(6fZOsx$TermZGcWbhu2j0Cy%26p@V_xo&VIX3_fOp~eBlwnK7n*|M;MmTk zW;MmtAg^0Sc(9YL^IMc^ji95H{tNNNrz;6E37;*Gu&`oOOCGS>dH!U0#gLfNMdPE@ zd#iFq)|sSUKRvWyC6uM*F-ci$B~<#H4LxPJ~s0f!@{+?*50%j zqKJQgC=`ULb@B7OBFnKWuGQLnw4~YJ;t+#i8GuS>L2ni>md0*iRl&xcYhxV)?O#lX zd)Mio2`?GdY8)J0!jpL`x#>7PT(Z3m%@42(f@Pac#iVJu4NXKF-M9%o&F?Rlq#g_> z?G*9y4rIh5^E!J=04_RQx{d6kFDr2V(HU#B$otpiIW;9OI=b@wR@vJ58TQ7~>dU_F z?n<#~+JmxJU&a7!ed$nbGci$DTb8g(t)M;i^T(p3cakdLttqmsc`4Fn>u&T?%l_9^ zL>vtXp`l)1-x07lSssiB8c|yxy)514n|d(TT2xiloT628zbI&k+YX8RrGe)`LNh4| z!ZLwV1oHKdbzuh;3Z8elN`=k1xw0=W zez=?il&)TsG_D%EB|vg@*81>#g*gLl1-mWsSht|{@tvd7Pr+9r0=G@N+m#F#fdNH& zX4n(({7ai!lBnyw^27?u|lBv(aZo#SF_8$^RFGBPOe|a z*>;79wVtDqfuX2BW_4Viu$h^?rap1(_1JOw)_Y3u10?cd4nJv?!#H&r`K>AORCK`X z)|zC(h&qCjxGt|?hR8vPP>j@}f)$s8X7C-hT{{b3ro7OL<3vO;^5t(CTv=*|PH}U@;Z0 zaI?_^Z#H*1-=9%z@6ZD;i}Z!tPl;WhQTSZZW-QnC5TLaIZ7okEW-O zhS&fwNJcr+zA!=FbJOgKbO4>hLZlt27 z=%wOUVWwiH07PLrvBUQlIH?MBqDQ1`il3+^W||p+w=;EBq6QbeY&QLu*rX~yTxBd6 z6%`jn5T%zG=xR9%Y?}Z-D&dZH`zS~xwnzJfC@c*Z^ZSoes_E9LcSwwrlNbs^Lqoz| zcX<&Lv=YpMur&5*lj7r-4`k$RGnJ@XCRLyn zwY5#><+h&>iD3huMs5`;|2&l`(&t=ID?I3rMF0En;7R5WI9olCXcTAj&Hb5vUFXN1 zzSkwaD6(&&GZ=l6nO4a|ohre{{Eq3}ow8TMZf(_12ijrSESXwXR>iC2lDONvCco$g zRN9$+GJ;u1G}_@XyRj%qYdV@moOH0&wz)A@%h?f>v(w*8!SAS_Nzg&q-3d^)s-SZ3 z>tY~TO_Riv)Ygm7bA2Y>Id2!L}$-4>v@I72l4!rI#^juGc&TDzn8{SME+dXp_b>r1H-~3KQK2-%%x1?j^}|xs5o=G}dA_ zd=b-Apb{e1vS6^O^az>5SgMV)`~dN5Y4?i_zZDw1MtEVZW~;lg_iJ@cBrqia*bR0x z!&BX7J30xg)2+_B)rF=ao@`!{#y`8qUfOTJnAlwmWx;{T%Cp+c$>#&KQ!P~fs&zaz zST_=280%>^u=*!K%onNYZeMX>z1DtJAI-7Xhtyzieob;lkUC4;iGK|YOr2B=n`fNn ziuiLwIv>zilp;bYM@cuYcyu3oclo4B)d@37acDK{G|^`@yH`K*{tacJR7p;kmuh)r zxi)H-j+wfG2zv{wJx80gSMk8NaI|~m?f>~RDPceEb&;1qGGAQS$I+r;mM7!s+~P|k z&s8bHp5FJ8!8~i~H|fU{7wk-K9`QYC2_wGKnwWQOF2-F|%tCzc?CW!r1+Bc9JRlw( zh_M1Q{=6@Pl?!?8jeFl^=3wr1Z9u1x^mzKTl;;AU{NP|HiC(K1)mc}b$&NhJRS12O z`{3Pp*`eL9^6wp;T=IR6dg=_UeqojjS!UO@yIzVr1?cq-`S?&yxxmVZg%VvzvDwSYoE-D!K~#bCO?!4?DZWyO1dRyjt-Bq^vh=94|WUP73njE zMRM6Rc>r6ztrf>GLi{x?^Y&-bE$pTTNg+T^!6k*eqAhTIyPW$GDqeV4?g6qA z3DI4+Zqeb{Jj&z9Okko_mrjaY_VTZ{DBKEhXdQ3_$Mv0!E`C}tC=_h7eZggxoFSg>Vzdd z0YMSM?-CKfNV!Pn;__f19w=?2O*A=N5NVe%%#@J5I^`aG!L8kKQt|Xr6Djw$48uE* zq3c4WX%o{KcAQ+VhvT$N3e`oL9CkYqkd5F|hro#Iks}Mq{zz`=7E8rd#Y1+eGBPg(DC9>~qb;7DDI-G_@|fKMnq7)r5jjGo^&5G!@_;m}K{zH!rYoT0cZ( zJ(=c=+otinllF7jzbIJQ`yt^I&x;`MHHIm|VwvLvzbWLSi(O15ZPRrPVl~zRtWb+7 z3R~E^$cnSx+~Mfl=eK>v5s4CCf1nLX;fqWCS@c#meG0Yq%E?2G5=TpJf^g0cOT;f#{{||udY*y zG!ELZwn{xf`G|h$VP%s5OeN#n&!Zz)@T@GewKktQD|n!yK3F3k zVfF6fY(PIcv;8(N?d%*^^m1)v|H&^=?B^mp;$sPz7+!e}1aXols+=x`z)TR2>eX?P zZz7&8vwzk2u69hQtWJTyRfZiw^9$ki&evQ4Z=A1LRK*&t@p(1(SINJnJ1)NtNA(ck ztd4F@bC9dc3hjJZ{*wn_8>tJ49%CcRM7P}jqr^&&q{qyFzyM{gzeGhh z>bPI|v~Jh_IGv0wrV|bg*jIIC>avn?44gow>>QZOkmb1@H2ruJ%k%tIp=!y{%;^HV zJSomgEiFc3Vn){Kl?pxsYSD(~!Hc2MxS>gi*JP%WaXj2t0dgAiX;tPA_CM6ytCbG`ny~GI0>!-Z-bsUkYus4m~xjnH%;>F zteeJn7DV~?GYqNQYip-|cq6QMvlz6uX;fYd%<&fLR{vs1TGyyzOj>u7%fO|*kIifq z3icqF#^G1OLLEzpPr`k5_ZDE7N=M((K{nMfi_tsHHH!$$X$Ir;pqAkX`qPuEev zgWVM^f<&BuuUm>UF^RGFNl!8aHU|#j7&p4>W7ufy9-G$s!TgA>?Gn+jR+)L zp*qXK$`u)iXQo^TkFbbwb9Ad`JzSVhjq_hRP1N`ov|hj9)a2V}<~=G+KMi{sb70x( z>ErI|SnRHgie-Ii-GfvZU~806>dk8p!A-EkeGNq#E0YOH;WRiKu``uMIn=;wJz4k? zv^XWDUgv%J@Koi|n*_&8{bydB)K#Ji?2p86Sy&U5f3LJvCXgR`>G$c@0;ymS4PaiVuvbw2jUO_X_j^?ye%mnM64_IEV-fZ*Fe-`TOtx z`XyOzF<$zkXs|@9u4S*2n1RZ{-roIS)xgSXw%p*0VOMxmrXnd2a`*6J(->G;?Z2l! z@5tcu;B2Dd&-pMy@{IDI%hxMo{PN{XP0gtsiHLY+9U@XvIltD+Bdw**u$|e)m6a8j z<=%&JQ3eJEP$=|x2Np!}ffikwM&({?+B;81nG1Y6`SPpTV(C6yD!+e(-rodqcX#)5 z^mVvAbF#6qAtGltRa8_QhS?i%4$?#Z)^LlyPJ}Kb9Hs~wd$+`=aV@sE-o%4aWwlei8*KL9Z;RKq|w{J1{TWR zfAGNdU{z_+f4EqKZIKG(%}>N-8a7_uMvvp|+S*#VWcKG?XYA-hbjB{56MIt@Wrgp1 zp-^;mbYFczK?E;XlgqP1ipZm*qfkPY{OHLdH5LmCi@3tKcOSAkEXywX%!~_K5Df-|_SqFk5 zYgkBY>vhHL%=3FT!}k>Bu(7cT2?+;&1q2{j@_=h+ci(`6{F8aF)@oXpUjO`PYtc#* z@#EUhpFcM@wF~6az=IP^I#wz>jJ5Ifv`cAlOR1m}44a6sYIqW81SyUpWv(G@y)@&g z_&16Gc%W8u%YDDQw>Md362Z+NbWupr`Q~fUTlD!q&oW#V!1s5-zq%n;_lK^z5iVEeIBC7QK`ihatuh)M ztAcqRCrLiKxuUmT4kDeSF$Nd+ynbP5<$wDVhauyh_Lb9s5J$408EV*^?Sp$BNW! zW*eN2w`XN!WpnkC+9kO$Obw)^r3D2)PgEFY8Qt5a@z8$M6+wP{bmZ*hbh%m8FL>mA z`jfCh%GG_IMYDSK>~N#~(eQg+VZma71>I?!^#I^SAf&j zzK9Rr3!4>w0p(vx|oQ#f-&u7*Y);szn{P9(h^YxY2+0pkjUT0_Lj)XMD)gBb1;r`yC%a6Tppccdj=div&%N+Ix= zHO76(gKcPjvDonA3oH~O_XyxQH_~rbX-482k zYiX}Qr8WMZD&?s`uUTiU15zr>B9+4;zQGjTYjO!gLil>T#$ue|)yJlj#ZY;9c~B9W zU3SPOsbBC-LXG?@*F?;pJ$vT(v@W-xfR2VH%A*-g8A}k38|tj|U#~gwxE)s&_m}&= zD#hdGV?SArqLN65eWx!hEIeEv4Gj*?)MKDPYs`dD20ma)8ZAl4kQJR{rKZgahEjWAmS6zA92>kfZwtp{382go@%&EiNn!ws?8i zX0FYEn&euAwCDbW(AL|?@R=7Jo>#J|RhkfA-#yWo2G6gntNZfy?Ck8uc$t9Lnd6X= z@Q;H-L}^vs1ag6l7AB^AI6U}87ow*YTV?6`siUBxiimO}(8P$S%l<)*9Wo*2x3MjV zM{prSU%!e?sJ@$5VRbt>cy+_b@t@rS6-EQWeQjxp%8F5Jmp%y%e1b9%{1gA9AU(bH zyBuZ13laVwez8=5}V20Qql}Zjw_x$=m1J3FHs5JPB ztj`1By#J31#d+%{;QxBV??TFkDxFU|KSc{dOZ7Qp$_I;1NsB;(KZwImgKq%JA-txE zih%p;v^P1G2T4wXGQA+mm3MbPtLn?kf1fY*{5<0LFBtbWdfWY%PY zXBhBD`lem)h!*M+k|YuoP0!n_-)%aj>}Qekxd38+wN{nb5?)HmP!8Yc*eHmxiHXa` zSc(15ZkwjP&M;yw$;fxA#>U27;iLu|l}0_H(Z+x*_x`(dY2j*bprMAT@CSH%kar;zpl zbeEku5Lxu$L~#&cT;i*hH$KcVHplSJ(gQ&IpFi4UJiOBd7T|R68gx8h>G<-EUek*`s&Rs z#N22UoizYg!Q^CQ-s>au4<6otEHzQ#qKtoM8b}FGkSipv=zPEVkAp>Y19Y{Bgcj>Gay9`;h1cxJ zZ2D}aKLa}h>*NQUaBHr&q-3yVDp#xIuO6!0+cWLINBb@&MeCRZR0PO1>xps$P%yp) z7K?`wp<B)CJ_}aB|*mL&Q3|$K0VzC%G7{qws}0tf4sE=>7E`ddi9#4 zlarH+i^QlXPVNj~$M=+#p}CRy_}4ms9{(hRpMHOum^XkqQ%Kf>rKZn~g%fJ!Z3CbV z{x^xeSuI}xnxAU_rSSpgncpt8`r8ip&AtE4fp4G?jz@n}NO%>1Z`6OXZBFVNbOl;$ zJrhDCuc@giTCe}>2eithzf`lv{36^+8b!+lXtmugz~WYo$Z3Xc1uc8w%F4bE$h)~^7;{-HXV1j_PZDk(n84mygn_BN`^~F2*hu9Mn4|# zL=g<2`ue&&l8CbUYf7H~c3=j4&cMvZ%B+W{OswEB+z;w&If8zdvNHuRc_PTVJc$eo zEr;KRNY*ug=rHvE`PM{1RzP}&^5ux_MqFcGvi7A@GKkS@G&q`VP1W@E^({Do(!JP6 zV*+dOBIR+U;O8?iD1Q$);DQWGv*?COs{NXSl?B%C@_3NJUld)~-`GJLDQn+$Um`5X zAe#Q82>oQW8Gi5S)%lKzk&)MK8|wVdWR=8=4*}oO3oHkMNd&x`tfp(TbMCn*dX-xB z{kCfYu7*usu^xupigp8T!9>s89NE3cw6rLqejU(2j%Uv*%tt?NP1jv-l(m{h?#?iE z`d?7R_@iPkCup;V2)G}ZPW)J3PmYa6YHMnGkvN?7X0F-81OkandW80U@oQ*bdTHzK z?(X_%k^k_=SBz*^$F0}M*WkR*yR45$9jVWg@H+RxV6gV~_SsoJ8XB=9cFBNkN>3Tn zxu)k$`FVLi2`|Wy;Y{v_V4m-HOI19;2}J8ae&8cgJN)<-Ro*jFsA9lkODmr$x%i`f zs!Xr-A)E1=;W`^VgNw;4aih;~ZaqDnZ}XSpc`LOH3Jw+tH$phjI7kAQ2P(Ud>`!(L zYyp^1Ow?GY5fUcQDWq3}jVcz*_>AhdF;PKf8F=mcW**R|wpPH=PM)fRpx@{M;&;9| zS#=N$iCJZb9Or!pPuLa`7KZEtwhZFJnuwM2O&qc|m?PorTxu^p#lACb)R(kpJ{Fq$8TXrc^y@T!ziE!ja zL_6Tg^P@8}B)V$F>bJ_GqN2)cq~jQj`(?l~Wla3mVRJsWWY z7tCW~@I48x&tcc|qkyjhiVd+{!zI%^BM`!QD+pz$MUl)83`E|vZ$_|XP%Vb9q4ZMb z!}gP^%dmi#Ec=*ovQY{LEL>d2YsJ?9i*E~6nzi{Mk0?k=zA4E)yf_@!^Y`~}y*jhl z-54#BSV4M3%_F^RGgVE`4f8&K5~e7zO8Ah3&%Iis&BR1?cS(Z!F^NJ{m?UZ_rL+w$ zk^!3P%~`~Z>?PtbPegC%1uz`RU0Jnyi{`A*43i}k%%(b^{K z9q8a8fx44?|AGarI-;_zNUbcHQ2*$F^J4{0dc;A=z5hBKr%aW%qMrlK&DPc|Yb%+m ztqypG41dpxf6uTcmW~PHsroi#&I&Hs(ysm!a9a*2Bcjc?|F8cP zhEC1K$ES00G?XW^({gS-dV9|2`Vydk#HSi|G;GMx!STANM1s-E_p~%#7w^MSwKiNE zM&f@hm!5kRu<#Du64W*2@_~f}(nj$bI2@pIoUa#^2|_C?E5Wa*Hex=e!}fVWw?F@%h6<@pmNmQ$&BY{tYTTO$v>FEIvcI{o;)7=o7JNtig_TuQv}(-7F2+i< zz}JROPPahq4LqRK>kvay5`qVz&YC5$IgsTa6EoZ%c&Cs_sPzFJ-fI&RLK2eHgoFgW zOm!sIOr;!gpNl=zG$d{xaEU*JC6;TQ{6F2Fjc6JfP-%>;t>v!<@>c~raFGozfJO58 zxyKQcV;%K_KWwBgL3eCIA}G)@Bw2nvPI^mKLOTq^BrpL6DCU~ns%&5_FJrQ^v%v)) zz?iBX*M?SCP4RNIZYj0^!Zld;8B{JyE2|I|5-G2NTHyWzTxWUqEXupbTy-}k@J}l! z-;^+mKl2_1y|l@Vb#o=$vB3?kNn)yw!7e0)MI zZS~%l4Rv)~=pSX^Q2yk}lMt37w^-0@zzBRwMdg1+DM62RX$rQxZEdP%qg1C+vK)Xp zxFdZ*{-(K^j}$y(5O~JL&?x>va7N5Hk~;OF0dw1XOI@ePR+MoxI097#>gwu|nTplG zbAw_S?D|>nT$kvW z7_jAlMVo^@2P0z3w8^_t8-Gi)HK#s)TbLs0^~lakWXW}7`+ zw6wGaz77{C#ORmlHW!zatc6qPlY5^S0Gm@=M@PtUL1lX=@6M!X`p=5GI#j8gZ#fX6@ZZ~`EPZXX98SvHk;S?M3LWTi+!Mzle6Kr# zfy4A}@#^ZT3**hQdUfIZKf_BOnrZQB1in#Gk;QM{=-sg6x`5YjETsc*2@XfS!50*J zx=PR-1FD|DW{d{(R{*6H%0{@S55?jR{ zq6RO!V_EQ&H297Ot#HO28Gx!npfm9Y2l+|Ww|ISqEe$SquCz!0YYNbU zRlb?qCR*lS1B31{{o^EUI5Yx*f~K6G39%0Y83S*XNGAD3Lpg4$7?6WT7}B)kf0oBs z@F5TZ7xcf1Blt=@epbIk#sA?CfiyQWnfv{9dU7)%$!K28OaQe0v39o6w8%7nEku5- z?1vO?YBXhuql7e>ZXoF9ypCr-A~#)ModcgT!ZjcZO`(6@VeBs!@H>o@AMm8Yq8V;$ zTbMNV{{-9xaQs`&))^Hm0qlW{XqyH;$R4+UBp=^oCdQfebn+K?2Q21~CkLNZaaIp` zz-HVFa3v5|Q4S4*3WdtUy;2BC=$8`fa|y5oa3=$>Wl;BkF${BE0=|`XB*kbPus6Vg zYacV}i4Tb#+N7sOD=`26my8r}aQmR!oS?tyb?yvy-@#!Yd^Y-47!k)A z@ScMe{znZ&$=9s6r5oCOtKw&yMvXc$~J)}4g z8yoxP&6^6tF3{|;fHyELAqbDjMOUf+s*9-^XPH)TItR2)>eI{k`?Xj^>}ZuZ^308m zPbXS^u21(@RtT$Wfn}X%hqQnnD_aUjZQ#IJj1@~I%iwUjxVYfuHr!5|iDOjz>}xIi zkw^G+@8AHb8EFMHN9N|{90kS2QMk*|Jy%W5Qn{6(O+MExd3iK@MjR2pfcv$O6p4td z_v0~g7WvjpJsUT0@@H!-2*aq*GH%jpjymD@ghCl)0^WDAnxxOGFzz$FVf{(S?xQ@4 z+l}38cy#a1ojW}9&=|U*wvprgeSEKH9!Hy#V0CfzoD+(RnM^%FQ@^RH3DTc?(gxCH z)zm;(LP8?aoQN>{F9+cFfrxkwKVC-ENdp?u%=iaipwJMc!qQLm^*T+i&syg*{3KsV zJQjEw9bAN?F^G3&*!ez*)d*wH<6spRAD_)(xfiH}!Sdc-+4VZJVOky@_n!DCU~ei- zlrQwX+bjVg@!s#_3KV+u&rCI=Jg6@RXqC(w-CJJ%)SabDA%mY<(#dH4vu{O3#egs7 zgQtQYc?RNi;eC#Ug$2;`^@{>xQbUMkY~*)0e9;7WzdLiYV`Bu=yEhge13%hC5V^N{ zi6)1d+BhikZJK^m(Q-dD$UHneBH0^yKyh3jE4fp^4(j7y0f7?To_~jsc_0|=FKH$v z1ZBrP(^dyyAO~(!O;zUR=0;x~h0$(KREUr;u$AgIPn8>p*u8x7AE@*@ec-*E+&S-a zD?L5f$jHk*&X#&0hJtaa#KTGG=O_gKA}0W1>&4-KPzVv$dJdv8&C=G^1{6<;C2wMC z3b@mA>aG1j6vh6(aaC>)1k(+uSVLo@zdCRR$4YgG5AlQ|fk62|1OPE#5}Iq32P&q+ zEo*D*4+-FQ&7X(pU92pyRkH{YaAVwQR zWXCMcn$;sKDT#)G@lmgppFIH*;^FR2#^WgYf>7D=e-Jz9b=E58A0bcyY~a!VjKIQD z2HeLe6CXtmO!2>-ngLi@e^at|EJ;XHj^J6qGv$~Qz5Q!NU;c|F0auGYcdf%G!R*0b zsjPzjADjj6!Pz0X&c9tYAk&C%?5saF^V!|Mwz&}4Qwh31Kx4y8_~Szok{6BIihy06 zkWRNtA{a4@TUpF5*kl;ny?*rVb1udeR zs}2AAGQ(MuOlo{Qff94#3%6gE7c#U&&s=x)?a&tTZ?0W2u2mfqSDkqhJnRs^2t5XR zSMu~Vvx5&*v_E~c_j#&?xk|8<0`QrbQ!B?Ap0`J~~6$TB_p`5>vG7fm9#nSow;uoAFfqZqlH>x+WP6V9xivdqfIfF# zf^K$K-pc94VW`vBAc;hmRi<7bmv(Lo+ooQ5|FvxMy$;>??LjS8IYLp{pn; z=#B5oFei181GC-I-pNT0T;0(JRlRpjQE+Fj88n^00k_!%V570ZxSp%4D^T8n4s$JD z#3bPI578#z6MzH<7y@rE1Ek=@#Q)RUmw;2XfBhe0iA>3yd6wx!k-5xs6iHGzqKuI# znNsHYh=Wi>bx9;cgvxlxSY)_n%9x?SRNl2|Q1|}c_y2#Nx92`jPxqXC_C9-mziWNg z=kr@X{zAQ9D(oz$; zM>F+w_}ZuGLsoSZ&a0nig(DRE2JcZYilg|z2`R2wFWz{%*uDo8u4)%Ix1gb%bl+VH zDwOOB6nYQ|h~e~8BO`=Yts%*9GBPsmRJdmkO53DdQImc99g^LSz{>#*;dwfVIu&RL z$}@m#a@|yR^~7?q#NGw5yr-wJ?spE^#53>KXD8J!pXB^l#u_v11L2UnYK^!>RF2{oI=eC+06WI#T8f8|V6W zH#BG*rZRw1^!+~lG&#*{Z63R#Nho!8wm`JkI6WCs7szJvIq%r-6wMY11y;0b(Qa~7 zj%95akKV&tNk=<7LFD8b8lRAp)2*C%aGZeu-zZD!S4U|`Ce65TRO|{_Db~>%oU(@2 z+#S#Fgmjo?eh21=`x4eOvf5CMxyLeZ;4+$WjdCbM<1a2ucIId%PR`AVBBx_)n8H-X z@+@7WQb3&t_F?VIhaEWpjHuVwK2$ZL6crUcS*WR%2C}oW!zONr1b%dYpj*vpF&rmm zgNe4?kJWn_^4soG0J2O%2^~zi?*djeWvMk=V4s#Z z&WWe7xv2?o4mcDa7ZiAX{nQOrs1|9=nV8&)#h@#G1y3$kVNiByJX&E@09=sbpL@hz?lJzu z+FA<$;Lw6iPPEJl(htHos_ww>u z33Re-M8#So&M`K^gRhdM!q-Xc4(|s)7(|k;t}b9CD61+nA{-10fWT0}W>|pWVf1#?X3i<{(b!>qZXm4-l5x{ERrn&&d)gjw9j;D5D zKJ3o7V4%E~$-~b-SmnpgNBo9IxhFHm2@?t~EV5gEhyMC)eg2|_Nwu?6Qdo-ohf-xd zqJ&bxZ6m-Wo#6vT3XedX&I@Q$-?{ICt*wA$vYU~b+6`L)|uOzis4SY%$Ouc8-qU5RD&HeWkrE9UXCDcR+9<>&WA>Ah!1g6YZx^BK6zK zVKc{mdT15;l>Pqvz_18UNJ+Iqs7W=ojp4QbYLiz9=Iez z^7a2jpC%RdoT|tc0J65NV;hx5p8SJK>*Lc+P6g42_=iIvPRj&@{=rXbD-ZxVIlUwArfRDU8@BifJTDgAbc)ja-K`5LK;6hT6^ z(RQ*DeBFTkcxzi*sm|Q~wCR~jAznD4c@b{acaAkRJWgkUGDPCXslRpf7h=L;C!7|& z(3RT*TnzA`@T^5SIRoVM$rpZ+Vn0YUFvb2jxTS-~o6G?bE^g<+!pKk*Is&pH&G)Ye z7J=`)(9K0GLRQMj$pJTd-Qn)e@6-V@M^l1g@pbg3xAzx0MQX5a0dR7&Xd(st7=tF^ zjlcLq+`(^SgMJrlV6r5TWtnebMf}?f|A|H0tZlDtPa{AW{V2mhPx|qFp=08|IrZ;! z+CMosE3L+$r=dp!IWAjo>~{$LN932&81|timJt0;_PjSh?_*_6b2zwjH~{t~tB%xafa&g@HBJde=SI7jS#rNud`x`OU)jOd>Q{-oMI&u8yFe>KH-*povV`=!ki)m_ zey`UuvGEq-RBsf2F;|5LLSp`AXo(>e{Fl4vwMhcN2L`pox#2)>ZhIFC*A6}=P&NWx zCp&oWw~&!gsnNRZgyOYF(fXQ$1g zm2w`ch7tyDAQeJ3xwb8Bnri<^Hfi!6;Nr3b($E99Cw@R$9;=HCEQCnH+x7B6VSGWW+F2 zZTD;KO*=jkt29L+H-UfZcHYe2WbA7v!N|yd z;xYEuwex;V2UG&qtEr_hB=>wbi@~n(@aTSbKFjZs<9A+Si`0Q;DFuYtg%X{v!)>Gr zD3h#I&h6=s7VGBW#f5>$9Gd`lp=@{(lG=SPX#|LQHX+goVn!Ew3!lO56H3{!e^zH{yS1av;J{ zZDVpqotl|8C}2_fHoXz!j8I!|@=u0Q=fDrPzO0Yanz$)q)>~x99mO0S zrQy2RcD7Zwl%YwE_YoLnKHexk#T6|^ep_z3r#T)6~+{R*SQ@I*A5rdd64o#8@ zU6G&H3hb%rA1Ug;5`JI z7yCjx!BPP_B@jQX>k#=xb_nTD{lk zQK85LV}fqV!Ml{r`g(D!8b!sbW~v$`VSM~n)?YB>SHJN)xgi~0Uvt2cqC*kW4C?F) zQNXCzpH<_eUARKyo4|+smBZ+NO(22kGXAE>M%6RdfV>CzZ+`Vk&x=pCarG;_-?K|- zQLU*{`F0@J+lX^$N}7wrS#m*i*O>QkpS!c7sZ1x3FQCUCan$Z*G?P-2IFt2i2z3Ev z6n>||vgYl)yL)ZDG&ZIOulBID^t>Brnw^zDf7wq_!us;9tF7`E|GxSq_-gBue)je$ z@vz21=thZo7i(Yxd>dUzG<&+wqNdD^+;tdk6&eUPmRU@V7>cpnhY!DvvTtZCfVWRT zzq~P|OBjpXU@Zc>ILpQH!HsWUfQeE+UF9j${E#}7QSg|}jOY47{q)q-n0ROZ!F^K0 zYxkzUsndMd}vRH$S--z$obp4 zSMQ2y(bHLAhZ3!llamo&g)%f7MN-ib$cK#p!~s4rd==O=#m@91;k{He+>!XK1MxV7?sQpuevnEaE{a$7NR@7hym?jY1kw6 zQl*bY^?>U~JaswgxI&xT4KQEab`{31Lktnwak|{y0g5TQiq)yVuvxnWYQeM@PZb>+ z8fyDBoIKRjRAXnX{)4QqQG_VM9e4^}WdT=cQKPwW1xFWBadHAmAl@^#&!=BC9;+?% zg&kp`*M4xur-zmc)1l@JY9hF}fsKfkTin^BO+lStLYwPKWW8QDvDQZn~LbVk1qq?v;{~qUi)3eO2Q(&4AUhR>&m?__7N% z#3FD2OMF{Lwg!E^D6fk60BwNbf}L@ND>kf4oo_<@cG zG*)KmR8`uO>EJlVN@0R+6rV$TmX2({g@Os@=~8*a5nQXn+RR2V(`_BsgDN3|CPRIR zA_mzR5 zpp&LwrevRbe6g)z_P#l>!KV#N2HCP7XwClfiv{lSQU-h|6k~ztqJho)=Ev+op(0K) zcnKWv%>CPXHAQp*jO!!pTrITn)QiBTx-F4eSP^xs~IZ+msSf|PM@-n>Ca8JuHe zp$<^2S>6wds;G#FRCFoL=-u7|@FYQ@1^VW(vkLU$bE$n%nVM!>Th+;YjL6(2wf5Ga zYB5~LIRhJ*#SlSMVy+>s@Hf=QU|#bv>-4h>eQw&*Oc& zND_xyT27TWCTAp=nwhOt6H$GfdZWEg)WX%%))oVnVHOryXa)f*Dg8_JOiO<%m}wwq z>hrn`%s~)(!>m=N6(#JPjGX)>;Ad>Cjj7Y8{i4A^7+RB7espd#;}U_8q#7>f%F z3j-bzjCj%Yk1tOfyEJ&-?>ZF%Eu$dPo~n`D^In~1aQ~k->D6?ItjqcHd4F5$w&7Fd zuY3l}515w^fdqRWry5Rw;=~E)zrjFF3VtCjyN@?t$I-aFhtSEtA|)jSjePS>VpZ7D z^U#LZdc>ji)vE+erd+dC@wR1ZUFK0oJnKt6@nh1Aq!;zGeTu@Ta+)&PXW@!K#Ia2Y%*v;9oX$ zhI-E~88j!A)BI?(Ax|V*A#+oMiN#e_BE2*@!2=(;Z>19!CRXgWlkA5wOGSq-JT&xv zUfwM9d4qglm!)E3i!|VZ7XUn;k^EThgePub(Dy95`zh|dx(pktP2!R0;>2ZQ;;1Jn zxn!r1Rw0`75X8FBAzAb(OScbxL_rN#)WmwgCSqZ5f93)>5-!+Doi;R#(@7=_@SL%V zmghT=O~A{`+fgnlt*Gb+Ha>WW_&q`wL&L)}g=t)Lb$3s$)QzH0pJ69jG||sTZk-D9 z=jj4VlG$0C)-(}aP@Ynu%*AkKq!Mn##(p5%HDnkkmmICG{`99;-hzkE;1?j zcw#VjLj)NmEQ3M_Q2R*XmY3TTRBhdI&6GS?+x&cd;J`8WRWLO%IRtK>q@*M;PP56n z>+qa!PEvkI>k_ofMZ?$XGqk*?qA_8tRhP!K4s+fz9#Fwj#RmAZsxkF`!bdEaY6N#A zsz4QHW5egbOTKH@m{&yNgIo+?9yfWe?6W|5bCIIl7$F!@L0lCr*t#Wg?q7X6cvJ`1 z=U-BN>35BmVKIb=E_rE8gQk=I@tr#(b)x|zEoHOP$whaqu%_nb=EsloR1$d_LFAm~ z^4rrCbFCDDGz2$3Tg-shyIbJ*sq|bJ0UZK%zm)S6l|h515|+M(Uy^)0S1=9&6{1Y?10+w+4%Zp z;w2}SGp4Sl28@_zd_DVoVNbrhZTxxe?~B_$+Yo2{3X7$Su8&Vks|0-`IhlEBC;4WC z-|>_}CR|qb;w<0AKw~~z^6#&#mCizmiDD z0-ml5%v>{9_pztweMy9<>?P27%Oe!xO{4{e5LNw(>thetfuR*HDcV##UrWzw>n+G4 z82E;@^M&8F>Tdw%7}zVjvJ6GPuhSM(;5_XwbpcJ4ZZPNWdcw_(Cu^LGealudrso81=Ddld~J4ir+(vPfAo{O?}rUh z53UwC3hOH2&JkK{kP#VVbAL~zlZ+VBZ+(6l&Emr?AGrRJ_lWTnd*)J4ZssvJ;-9HN zFaZ5BNS6O5tfv6-o1YVk`R#T=&ZQMNpi{cUSN6~M|GfAN^MGI1 z>rR4y&3y5YDG}Vv-n{}w7r*CKTa(Qbq>TOh1yzMPz?om%*O^L@!Dy)6D|N~BBlHVd zFokx))2B{dU~}Py%sX+MWY9My5a_%8riC?vvScA3S*Q@N`)rI5*bUeQ;F2UDxI+Es94Q85-71#2q{b7@JEl?`Sz9oE%e1QOq1u z$@n7`78lLgj$dYO|0n( zS?z)*9&@P6w0Z7chPL=h7|*k-a&1obZhUT=s4JMXS`{}cAh{Qu;C%_XtuafGI;39V z^II#l6|;e%A=fkQYfDQ@9<#lW>+Z^NnpYVppsK|Tvb&H#;%+zrv2XlYb55GK7MuX8 z1n3e(_s+{hP}kze#e6~U*v`Rm{1;+5*e0>uiq=aAL2{VG2B=Jtj6h$30N%$;1|Ha#1BI! z!c+~X-a%s}mEyYi>>GvUA)?H&+>oP-ERUhkf?O750SF9Q0HA~4R!kVK$iUQ86X#U9 zqGl7(dgL&+k|!)Y9Qpz#7k43v4O&c;PwjOvH{T~ODE|psDv%ij?2OVsp`Q^U<_4LE z@7_MRCgMDuxHjl50Q%X&*w{vao?gfB<14rl=T`YINsn8G|82(}`b($R_#v3s=ZBuN zMFT8Q&|4`Sx50V=3}b*?27V$myEEkp};(xsN6r#>B)Z(cUeQuN`?6y=*fI z2v%?@x&Gr#lL^_AI{B68!DFKX-)vo&w#tl92(y#3`hce(pNxVp5v;R7VF_eQ&q^0G z5u@BRepV;QMZmlyJXER&d3oG6mUm62&_K6bl#2uUje!bTj2Zm~u43ks5T!J*b##FPkaV|MRmXNovj)#YJACnufDuy#vi?pz||~tt1y-K=DY*A|2A~O0 z)ra8YXh|`~CMGO?{ov4sUQvlXq|D6Bi;IhLZ2H#L)@o{X0Ly{S5~9S3>eJHD6qba_ zCH(D5qJB?L)()iCW6h?h>dQxp=}~h~l|s6!V-McV@)-=_j0esQh4QC)f-wl-Z6g*! zA2b1)Lb{N)ep=zqThz*%&{Nmh(WERECPR)YrKG}Kf(Gy?ae>ZKb4W}elwgO?CY65b zGV@!VY(7&x#j3lZ_CyYH^>O2fxE93s)5`j4ZpH(puEFWk z{jXmaVVdYyytpG_+zUM!GMVe>4GJ&l=CfA ztHJFRXlb%nKIcm0SF}KZmT&s_20n-UK$>#slf9B93EeX#hTL79#czvVe6WjVl^MCw zY9r;k;vHQv4SDaOn4B4t%z`{8n@)*V;`s$xg|;$A03h8G2oXKcgK zAnm;Fc)F|URhY}HvFLjk-9}6PR8VXbJZUgZ=H1v>R(3XXt21!rof=mC;6T_)#suy@ zAKTTzy1{kuR@cg z;KTGjFYu}DYrXD_tZ29uV9gZCi+enklbx+rmQi0@+wOVsOdXi@8(Uikq4WF1iG)Q8 ze9~v1BH;utVUKt}N=V?{p^@ghI%#soYy5GmLgq#8 z&MFu{2u7(r!4Zi$a%Jc;=iwK7g^eX8C7~6tPg*Ioa4-I%u|lF?F<+nWDeq%y5saKm zKxBoLu(!n*3%EjO3jiV@P~uDYYY%C`6vG1Fuij;>tw|ExLPAp*^X9D#ZnICb{2qw0;Pn4`)68-5&0pQn%L(*$4d>{%p#DRh zjx$~WdI1uGdEk(5mL03TE^~U*2Pt7IOyO+KT?P!)xadK(2Y>w)9u`*f>aWW5&0Kn`2|+wJKCk=fwQmAKBqP%i#*p}b*c=P6u<$om5&*QM;Z z?q+8zEH-ch$@H;c^7SUY2YcqW&QNVWnqa3$(PWk)7=b;8stJ}P$R}2MIoo_NqbC)x zWECGj=jb5WvF*Ggn1UYx%rOiAe-e-%r(nj)Ta4kv+n#Ig8<$^C=CuBmAM_(@1@gI? zt)k(X3kps`evtgTDF`hEugYN?VTz0_B(b)0j`3n3I?J&|yO`M>(Z@{9Pp$bQ?;v}D z!jkn~gU}2Pi0R^vpfo%&Bse6k2BlW}tx;jgPD1t-GvITk7TEI$wV4!$I1KpC5^SXv z%FRSd;w@yfWRkvhPPiYonP|vO@Z90)zuMuiFJAKV9Y|^{Lc`90shg|cK_KaRK$(dD z=0(HHmmcG@9L8a$P<;f`9(MNhq@?9&zx9`rC}POZDEw>csPUt?YV9FBT^}CGFL-K- z_xCQNZQ&#a**Bc`rw5~DfX5EDz~CLmkw<6U5HpZho#;U9YL=0Mmh$@~vz4@$PuQrb zseR}gq!F^#tf{ZBf|U5tL^Z6|f{})sQuMPnIZ71y#@=g2e6whaE3;2PgO3-i6#}D5 z91a)i^c97YB!D-p3mHYpdCm`E1&yGV@GkKcC%;Iz^%9{;wvyvvc{cq^m(aOnsQ2^p zTOgv;6r*L^x$@R3dU&IWg7SC76P8cr@6HQoZNAShkZ2p$pn^x?aGY=FZ|{ed^FITe zUyI=nM6;6!;mntT3so2j+sqgG_NWG?f!)II289fY;J< zELI&FfZ(PTy3d|kI_JUBWN&NR(A2c#DF-qH6B83s-9oQ#xa`Dd*kgr{ADdB_uxM-$ z@rQH@^`QX{Jw5Jv^8g>j>GB6O#(sBfr!A7UP;y%dS zpw2g2HA1N+Zw=ke{E=Zv_4mQPV=}o~yb-O>Y|2!5mMO43dRm5yA!0LR@un=ZdL2ExaHfqE6F4hBvgMK2$sB#k1hP;vi zE%!t(Ltls}W~aqVn(%lKhcH^Jvm3gct@O(<1qKZUSMR)6rp0d)?vt@LQMr-Ik|QV* zLPp)?wo+-wfr>JyY`|(L?>Z5o(e?T@((wn(MCQ>;*5HvfHa2#1E2n~OW~?FD0&*7r@KEu(+3wlQVtWtlpw@yERT#&f$n_u*sRCT*5=Ax@<6zB z1;fBcw=GFyx3mAJ!?l?Q?cc_vr8%`-**XfdXsoqEbG4k1&{W!$ zxs~P7=&L*lUm+UZ)}DgKcIfH!m>*JRZ~Q^`kMs~tRt>tFhCjXEX?Vt~7skG|lZ2NN zWvt-q3Vhh`#OFB1@Trg=f!Vf=Ya9cfOWzZbFYkglFP46~c`TQSJ@gM1AAd0=`4;+TWLXLT}%OH9u)@_cLB*Tkyz zyJcm#2Ykw_8bWJF86G?SeHbm75FZ;m%x$-RylZ(eG^2K6-M0_J6O_wjV~pHz z6D?geg`F%d?`U+8)!HQLsY;k9H1CjBvV5vn7JO5)9F2^TfprFHUnf;Mmi3WC-@#6z zNQuTz09?=?xbM$U$&)w~!suWp)_fiJ4+FOj`fyQJYy^}vCE2gpO^TfZTQ#)=YFJ&O zDj+TBG!6!JU9dA>8>7Ds%*`0fuJz%3Z% z8v%yC-4COA%<~LPnj-(ERt|r)!oB{aNn@wJcA^%;{v}ipQ|&sbcZWL$Ry!kudO;^w zr^X>39v+{y*%CS*SX!6Hk|eAafATA*%_fh%P*O|t`{p&;?FY?y3b3hYI$I29&~{5m zS7Pk(hgEeaagueu`9^hk^oP>XsEG+1nWWENn=tQSOfsB_$1)Use=9{S2HZYnVIv<|&|cVJ zyyBs!*4qFi9;CT1pha|k4y1RKDJ(6OK5!sDj)a5+Edv<)-aP@D?l*7RHQyfxI4AEu zlcYgwjfX&-egk7|T>)VSt*ChqT;tuTO zPRFFaqEFb3#2jsd;_ISu#aR=%vH(<@8X7!DLixvX`U5id8?gf$U}Zk~*3=ym^3aX4 zXAoS1*}NN4FVkVn-gAK`s}{@^_+-lGHDH0Wu>H*yCT!ohSGn*4R*r-jFX)BM7=g zDLaD>)0qw};Ihs`{wql&OMSGZ6hKQLq|?L>6l(waFqI$mVmUk;zonExYYYZyfrr85 zVA)vNkoD}EQ>2SFem#LxO)HnStdOTL&p;Rw79@fKB6(M!ARv=M-g zocB&3`ANdWMfK7PbndJ-VcJ9`2no}1td9`GJiILQ8wsPS?m&*U3mW~a86jbS@BH-X z6XZ-pN+3e{Pb=a2;Z%tk31vW^!8-i-VX!JUx7mjRbryvmql9nSpNqCLE3@w@1l$3S z1QeQOT2$5dNQQ*O1eLE+Le_k{W z-hgZ?-vrIVEXB@_jvz6zUR!!Py0*WL7I;Qd589`~uQWDaWFyb@nsagTD|#PfODP7A z@NS7BrbE;fo(7#2@!6FD4t;u$UVHwM82GnOAg|}P@P_`heEg&O7u-a*Z z0OjV1TqF>LD1XZDOJqCg_5TYK|7Xzpb3y!M<-TKkWJf0TX>BT72ql2v3qa~y++esi zmg!suP&*(%Owb&nZODHQB`T0`pP>x~j2Eyn{1N8xi-1ubpv91|utkSg5ZYYvFQA8B z!R|WYk^~C1lM%L!%WbsTsXWaqx>j{Tb`=SKS}=B?{FN3S_m>h!d4%@R6rr`Xv>Gme zoBA2jgUKc*5C;VskAGw}qds1mf7*E(_676$u&GPWqlm7)ygJAb~y0(@@C%-io68J%b zF>M6zq<~kVZp|QDCGD~5<)ZOA0)(fU%?$yMMmMAyi@Gw@wwkBXvdo2ZD@1F)fPi!w zC{j1KkD%bI!r*0hK#A7%fK$$i^{%&TCa0vxvqi^T1W@zP?-8>y6~p)YhJ2B>`$qhn zHi3kz$D%xlwl9&T#W6i;_nSzvQ&Q_MvWsUu2*L%7Sc2yT8V)>TnC}2&B}^ZpRRm6~ z&E24eHXdCYX-Fg7YR8(-O3lEaF0>ci47vdJ$2|{iXO!RF*7?2!K0KX%2xE`^4?3$o ztF5c+hSQ^VL#uxe*HQu4=%goX91alv+I`e`aL;* zd4!R@O2PP>U%`C)u7+Kp%m@Vp_<(>Mm_mdy?Ww%2?EEKy$+N0WuR2Y@Qk+;hD2n+%+)FUh@5Rzt?bkT7W6NbHeWAk1?zSy@D zb^+KzMBf1`1R0Y~!a)M4Tt_)JG-wl0zw5J{F1t?x>H`uQGKJzZbm!~y+T6Q*_GiUN zLBNq?qmn;%?i}aATi@S9v_-!>DfIYoW~sp7XqS$*cBcE?tSq1_tvbn+)C0HTtNIRO zo21w-o{`Z}@E%>YKP<70u17)*&9naq>&O)#Q(U_OSFX3y{v;`Za6#fJXcYG1 zbBN;}jGi}kvlPS7qJpNZvB4CDf;FnE^tOvPyEnOQq_j4$(TJ(k(bYXM02B(5@=wNb zlh^NyTCd9m`h*ZqLHzS9NUGb+h7LT{8)AEYe+fy{k41WIF;Q}%m&CdLgLoTh0qGbb(LGFX8YL1W@py+I_ z_a_lJKrQ)$Ee3@nG35kIxP`70=$o5b@C3$Us0kJD$G6&4$G{Jp3WLvAii#wc(asso zN^N5z`QXOe(m;UQa1@3o0Quue38BTneghkhpEnJ(4+JH@%tu4;5tbB$Ul2N3;<)eC zm9W|wbykg;6#9%;zpgw`ysa-CZI=jxqi(=|fDvQ%*RDpH^P!a3w-C&@hL;%3v)T)K z)_WqjNyHCz0{Y!XSRSKLy1+`ocgiN-uz>gP`3^%sham7>(|7(oXBqkQQ5OmS?}(Cp zD!9_vE_Yzf=4DGh{nU(LhqHTxE?j%IUuZDLJg*!J~xh z2bhPSzjbZ%&1n6V?0oTbLvRYGT=^Zd1gp8fF7bg5*|(}@_ZRA|$~(7z*34%9CX?~K zLV1L6`vIF#tL$1@@Q#nB+x0Ba?)*m)5(uTF^!s01OSE6P^(E0CA2g^sLFvuL)^`4v zbcZE-o$+p%;OZ|0?I=!Z_y72&Erj}c0ukXii6|-;jeG(eKukpWlx0e!4W7; MRXvr5N6rTR7oKsQ!2kdN literal 31367 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 Date: Tue, 2 Apr 2024 18:13:54 +0800 Subject: [PATCH 138/423] Add DeleteCommand UML and edit ListCommand, NewCommand UML --- docs/uml-diagrams/DeleteCommand.puml | 82 ++++++++++++++++++++ docs/uml-diagrams/DeleteCommandClass.png | Bin 0 -> 50638 bytes docs/uml-diagrams/DeleteCommandSequence.PNG | Bin 0 -> 26845 bytes docs/uml-diagrams/ListCommand.puml | 23 +++++- docs/uml-diagrams/ListCommandClass.png | Bin 45932 -> 86909 bytes docs/uml-diagrams/ListCommandSequence.png | Bin 52597 -> 91908 bytes docs/uml-diagrams/NewCommand.puml | 3 +- docs/uml-diagrams/NewCommandClass.png | Bin 38109 -> 39469 bytes 8 files changed, 103 insertions(+), 5 deletions(-) create mode 100644 docs/uml-diagrams/DeleteCommand.puml create mode 100644 docs/uml-diagrams/DeleteCommandClass.png create mode 100644 docs/uml-diagrams/DeleteCommandSequence.PNG diff --git a/docs/uml-diagrams/DeleteCommand.puml b/docs/uml-diagrams/DeleteCommand.puml new file mode 100644 index 0000000000..b19cd33ed6 --- /dev/null +++ b/docs/uml-diagrams/DeleteCommand.puml @@ -0,0 +1,82 @@ +@startuml +'https://plantuml.com/sequence-diagram +skinparam classAttributeIconSize 0 + +abstract class Command +class Inventory +class FileManager +class Ui +class Parser +class DeleteCommand + +Command <|.. DeleteCommand +Inventory <.. DeleteCommand +FileManager <.. DeleteCommand +Inventory <.. FileManager +DeleteCommand <.. Parser +Ui <.. DeleteCommand + +interface Command { + + execute(): void + + isQuit(): boolean +} + +class DeleteCommand { + - name: String + + DeleteCommand(name: String) + + execute(): void + + isQuit(): boolean +} + +class Inventory { + {static} + contains(name: String): boolean + {static} + delete(name: String): void +} + +class FileManager { + {static} + saveData(): void +} + +class Ui { + {static} + deleteCommandSuccess(name: String): void + {static} + printError(message: String): void +} + +class Parser { + {static}-parseDeleteCommand(input:String):DeleteCommand +} +@enduml + +@startuml +hide footbox +participant "SuperTracker" as SuperTracker <> #f5e3a9 +participant ":DeleteCommand" as DeleteCommand #cbf7f4 +participant "Inventory" as Inventory <> #d5eac2 +participant "FileManager" as FileManager <> #ffecb3 +participant "Ui" as Ui <> #e5c2ea + +SuperTracker -> DeleteCommand : execute() +activate DeleteCommand #cbf7f4 + +DeleteCommand -> Inventory : contains(name: String) +activate Inventory #d5eac2 +Inventory --> DeleteCommand : true +deactivate Inventory + +DeleteCommand -> Inventory : delete(name: String) +activate Inventory +Inventory --> DeleteCommand +deactivate Inventory + +DeleteCommand -> Ui : deleteCommandSuccess(name: String) +activate Ui #e5c2ea +Ui --> DeleteCommand +deactivate Ui + +DeleteCommand -> FileManager : saveData() +activate FileManager #ffecb3 +FileManager --> DeleteCommand +deactivate FileManager + +deactivate DeleteCommand +@enduml \ No newline at end of file diff --git a/docs/uml-diagrams/DeleteCommandClass.png b/docs/uml-diagrams/DeleteCommandClass.png new file mode 100644 index 0000000000000000000000000000000000000000..d99b0a4d9158fdc4e1ff3756a8ec23bb5b721cfc GIT binary patch literal 50638 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

}=nxDSSBCOV>BcNB+ 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 Date: Tue, 9 Apr 2024 02:08:23 +0800 Subject: [PATCH 244/423] Update UML diagrams for list command --- docs/uml-diagrams/ListCommand.puml | 105 ++++++---------------- docs/uml-diagrams/ListCommandClass.png | Bin 51858 -> 43818 bytes docs/uml-diagrams/ListCommandSequence.png | Bin 86977 -> 47595 bytes 3 files changed, 29 insertions(+), 76 deletions(-) diff --git a/docs/uml-diagrams/ListCommand.puml b/docs/uml-diagrams/ListCommand.puml index cf4bed5323..88246f5493 100644 --- a/docs/uml-diagrams/ListCommand.puml +++ b/docs/uml-diagrams/ListCommand.puml @@ -22,16 +22,15 @@ interface Command <> { } class ListCommand { - -hasQuantity:boolean - -hasPrice:boolean - -hasExpiry:boolean -firstParam:String -secondParam:String - -sortBy:String + -thirdParam:String + -firstSortParam:String + -secondSortParam:String + -thirdSortParam:String -isReverse:boolean - -moveItemsWithoutExpiry(items:List, itemsWithoutExpiry:List) - +ListCommand(hasQuantity:boolean, hasPrice:boolean, hasExpiry:boolean, - firstParam:String, secondParam:String, sortBy:String, isReverse:boolean) + -sortBy(sortParam:String, items:List) + +ListCommand() +execute():void +isQuit():boolean } @@ -40,7 +39,7 @@ class Item { {static}+sortByName():Comparator {static}+sortByQuantity():Comparator {static}+sortByPrice():Comparator - {static}+sortByExpiry():Comparator + {static}+sortByDate():Comparator } class Inventory { @@ -49,13 +48,15 @@ class Inventory { class Ui { {static}+listIntro(size:int):void - {static}+listItem(item:Item, index:int, hasQuantity:boolean, hasPrice:boolean, - {static}hasExpiry:boolean, firstParam:String, secondParam:String):void + {static}+listItem():void } class Parser { {static}-parseListCommand(input:String):ListCommand } + +note "Some parameters and methods \nomitted for brevity" as n1 + @enduml @startuml @@ -63,11 +64,8 @@ hide footbox participant "SuperTracker" as SuperTracker <> #f5e3a9 participant ":ListCommand" as ListCommand #cbf7f4 participant "Inventory" as Inventory <> #d5eac2 -participant "Item" as Item <> #fbffb2 participant "Collections" as Collections <> #ffcdd6 participant "Ui" as Ui <> #e5c2ea -participant ":ArrayList" as ArrayList #bcf7cf -participant ":ArrayList" as ArrayList2 #dfe6ff SuperTracker -> ListCommand : execute() activate ListCommand #cbf7f4 @@ -75,11 +73,6 @@ activate ListCommand #cbf7f4 ListCommand -> Inventory : getItems() activate Inventory #d5eac2 -Inventory -> ArrayList ** : new ArrayList<>(items:Collection) -activate ArrayList #bcf7cf -ArrayList --> Inventory : items:ArrayList -deactivate ArrayList - Inventory --> ListCommand : items:ArrayList deactivate Inventory @@ -88,60 +81,29 @@ activate Ui #e5c2ea Ui --> ListCommand deactivate Ui -ListCommand -> ArrayList2 ** : new ArrayList() -activate ArrayList2 #dfe6ff -ArrayList2 --> ListCommand : itemsWithoutExpiry:ArrayList -deactivate ArrayList2 - -alt sortBy == "q" - -ListCommand -> Item : sortByQuantity() -activate Item #fbffb2 -Item --> ListCommand : comparator:Comparator -deactivate Item - -else sortBy == "p" - -ListCommand -> Item : sortByPrice() -activate Item #fbffb2 -Item --> ListCommand : comparator:Comparator -deactivate Item - -else sortBy == "e" - -ListCommand -> ListCommand : moveItemsWithoutExpiry(items:ArrayList, itemsWithoutExpiry:ArrayList) +ListCommand -> ListCommand : sortBy(ALPHABET:String, items:ArrayList) activate ListCommand #cbf7f4 ListCommand --> ListCommand +note right : items sorted according to alphabet deactivate ListCommand -ListCommand -> Item : sortByName() -activate Item #fbffb2 -Item --> ListCommand : comparator:Comparator -deactivate Item - -ListCommand -> ArrayList2 : sort(comparator:Comparator) -activate ArrayList2 #dfe6ff -ArrayList2 --> ListCommand -deactivate ArrayList2 - -ListCommand -> Item : sortByExpiry() -activate Item #fbffb2 -Item --> ListCommand : comparator:Comparator -deactivate Item - -else else - -ListCommand -> Item : sortByName() -activate Item #fbffb2 -Item --> ListCommand : comparator:Comparator -deactivate Item +ListCommand -> ListCommand : sortBy(thirdSortParam:String, items:ArrayList) +activate ListCommand #cbf7f4 +ListCommand --> ListCommand +note right : items sorted according to thirdSortParam +deactivate ListCommand -end +ListCommand -> ListCommand : sortBy(secondSortParam:String, items:ArrayList) +activate ListCommand #cbf7f4 +ListCommand --> ListCommand +note right : items sorted according to secondSortParam +deactivate ListCommand -ListCommand -> ArrayList : sort(comparator:Comparator) -activate ArrayList #bcf7cf -ArrayList --> ListCommand -deactivate ArrayList +ListCommand -> ListCommand : sortBy(firstSortParam:String, items:ArrayList) +activate ListCommand #cbf7f4 +ListCommand --> ListCommand +note right : items sorted according to firstSortParam +deactivate ListCommand opt isReverse @@ -152,18 +114,9 @@ deactivate Collections end -opt sortBy == "e" - -ListCommand -> ArrayList : addAll(itemsWithoutExpiry:ArrayList) -activate ArrayList #bcf7cf -ArrayList --> ListCommand -deactivate - -end - loop items -ListCommand -> Ui : listItem(item:Item, index:int, hasQuantity:boolean, hasPrice:boolean, hasExpiry:boolean, firstParam:String, secondParam:String):void) +ListCommand -> Ui : listItem(item:Item, index:int, firstParam:String, secondParam:String, thirdParam:String) activate Ui #e5c2ea Ui --> ListCommand deactivate Ui diff --git a/docs/uml-diagrams/ListCommandClass.png b/docs/uml-diagrams/ListCommandClass.png index 5cb5077bcaabfe008c5aea54baba2ff3c91faca7..ea00f7cfab5fbba330fd6c43343b94d507cc8930 100644 GIT binary patch literal 43818 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 Xa?%rAtf5Bu2?~;!%!yaWwXgpl)>)TA literal 51858 zcmd3OWmr{P*Y*|zMFE3Q5KvK4QaV)xl$6?Z2m;cLG?)koh?Gbp%|^OYC6vyMbazQN zd}D)pJkN8U_j=#&{eFC2*Fn!_?X~8bbIdXBagTdUkNZ-hxHu#@2m}K6-rYO02*lwx z@ZZ(rSn$a$8>Q3m7oD}RlC_SRxxKNjo;5;L*HqW?fwk_#OWO9A9$8zPTk$Y4nHxVa zwYD)aX4Ek=v2CcKKp?QJ4CIxpe|?TP1oyEE3zwHP8)80PvZYveM&6TVhwDxvU0mv& zyqV0nY<>Sz*4ZB3#@KzZS}x|)*XJxE&mL>Mz^i|ToQsUrzaV26a%H5B$9Gip(@km*dB3lU zLOHibvz5)zc>Y6c9;lSJ)h$YFmD*yr2_8)B7${C?9CetrB@BOCom^4BkaKrZP>~Lg zIQDz5+RNkJ=4M{%nqLwSyHY<63rRitZ~?_8%q_C2FXj^+f@TrBR(hw`=(71HV+cba zWnSMR=aY=+(?%0J)o<&_?WL*;Gt%xe50az^6tCW@^h{t%v?)0k5Qax zHSYgfGTk=n&iPg7NnYzx^EA9>Gye1W z^BEh0!gYm=X?@gXY@&l5_gtDDhuEFTouD|mraHHK+Gcp?u0v2DWr45<-kZlnx$_Si ztFhFPCVjn}A|D@L>oFNy%gLkHL*M8AKpHeIT;3QP@QuzZE_3X}HihCH;q^hzhk*hy zm+9WFjB$Nr@$5Ds8#QxjY@clTFd8&^;ay?s9eYnF4^nx*$b9XKS?-e)C!9X`A&G=_zw)ci~QOHrwcuFhD!C-HUx^d}l= z6R18RT&~OT_c?bX%+rt$v&HhGh8AqHDb>`&`rbY}K~joS>{CJ3pi9ErcV_Ap{}E=T z2pguNp?k@~bi~(vJlz>iT8Ta2Ipcb0fs6W*Oi{ov0^x?ZcjuP8oyJVBqdb9P1h)AI zP0OW2FQT-qkB4$Uy>#icE=Se)NOWiYk=_sIhA&#N@_xMAu>KxFQYn1K=2g_h>lkVQ zuCpC?)NQDT4lkBhmxndq`Gjrg^yAoQ^9|mj5B~R7^PK&sSC9&=sYiR&cXqZ13szE8 z^Gp>UD>@gws2WxUgGV5!$1W4^|0C=K7Cq)4TpkE1Yu544?D!t9Omq|51; zE$1dDq;+)SY^2Mk0TPL(Lwxw!(BLv(vR0>;wXKGYm~eovZFZNr?zvOAJUYf4)YaA1 z)1$UAiHB%ffjced>D7~LAn~=1FZTpR&LI%$_)iFLx*kVq$-@^1PGi0e5BP9f>nOtg zrqgv67y+yQHizb83m(sD^ zgy6>n{u71A$xqlXUyjbr4PwG0<#^4W*!bckabj~z%kA0PV5TLW`BT2f{v50vE^2po zw|~dU?L}T5=RD=E-Az$ZY_qIme5`-W$&?g(`s!qBLP0?YlchFADhD6Qzx)=DLSTES z(#y%O6({L9$`{t=uL&7eZf$H#i-{Sk@+NI-sI65kb+Q){I?SN=@ZoDRUgVT<9PZx- zHLMI1)Y{R}QC;ocH9I?dlIZ$GM;e6!mE?PQb#(@t+?JQ3&;HZ;J(U4_`!yeguW|ku z$^Y6^3X|r)XXp^RWz6&xocn#__2>VOAM-bh9CTFr^yUXY*f2?+@95?aV; zV&jvCaamk3l77ehgor|8?>m8zOI))+}aNLblHC$snU>({C(k&G*-4rOEGnIyRcrBIUW^&gw_ zY;0^zC`(Jrj~XRiZEe;QP0?@Oyjkma)tno@Xw9eNL_=2HM)ung@Zh3kuXL6;K2Fmp zDK05FclNBOmzT2NZGA(-DYrw1C8%28vFIcxCo6^L#tD4-^y!1BuO3A_t1%&k|NSn< zArI=B+FEy9QmS@ZtiDp`(9JaPjLk8^PJ|SLJq1?aI^s<=G&F?V@p`lL@#oX+m&VG= z%cG*AX1nwB_4JM%Inp%Z<>|S83H(D_wCmn(z&lk{Rpo^Wk8>YHyoa3cYHMrXyLZCK z>xQ(rxN5HP1TzX zB+aKdVK*UILpS!IQRL*NtmU}JUs6+ug}JP{K!a2`Rw-jd1jL?Hj=QGv)7DC z+v;$W2u4Ono5Rd{@-qxtsSL9=!?>+tTQeP24Cy=xsjgfZTApl`_49efjtV21 zKKB7{aBz^2kkI-*0lmM!zjAMlpXYd|7$=%pH9VAy;7d&MdHRj}L+@0^vs#B0e9}(- z_Dr3mN{0_0rnP-Vm~|~rM&!ZlbVnLKIp4b+gYFyp4L?j}wFp-xnxE~wn);|-ROL(2 zSR}KmO<|I0vNv6}JKe6RIZFA%R83s`ByMF_+mkp|I@zto(c0n$k`pIRm$$CcqNH6O*JHxD*zclkWk~b zKU&@F)s?Tmqe%jx5`Wu$=lQ-8@*oOoNpW!_BO{$~$F;foy}e+PzP>)EH)CUZXg#kQ zj;-hH)YQ~`d_BgUd{?hN*Nq1&ZSjfS-P>;5+b-(gkwU#0uJ%ockEgnJ?ZwNNi#+TV zdx2vVPK$ULXHWL-Xe3Ab^wgA6X!J#*)2A;X&r?uD@;;vX+CHzmZ)CVU)F{c}waHfZ zocbw^ue6eS!pj0M*)T zcksJ+T#x6}kPAyo!yeDEf)Wy_jl{b>y;_oCA2TsAq2r$~SCN|C*O_WdDkvyGecjT` zH^0ot=#$BsX55p{a{c;sLBX=@?Cj)Z&yF11>TZG~abeZVGoAhvctT$C1oU-32EWkL z(^rZK34QS)<5lVoYK`fNKj!_Vi-CcG%HJc$gj<%hsFRg5Yc(MvS;sJ3x?LxrOK;Yh z|F77_e_Knprlw{+`Q5wo3wyyEie&e?RZh@%d{iG6G*nhsmuw#2-dJ+pS{;qF_S_+6 zRJ(gCNb%{jXK88$pSwm!N0XJsawIL5AoLYC96ffduh?D=)zl2}+k=pboqeTbt?wK? z!MSQ5vf8fPFrs!2b{J??7u%O7hp{tr8AJ_pQ$rc7h67||Z6s2ck{n)Zt8$kz{x%7H zGc8hxXL?} z-H0gd)lO&dy#+BPC8b-pZdqB~(49z3q-nn%*L4tpxxGcsfkz#rD)QZJuY7&eP^j1f8J>i!PgA)U zlLAeLHu7{$&l1rqtNwnAwZxj=uq3UuoQ{^3Hu_XsmcI0=%^}qHzCHo7K0a61JvTQu zTDf={SHH+_b#==tD=P~N4^rNd^E(_ldQ?UwZluByT;Fq~Oy3ZpK_Y`{?hi2w3yV8< zo_~87<012K#HQW&YOX;S;De}F_p;uz8OYk$u%{%%#-dbmJlCkR?_z)LYLNhM9xoLx z=6C`Yr$Pi@HaizM|D{<#RV zK(b3VCIYk$FZLbRmXrL-8D+7aqJOdfq+wV0<{(jfS6NinQot?$R#2g$7i(^Ou z;5n~$>Z2sR-@SY1-tm~>2vYs`#nKm)_z_`l%h^sxej`A+V@QM!;Me~dh{eQXYUzjo z@dihfn+UP{2z8QwgJDcm-CYx`$9E0iLj6Yaz6W1k;tIVywXnP#OG!sZr!72swK4|1 zEEUFe%U(qdOioEw_H&oOqYEWRo8_^BO%fg5mk9AD=QPwgkDE} zRO7Z9lRzezBuGd0egAGZ*>WxSYxUr)kB`s$_wTQX2ceWQJ{zC7f{k}^pqIn6hfAmG zl;P|1EJHPc^u-PGNTi5}NMgpmQ$3_|Yo~+ue&M3b}h!3{B z)DGp$j_1^GxHu^R5beFE_6v_!ueh8yv*lyC(_aSO;0A!eBSSDe(Tg=3fG7Ii*3QmO zSokOzZDq~K$U|hF<@%72P8_MxyVM5Bi=Gc;6kZ3`_}|09!C72fd{j=#X=>b+?a@{2 zyMl@S&wn9QLC3>JT3VNMk7sD-K4-?ch;rW9T>112JB!1_ajfn_pJdI`81OUqZKF4T zNB=k4k#d`xn~PT-k2jEM1dq`&utFrsrbNf%fva~SoM$pkylyBdy={+(N1-HE60jtw z`~xXUaxAHs)bh1*FJk2|X_nSa7iYNcxuD~7*zk z#N!PZpmkE)Bx`lh3*S4?wD?(I!9Cwah;(V}+hg%-5V{*nXpFacW6&DvbIHJ+< zK6DDU*VMAZ>dd!B#DBm6H{wj1Z2x|hF?Wbk|*qZd`{yH;i;*q5Nx(Nwa{srOuIZjXr|j68ygDp^65>KA7g4_ zguT|sbFR|T8USd|(yJdL?4peGhmZ=%n7o2Q$#RQ0)yXc(>2ep+*JxRlIFpTa$PEC< z)YsPsq<@Hsk=OChPvp6m@dz2(_v#EKjmVO4)-{Fd%1RGH2qI%4`Vq<{4(z(tHAUUI zCV;g2!R|U$R2yO;)-Eh8Kmf(X#XU*P7<(bJ(Azz&U6RjSb&Tpk#@if)>biYWfV)0~ z=msmRow*{vNQMc2GV5<2HqDj}5mk()34{KQ-a#6hnMHD%MU<7f-n>~JKr8n>t@a(E z4Ankq5WLftRK4b~JaLAA;Eq9{sI=wC*E1@@gOi`Cg7$d!MwwhMoH=ug@)Q}5H9&2E z4)6HvSygLYUi7rK`VS3YQ#h4BR##J#2)&;jXCTKjVq;+HBm>b9-djUVtR`6@W&KLD zFaTtRSud=$wj{a9M1%5*iaRWJo%>4|^sRhtsr~ za=I4k)ZMw4%gin~=`ofH2(n6VHhNadn!b1_T&_sn5{#`$aZMI|LW=v39E@kU=y&mp703KK|f zIE=r)2?$u$$|2X*(UJZOQzS%3UuI=xrKTPShzqQQJ02O%i4zuIDS9$1DXSk}6A19p zv8DYzb2cPOan_mOku^#j>>VAcuU;h}CeFI@q5<~rp~J`CNyM}0RKW(y;4u+*hQvVB zmwac3I(E-Dbx7x|n2R*u!X112jr0d!VtFb*b?2Fh?}Ubi0zy<)?K!FXa3v@xC~|i> zK|nx&jcSin{whB|KQnVWh8KAI&%A)+Kkx#Cp`2#%JIDUu7Tp>iLb@>jCNgploGG~C z$E!1)Z1zaO$8$X+-~1=9+S%LV!VYMR;4dz-YfA?5z~a9m4`vyEQ$G+`>2>jHP$niO zFJ8O=AAx!YdpkV5_hE+RXidls{Y)McUgyo_s;VmSV8#q#0X(zE*48jv*OfCLR(cZZ ziTiMy4k7t`8P!dB_^GxJ9fu^VjxjdW}G%tk}Sdfd+6)ZUo`U%x3 z7d0RMwqZa{$BrG7J#vO#PyFSupp3)6AP5}PK7v^O13}>FP*{0(qdPj}`rh+9a;Ua- zog6Le>Qd3rKYR9U#TER_zwrf+uq;;`ky4dF(bfeuIwv`AEb3~Edjn~l#gQ6kp`?1J zyTwD>WHM1$mQy2-6-Jv%Ln{?Xyg$_1N3-I@zsK5&gCaLfEPXt$VR%PGBt9+<2#Smb z3`Ms`EP-ogW+reKl0c&@Vck&Y&+q;Hg*I9axP#GzeeS@{wW_uC1{aqd8l?<=+9_~K z;}MC|%doOCK?=_wNwOs$KT6HqO@^-Om8~LKZIIA;+k~%m0}^IQKX3AaVBJ=!41UpNVwE&_TI` z#BmDV-rm5lp(G6^y*c}$s=xzVSy?H|aN|lDF_o5<0$)5tcl*};8hZ(_?v2aL*>{CA zKA)lxD9+53McudV%h17wXiEpF?7*4gxVXxPtQo6+qKuT}3MSU2FgpK`)q-1v+;(EJM3FeLY^2f_KeT5@$sbq2(({l4*|!l+#Mtr-4$Pz zp;N6Cs>fwMa1)J(hgWJjienTU9PG8D{468x-kb7#vfx=!y3yntiWMy0OEr#{#-&fKnM|=7q7b+k3JLjdR zrxz611AXBn1_cSIAS7H8=dJ&fH!!-94X}+G`3_PB{Rn%#m8o`uOj>EP?%Y((GM8#! z3VkCJZo*^}!;0!^MI^GNhlo+_Ygsn^_3NmpC^w&{eV6YD3n#^k(DznYnb!7Py^hSx zodPmXZsmNXZLo;KUjQxq7!vr66Qj`){EnGvC$%b9S66{v-Pqc~K5|4Ng!RQvuD7z^ zbJiO-z`Z&nR6!V>Sl#oqHzPDxSbzjjTxJy`)&-*knHz(~9(F**4?j}4tPf0sR8=jOO^V^FIN9wyCLtlYLP=@$pXh)8efl5v>d!hLhW;n|pV9xj zyK>EY)yM^w6Qjk{5q2@f#ZKSTAIOG(?gvgk=SnkuT5+aXzW{o7;2FNl_Ao^#!?W@6 zalwrdf1nM+`5kS6L7pzh9z5se<<;6X>~W4-#GB;WM==SB>$J2FOe_Qp3=C?67>2z@ zfX}29^?7JQPp!W+RuAPvFkXNRjdgXWjvtS*Qk9pl;7ug2EU+427Lbe)#pYXR)66_>UhyJUwx`*pFsHN{)LSFH)s;=(+P=yXfVc*#(aYAF_U+`Bq|OPQFN z-(a~bv8bLUjXQ@fb=lbjJ5>(N<+mC;HBWUEDdS7dPcw1f8AAhC`;Pb0*ks_d$L*e) z7V@LNal`*guc}!|C0({5Oe_i$wBM7bEgg$|hbFI##MS~jS>Bbd{2^<5M@KD&QRfEQ zI7$SpAjcr0xPdfT^m2^JWLrkA-TkwFFA5yg6`cHB-Fhb%SXH(h{-Oo{i}=1I{txl} z967mZt}*%9v!7d9nm>pdh|0QNdw=XjteYFcQw?=H+&}_dYBdf;9%s97&h?7y)rt9e zO-04(u2ZATU0zBLoSd8k*L#TWC>d&gc>|c;EwY-Mb>aZ@5YOB|%s2aj~gB7;7x9y0cAB|2< ze(P$<9g4|L&d6x4t@X;GB`sN~B5ixeV`FG)%1BR_@JU9?dGH1C=g*%@H>c>4(G7r4 zP`xcJ+N>dV>W0k8jx(KE)PgiGi7;j~_{ANfj3;5&)-xUgi9FD-DAyTkE&rEaoLIRqtE{NiUQke_?QON~StbLB3m`URzm-(eM zaa<7_U)al>W_<)j%`AY@|EV-^u{{?pa|9b(v%vC2PHk;%4qi==X>OgjoX9;GVri@K z#+8Kq>cGDk^51g*4qX~1&$6NqD|_oME-p|ryMEatB{B0+^OaqDhI?XSBp@e1DQDRU zv)>M35bW8Q$!g41ZgSaRQintnrj3J*?Ydh28xfswg~LQ2dWK;i3v7&>i}ng38Xg*| zzyTU*sqRK23RpaC&e2|z?p&xw%&#vD8>cc*i{_--5d5YLmLo3H(TPn*Wfyw*K4q}- zPgnZZm8>&1I?A9~8a5{3b>YGVzWfyO58u%&|B&bJVDfxtbp(BGUS4A;XJdcA;H67i zH376UkB#a)d;CK}CL#9)f(yw4>Ev-7oS1B}5RWxJ%aP-$F|n2O#bsZOH&p0%d3U$g z=EpUSgp)GLgdr2y^R>zK_&yNeC~@zea*knOQ>BEL^*a=U_k9HgcAF`Ap3^*qKT~;2 z`EC_a88x+wXU;re4Vicng{OiY*DmQq0ER=TqQj_^?skRu4@Cl+_;-w%0rUI-R1$2G zk6kloSl?Ls0)q1L^(Cf<>P1{!oOYZz|7RJu;U$|M=)=E4;(Z8$&+5MUcD1==GhT9N&XrRVx!ZT!K|p2IM|fC9m3SHAR$e>1z#nR z4=%z&xJ_e(1|3UYn%hH@36b$(VkR|7FpQ+zHU*$!$``=gn&t6)9~p=7dGVBf7Ye1a zoQKHd)-G)ILqG3cY22ClBB9;vMfqmxwX7DE(&Gq3l^euU#<8v(qoJ7dN@WVDqaZcJ zyle+V6Bsf%=DsGNc8X8~EtC#s8R1XDOZXQ2k-`N_fInd*U_5- z{`EQV|NnnZ$b<^ym}R>wX<1oWiiZ$4^&#Sq)Y8D~-Bhgo_AMzjl^skN7g(1(*dvp- zJuwSXzfp!Zgp6Ww;mtM7qEDC}M-3PUB*`luGQR|- z;5G;L*C291df@~;7vWzYgovF{`jiAa5Mj-E1ZmDuBM)yNbri-DRdhN1X_id9EPPA{ zPt#(nnSP%I)~r7~JlxvWRzaLJJ3U?71vegY=Pl@S3zb&%56D9vHQb)Y-|jmp)U#hR9@K* zgDNQZ8W2wi$=AWP2yXun+Tg~zln>$&6_qaFJ4W<K#Cgmwr;i2(w6ik54Q05}U?oQI5ViJoB`J1mUJ0uts(Sx%MKI z=KEdyK}692=9a{x&e;36Gz{LCCFVsJo4ct`xq{K0!(7^9*)h6cbI$?ur^;e*cFTrUA<(t1|pj`3(sVDSyI72f$`A@8S8 zpB5MM)%g9AN2Z?oJmvHTg+k5D%ut;qaRLcbaU-aRNJ&YV)C=!CgYmnWWgZZYKZHAC zip}@!9r5g79fBX2#%OCXFfj#BB}j$G+-$|jB_T56k@KxXwX03)pkNoifgO|l>=o`= zs2{Kd=cH+tN$D&K=r@Etm{l*b^`;Pv$himA6yPW{tr;+{hH>+MzL{PPh-_%41vi_0 zVKQ!d*N1YJZ7eVu7El^yJdYNwmlwF$p^XKW?P|j%n`t>gI zvG70KH~BqnWhK~wz|L|ju(CjoQn;*NrU${MySum_`jU2UW1}xNQYH zY(cCmx3KWN_5$SRP{3AIRHXiSI}49;&-n*O5$R`2-3iGvYfP}{l?$zDb*pu2gBHXz zH2OeEMM^?K<8UAX4QkIh209@ODaCCAH0uzP`oi8^aPD7*_gegX$d;wf2p19M_-mgxo8DJezCc1kr>O3Y z`SmCGZ8_t?uKFyQodSs-Xij1i5^Cwy{_%p1%}pP2{z6bsXbc+uZ@j>P7xMI%o>whK zBM>vO#p#skg-ktnK8auq!@@)G;-$#eYTLz;dj+xe9~&CJ2q)koe5DV3kh;aWqe2)r z=J^RL1-*tNzTU5R<1xB*+g!h!jL*(|sKUcip=r`3b=um>qU#)$MAXJ{dI~?ZRL&GA ztPkE-<%J;e36A?a=j^2_6Q8v6WT+;DT6f)2IM8H{7;>IXkh~EM-?LeLlyDqT_-e8A zS@~4yOrgh9UOCL8Q?QY=bhLsGdjCbK(Mc!O_3$q#g`}sar#x@#r2`2jhw84es-YoW zxRC!hHodxc$;osaZ3j$BWtUzKcY5^qvY22^mylFRX=(gZr)K)g_CU)5C6r3Z*j#tq zRw@q zEOX4{vN&nQof5UrfI@3}I`j4G5-Rk$Nw-)aRmlQGeO)`*HbTJJK}TmePCWP#3kcJA zd5gYjgWCeJ;lo~VNl?KNw1NTP`e2_Y5^$RETF-5n~N@_ont;|V)6 zvpHBfzJt=Eqi9SSx=@J^s1426uUS{O#BZ9sco(Xgo`m#Dya&4R zG!lTmW>&V6p#gz`w61h+RQIIaf`W()`%4^y$6ObNgtJyH7Fa}IpSKvTAw&x}tuuqb zUhbzST?wT@Bw*Ytb!1;2Ng6voJF0;w3n9f5)|l0TU%Ql?d=Pu;SGb}z*$&WoM^hXi-a-1$wWUH_B^^#IjE=}Kz$pxIaw$kkB1BR8-TKS$m zeOiGd^oi~2)ra-(*`HzK$4}IGs#I52zxMSlgMx!mB$vf)``kn2PyTKSTEx?7Ia0$a zc6RG9UfLjF1Qs;!LOph${Ff;3$WH7EQ7&^SS+Bk4=jVqK(5`qTEwJ(Yv0V6JQcvxE zQ1sf%J_MOf5R+zKQ`1ch^M9V#7L^~AVbt|}>>M%iT2!RgWJ?@WeUw3~oc4%}n4%b} z8NiXDkw~P#)=U;aD5;+iCF244Rsn z6ciNglCi?=4X2LQ|4HwU!e~$tZ{J>#QnkS|PVCTdtRH@$SDXH`IbinjL1}%6N>=r{ zr`J$+eUKRxMI*~d<`A46&KZ(xwv zkY`%XLE*ht!5x(0=UgR-5T_&#{O3ozb4T6pYjBk_GH$AXihC0Xl#%3TO%fp59-%{= z4><63YRgnOz0&rB=5$g5C1&j!MxXa0pIP~l(?XBQ0YaoTi$NrVWh4wuxpG0CbM;p& zAutA8{TnvxRqCr9c8bHDWMM@2!K%D}~Zp-v=JnawvNn<#>5b5bamZmXmEf!2>@014B8lbKAr2!vI z-&Xhc4*Ql*u=_ClH0ln?HjSay_jyIj1t1!9oNA**#~<4tqdzo;up6PFusur1W1mf# zqnk3v9dZ`)`dk~!r8!GEdc&06aZD@=?G=;kTnSs*HqGt+8M;oYo7Pi6Qh@T_VQV&z zo{kOx5h%Ed!BIOr1n@Ze(O1+aH(8j$)+YCMngvf>txv_RsXw#@AFV^umCG!QqYvWn zG^fnyk|h8vfH0(NkM5hAe$40iUD97(Ey>AgH|`A5@v4cLdWq@=Jx~%k0YNsX;jYGxGY64!v(tYn2~)<>fldLRh(6T`m!EQRE*KEoGSU+{G`M)K02@6Snbq20-? zPjs)k3vNfVDU2$-Y7cBY{T4VR>q%Mkn9I(zX6vntTsG{|#2jK(pI3XeotA#Fs}Rq* zb!!Mf1P+ltg4^n4`@bg`x+RQ0Nlr6$w&d>#QF}T9H;0T*lqCIFSs6`<4Ly_6YBHT5 zxRd1TiyyAA;Ome`juMZ2kkz%HQ+3*$>&-T31ws_VD?9LrUUS#!IFoB}IpxD=F5mdw0u>zcVG=W=4F%DI%ejwh~kAs*o_C%J6y-dY) zvS@UVCq|nv<;WU1oC2t=oYA%f9e{6<&`2~&HCAnRurkCpyRo{5A2i|n|yoQOPWp#FE+MNU#5~3 zFK1QVcs^#23F%{?MWUpnR91a|LbI*Qi$OHjNg{{w?UgBstj%GHy}QxgJol+|R#2$x zp1qPp^ok#$e+jH1q-Mv&mQwqJ;u0W=n>v^}Eya*jBtwm4o$mtbjfUhV9^+J@pYV`Ih10ib?Q~wi zHfcun&rL@_nwylAgfVx`TARWmDQe@~~{`_pwcFF7qOL5&L*uvDz@ zLWYQ)UA~>#YXPn>w57zCOSLuczx%7Qo+^oCxMyPh^l4_sdR(~3z; zE2f6FGhWmpF48cX(ad;In->WCfKlNhj({#}K#pdb+S)^) z@m7x0Z;aS(uWY(PSc$XLBF>aSe12`QmMKeNh%vwmw&|&pCuaA_-ek?)85XR_DyT zYr}+Ljv?mQs~b^Sm$^d4Yr+ttQTR4({9Qfa90&d858>35H_EdY&SGS;%Ww8&viLM! zp{?^m-~zT;l|_%H;U-^9Fu>hnDs@uQM@? z8>OVAOvX9xZf`)}+G1l|K$dQR%>qpTkXEueOO%lkqw5$vlE_QZYdjvtP|LVbdp+iPY45vh%CbwlJJgxpf%Gy5pE!@wK#dbys znXsl0L4D>zBd?cmDsJUYa_%Hy5!7BCmY@xy!qwanI&iFo$HMD_PFky}g(+PIPeYGH zz42u8&dz4b8hR5a?9icf|NhNG!5_JX%=F#>)c{l$WCC7_*&5zx-`jkGS1`>t{r;T> z^1A!5a-?+&-OxdznZ45)GoN+afqjxUKXF=wh_*2y`)=AapbY?JKwASH8`Pnoe>=o? zGg}#iV=8-b^zDV{TD91mRJ6j~l?%7Mma+OXb;UtKr=ZX-&Q$U+b09K1qyI=uP5^Qe z2aTD{_DQ*Bl&v2@GqRC??c!(`DE}Y@F5MUlMM;^Rs?gjS6qJfm$lLuMGAqc&pt6%w zrReO2nh`eIK9Cr_spIOApMal8@)-NoS*-WBcYamHhickfAy;$CCrbs#=`wC zQ>bTCGOxx(Pg2|p_BQ~U_Dj90RXG6d>18brEN6T;q!m93 zrzAA&M+tX%=b`wRx0{13rePFgvYNIEA_4p5#Pjc!hg4~P1D#GVKl{}Jm8YrhyQoIOo} zR2~Ysm5dwRu8(9@Q@&3o$vL~pi|WA!Utga}Npo;?gymc6f8EBT6fE#XFK3?)&YY&A zE5xYP!f#Pq%zV#SU$@Hu&!VWJLWeArf}X}lj}q0`Pw&6?^>m)F#r6@p^>Go#*wFEw z=H`Xnt@+yakK={J-%MTHdfuQfAonTlV0F%BfHEybalqPxBn;w;LkHuUIh%uEb=lnz zl5Hd2LKUEr!%y#KX}|oL?DTr1Q4wcqeZndjSyr=XShbw=isj|I=@V!3GH{<0k1O_Y zKq%dnKDD3GXln&Fav|It{TbgL6Gq1fguIQ}w#Qekr~f z5AmdZrMa7G8pYWJ_Cu)-oKUiC z>IaVL?74H;O851`p@mz(@Tg4iF=RoT_i|Se9Xo`U^1CFq65)olkvLo;2g2tfhAb@m(iCAM%tS1-esB7e~H9&huAubxM{r zcFC^}?u|>R%l4yzia`HVcTqU~IJD=#2JH{PW;}$J4G88S82QZeD$j|8n~RH!kw9gBj30(yGr-M=2{ zKyMg+&K7TSlqy_EfgCIM>-0<_B(Ww)-bNKtR%o06IV#FTH)4npW!+tDe}l~B{{1Ex zA)Ib-7z?Xn`0QiJ@$`%gKPC)qovZB}+v!;}MrrpbvJiB#YttQOO;NX?Gj@nvfmWLM z!zNdY+}zJ>hQDY%QZ{Q5bwB*F_bOV|tof@oR-S1u9r+m}=DDT(t5j4$0Rib8DRTGY zyYFKvH?8}X8>xhbnod33)Yk4DjL|`zy98RITCZJVWyQ38Hwy0Ym9!Zw#06`77ESHF ziK!{7JPC}TTQ;rU-cgTi|8O9{S}QIrEPVa?l*5$_9-AoB-zkvOY4jVlLTdvEXmIN| zQo`PCDC5-!HCVSMCniRHnv4&G#t0rS&RRH2qE)3UZ0-Z5x9qU#K_9u3U-a&B*d8Xu z7f1UC1%oxzA#GKhMwLi#dLmI*jKLnIgdPYt&Ph((czGdvZVm zpWq|4^)nX~GXo26`9zl#!I)aj!oc8-=N-YYT;)+lnTeV5Um2F@)%qqAieS*BH-_AB zXJQrH>TH~NxF}qBqy$6Prs#*VXG@u_$?X?pt;=1mx-l98{C8cd=iJ*K7jy+u#d86?Nf{alx$-sM8F1NWO*5ap$Uj+7pC~&g*1GW+Nv12Vei-RkBWr1f^h4ZczTF5dx zPp9VDjbmiutI&Kj*-$fG{7LXyFQ!##VOY7_xFC2*+Jb9p4?4kpaxh)w+S*E?B4dIA zb~~Fk4!rs$4b*T%!X=lEh-F$P%7}AaZ*(n6zjh~A;3bQipamL}XE!$;3a4RGLlwCU zz=0P%+ekEs;Wyq#4atlhi(5zBYT&&@=AY7P3A?Om8_EwL6PKD2~T}~AL6J+k+ zx|Trzq7v&+m`yHPNKRKK-dvM)+ver6)C{x_qMX-%JXm<8^kqiRS6o>+WHA8?+CGJe zMOMpbma76AreFiqBO5u49)6P8ZGnwL}VXoYDvHb?QRnd)ziRUt)x4}0PkGInQh4%Enw|`5~P&fXH)Kv zzkg5ihXxLqALXK)oWO{dnFvTAWxAMByb=ZX%tX7wBO@t{pb#0l$HdGIM@FP}Y#iC% z+2KD@{7iW`?EW*n=WByD4BFThr(N3gNE>cMMkFNYo16atW148M?=Y;F>v<7qy1jkB z=);F+dCEd9eSK2F?=joQs2Lif9lSnIwHQ~bdu_?`+d$X)9_p^TdN}$ccYABx3YV;q zQ^O5p1fj}}*dtY4Lyd_)dJDRTZ_gi^&}|?tpxBuZg}Q3gv62sV8>7L>&429f!U|}W zmCl$18mMg-h)Qtjdz&3)o@BeLd1W46QIs9HsN{c5WzH7KIQ8V2QScXyHH6cf#NGKe z@Pb$)D*C7LZktGoQ?T&HLSdU0X#TeU=-nHld%4NU&Yr>1JF@P3O4f3eQ@C(T)-7FQ zd@Jr0!_ng+(_xRog+8BURM~g6NT#H|=#!@rWDV{bib3vpP)7`Wde!Is zJ=17(vc=)zs3;lVaW_l8}<-_}qP1dm=9*6saoC$;W8DN<*|HYzn<^(te!F4_UoRu4!Jq7?LhG`aTW-Uqm}WXThFR=-RW>uDE%Jgb^dxfuw_eoZ|Rws6#JL~ z1!tR@#X#j4#B6d+1g=*HK!1;NhMWh0%p$xh=)r02!vtMRp=_Wc=)VTSp-hhYkU1X| z*|~F+yLps*92BWM{qrE-?Q~TW%Wm*MbGKcwZ6bNz%G0Q_Q_s=Z8f2=iNe}7#{EQVjS~_rWN!}Lg0%s^543a+B}7OhG~yVr2ng%~n}c#5syLBK zdA8H?bA7H&tD#lzUVc-jPFcq_gPd*ZZwDpXx_)ZwgBO?U69NHf1zrBnQJ6N z3-16lDfbrIOb==_T{}gj1Ra&oKMN*Ld+1f!@=eYyU@lrD6B83(?a{qN&pz+tx}9#iq0$ z`lP`{wJuLYy#JXFb?{KDjNkYAe#_`|`_jz#xT1{Ar@3Y1s`fCS$z*){*u)tLNy(j^ zc~@y_fAYDyItho!I;3()>Qre(B?!mjps7UY=EAE8hU6lmeFweJ`?#Os`t{hukVUx9 z!nFBGK{?JQUZ0i!+g}zFI=x#x3Qg4>US7jqR~!^t92@pa(Fyvh)62Hd*XH(-6;7+L zSP(!uEAyDSsGyB-8=rU*a} zt{klv8!PNCF+4sp@`%juYtT7U9nSV#9SUL~Y)(8hF<63-)k+Sh<@_SkOv?1Fg_@`MT4oz zAvV`Hr_)Byy1no^hK7dg0O-?OwzhvkKj5lye1_G0pd1#Oos$!~n43QA)oSj(P5Vr1 zb1AiY6aFK@pY%U@Y>2shx2kJVIF&4hAKDSo3=Y0G2XU*M3V*8`{?%-4c_Tny>V?&c5 zbm9l4AhZsPr9fPUSm3|^mEOxxQs(7V{rHqTKyYg0xxnVc2X-xMI3>q^rCkvk3wa)X zeFNrSn{uf980eeETwjPngL)Gg>^vY?K|sQo=2ktn4K<)sGofasv`kE{fSKWVA&y5) zmmD}=y1O%}WZ#{`M)+bsA&d$&221M7Hn1clC&i+-E-Tv}WrA~-wu4(F%Nw-~Ab@kTBEz`~{U+j*c*>xH%=sII!7x^U&CJfnbs z3#fG#^$Vs|o6g zIyyRK>q93U$l(kyCqQzR_=u*%Kjntzugpp}^q>X~gd#9Mt9e1=gK)kQG$T^39Y*kD zRGvmw9-u{hRse_*cx0DF|41mjX5kz~PfR=-4Hm_6!yJbKQimTa9h%Z1th(@BZN9j2 zm_qtxEXc($hs%8*hqvi>TJlypfr|@7;Yaue=C~uSDnO0_uJjiWY6QDVh?~KXmzlqY z>I!iE>ZMM~8ix>!$6c=@qA)F`Ty>E6Kqd#3JOqO8)Dyz;2fMp#Wo6JA4T*fPBEqe8 zeJs=r=j2J)@l0t5H&a;4fx8fXyu7`4Ag8>Vh6n|XW)!Ajf4+ZrwqL_>mOZQUdfMTG zOSQb4jJVE~1n;Rvh< z$GHNa+9#(|5c{XsVFaB|=StUyyuN?`{`vE5`=bc1<3FdnsTX1xG|G?CA-M2uCstK8X7V)L_d)O2Es*GXmPcJi+Zj{AJ58s&^3Mn0s3TLoEdUjBeTOWD(Gv&_N9daFlTF zh^Eoe199<36W~BGO++b(W0s)fgrlNhszu=Gra;z|=j_abc>tq_Im0du!Tg-5bo~kk zhb^q@A`Zfw8Z(>oOO1k}T1SO=9F`x+%VQKpV95h|7>`qa0drC#2gfSth%na+!u5y& zYfCGuNY~vBNFHG6@-ZFu2y-52fCdQ=?3^C3O_)7c{$En(FZ=RFj67Qi-23A^CIp5X z+Sh9ffhXRnH*=v>#Kjdn3t~=COq-5?sI|VPMg^9vfq|Ddw9g}?UT=d3Z{Q=4qLrYx z#7JImfK>hI&jT|54{h%q&gI|#4@(OzDvG2+Mrp~;%!m-#BcyC1E7?Vvl_HT{M)oGF zlqi&0D1|bzvXhZu_}Xi6+O1Ce z@_G>a>Tpv^$kV3|Cr_TVwmzm^(QpB>-)zIT<(J?dfd50f+0x2NL0*3M(eu};4Csy< z$*HPRr@YU{!?1bd#*Gvdt|_+L)WKk{~{;BHe>Ru)gX-#B`U_Biwe8hrU#;&ygFQK4gzCq=>D_Au0n z4}EBkaa|*Q`2xhuI@t!~lTYGyQB%j;egk1?Ge|0 zD3^ftUB5@1trjqeC!tdnzB+ooIf3f%xdPGKgp`X&UTV4YWA9^Op@o2Fw(fod)xQcZ zlh>bLzum(p{z8E7UZ2N1Wta~f3o|j|^iXX`WZxa6F?KKUAsO8!n%I||>!>oTDUBGv ztvh7XP!)G;T2#KCGL>9nZN*b6NAB?f=f&&AUP9@gqJ)c0WM`R+9Ac?c0>RJk|2;SDl^xL!G_~R=Au}qfz_3wj8Amwlmo6 z5qHz$HSWTvZ~@pKV<$Gvl+E%Ps`Ns`&~bNSOisp0<(u+5=QSfuki$qR8afL ztJlY{ifXJnzc)3V^aiycsY<(1Bq+kB;4)A)b;7@I@sbBtBDvDnh*`{Df092p>)() zAAGSbjy_y20kv_?Cpnfw?mnmYr>aDRg`Iv+xSaW{9}m1()kpr1J8{j;$)|*kjh%hp z?w_NhlzKb%1{$~l+k~9wnxWi zv(Ybo(Q|NA!J2qdPcP%pz%eWZ`iXZv1|fU{S9dpUK?$(( z8AsV}=EcVokuxc3X#&o_Qa@RwL&VbX=Ju|Zj~^2c4bc|mG|4CTsby`V|L5PGFU`ab zNvO$(hlhy(6EU&tm9PgQZ}bE+GmHVY9}>@^B;GLttyWkyATa=p(8@_7E$b3cS;nQm zMJ4L55$jNrL?`*q3~2j!>a5IVRvQ~A*%ujNf{;x)Fas?7v6AQ*$`VwTx23vJ#lNkt zmU#Z`8DTQz^p(z8EZj?kY(}7QieOO6Jsq&*l6h&fcTG}BIkq!e+Ujyv6=*%SFA-Y9ULc&L* z`Glh~Hw86f{ScW16@O(;W8xE*7#1{G-5vmk)^4B~O}OS~ss_cr|0jzC4@lnq=U^U@ zDGnDvtlL`zELrqA)+4SC&|a%E6kB!+ zFn7XBK*T4P128g(U?fb;fch@sBOuCh;8gjI?}sy9M2W8^Az4|@nR*(ZTU)#3?*!~V zf!DbY3mzmNGw{{AMe?#ETD4FgB_fLXf=4k)Nd(qV&T~W6VLL^oL*Z-UV?g)}0;V%# z4p9osBU`DN&ap8;0??+uT(*TUJ|eJ%B-cH7w7xw)C(iYgRe7b$e~vh3p9F zmyl;5eWc3K%daX<@(XC4scTi|H05O2+S=Oi^%Vo{(Q{pRILv_6vGVMCq-Scyjz0l; z;HGWn=vbJij_gJo8(0?RW)6&hc-roil8|5oWiWI;jO@G_iHUtS+nZ9mODx9$RvX+! zlE;KEIEfQn@C7jwxmbi zWoDcYK^VR>I__&~V8Gl<#F>qcBiU^O1;zAg@myNSXlHt(5t5^#u1@$tyv|JPCQK*N z4DHvBUKwU)=6Xv19Y<)w=@OeDd8{(WBImu-nrl$C^nwKz135vy-5VKxgkE}O*ZQfbfk=W^uU^Rr$mFB0 z<<|pmP7BM}x0o+?Zw<{)bv!{!CJc4t0S=CH0CccWD|E-KuR1tPfvX(;{50e3S(TjA z^707oq_(=}X$K-!!m?gc@NN#CYOJ&(lP~?eyp3w%p89 zPt3@GYkGg_BO2__lq>7)Ygif5cy~c5GZML$KenrRyI8xH zIu{fc(%yc}+kVwE`b7Mr-dB?)>#xVo;u4?wvwsI@Xz-_}q`U=?DJ?x+XX)K}mt32^ z1=}9cB3c(X}Npr*3SNZezOmWAbb2vu2v?a^p%s7L+R_l zNP7K~#V-gQbyR2&sf-L3b%^QV#_D+U#u%F{`h?X_bxPe_5s?O=9MIbLt*zCOmseGw z;+2(?v_+YM-8j*qo(=nSg6n@rh0I%ngzD*FlzW28Aw-- zw_h6uHykM$9n2`z8m>yLL@ozHfO&a%nwy#c&fXpM6{J?wMAhu(_PolV^Nhq^6BCoY zGhI5^5o6sB>l87ov#_#`pv?Zj10*g&l^Nk32;_oT0BM+o&Qq3tlDb|_DEg++UngF= za)n1TqtdFah#O+7BqFhnLo2uPN|f> z-QR!t^5gq=mQExeY_0h{)zOmt{CQN#Wo+3c{#G7-@>Dl&-fSzh^`7v+zR6$3cu-u3 zUcgSeTtyJ#9V%~c?}=T;LF&;j0*gjrS&IJB$A|3RyUNOsAk%$0*p1*^LHyI=`*DU3udo#&l)3Ta z#{y8j2ru=S1Dw~rMcq0&S+GumJJD>d%BeLZBtmOe9(^aa)QXA<9G>euub(@_%NsHQ zF!%o0Qhgg^YIr-@z3~lUGWh)Y1f2Mg1TcPTZ-0Jes1>XbFzZ^#uToXspDu?cKtV{EKTKVu1GhlMde?9pFb6F5<(07t_dyDJyT2??;h1?z0^Vki*B0 zHJES_!So1U?S>W{Brg*8Hm!Sw2uQ5>OT9h9gtdv1@~BCD45Zk(`T2fvX7c597=nT}>76^9 z9XH{b|I>7u@r*rG7ASgG1YYOb4HN#~!}R zqU8wn#!8Rqy*3i)25JI%oQ(N)2QI>@YDJN_fVz&&uoTnd;5J7I8FM+-q&m^Mp%&X>Fz3x|MNm60Iv&dgWWF zRa~F>nDWIouw6huykIW87Rl7OKC9pZaNBzB{Ml6UwRU^Yy>i6%^rssms!Q+xUS0mo z`m4GOgH}tdHuRWh5!C%&_%Pz)o<6vEo7S!F<-UF%-a{gu^gOy*l-Bnh$P=H#uvre1 z1zKH37F)w(`yT-YcpBMjUG?ZwsG*AaV=eK2e~9KpgMaRk4>E~8GOH>sK7Ob*&tF2> zP4)%6&5|zQmZ7_`)!jyxey;H3I!EYYktO+|si~@Xjfy**EmZF#V6fZQiL<2IeRgVm zJR9%&<`%8^wryFr%;Z(fkvY-!ry<5p#uCKN%KFBFCnyw|%r?S^&Ig)>2tY)viRi>B z<>GL~sgQ3E>+;JzMPWzvPeRdz*nFg&5=sz1)rC`vH84W}vQMqrkm!c`yE_k%MmXxv zYy;oQAhx%A(mS7SOB@%pl#+T4xwS}G9?a7cUx`I>AQYy9VQ*OFDqHA6P6x8sNTomG z6B2So3@+DaC=;^{{*U#e2IRi>eNcm%H*+ZI-&0TXH7aYKKq`eZ(RB4~IH>bT1g$K< zVTBj3ZrqnG{<&q-iJOxR6C}dwzy|5)l50pwUUU(kT}n^G;m5~)?g3k_N^gf|mxjhn zeev7qM>0gZ&!Z8*=8}P66q0})M3w2PKaXt9+(oMwuk;al+uG#LC&=@s>g+(@MG|mu zsTwsuGV#ec+7vJKHJ8|zMRzP6et99+3GS+XxfUHVL`_RVVuybNuHj6JU%`x{r8>7+ zciq4K%+cb;Bs%5R``g|>HQGROS)TZ=1R&Y&*c*v@P(eW< zs0zy>0pMGfY*d<;)XEHmap*Q=Q^REt$imUC z*e)f$TvAh88yfbY*%3c^5=JLv*5@Gv=U&T3{a6chVaR9)+J)WR(9A5kw6yfD#bL@- zV#Xy9^6`QuKb$pMajn=>Y#kgzy!XQIe-vmOKxK>$Qf5F2L{Ekl_nP*m zec26iT)nujSR?WNsA-ie7zs-#B7US!VdIj_#!;|Fl}>(EcO3CDOCmV7|b% zptvIfR5ufR1c<^w9wGvqg3T5W4eF$=n$>rc5(Qk=@C9dTZRb7B9?EOQkoFELP>x6k z{VL6VJ7}uI;%`sMQ)r((D^^NYCH@1n9d>T^zY{<2oBs+1{=$V&)1gR=(%HDY(yWGn8g?7;4=g zrr3_?0@6nLan{BSelia2Zoe;`6|J_x7Tws`2z4L;dnF?ntK#-v$Pj%hegU{DTv+?u zXQ9zqP#)r&^~-F`*c1V;|6aXr`RkVAvb}|$0oLF@zE|~yS8Q#!Wf_st%6~#PDiL^L zHrR9GT-_YP^?wfDe)0sFv&T&%0hhck=E@27eh^TEV_#s;wr%1^SgH1)NpLX1{?Ctx zJhXkg+W6bvXm>ZLO$kLzf0A^ds$3YCuLr%_uY?OB1&Q~~G zB{gb{j`wcZuz`IW6%~;;z2{;h*Y<+qVvHC&q+3#eDrKsX{R~pGrKR_Vt8CJbO@+Gc z;@DeXAIX?U&z?oegJzrb-p!gn*EG5|BP6jiK zY{1u-09~jyosQ_zAB;4T-VbVdl>?7Lbadx?Qd=*Xle)&@{@|&vw@O+B*x8ow_{Wn5 z0WFtIv52hj!qg~Srn&gY9~qsR5OhE4QdV?juTa^(FXcy85vKFaW}3m z;V#eEQ^6sk=XRNDbLiJQvj8vR_A~q-+Nm@Ih9)qt3V|^LKqo4m6+wy$F7gc;=pBp0 z4yD`n#5*m_5C@h-5Gsc;op3ztDkzR335Cs@m6crgwVi@jM-8Ju`E2_Py`-*Kj|S!}+uedo^V<2-5FK zPofyNeCJ))cV!xK;(id0grKxf@18ZE>sdk@_BT8gD=if}hMlnUx7sB>`beK;&LI1s z`vsZz<+vB`Tt;86hlyKcaqf81foBhtl$B>L)$kaloOn?3Fg(22rsuR1cVIpk4Y7Yc zE9d*e%d~(tZS7ww3PhP@)-Q*)rVbinX9gyP(qU5c`xD}hw`rV#a2>;@?tN)NNHH1& zVHq*`#fe`*bwvD`ld?u#1pfql zu=?1g0j@!4Oqek9%ZL_)jGVl|$eH9u-UuT@Jh0O(7bFvY&O1$%FyG+ zn-8_Yn^&a_5GW5BTF^QB>0~OAybvc!r}rnyiYz{H@|-lssX)XNx?uC~ULTiCgrI7A ze3WdSh5-!Q*EFOB`#0_8HdB$2sRHFdTv2;FyN}98QIvqK0M6j)R9jU=%VQDR_i!BA zN9I^md{6QXa+%p6=Kt^w6gwuE%tF2q zF|AaGYK~YO>6u%Navq*Z^jQW4{Or3m;q7jHdBonk5 zfoFf?M!;b{#9`_jCZ2U`bSG8epk;H%NSn`p3K;pQ4=(7&RrV^#um}o9 z=&n) zVcQ!75|v7(GkS53wSR+^z#6O_;F67e@|-LzUbUoF+2M^311Cte7~OLEu_PgzI&i@z z8woClFG~9VgDcn3kJsB;=^AoK`!#JsVc{nPhm?PagIi)@eo;#K%D1w$_u@ipg?kI5 zW-tp7vmr|7-bL^SooPlxc{M~zqvugiY`u_~RwE8J-%z)TMo?*AJC}B-QyQT57C&2+ zng+tl;)=8IP^7?HcRL!#txOccFpUH47H3A}x{QFN+zd>&pOi(N5zFgR>|g1mgk85^KE_=FGAtzPaf208NhNOmcfl>a!^1>i!qu@(3=PQg-)k+mQsCSV zAGO+@|MsfacK<0qAB{D12!ZOKB4{pjkDxT3Z#&Xr?)Bh}(r#{%_jw4j=jI}L5xjDr z&!Ejk-DZ=Jlw=A{zw^j6#^jB=76(Ak3CcC@E5^9t1Pzxap8l=?5t?H?i{l}sAC*VZ z0A{lV?O(HI4fNsQy`KyrYSvG140B;LU9$Z~HdE-jPBszr`@^XB#bvWc_LQt=1;q(a z2U983Q#JN+{@matwPr0K24>r^IEW2)GpjSTZO?jLWnh0%AAvIWRTb7W8yFjdu}8s+ zaa>@DQo=qeC-|w-V>a4I_Gc5~w3Rs`NdqmdlQW980=lJ=l&TrzzYu!gxF@LayV*M2 z7hUD#Hu@%gEWSE+VO&<}Bc#31w7Y^WDASX%oms5_iBu=ratS#{&aKWAa3azM?zG7O zPk;S5yzh(JBKx`eipDYVnO~D@D*TRgB@@NC>)2U;Y-ULsK6USGvwqA51ow7xqFjTIwE8PtU?o;8)a> zrSrc&LyT(Tg}Gib^78R+-BSnn@UW`c)I%O1@Xo`7bm4~LG7!>Va@RK@E>12|K(!lf zPbl=(r6fPvig_6sPcjotjC-Ho!~uH*Lq5uj?*xfO!1F2!uMIfQ9;6FNZGGLF`-5G% z;vE6SKnD#$+WU?0!kZ*pmComXl+0*{1c>5<`tHaB(aQyumQtgd(v>z4d51R>+jh$h zYBCf$RsB^%f`WqOEo*%YATfu41m3C@Tx5aTgMK)#MVEkN{rm(F1+@d6s@B}|d!eC~ zQ&g%0Qg>S#kL>)g2&u11GOO~ENaIZD)q0hxITiUI?C)>)7+?~WBY$BAW;n^)5cStE zS)jTWCDMB2w>c^YKecn)^%@63-_sa~RR_)`1MYTT#*=?>*0Q92ZLmdha!qkOC=--L zqNGbjl1>m{uwEENYraFx2CeS%#f9Ik6eQQ)qMX7mOq5P7-T$o$6J4fV{#je?P5qCO zY~p;`to!1Wd#j2%QIGu*X#C=A+p0GHVR0sUQ4^aLTpM}6iwG=j88E-4qyd5VZ}O{^ zm{R(QDfLGZVq`bY%UWN)oSC0^5Gcip`h@MK>hHyMg7g+-DS1!EPppbi*4Vx9Ma!Jw zC9trs%*1Ajk8~?9vvpMEHUG^fgj;vHZIz0(hSLs$L8Y`q%RtL+0jYoEEDR?-zdyvh z`udhXU=WR(vtY3G8U5hkdtD&wI?x6~`iKgpq=kn-R6Y@-Xay&sMu5^otN2RV$F&Ec zPTagwn+832U{v~qbBlro>XboHjM!&Su&^W)6lgHZ2mnPlQT&VfyT|Gp7Y3VMK>^>) zgXE7Du3Mq#BW#qIVuQwqdj?3qjdEd>l&OV9cMa$cj7ZTME;T>M<7k(~KEPi2?j1b} zsN&)iyJb=GIpje~haF`zEvEr`s4!Zri=35p!2*0n4~+2{Mm|h~RN@*kRos^9Jz2bg z?6luAe65Df8S7~o_=z#KOI+gCDgx!u;I&8h{s3bud*ImQ7jGV1{E%Tr;jg)4>(GqUue9_!+~Enf{5xTm{Y zaUmt+xnDp)Z#GJKDA3xs6F>s6D3ohB7@5BbW4PBy#ooIae6GH&O{bi$H;9+J7z#y18cCMm z#sW1_ItnocI{9kDqPs0HEckzXO<9suO^iR_NQEvSj1!F)4}tBS)^A!UUA1MsxxS$V z@lH+aK&GVH;fxCI*!rU5P`r}3yc}c(x4(0AB2)$(B@y9=OzC>pSTl_B3y<$rh*yRuyI5Kd z0|!Q!jF`;!3=dMAxS1Ch$IQvu`0ACoi_SG^c>_rAPkQUObc|i>4ApYRNd5+-MBj)dm_dzns7b@ z3JDYwk9Ng~YSYG-^4;=Y{pqiuG6||dfR@Rc-(;LBA zZtCVCAK6m_ym0zpBG08?R7)}T>A8ft3aXHWq-_s55*1WVZ3PGH4hbc_^+c%ks~i5qSyb#SAeFQsy9 z+Z?b*L>P$^ma>>Xg2K{ABlj6%88A2kQS^lgm@3A>aZ3Q64h5uvY~IYXbE9&CTvB@a zgI!xya*%UHhxop3AWxaPl)ups<+*Z<&pKbdTE7)&U1+nscJG>x!uScnxYjS>{+lVA zmngwoi0VL3g^3#B7f$Q`p&@Tt7(tnVeI)rb>Sssb(ndM_%X$j#*wKUtb^Gbz;t{hs z3ly&R?;kIR3!%{PElqn|tS)-HwS?^{TA~P}0nWY zRw-en>|f}L0t-@bjf;PF$5rwr?*Xo{gn6tdGnbQlhbRAP(CwgzBOo8x*?l8kUopg% z6tUwYQ)=?&o~hMjCY_c-XFX9?Of`JN!xMJiMTxLPeOvmY^Sd zXosQ;AOPg|$2RaGQwT9p_te{j)q8q`?bpZaX&L>8p2qeSG&!@EYTDW&H$MVV_8TjE zi8Hbj*ZAEp<~UBxFK)SS064rfC)|2fGZIp&GOMWlL;H=rGm{14Tp$Mvq3X`#+Q!dx zb-1v%@&Fr-i8}BtjDgTFq%v*4{8W&Oe-nAS4=!-pL$jxswe>{%dI`*O9rQD`ka+ijF;QWp=QI%Z|Pdz>^7 zf^(z02C!*~8>j@M>p+xwSezh*CX-dQqpCN+V2cRS*0{I`DpWtWcOLUdpkrWIsNwDK zL2uIio!J1AP{w9zHBM^t+c|rlP!sKI;Ph{Y_NUX`##oKO0_Su$wC!q7{`|41;z8}c zY0E^(W1Cd9X$N|7&M_tsl%}7C{qJ+Zz2f=CiUM+k2vS*m?99&gZX~1sAe0MTB>KCL z8{JZ*+yrDAJ9lfLEoTSs5jUiyJ8#tZX{A1>o1HI$YEUDM}H zN=_kryz2Ik!*h~afKCx!(~l}kpbX#g<)ZQmXzhoMcsJLZSIX)eK2*ZuQC z#(>w;;Y${($128;>??Y&m>2v=u$1~bUE`5`jB3Op`rW2YxyzH`#Fbm+LcnFXxb6?K ze+{Mzr-w93h}dlD_of2Xz=O)t#atyTBl8gBqV}VZXE_t`v6=jnS3y&pwhS@X96@MY zhNwAII08GZUcxtGkOEY$ORP!|0^5T(l$!LRO|1%ImE?%2K{(f2S|j`z_iqu^1iyIH zp+)=9C*`)4RaHc1@(g&5U8s=ty>@D~<|D#uW;6hn|J7YS`s57LE>X&aU+lsd5H}1W;e*$;Cpltu@^J9ly+N!CvCmraL^Ep4%5hE2HLIJhWxgwmGF{8*e zy?Vk$#q%#|)9FL*Z)kBK)r%9yU%->ht#O;@Hj+|IALp(0dQV{vAx7FGXw9x#c^MtC zg?428q;-c1@kRx=)3le~=vQt$81YE6jqAjr1uo=%+Vl+XVjG<-wk+Z_-5zEPsvU3g zm2K%w(lQwk+m5n^G2vQA^j8aP>7bi0Z(aG}uO%V<|0}{7cYlSae!qU1dj4>cC;?W` zZ=3`n9W99e{|RstnaZFd-j_n8{ms~@^;&UH#^oI@aJAxy-!X>sPda>DH{q@3C*RoF zvuFfXK=aqD%FM#SX+rf2Qg{HAgHcW)F8RXxJG*$(v$D==CyU13`tTsyOLEnvYG>M0 zz6tpIF}9obc#@(~3-oQkh9!pQkU>I2wZrEyL&Ct&5d8V*WjO+|jR4}ARj_A8v)_-U zCYd@Qzh<7WMo0+ zuF1V2!GI_rsIUw`n!ChXHUhKAxxeQ zR5%X8Hd;>&>(r(=XLw_UdXgL*02mwM~>f;r`Fe$GpRKJCl}ZW6LS2Ii0!z zFp9>(wYf4f#M{PIFv8^dZC8;&`j^$@@sPgZil6y@3ECx&pvcHeoR}J&O$>WKm3-pT zp#0x;?JdunsQI3tVSOY@? z@I|~S#t>{BgFoRPBB0)pcS=2uKjBXT#Co=z6MNzuOBjBFOl0<5Djd)QO%}(^?N6RO*+S2Ex0_E` z_<2Ht6rl@Df@)y7(Ha9XnLqJ`mAXDRNj&TwB3YzwN3-9ztVLEa6$v2ofHBWhzz#8Ln|)w&G>3f-r_t*26c(V^aS%35B(=XXt5 z@34R$RP^IQHYdLn_8JRN=1yUTb{3n_nJl4M->0i?1xp1F8ZTiZ94d`0WgI`3CfBv zfFOJa4-SIaraO9`r0O(Ok!)Yju*EQKqM)D?aVz;wO9L1STQq2dX2CZa4r(-S(h5!X zlge|vavWqx?S1XCI6sByT#Pi%Y5seDh$d-aW&Xx}uSpw@Wa80g()Vz3x+Q2ZUe!LggG6dg4(_9ju)k1HGTd z^TeJ%{>YXu6wjI(MJ{(tXC_Rb)VC8;Mmn8D08Nio7<3j%hg@#p4`3vvDjhA`0LU(- zr@cq9+de?&y;}Q+pH*3ehzF8)C=V*f5f;G`bw{egU=Dr(&;`tO8qZw{*&aAYLGCjY z|J^SB{$lOj$VhovgDj^zS;MLH1>fmZ-n?~eV@TB|e|7iLi>&n*+Db3cpD3DS{2Ko@ zoV2Mg;;F8<p!zj$k4WpM$LWg-0FgEz_!w4ZGG@2^t(00(5-f0_2nPe$y6?Cc71HHCvG3DW#aXTB6GHEju}Pc|{^Ph|;oqG56~}F_BLMe`gM<9vlSK?rXc=42;(qHXXN!b{^&* zJ4#k`wPd{dAY+nK)S)Ss#e%12Eu2pm)vc+mt8<5hf=yaln$p2qnsj0Mjfj%yj+TrO z*P*asIkxX^-8#t^Lq1oBhY9mHi(YInZ0zWWmOE*XSdgEuRt|m@vT2cC{;$314RWwH z-&jLXJEbQzCg?A=Y4TsGG3-8TU@^7#>Eo+Vl$EeUt{T67J!6jByi;4rt&68xbk>yE z8LGs7))lXrbDp{x=d|*S{=6Byz#Euj`8og4CPBGAUaO%-5iYx%stXP8XdN@`Q=Pmn zVHOL7`h6Z$3=D^dw`hLAZQGsx_QI~L$>Y}nbfIvUnE-g})0dx=#E#kI7}IFL*`O=W znjF<5-<0)sGR-MqM{_xyN#Jp#cQKl6L}!^8YW(rb7mK4i`7+4Y*a_(tT;8`9l@)9j zPo&MFE~b8N&N4q7E1>&XsM6WqN==iY?7GGW+^^B)$BnkBFTX{xJw>3fNO_&>0ouki;Y;x!V{*Er^ycmkt?+Vkb{} zuzf$1>Ksc)=LDuLqG4%g+pK5%+R2L)*VZX}4+8!E)MVq2S^^_qre~MN=p0Y({bXY`ZtGCYp;nP>O!|Ipuvs~4 z!dg%l^Ko0`mOdv_F+QihK0c@UZ0_sEnKscmv3`L4qYkTkzJK35U;xof{vrhjAA+>^ zBbS6f*743UUdOBE=}EZ>ZyCA^lfE+0+wA43PqY5fSLA=*dL|_OoNY(q)LnDCmii=J z%&K@*ysW7iH~<9m1#M>Ufy76c{({+xwHhLCcG~$vZDyhzbC7<#(e+(l)x;~n!OLdp zR`0%H)zatB-Jn!JvD(tz)4S7iI2(e~OB8lDV|9xHHVL`7@u81dw($O@YW)*tFwf7?nQu!t?~*nBfA9Piq|+C2oz3N0>$JLU+oSL`Bz%Wf zUcMf{hO5x+14q6Z-`{`+0g)oYn4;_Xl9HM_I6C^si2a%F)pJnKKpAQoIYN$O4XJ1P z2x~$7dIpkguMBBH9B1E#kBbSa3M z+IxBVhgWYJ=1S^}k;t#v@KH`+~!-Qf3 zQlEYMzKIm?_7i8Zus*l+Vd)#IR(B;f>~2yBSw^zcPll8w&rqe#`o41<+irv52%t|e z93jj9Q4P`o0z?)xEPo>jj0i4cBr+iWjl$A6nib=KM5(TX#Zo(G4?f@HGW=_m< z2gm&89}OJy;?5-+tN2_;Yb#Vxjbfhb&ISR7_SiCtrhz$x@%wk8DoH3b;~SjZ2RSOD zUYIX@hd88%b$+xjOumV&X#HgL`}$82i-rWCJhDpQksfPeFMHXDJQxL;>(;EPx1U{zoXX?exsj(mQbyqI$mWt|BQ}gQ=L#;rY;^4M>xBKa z_Os?*ac*ey7!ydXsk`N=D!0yHwOZ@CiCl}%iMplM-W__+`@PPd=Q^ym=)h-qqDoTW zu3f*MH}}knW#=3!iX~oAaSR8ZgiCMjZa0Raf%2qrK@;dYCYdgrv=xy%U-u~KawU17 zc0)=Cz2UOWvC>zb>h9U9H~TYt&+A;dnMPGCy$O^0WaKc7qPhY)0m@_Z3QwrN3a)oi zVtA|0y|O1J-cT(vn_GXc<-wJ*WuN%dgMmw3JC`##7M{|v_77isdMez7V_!hIQ~tqo zZc6z%(_0}2O;LIvrH7p{(HaD(jku#QWIt%5sj}wQOTfreR3t#9EigE9w1VYL(X0M+ z1vt+g%jDqqN(=VsvE&XficQ>n+R`L4ZY?2uRi6d9IXbUHd*FKqugQW`?Ah|y$VEL*Z|!l_3E(u^Vo(;ACMI8XjB+%~FDS3E+dE!Bx@-O0pSDfZ-___6 zz2?vxMt@LTDZaQ=XGdN+Zl3<W0UBwqFCo+b5*9^SSu+tA_)F<_?r3YC;|IqA4v2ME~ecs zwU$}=PKt_@i@v2LCFd|!lK&sd9YR=N0NaPp(%0JQ=$dcUQ5&7Xs6YscLAOKcfLYD# zfi@F>qz|7uTXWjMu)7-#e4iFE3jm&{O5VVKIqFxwqucdDsNQ`Hi=0gks7xj=&^B$* z@JwEWj_APwsio(2g&JUNxZkn$@>2QsXw!1}_K)xQ@>|*ImVRVVV(J*7+3CBs%>7PN z>1k`9u<5RZ`u^VL#tJ50UI+Bd_}<%s?F<7&YGQsTF|}#%vcLIbta@*#v_Kg=K$66V zROp1W7#EG(TMNxWkg`^bIgcvV@Rm!c90WP zN-|(Q`CmNzBp}uQc=**L`BbA$)h)YR3wO)!1()w`-#`2)NwFzqwna#cN9yckDI&4v z=3EBc0e`xDNcIeVN%6Mc%JOGvM%p$3u7!H)d10BwWBoD0(_dFF_#JE7r@>JC*K=*h zo=P{{zi<3;OkCUzH%cr_vNv00I7NW3xSe9*{{)nK_3G8^+ji~x4Oz5*N&Lj`3u+m< zLrapX=+IC$;Zuf%i>w7pX*dwSV~Ae1Xc&WLwxxIti;f?rb5=fqk?Q3P?z9`MEazg) z(&^4PxN<~}_+LezokX5i^`BtR<&WUu&bi~*(z)|EEZBw7E~uQK!guH>RwSHb??gbP z);2mWVc{r|F9`zH$%0cdYwhAb?5oj-vz>VpV@I3#`|@Oi5ZNcr9(K+&iLxK7 zNn#&Ao>q2B_N<_odjE=urkSH%Bx=+at+U>q0-ETS=iDyHzYsL~YisXI&-7R!1;Sm) z00;f7p4g7_h=?Ef^qiz)=jtuwteW~d-Z?cFe-xtZu|S27frQml0@7crWov+ z`um0d?;>uzHw*&A&SPgyu&Qac?>pGrL-lTgYU8R|`jt{MW~hvC#}|J}Mn|U&GZ?nf)Bou2$9z4MI3F;-?@CopQ+-yNnk+w%iC?YX-mdHjFc!!E9Xw8=*dvii}*5tLhbT9vLmrTARcTP?wf;}8-Lfhv9*-xX@uo^O8EsYn+FU;+;_rL60p9um2;Bf$&D5y(A|iBipzUu^mTnqR!9H-!!nj zPDbYWvi{@8%5Y53jaPdtbzIxgWcWI%QV}#Wg~i2h#VL{6ymLA6{>tzd_JBnHNgML! z3_XSQoJjsuq8}%@XJKiH7W6rAQGk#$`_>wq1h)zn-A-azS3u*~v@wZSiDKX(%_uJF z-2mw|q!Bv?CoWt}a^!5D=oUT{8DQj!rw=q%|3DgYMAp;s-?!E-s15OaqA+plpz%S~Tt3vA!=~9}d&t zEk&XsrMZ7+@EkzP#sTYj)@T=a^8{40Dh5dGmq}L48zI)lPZ1xQ2)C(ij!mYjJu`Pz zJzJ*(Vw|OXZ~#5~JzQKe^T%X=(&1+Ch$l}15Ug?}jR8=&SRzX-yO~7X|Fj9XMNmv^BML`5?*|P! zhX=Y5-C9y*Ne4`}cWoT^oYDJbMn|PQnHDqvBH}d5J6xwCT_hMYzm~Ao`rnRkj=be# zXd+)}!?p-Jf5n?OwzTYbCO7f0YEm4o*V$IcKSO&v^#1+w;rQRDg&{KKr+>DS4OQPG zL+C6YCx5(Pe{Gpsck8<Pd!ylKMsqkYlb;F{s`w@r}uf=`iHs_4Ob)3EQ{-WZ}&L=caVp%15 zdV8PJ(h93IH#)fGP=GxuYh>l0r&PZn+dHYv%@tdG4n)&DGmZ(#DAII&lnT>{>|ZbJ zI?gOhnKj32!mzow;xXS5o(EbEoHiW8nZrP8+y*o4c($M{Ww_E^Nk!)qUdi`rX+``j z-jfZSw|T4}S$*8LPAKHzLzz`cy-9%bT7|3 z)%jEPLQD_NT>mvS)myWE*}Y^>U34%tVtc(|!CwY;#@NsGVgJFHO!nyz@kV*76eG3`<_J_B@GpCQ?t+R&fiz?p| z4!E&XN}IrWHS6u9^%0nA32|VVUV2c$IKBX@d|>XJN8Vm zDpWF6AT8M?#Ito`k64b(>akt!dv>n$h<(19fhthNG^|Y`ocOBemt&mVW>XG}-1tM3 z*|BGjIqr3?Ryj8Da{V4mQke%=XBV7?@Bw*wSDbAXhv9UCNAO)u4eVe0P51M!N_sS0 z&sp>~_};xN#|fi>8{hu~JYg$j`b4sO8aCXSfXXG+BV8FbIn(~W^GOBC$!733Br^qO z8NVFjP_DRjJbK585G`(n>baRZ_wV5z5^!nLMh(cuL>RCah&sq~)tE+g$ILNkHXVHU zG1qk4%q%f8l2#R_*|z0-jFF=W9ota8n*Jn0S4xQIS#VEN%&)mq^%hZrjy6CV8f(}8 zff=0`QxUWB^LQ&Ej0{z0?$?5PZm_HCqRx?J)j6U86W14|qWF0t$NL}%h(x!$o$1)m zpUCdig6(wCzV5Y!eQ~2jI<|7)vjlfkUENu_XlAyvt;g&yeTpd^BBdV7rdGbcIq^S~ z?|%z1t)f1K?$dGYznip(fbhgS(yyb|KFyKi9TxAch>CB1r~LK%cbc6$rSn_uMlu?g zD^k-<#u1m<`I3rRn&mM(M_QL{I6PUm>OrmZgZm{g3K^?Zgzd9?qOYLs_x}C+Brn~^ zu-VRi6CoagLWPw}L)67w4{|5O{zStCXL?v#LnFUnaO|ano#;rXU~l{~&>8M}gRf4h zfNzC_bWNrK_8N*PVL(01!Rl}E8i2g>Y2~Bs2zx+CzM0GNdwlgo}<`d3?<39GBd-U zwT;jHzYk@MIHv)SK208;EAwT^e-Xu*!>MzMR-gZ^8JQY!r%a6=WK!%|Me?=b&(48g zz0&#(%I)cy`0e%I=YQ|^jZ}uh-1|@57doA0w|pQn0R8~rrD^6Qzy-~j@q89TjP89b zhA=Ng*GWcI27dH^MQ3?R4+uLIN8hL%ymA#Q7_t;=ZG;Es$HhsMKOO=cwr&f(a^B60C8lC@_yD?#?KpSH~I}$d&Ne{?hWB(IB|eTOHe(Q8`A-Ak^TZl)T28xYQdJ~37ZGB^EJs#j;<$B%p@cjhxiI|E zm5B$~V=hn~pZ`Irrs{n^BPFGa)1%~p5u@=Mc;wzc;3>k;_m|#BFFNc@cu}t_74tzMlOX+ zb?jYkT*zc`^e8-MR$Wq3swIQ#S?bnKG38A_K8ceI!!vCrAkZu-F80?@Cq^>@Il0#U zCpr!{5NHsUyG+a72M>NN4z*p93+|nNVaR!MsgZPWcu?1qsg+JAzZ?){Jrlup-~gvF6f96Ry`v==-MIYIQPE64 zn8xOL$qazpU!HOz8Qr|{6RAw-NmGHr-8PKTgNUtNJd>2}<-m@1y!hyr z7Hi)lqua`DA{^S{3hV$a%Wmga?Iv4YKY|_&n?UHwFtY!frXfMOCuy5@r7kBdVLgUq zOph$Tp??Nls&X-ETZ~XCgd!J0=XIX&lr!)zTnrH6;o>r|qVo#Am7TFLk;Zu!ukb78 zGn^&|_eZ6UB=u2u-RWK=H%G z_hUT~XvM+yJj2F+?;aJmBV^$?*)XMxm4$@`IuUf#PH*6d5gD&!LfdHb6!g?U7ZT7U zmv6w-?$kiT##GEU!1jJ!R8;=3R&F1zkDjFvpxF(W$!11BY!bA-6V}7*Ggc5Nahle$ zWrutzCuWYGKU#n{kDlvhH6wDq8tY$e!&tlVFSd2^LK#-ipt1w$-;C%+gbu5}HWL;R zaYt{4*(m_s@RS9XIK9EH>R@kwJ0KwCzWM~o=nJaUYf_oB6|U>C@&=Fw@J?)2`}lF&0Y}$C z{hEGH26iWfg+<>V;;Kc!uHJk)s~|K(nlV+)a^(l(WtLQy%=xjIIx zb;U9rq}m!$F-)j-vzySJTdSxwM9E|1hz=?yt8|DQOC#hQBXZ31{xy@`p7k92dj9Fv zYs`Fqzwh<=e!id2`~Ci;-!Pa&XipQZCONfKE6B0g@}S6;Q6cx8x|To z0;{vQa`gB6EqtEq9C}7}2Ih%QUq-Es|EZ#>X}izrQ~ABlxlP-l?EB0Qp_dPCe0Qa( zQ+3scK7is@ zZ{IsuUl{?@7tt>!1UisZN}B~)-&?n4$tL7jVJZ;Z>rDj761i=o9h0ltAUVX=AVm|F z)(wPfVDuw}z3G-ldNp|k0+6L#f!qt*0H*qfRkz~e;-=dK^vod4mWj;mzPh65xHytp zh9!xF!LYWj6UnBA@_b2232=vG9n^ape!D&LE#ukgEL%3{Q)iA+7c3wJI#On->2IF- zjLlPVg7}v)-eowTZm<@sKIGUjkcj&E2|^cc=c}wzme0AsP6rP2kOnwCK*efkYMwPh zQiIg_idK}80B5U+zR}Q}N@es6gt$lr%l;&?Gac%ws&QL^DzyC`QSkol5{Ah$P- zMq{y9klVyE0Z9-B`PpWH!iNVB9)PT%v)FsPch{cUyv5U}Tjlc(fVK!s>n6U~-g0N3 z?M55|$-5kWb2P0=wdE2%}GTyJemo1J0_0L+KJpdK^ z9OE37oIWyyY9TxsN^}w8P2w=|`QUsAL?K6Bo%z%Y7oNn#89vFVfSH!YjU7ka7F#r- zRYsr|Zm&R69M&jZ7UZfz^s5%hdrGn0OwAmj`eP65Yq6ne;86eTwsD2NB0F}cp-7&{ zQ2MwZrSad6<)U>1(tKxodzR2gj_|tN-Mvq=g*d45>+b#)SHAPQ#XYsIV6v(wpp}-O zDh(%i7pBYE>kOa<38ZRw6N&@S{7FE%#I0Q=I0hn2sHavXRF-9(Kox|oFbuGBJZLRuhB`jvCGrSUFHAE5JNL@E&cKp2$}w z3Mb)^>3CXQ9fKlXI7A^xsQv(dTgGdL>)x>jk4{i?_1jXL$9(du;d$D*bi?!NQQ0Qo zpz0LK7n0PSER=V(VX&Oz^aKVylfKYL}tK zD3AanLp?GAEq3ZdXO(;d4{1H35C;m;(FX~YBAj!6<1q&y!s(KNEA^gIq-vUG7!FDz z_!3+h;N6XJR1!q^YP4u#@m!uTi@*@E*R@ zuGqP-*j-vjo;{ptC-9@w>B!xK>+N>!m?aFP=#d8ujT~3ap8^TfjU)?19|3R(!Xs{u zya9wz?D#iu$ghK_IWk)Aq-p>XXCPR>moiLOBw6m2m6gEILn=BD0GFl$FF9BjQO9T= z(rxwi7iT7GkQr2DSD}bar(Z;LM^|?Rx6}ZJ?(6`GU{X!8PjZ5f1>B{?;ow)vA6>2Ydy>h;QFsjfU*XlQpX7{`B`huK3ds#{F`py($yu5_G5FUL5fCjVba6 zxe?R@6l{a28q&yV9ssGS7_O&uj;G+r5lv_7_Dz$wV{j2LspMp4`W&a*LBU0kB66C# zI|M@Iy>6_`Kjyh=vb4IK6b{a#MHkO{f^W&8b00s3O80MwZs1-3k;`b5dw31n0)#A) z*+%(#@E0nFCYyvXl>Qiin8azoQ6pu9JoaUKFbR|lP=n3c{V1aDf_>w5d4m*->l@q= zaKwS80Upnuzo|yE!0KKD{qPe@2`7n^e0+J{!TCcv~9ypjtGz@?wfpv6EWCo zad4o{=e~8Vj<{>4`i{CYX1x3Liw52~@>Uv(Y%26DqEY)BWn+-1fnIOU^Qf}%q^ci~ zOG}s|hci0#_R#5Mr8M}PKmGjk7g7>Hy=ZD_*|G1mdk^l8t%d5M?uDJ@G&$cgFaGh8 z0@?NAiQBg>gT}4d?d3J!#3UOWYe?(+`SnA6@+qWWY9X<)&4*%0ZMa^dJqVnmM=I;& zo!58C+!~bcM-XWH`ig7r!95W6MSy>o9p}3Og`8zM>jMtn8Gar6r^iImG9K|gkx0+J zJ=`9m?f>?^nj5sKlA|ploB(I}E9tFUw_>w}Yn!KJGj{H@wy|-`^SeGz+k$0^(rk!1 zLZ*W!*kbbi%ahU3DC0ubsf{>s;_V@U%q(-u0Z(NaC(yQ806UZ&stf4MhrY-1u#)0p z0Pm0n#j=j~Z~e8SWA8%hAZZRBQ}p%Q<9utY@|eKO-Kg2PZCj(UN#yUfFH!$bH^S^o zb@iQlsTYPq-G-JMxE*8y$R@1*Iz3v^r#{qWQLD->6R>p%&D&KeX4V|e;t%tMYl<@#bq_y+%4ew`%j^+)r# z-pDaCGn1@tVWnH%i}|+Y1A|BklRbp;B5dRwBA*oBbsvH9()m@)W9RQo(bC%E=_w~A zu`33lBB&(bA_`N9_kZNr$(B(y*Xi-(xgxwuy4!+8Lko**GRPLBUAv|opMeWRb9?}e zTdEv5)Ts0R{rh#NzW!qP-44q$p|)F$xf7E)CYReG1Ky-r)?Vk=7zUQG?~VL#X|AsE z1wSBI+=2=-4&rg(tSPxg;Wh#^Uc<1Zd-wDm&-J~oT@w%=Z^j|b>Fp5#waxH8g0FA3 z3KCU2CJ6GHZ_DDm`FNg1d64m+^WaPngRq#C6}$r#42q1u4X7G|4(;C&&Q%914ud;)x22fOYnHgjXtCQahw zBH||B0#>X4xtw+PUMqH(+t_HoMf~OKFj7Q{zY(nQ>24}Yf9()5nC$K=34u$X#+<+Q zMl!DD5NqFD!g5uVIqDw+k09zHmz$QFTG`oXy>{*K`4CfRJtPR9C7LrNO1w||R~Y*6 z)(`hcsz+w;E|_N}Ttw3uh@V=c5X6XVzSR6x3a%4L#R;sQpW`nC6b~(IHjkL3%&S;n zQ|5A$w*j^vcT`-LfX>|yJSrmb(I&n>a|Vm@n_C{bw>r#ua3Ct=v~Zg>jrKfrGsmcs zA1~B~fAG-{*x{YAdP;8@&OwcJtOuE?8Yoop*>P6QKKvXfe@%^xt?dnPmlx`O=YB9^ z5!3B{Yy!*Jryb!Tstf0$8p9?}x*5odU9pjoS7TOa%rG>x4dd$mpcxWtT=F!}q&HEW zESKx=y7rrdhW7asIyZ#1zpVXDa6|Z{$0$L2;pFYqxZjPJKMrbhu6sfr^b^}sn?$RK z%VY#8;@te`^B665q?~E4fH2tAZiJ0UF!(~6jm-<;MQ}ycJ6fD}GZ-(}Gv_pI^i3B= zcn#9xO(Hz5rCq&xlH!*?d*-zB^PCckK@{X!%C?m+m#@;{nKoTs9M8-DMGf>Su(T74 z5s7=k2MqyqiA{~wTWE#RiUV&Ws}Z64acMY0yve1u6BHHK?M~VEpe;-FE|;tg(3()O z3h}+1C^MzjL*JeE+F{D9Wq-Eo-$V&8SPG_ehs|? zB&WhooFKz<*)f0~?R|CAT48p}MmxKtZ8K_o{t>Upya|PRL?ct=TRJ-vEQ3a{*}j69 zii`qCfu~O=x}D0|{lb7h(S!`zS!@rAY&>~}=NJ9{nCsavvX<$U>Avq^SgtiAezG4* z!VjxMmVUHv`9?cgESFtb2+uMYwGOkY9F}yVVrNLKt&L4YY;}5|Kric2jr;MZa*L_& zg=F=`nwidT%(&bpLx>Cr5-lDE&#-%=EqyNk(S1gsp17!w(8d;far220higE*AzE!v4(G|yhU3}u(ua3lXW&3 z8E@wfJ~HDWfRC8|+=nVCZ@z<6=pK#^^U943ZQ$K!1PxY`hZs~C)7b1YN86Y=>zVT^ zU*1|rG0N^9dJmH>a!;R5un&+IE)<2uZ|u11Q*p@$yqe+jtZy70Up{~Ck-CPwt&9A6 zt=Uv+=TSwAj2(Bq`Y-Weh;&T7rcIduYXT%Z4>)gozV~4)QeQ?WBJQ8oy)MDJl&WL> z=^#N)9nNek#O$>$M+QI5?2noVL&`z-? z6n?9&9(<&i4iCL#BuBcQA*DBTH7AEDOEg#A4iW+*>mj@+(PfVNl_;X{**)z~_b8$4 Y+!c~0H`R>4!H0zPD%#3x%jrk{3AcdUl>h($ diff --git a/docs/uml-diagrams/ListCommandSequence.png b/docs/uml-diagrams/ListCommandSequence.png index 81ad591c8a11056677a4fec26da5f374248a9983..542b378f2b9f37e040f723368a9bbc0ceb4594f5 100644 GIT binary patch literal 47595 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 literal 86977 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 Date: Tue, 9 Apr 2024 02:11:25 +0800 Subject: [PATCH 245/423] Update class diagrams --- docs/uml-diagrams/ListCommand.puml | 2 +- docs/uml-diagrams/ListCommandClass.png | Bin 43818 -> 43286 bytes docs/uml-diagrams/NewCommand.puml | 2 +- docs/uml-diagrams/NewCommandClass.png | Bin 34165 -> 33711 bytes 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/uml-diagrams/ListCommand.puml b/docs/uml-diagrams/ListCommand.puml index 88246f5493..a039e187a9 100644 --- a/docs/uml-diagrams/ListCommand.puml +++ b/docs/uml-diagrams/ListCommand.puml @@ -14,7 +14,7 @@ Command <|. ListCommand Item <... ListCommand Ui <.. ListCommand Inventory <.. ListCommand -ListCommand <... Parser +ListCommand <.. Parser interface Command <> { +execute():void diff --git a/docs/uml-diagrams/ListCommandClass.png b/docs/uml-diagrams/ListCommandClass.png index ea00f7cfab5fbba330fd6c43343b94d507cc8930..cc5bfe4b99a5c41bc3760938deca4d775e179994 100644 GIT binary patch delta 20090 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 delta 20626 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 delta 11094 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 From 191285f351488b69d196d098f89f55af03bcd697 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 9 Apr 2024 03:26:02 +0800 Subject: [PATCH 246/423] Simplify description for list command --- docs/DeveloperGuide.md | 74 ++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 43 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 67ea633ddd..69ed335662 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -212,43 +212,37 @@ A ListCommand instance is created by the `parseListCommand` method called by Par - `Inventory`: For getting the list of items in the inventory - `Ui`: To print the list of items in the inventory to the output -The 7 parameters in the constructor `hasQuantity`, `hasPrice`, `hasExpiry`, `firstParam`, `secondParam`, `sortBy`, `isReverse` are used to determine how the list should be printed out. -- `hasQuantity` - - True if the user has input the quantity flag `q/`, false otherwise - - Quantity will be printed to the output if true -- `hasPrice` - - True if the user has input the price flag `p/`, false otherwise - - Price will be printed to the output if true -- `hasExpiry` - - True if the user has input the expiry flag `e/`, false otherwise - - Expiry date will be printed to the output if true -- `firstParam` - - Can only take 4 possible values `"q"`,`"p"`,`"e"` or `""`. - - Value corresponds to the flag that comes first in the command - - If the command has none of these flags (`q/`,`p/`,`e/`), then `""` would be the default value (this variable would no longer be used in the execution of `ListCommand`) -- `secondParam` - - Can only take 4 possible values `"q"`,`"p"`,`"e"` or `""`. - - Value corresponds to the flag that comes second in the command - - If the command has less than 2 of these flags (`q/`,`p/`,`e/`), then `""` would be the default value (this variable would no longer be used in the execution of `ListCommand`) -- `sortBy` - - Can only take 4 possible values `"q"`,`"p"`,`"e"`, or `""` - - `"q"` if the user has input the sort by quantity flag `sq/` - - `"p"` if the user has input the sort by price flag `sp/` - - `"e"` if the user has input the sort by expiry flag `se/` - - `""` would be the default value if the user did not input any sorting flag - - If multiple sorting flags are input by the user, `sortBy` will take the value corresponding to the first sorting flag +The 7 parameters in the constructor `firstParam`, `secondParam`, `thirdParam`, `firstSortParam`, `secondSortParam`, `thirdSortParam`, `isReverse` +are used to determine how the list should be printed out. +- `firstParam`,`secondParam`,`thirdParam` + - Used to determine if quantity, price and/or expiry date should be printed out and in what order + e.g. If the command specifies `list q/ p/ e/`, for each item quantity will be printed out first followed by price and expiry date + - Can only take 4 possible values `"q"`,`"p"`,`"e"`,`""` + - Value corresponds to the order of the flags in the command + e.g. If the command specifies `list p/ e/ q/`, then `firstParam == "p"`, `secondParam == "e"`, `thirdParam == "q"` + - `""` will be the default value if there are less than 3 flags in the command + e.g. If the command specifies `list e/`, then `firstParam == "e"`, `secondParam == ""`, `thirdParam == ""` +- `firstSortParam`,`secondSortParam`,`thirdSortParam` + - Used to determine how the list should be sorted and in what order in the event of ties + e.g. If the command specifies `list sq/ sp/ se/`, list will be sorted in order of ascending quantity. + Ties will be sorted in order of ascending price, then ascending date, followed by ascending alphabetical order (A-Z) + - Can only take 4 possible values `"q"`,`"p"`,`"e"`,`""` + - Value corresponds to the order of the sorting flags in the command + e.g. If the command specifies `list sp/ se/ sq/`, then `firstSortParam == "p"`, `secondSortParam == "e"`, `thirdSortParam == "q"` + - `""` will be the default value if there are less than 3 flags in the command + e.g. If the command specifies `list se/`, then `firstSortParam == "e"`, `secondSortParam == ""`, `thirdSortParam == ""` - `isReverse` - True if the user has input the reverse flag `r/`, false otherwise. -There are 8 sorting modes in total -1. `sortBy == ""` and `isReverse == false`: Alphabetical ascending (e.g. A-Z) -2. `sortBy == ""` and `isReverse == true`: Alphabetical descending (e.g. Z-A) -3. `sortBy == "q"` and `isReverse == false`: Quantity ascending -4. `sortBy == "q"` and `isReverse == true`: Quantity descending -5. `sortBy == "p"` and `isReverse == false`: Price ascending -6. `sortBy == "p"` and `isReverse == true`: Price descending -7. `sortBy == "e"` and `isReverse == false`: Expiry date ascending (e.g. 2024-2025) -8. `sortBy == "e"` and `isReverse == true`: Expiry date descending (e.g. 2025-2024) +There are 8 main sorting modes in total +1. `list`: Alphabetical ascending (e.g. A-Z) +2. `list r/`: Alphabetical descending (e.g. Z-A) +3. `list sq/`: Quantity ascending +4. `list sq/ r/`: Quantity descending +5. `list sp/`: Price ascending +6. `list sp/ r/`: Price descending +7. `list se/`: Expiry date ascending (e.g. 2024-2025) +8. `list se/ r/`: Expiry date descending (e.g. 2025-2024) The following sequence diagram shows the execution of a ListCommand
![ListCommandSequence](uml-diagrams/ListCommandSequence.png) @@ -256,15 +250,9 @@ The following sequence diagram shows the execution of a ListCommand
1. The `SuperTracker` class calls the `execute` method of `ListCommand` 2. The `getItems` method of the `Inventory` class is called to get an `ArrayList` of items in the inventory 3. The `listIntro` method of the `Ui` class is called to print out the total number of items in the inventory -4. A new `ArrayList` to store the items without an expiry date is created -5. Depending on the value of `sortBy`, either the `sortByQuantity`, `sortByPrice`, `sortByExpiry` or `sortByName` method of the `Item` class will be called. -A comparator used to sort the `ArrayList` of items is returned. -> For the specific case where `sortBy == "e"`, the private method `moveItemsWithoutExpiry` is called. -Items without an expiry date are removed from the original `ArrayList` of items and added to the `ArrayList` created in step 4. This `ArrayList` is then sorted in ascending alphabetical order. -6. The `sort` method of the `ArrayList` of items is called with a comparator as an input parameter -7. If `isReverse` is true, the `reverse` method of the `Collections` class is called to reverse the `ArrayList` of items -8. If `sortBy == "e"`, the items without an expiry date are added back to the original `ArrayList` by calling the `addAll` method -9. For each item in the list, the `listItem` method of the `Ui` class is called to print each item to the output +4. The private method `sortBy` is called 4 times with different input parameters to sort the `ArrayList` of items according to alphabet, quantity, price and/or expiry date +5. If `isReverse` is true, the `reverse` method of the `Collections` class is called to reverse the `ArrayList` of items +6. For each item in the list, the `listItem` method of the `Ui` class is called to print each item to the output ## Product scope ### Target user profile From f6bc52a93e3b4503b5db4c7c1519970cfe5358c0 Mon Sep 17 00:00:00 2001 From: Timothy Lau Kah Ming <110795904+TimothyLKM@users.noreply.github.com> Date: Tue, 9 Apr 2024 08:54:41 +0800 Subject: [PATCH 247/423] Update src/main/java/supertracker/ui/Ui.java Co-authored-by: awesomesjh <89649663+awesomesjh@users.noreply.github.com> --- src/main/java/supertracker/ui/Ui.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 43f5026f86..361ae02d4d 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -379,7 +379,7 @@ public static void printError(String errorMessage) { } public static void printFoundItem(Item item, int index) { - if(index == 1) { + if (index == 1) { Ui.findIntro(); } String stringToPrint = index + ". Name: " + item.getName(); From 3f7d4393c82de5b6a43df4e410a1bd0be476eee3 Mon Sep 17 00:00:00 2001 From: Timothy Lau Kah Ming <110795904+TimothyLKM@users.noreply.github.com> Date: Tue, 9 Apr 2024 08:54:55 +0800 Subject: [PATCH 248/423] Update src/main/java/supertracker/parser/Parser.java Co-authored-by: awesomesjh <89649663+awesomesjh@users.noreply.github.com> --- src/main/java/supertracker/parser/Parser.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 67429621cb..6b85e66493 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -200,15 +200,15 @@ public static Command parseCommand(String input) throws TrackerException { case SELL_COMMAND: command = parseSellCommand(params); break; - case REVENUE_COMMAND: - command = parseRevenueCommand(params); - break; case RENAME_COMMAND: command = parseRenameCommand(params); break; case EXPENDITURE_COMMAND: command = parseExpenditureCommand(params); break; + case REVENUE_COMMAND: + command = parseRevenueCommand(params); + break; default: command = new InvalidCommand(); break; From 46e13320fa848b17d1c5287e2919b2cc87faf06c Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Tue, 9 Apr 2024 10:36:07 +0800 Subject: [PATCH 249/423] add basic help features --- .../supertracker/command/HelpCommand.java | 20 +++++++++++++++++++ src/main/java/supertracker/parser/Parser.java | 5 +++++ 2 files changed, 25 insertions(+) create mode 100644 src/main/java/supertracker/command/HelpCommand.java diff --git a/src/main/java/supertracker/command/HelpCommand.java b/src/main/java/supertracker/command/HelpCommand.java new file mode 100644 index 0000000000..e7ebf9482f --- /dev/null +++ b/src/main/java/supertracker/command/HelpCommand.java @@ -0,0 +1,20 @@ +package supertracker.command; +import java.util.Scanner; +public class HelpCommand implements Command{ + public HelpCommand(){ + } + + @Override + public void execute() { + Ui.helpOpeningMessage(); + Scanner in = new Scanner(System.in); + String input = in.nextLine(); + + + } + + @Override + public boolean isQuit() { + return false; + } +} diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 2a2bcdf07b..d2e38c9909 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -7,6 +7,7 @@ import supertracker.command.Command; import supertracker.command.DeleteCommand; import supertracker.command.FindCommand; +import supertracker.command.HelpCommand; import supertracker.command.InvalidCommand; import supertracker.command.ListCommand; import supertracker.command.NewCommand; @@ -36,6 +37,7 @@ public class Parser { private static final String QUIT_COMMAND = "quit"; private static final String NEW_COMMAND = "new"; private static final String LIST_COMMAND = "list"; + private static final String HELP_COMMAND = "help"; private static final String UPDATE_COMMAND = "update"; private static final String DELETE_COMMAND = "delete"; private static final String ADD_COMMAND = "add"; @@ -169,6 +171,9 @@ public static Command parseCommand(String input) throws TrackerException { case LIST_COMMAND: command = parseListCommand(params); break; + case HELP_COMMAND: + command = new HelpCommand(); + break; case UPDATE_COMMAND: command = parseUpdateCommand(params); break; From 090edba39369b28fe1c2c190f3bbbc5512b68ebc Mon Sep 17 00:00:00 2001 From: rismm Date: Tue, 9 Apr 2024 13:01:30 +0800 Subject: [PATCH 250/423] Add transaction list saving --- .../java/supertracker/command/BuyCommand.java | 9 ++ .../supertracker/command/SellCommand.java | 9 ++ .../supertracker/item/TransactionList.java | 6 +- .../supertracker/storage/FileManager.java | 108 +++++++++++++----- .../supertracker/storage/FileManagerTest.java | 2 +- 5 files changed, 105 insertions(+), 29 deletions(-) diff --git a/src/main/java/supertracker/command/BuyCommand.java b/src/main/java/supertracker/command/BuyCommand.java index c126a9e53a..bd085257c6 100644 --- a/src/main/java/supertracker/command/BuyCommand.java +++ b/src/main/java/supertracker/command/BuyCommand.java @@ -2,8 +2,11 @@ import supertracker.item.Transaction; import supertracker.item.TransactionList; +import supertracker.storage.FileManager; +import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; +import java.io.IOException; import java.time.LocalDate; public class BuyCommand extends AddCommand { @@ -23,5 +26,11 @@ public void execute() { Transaction transaction = new Transaction(newItem.getName(), quantity, price, currentDate, BUY_FLAG); TransactionList.add(transaction); Ui.buyCommandSuccess(newItem, transaction); + + try { + FileManager.saveTransaction(transaction); + } catch (IOException e) { + Ui.printError(ErrorMessage.FILE_SAVE_ERROR); + } } } diff --git a/src/main/java/supertracker/command/SellCommand.java b/src/main/java/supertracker/command/SellCommand.java index 48ea45af65..1151d70343 100644 --- a/src/main/java/supertracker/command/SellCommand.java +++ b/src/main/java/supertracker/command/SellCommand.java @@ -2,8 +2,11 @@ import supertracker.item.Transaction; import supertracker.item.TransactionList; +import supertracker.storage.FileManager; +import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; +import java.io.IOException; import java.time.LocalDate; public class SellCommand extends RemoveCommand { @@ -27,5 +30,11 @@ public void execute() { ); TransactionList.add(transaction); Ui.sellCommandSuccess(newItem, transaction); + + try { + FileManager.saveTransaction(transaction); + } catch (IOException e) { + Ui.printError(ErrorMessage.FILE_SAVE_ERROR); + } } } diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index 5cbf3d195a..08c680d571 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -11,10 +11,14 @@ public class TransactionList { private static final String RANGE = "range"; private static ArrayList transactionList = new ArrayList<>(); - public static Item get(int index) { + public static Transaction get(int index) { return transactionList.get(index); } + public static int getLength() { + return transactionList.size(); + } + public static void add(Transaction transaction) { transactionList.add(transaction); } diff --git a/src/main/java/supertracker/storage/FileManager.java b/src/main/java/supertracker/storage/FileManager.java index fce451acbb..487fa353f2 100644 --- a/src/main/java/supertracker/storage/FileManager.java +++ b/src/main/java/supertracker/storage/FileManager.java @@ -2,6 +2,8 @@ import supertracker.item.Inventory; import supertracker.item.Item; +import supertracker.item.Transaction; +import supertracker.item.TransactionList; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; @@ -17,8 +19,10 @@ public class FileManager { protected static final String DATA_PATH = "./data/"; - protected static final String FILE_NAME = "items.txt"; - protected static final String SAVE_FILE_PATH = DATA_PATH + FILE_NAME; + protected static final String ITEM_SAVE_FILE_NAME = "items.txt"; + protected static final String TRANSACTION_SAVE_FILE_NAME = "transactions.txt"; + protected static final String ITEM_FILE_PATH = DATA_PATH + ITEM_SAVE_FILE_NAME; + protected static final String TRANSACTION_FILE_PATH = DATA_PATH + TRANSACTION_SAVE_FILE_NAME; // Do note that the separator should also follow the file delimiter constant in the Parser class accordingly protected static final String SEPARATOR = " ,,, "; protected static final String PLACEHOLDER = "*&_"; @@ -31,7 +35,7 @@ public class FileManager { protected static final int QUANTITY_INDEX = 1; protected static final int PRICE_INDEX = 2; protected static final int DATE_INDEX = 3; - protected static final int EXTRA_INDEX = 4; + protected static final int EXTRA_INDEX = 3; /** * Saves all items currently in the inventory by writing into a text file. @@ -39,11 +43,8 @@ public class FileManager { * @throws IOException if text file cannot be opened or accessed for whatever reason */ public static void saveData() throws IOException { - File directory = new File(DATA_PATH); - if (!directory.exists()) { - directory.mkdirs(); - } - File saveFile = new File(SAVE_FILE_PATH); + checkDataDirectory(); + File saveFile = new File(ITEM_FILE_PATH); if (!saveFile.createNewFile()) { saveFile.delete(); saveFile.createNewFile(); @@ -70,13 +71,9 @@ public static void saveData() throws IOException { * @throws IOException if specified path is unable to be opened or found */ public static void loadData() throws IOException { - File directory = new File(DATA_PATH); - if (!directory.exists()) { - directory.mkdirs(); - return; - } + checkDataDirectory(); - File saveFile = new File(SAVE_FILE_PATH); + File saveFile = new File(ITEM_FILE_PATH); if (!saveFile.exists()) { return; } @@ -101,18 +98,21 @@ public static void loadData() throws IOException { fileScanner.close(); } - private static String getItemData(Item item) { - String name = item.getName(); - String excess = "end"; - // The item name should not contain the separator, but we perform another check - // as an additional means of security. - if (name.contains(SEPARATOR)) { - excess = "bad end"; - name = name.replace(SEPARATOR, PLACEHOLDER); + private static void checkDataDirectory() { + File directory = new File(DATA_PATH); + if (!directory.exists()) { + directory.mkdirs(); } + } - String quantity = String.valueOf(item.getQuantity()); - String price = String.valueOf(item.getPrice()); + private static String getItemData(Item item) { + String[] itemDataStrings = getNameQtyPriceStrings(item); + assert itemDataStrings.length == 4; + + String name = itemDataStrings[NAME_INDEX]; + String excess = itemDataStrings[EXTRA_INDEX]; + String quantity = itemDataStrings[QUANTITY_INDEX]; + String price = itemDataStrings[PRICE_INDEX]; LocalDate exDate = item.getExpiryDate(); String date = NO_DATE; @@ -133,9 +133,6 @@ private static Item parseItemData(String itemData) throws Exception { assert data.length == MAX_NUMBER_OF_PARAMS; String name = data[NAME_INDEX].trim(); - if (data[EXTRA_INDEX].equals("bad end")) { - name = name.replace(PLACEHOLDER, SEPARATOR); - } int quantity; double price; @@ -152,4 +149,61 @@ private static Item parseItemData(String itemData) throws Exception { return new Item(name, quantity, price, date); } + + private static String[] getNameQtyPriceStrings(Item item) { + String name = item.getName(); + String excess = "end"; + // The item name should not contain the separator, but we perform another check + // as an additional means of security. + if (name.contains(SEPARATOR)) { + excess = "bad end"; + name = name.replace(SEPARATOR, PLACEHOLDER); + } + + String quantity = String.valueOf(item.getQuantity()); + String price = String.valueOf(item.getPrice()); + + return new String[]{name, quantity, price, excess}; + } + + public static void saveTransaction(Transaction newTransaction) throws IOException { + checkDataDirectory(); + + File saveFile = new File(TRANSACTION_FILE_PATH); + FileWriter fw = new FileWriter(saveFile, true); + BufferedWriter writer = new BufferedWriter(fw); + if (saveFile.exists()) { + String newData = getTransactionData(newTransaction); + writer.write(newData); + writer.close(); + fw.close(); + return; + } + + int transactionSize = TransactionList.getLength(); + for (int i = 0; i < transactionSize; i++) { + String transactionData = getTransactionData(TransactionList.get(i)); + writer.write(transactionData); + } + + writer.close(); + fw.close(); + } + + private static String getTransactionData(Transaction transaction) { + String[] itemDataStrings = getNameQtyPriceStrings(transaction); + assert itemDataStrings.length == 4; + + String name = itemDataStrings[NAME_INDEX]; + String excess = itemDataStrings[EXTRA_INDEX]; + String quantity = itemDataStrings[QUANTITY_INDEX]; + String price = itemDataStrings[PRICE_INDEX]; + + assert !transaction.getTransactionDate().isEqual(UNDEFINED_DATE); + String date = transaction.getTransactionDate().format(DATE_FORMAT); + + return "NAME: " + name + SEPARATOR + "QTY: " + quantity + SEPARATOR + "PRICE: " + price + + SEPARATOR + "DATE: " + date + SEPARATOR + "T: " + transaction.getType() + SEPARATOR + excess + + System.lineSeparator(); + } } diff --git a/src/test/java/supertracker/storage/FileManagerTest.java b/src/test/java/supertracker/storage/FileManagerTest.java index 80167a13c1..416d6e71da 100644 --- a/src/test/java/supertracker/storage/FileManagerTest.java +++ b/src/test/java/supertracker/storage/FileManagerTest.java @@ -51,7 +51,7 @@ void loadData_validData_correctlyRead() throws IOException { new Item("1_+$%$_)00", 9999999, 20.90, CURR_DATE), new Item("cheese,,,p/,,,,", 9, 7.00, UNDEFINED_DATE), new Item("cheese*&_yoyo*&_ ,,,q/-120,,", 9, 0, CURR_DATE), - new Item("p ,,, l", 40, 0, UNDEFINED_DATE) + new Item("p*&_l", 40, 0, UNDEFINED_DATE) }; for (Item item : items) { From 77c8f616995bbc928562a8502c5954bcfbf200c2 Mon Sep 17 00:00:00 2001 From: rismm Date: Tue, 9 Apr 2024 14:08:41 +0800 Subject: [PATCH 251/423] Refactor storage methods Separate file saving into two different classes that inherit FileManager --- src/main/java/supertracker/SuperTracker.java | 3 +- .../java/supertracker/command/AddCommand.java | 3 +- .../java/supertracker/command/BuyCommand.java | 3 +- .../supertracker/command/DeleteCommand.java | 3 +- .../java/supertracker/command/NewCommand.java | 3 +- .../supertracker/command/RemoveCommand.java | 3 +- .../supertracker/command/RenameCommand.java | 3 +- .../supertracker/command/SellCommand.java | 3 +- .../supertracker/command/UpdateCommand.java | 3 +- .../supertracker/storage/FileManager.java | 165 +----------------- .../supertracker/storage/ItemStorage.java | 131 ++++++++++++++ .../storage/TransactionStorage.java | 69 ++++++++ ...eManagerTest.java => ItemStorageTest.java} | 8 +- 13 files changed, 224 insertions(+), 176 deletions(-) create mode 100644 src/main/java/supertracker/storage/ItemStorage.java create mode 100644 src/main/java/supertracker/storage/TransactionStorage.java rename src/test/java/supertracker/storage/{FileManagerTest.java => ItemStorageTest.java} (95%) diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index 38a257ade6..5f9ea3618c 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -5,6 +5,7 @@ import supertracker.command.QuitCommand; import supertracker.parser.Parser; import supertracker.storage.FileManager; +import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; @@ -38,7 +39,7 @@ private static void run() { logger.info(START_MESSAGE); try { - FileManager.loadData(); + ItemStorage.loadData(); } catch (IOException e) { Ui.printError(ErrorMessage.FILE_LOAD_ERROR); } diff --git a/src/main/java/supertracker/command/AddCommand.java b/src/main/java/supertracker/command/AddCommand.java index 528b3d44f6..148ccc0243 100644 --- a/src/main/java/supertracker/command/AddCommand.java +++ b/src/main/java/supertracker/command/AddCommand.java @@ -3,6 +3,7 @@ import supertracker.item.Inventory; import supertracker.item.Item; import supertracker.storage.FileManager; +import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; @@ -28,7 +29,7 @@ protected void executeWithoutUi() { Inventory.put(name, newItem); try { - FileManager.saveData(); + ItemStorage.saveData(); } catch (IOException e) { Ui.printError(ErrorMessage.FILE_SAVE_ERROR); } diff --git a/src/main/java/supertracker/command/BuyCommand.java b/src/main/java/supertracker/command/BuyCommand.java index bd085257c6..b2fe7143dd 100644 --- a/src/main/java/supertracker/command/BuyCommand.java +++ b/src/main/java/supertracker/command/BuyCommand.java @@ -3,6 +3,7 @@ import supertracker.item.Transaction; import supertracker.item.TransactionList; import supertracker.storage.FileManager; +import supertracker.storage.TransactionStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; @@ -28,7 +29,7 @@ public void execute() { Ui.buyCommandSuccess(newItem, transaction); try { - FileManager.saveTransaction(transaction); + TransactionStorage.saveTransaction(transaction); } catch (IOException e) { Ui.printError(ErrorMessage.FILE_SAVE_ERROR); } diff --git a/src/main/java/supertracker/command/DeleteCommand.java b/src/main/java/supertracker/command/DeleteCommand.java index 3a8557b5ba..bd911a0b0f 100644 --- a/src/main/java/supertracker/command/DeleteCommand.java +++ b/src/main/java/supertracker/command/DeleteCommand.java @@ -2,6 +2,7 @@ import supertracker.item.Inventory; import supertracker.storage.FileManager; +import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; @@ -23,7 +24,7 @@ public void execute() { Ui.deleteCommandSuccess(name); try { - FileManager.saveData(); + ItemStorage.saveData(); } catch (IOException e) { Ui.printError(ErrorMessage.FILE_SAVE_ERROR); } diff --git a/src/main/java/supertracker/command/NewCommand.java b/src/main/java/supertracker/command/NewCommand.java index 74be1c9bee..0577a916da 100644 --- a/src/main/java/supertracker/command/NewCommand.java +++ b/src/main/java/supertracker/command/NewCommand.java @@ -1,6 +1,7 @@ package supertracker.command; import supertracker.storage.FileManager; +import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; import supertracker.item.Inventory; @@ -33,7 +34,7 @@ public void execute() { Ui.newCommandSuccess(item); try { - FileManager.saveData(); + ItemStorage.saveData(); } catch (IOException e) { Ui.printError(ErrorMessage.FILE_SAVE_ERROR); } diff --git a/src/main/java/supertracker/command/RemoveCommand.java b/src/main/java/supertracker/command/RemoveCommand.java index 54e76e1172..e86630872e 100644 --- a/src/main/java/supertracker/command/RemoveCommand.java +++ b/src/main/java/supertracker/command/RemoveCommand.java @@ -3,6 +3,7 @@ import supertracker.item.Inventory; import supertracker.item.Item; import supertracker.storage.FileManager; +import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; @@ -31,7 +32,7 @@ protected void executeWithoutUi() { Inventory.put(name, newItem); try { - FileManager.saveData(); + ItemStorage.saveData(); } catch (IOException e) { Ui.printError(ErrorMessage.FILE_SAVE_ERROR); } diff --git a/src/main/java/supertracker/command/RenameCommand.java b/src/main/java/supertracker/command/RenameCommand.java index de78d30027..3f491abd8b 100644 --- a/src/main/java/supertracker/command/RenameCommand.java +++ b/src/main/java/supertracker/command/RenameCommand.java @@ -3,6 +3,7 @@ import supertracker.item.Inventory; import supertracker.item.Item; import supertracker.storage.FileManager; +import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; @@ -36,7 +37,7 @@ public void execute() { Ui.renameCommandSuccess(newItem, name); try { - FileManager.saveData(); + ItemStorage.saveData(); } catch (IOException e) { Ui.printError(ErrorMessage.FILE_SAVE_ERROR); } diff --git a/src/main/java/supertracker/command/SellCommand.java b/src/main/java/supertracker/command/SellCommand.java index 1151d70343..15db7f85b6 100644 --- a/src/main/java/supertracker/command/SellCommand.java +++ b/src/main/java/supertracker/command/SellCommand.java @@ -3,6 +3,7 @@ import supertracker.item.Transaction; import supertracker.item.TransactionList; import supertracker.storage.FileManager; +import supertracker.storage.TransactionStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; @@ -32,7 +33,7 @@ public void execute() { Ui.sellCommandSuccess(newItem, transaction); try { - FileManager.saveTransaction(transaction); + TransactionStorage.saveTransaction(transaction); } catch (IOException e) { Ui.printError(ErrorMessage.FILE_SAVE_ERROR); } diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index a41261b429..cd281b944b 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -1,6 +1,7 @@ package supertracker.command; import supertracker.storage.FileManager; +import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; import supertracker.item.Inventory; @@ -50,7 +51,7 @@ public void execute() { Ui.updateCommandSuccess(newItem); try { - FileManager.saveData(); + ItemStorage.saveData(); } catch (IOException e) { Ui.printError(ErrorMessage.FILE_SAVE_ERROR); } diff --git a/src/main/java/supertracker/storage/FileManager.java b/src/main/java/supertracker/storage/FileManager.java index 487fa353f2..9a8b7f394a 100644 --- a/src/main/java/supertracker/storage/FileManager.java +++ b/src/main/java/supertracker/storage/FileManager.java @@ -1,28 +1,14 @@ package supertracker.storage; -import supertracker.item.Inventory; import supertracker.item.Item; -import supertracker.item.Transaction; -import supertracker.item.TransactionList; -import supertracker.ui.ErrorMessage; -import supertracker.ui.Ui; import java.io.File; -import java.io.IOException; -import java.io.FileWriter; -import java.io.BufferedWriter; import java.time.LocalDate; import java.time.format.DateTimeFormatter; -import java.util.List; -import java.util.Scanner; public class FileManager { protected static final String DATA_PATH = "./data/"; - protected static final String ITEM_SAVE_FILE_NAME = "items.txt"; - protected static final String TRANSACTION_SAVE_FILE_NAME = "transactions.txt"; - protected static final String ITEM_FILE_PATH = DATA_PATH + ITEM_SAVE_FILE_NAME; - protected static final String TRANSACTION_FILE_PATH = DATA_PATH + TRANSACTION_SAVE_FILE_NAME; // Do note that the separator should also follow the file delimiter constant in the Parser class accordingly protected static final String SEPARATOR = " ,,, "; protected static final String PLACEHOLDER = "*&_"; @@ -37,120 +23,14 @@ public class FileManager { protected static final int DATE_INDEX = 3; protected static final int EXTRA_INDEX = 3; - /** - * Saves all items currently in the inventory by writing into a text file. - * - * @throws IOException if text file cannot be opened or accessed for whatever reason - */ - public static void saveData() throws IOException { - checkDataDirectory(); - File saveFile = new File(ITEM_FILE_PATH); - if (!saveFile.createNewFile()) { - saveFile.delete(); - saveFile.createNewFile(); - } - - List items = Inventory.getItems(); - FileWriter fw = new FileWriter(saveFile); - BufferedWriter writer = new BufferedWriter(fw); - - for (Item item : items) { - String itemData = getItemData(item); - writer.write(itemData); - } - - writer.close(); - fw.close(); - } - - /** - * Loads and reads data from a designated text file from the path specified in the class. - * Parses each line of data into an Item class and adds to the item list in the Inventory class. - * If data is corrupted, prints to the UI the number of corrupted lines. - * - * @throws IOException if specified path is unable to be opened or found - */ - public static void loadData() throws IOException { - checkDataDirectory(); - - File saveFile = new File(ITEM_FILE_PATH); - if (!saveFile.exists()) { - return; - } - - Inventory.clear(); - Scanner fileScanner = new Scanner(saveFile); - String itemData; - int corruptedData = 0; - while (fileScanner.hasNext()) { - try { - itemData = fileScanner.nextLine(); - Item item = parseItemData(itemData); - Inventory.put(item.getName(), item); - } catch (Exception e) { - corruptedData++; - } - } - if (corruptedData != 0) { - Ui.printError(ErrorMessage.FILE_CORRUPTED_ERROR); - saveData(); - } - fileScanner.close(); - } - - private static void checkDataDirectory() { + protected static void checkDataDirectory() { File directory = new File(DATA_PATH); if (!directory.exists()) { directory.mkdirs(); } } - private static String getItemData(Item item) { - String[] itemDataStrings = getNameQtyPriceStrings(item); - assert itemDataStrings.length == 4; - - String name = itemDataStrings[NAME_INDEX]; - String excess = itemDataStrings[EXTRA_INDEX]; - String quantity = itemDataStrings[QUANTITY_INDEX]; - String price = itemDataStrings[PRICE_INDEX]; - - LocalDate exDate = item.getExpiryDate(); - String date = NO_DATE; - if (!exDate.isEqual(UNDEFINED_DATE)) { - date = exDate.format(DATE_FORMAT); - } - - return name + SEPARATOR + quantity + SEPARATOR + price + SEPARATOR - + date + SEPARATOR + excess + System.lineSeparator(); - } - - private static Item parseItemData(String itemData) throws Exception { - String[] data = itemData.split(SEPARATOR, MAX_NUMBER_OF_PARAMS); - - if (data.length < MAX_NUMBER_OF_PARAMS) { - throw new Exception(); - } - assert data.length == MAX_NUMBER_OF_PARAMS; - - String name = data[NAME_INDEX].trim(); - - int quantity; - double price; - quantity = Integer.parseInt(data[QUANTITY_INDEX].trim()); - price = Double.parseDouble(data[PRICE_INDEX].trim()); - if (quantity < 0 && price < 0) { - throw new Exception(); - } - - LocalDate date = UNDEFINED_DATE; - if (!data[DATE_INDEX].equals(NO_DATE)) { - date = LocalDate.parse(data[DATE_INDEX], DATE_FORMAT); - } - - return new Item(name, quantity, price, date); - } - - private static String[] getNameQtyPriceStrings(Item item) { + protected static String[] getNameQtyPriceStrings(Item item) { String name = item.getName(); String excess = "end"; // The item name should not contain the separator, but we perform another check @@ -165,45 +45,4 @@ private static String[] getNameQtyPriceStrings(Item item) { return new String[]{name, quantity, price, excess}; } - - public static void saveTransaction(Transaction newTransaction) throws IOException { - checkDataDirectory(); - - File saveFile = new File(TRANSACTION_FILE_PATH); - FileWriter fw = new FileWriter(saveFile, true); - BufferedWriter writer = new BufferedWriter(fw); - if (saveFile.exists()) { - String newData = getTransactionData(newTransaction); - writer.write(newData); - writer.close(); - fw.close(); - return; - } - - int transactionSize = TransactionList.getLength(); - for (int i = 0; i < transactionSize; i++) { - String transactionData = getTransactionData(TransactionList.get(i)); - writer.write(transactionData); - } - - writer.close(); - fw.close(); - } - - private static String getTransactionData(Transaction transaction) { - String[] itemDataStrings = getNameQtyPriceStrings(transaction); - assert itemDataStrings.length == 4; - - String name = itemDataStrings[NAME_INDEX]; - String excess = itemDataStrings[EXTRA_INDEX]; - String quantity = itemDataStrings[QUANTITY_INDEX]; - String price = itemDataStrings[PRICE_INDEX]; - - assert !transaction.getTransactionDate().isEqual(UNDEFINED_DATE); - String date = transaction.getTransactionDate().format(DATE_FORMAT); - - return "NAME: " + name + SEPARATOR + "QTY: " + quantity + SEPARATOR + "PRICE: " + price - + SEPARATOR + "DATE: " + date + SEPARATOR + "T: " + transaction.getType() + SEPARATOR + excess - + System.lineSeparator(); - } } diff --git a/src/main/java/supertracker/storage/ItemStorage.java b/src/main/java/supertracker/storage/ItemStorage.java new file mode 100644 index 0000000000..8be3964eec --- /dev/null +++ b/src/main/java/supertracker/storage/ItemStorage.java @@ -0,0 +1,131 @@ +package supertracker.storage; + +import supertracker.item.Inventory; +import supertracker.item.Item; +import supertracker.ui.ErrorMessage; +import supertracker.ui.Ui; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.time.LocalDate; +import java.util.List; +import java.util.Scanner; + +public class ItemStorage extends FileManager { + protected static final String SAVE_FILE_NAME = "items.txt"; + protected static final String FILE_PATH = DATA_PATH + SAVE_FILE_NAME; + protected static final int MAX_NUMBER_OF_PARAMS = 5; + protected static final int NAME_INDEX = 0; + protected static final int QUANTITY_INDEX = 1; + protected static final int PRICE_INDEX = 2; + protected static final int DATE_INDEX = 3; + protected static final int EXTRA_INDEX = 3; + + /** + * Saves all items currently in the inventory by writing into a text file. + * + * @throws IOException if text file cannot be opened or accessed for whatever reason + */ + public static void saveData() throws IOException { + checkDataDirectory(); + File saveFile = new File(FILE_PATH); + if (!saveFile.createNewFile()) { + saveFile.delete(); + saveFile.createNewFile(); + } + + List items = Inventory.getItems(); + FileWriter fw = new FileWriter(saveFile); + BufferedWriter writer = new BufferedWriter(fw); + + for (Item item : items) { + String itemData = getItemData(item); + writer.write(itemData); + } + + writer.close(); + fw.close(); + } + + /** + * Loads and reads data from a designated text file from the path specified in the class. + * Parses each line of data into an Item class and adds to the item list in the Inventory class. + * If data is corrupted, prints to the UI the number of corrupted lines. + * + * @throws IOException if specified path is unable to be opened or found + */ + public static void loadData() throws IOException { + checkDataDirectory(); + + File saveFile = new File(FILE_PATH); + if (!saveFile.exists()) { + return; + } + + Inventory.clear(); + Scanner fileScanner = new Scanner(saveFile); + String itemData; + int corruptedData = 0; + while (fileScanner.hasNext()) { + try { + itemData = fileScanner.nextLine(); + Item item = parseItemData(itemData); + Inventory.put(item.getName(), item); + } catch (Exception e) { + corruptedData++; + } + } + if (corruptedData != 0) { + Ui.printError(ErrorMessage.FILE_CORRUPTED_ERROR); + saveData(); + } + fileScanner.close(); + } + + private static String getItemData(Item item) { + String[] itemDataStrings = getNameQtyPriceStrings(item); + assert itemDataStrings.length == 4; + + String name = itemDataStrings[NAME_INDEX]; + String excess = itemDataStrings[EXTRA_INDEX]; + String quantity = itemDataStrings[QUANTITY_INDEX]; + String price = itemDataStrings[PRICE_INDEX]; + + LocalDate exDate = item.getExpiryDate(); + String date = NO_DATE; + if (!exDate.isEqual(UNDEFINED_DATE)) { + date = exDate.format(DATE_FORMAT); + } + + return name + SEPARATOR + quantity + SEPARATOR + price + SEPARATOR + + date + SEPARATOR + excess + System.lineSeparator(); + } + + private static Item parseItemData(String itemData) throws Exception { + String[] data = itemData.split(SEPARATOR, MAX_NUMBER_OF_PARAMS); + + if (data.length < MAX_NUMBER_OF_PARAMS) { + throw new Exception(); + } + assert data.length == MAX_NUMBER_OF_PARAMS; + + String name = data[NAME_INDEX].trim(); + + int quantity; + double price; + quantity = Integer.parseInt(data[QUANTITY_INDEX].trim()); + price = Double.parseDouble(data[PRICE_INDEX].trim()); + if (quantity < 0 && price < 0) { + throw new Exception(); + } + + LocalDate date = UNDEFINED_DATE; + if (!data[DATE_INDEX].equals(NO_DATE)) { + date = LocalDate.parse(data[DATE_INDEX], DATE_FORMAT); + } + + return new Item(name, quantity, price, date); + } +} diff --git a/src/main/java/supertracker/storage/TransactionStorage.java b/src/main/java/supertracker/storage/TransactionStorage.java new file mode 100644 index 0000000000..8bac9072d3 --- /dev/null +++ b/src/main/java/supertracker/storage/TransactionStorage.java @@ -0,0 +1,69 @@ +package supertracker.storage; + +import supertracker.item.Transaction; +import supertracker.item.TransactionList; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; + +public class TransactionStorage extends FileManager { + protected static final String SAVE_FILE_NAME = "transactions.txt"; + protected static final String FILE_PATH = DATA_PATH + SAVE_FILE_NAME; + + public static void saveTransaction(Transaction newTransaction) throws IOException { + checkDataDirectory(); + + File saveFile = new File(FILE_PATH); + FileWriter fw = new FileWriter(saveFile, true); + BufferedWriter writer = new BufferedWriter(fw); + if (saveFile.exists()) { + String newData = getTransactionData(newTransaction); + writer.write(newData); + writer.close(); + fw.close(); + return; + } + + int transactionSize = TransactionList.getLength(); + for (int i = 0; i < transactionSize; i++) { + String transactionData = getTransactionData(TransactionList.get(i)); + writer.write(transactionData); + } + + writer.close(); + fw.close(); + } + + private static String getTransactionData(Transaction transaction) { + String[] itemDataStrings = getNameQtyPriceStrings(transaction); + assert itemDataStrings.length == 4; + + String name = itemDataStrings[NAME_INDEX]; + String excess = itemDataStrings[EXTRA_INDEX]; + String quantity = itemDataStrings[QUANTITY_INDEX]; + String price = itemDataStrings[PRICE_INDEX]; + + assert !transaction.getTransactionDate().isEqual(UNDEFINED_DATE); + String date = transaction.getTransactionDate().format(DATE_FORMAT); + + return "NAME: " + name + SEPARATOR + "QTY: " + quantity + SEPARATOR + "PRICE: " + price + + SEPARATOR + "DATE: " + date + SEPARATOR + "T: " + transaction.getType() + SEPARATOR + excess + + System.lineSeparator(); + } + + /** + * Loads and reads data from a designated text file from the path specified in the class. + * + * @throws IOException if specified path is unable to be opened or found + */ + private static void loadTransactionData() throws IOException { + checkDataDirectory(); + + File saveFile = new File(FILE_PATH); + if (!saveFile.exists()) { + return; + } + } +} diff --git a/src/test/java/supertracker/storage/FileManagerTest.java b/src/test/java/supertracker/storage/ItemStorageTest.java similarity index 95% rename from src/test/java/supertracker/storage/FileManagerTest.java rename to src/test/java/supertracker/storage/ItemStorageTest.java index 416d6e71da..5ea2dfa387 100644 --- a/src/test/java/supertracker/storage/FileManagerTest.java +++ b/src/test/java/supertracker/storage/ItemStorageTest.java @@ -14,7 +14,7 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -public class FileManagerTest { +public class ItemStorageTest { private static final String INVALID_EX_DATE = "01-01-99999"; private static final DateTimeFormatter INVALID_EX_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); private static final LocalDate UNDEFINED_DATE = LocalDate.parse(INVALID_EX_DATE, INVALID_EX_DATE_FORMAT); @@ -36,13 +36,13 @@ public static void setUp() throws IOException { for (NewCommand newItem : newItems) { newItem.execute(); } - FileManager.saveData(); + ItemStorage.saveData(); Inventory.clear(); } @Test void loadData_validData_correctlyRead() throws IOException { - FileManager.loadData(); + ItemStorage.loadData(); Item[] items = { new Item("orange", 10, 2.00, CURR_DATE), @@ -77,6 +77,6 @@ public static void reset() throws IOException { newCommand.execute(); } - FileManager.saveData(); + ItemStorage.saveData(); } } From d52d5f9d72767a11dc180596a395abd29e30d384 Mon Sep 17 00:00:00 2001 From: rismm Date: Tue, 9 Apr 2024 15:14:32 +0800 Subject: [PATCH 252/423] Add transaction loading --- src/main/java/supertracker/SuperTracker.java | 3 +- .../java/supertracker/command/AddCommand.java | 1 - .../java/supertracker/command/BuyCommand.java | 1 - .../supertracker/command/DeleteCommand.java | 1 - .../java/supertracker/command/NewCommand.java | 1 - .../supertracker/command/RemoveCommand.java | 1 - .../supertracker/command/RenameCommand.java | 1 - .../supertracker/command/SellCommand.java | 1 - .../supertracker/command/UpdateCommand.java | 1 - .../supertracker/storage/FileManager.java | 6 - .../supertracker/storage/ItemStorage.java | 10 +- .../storage/TransactionStorage.java | 116 ++++++++++++++++-- .../java/supertracker/ui/ErrorMessage.java | 9 +- 13 files changed, 121 insertions(+), 31 deletions(-) diff --git a/src/main/java/supertracker/SuperTracker.java b/src/main/java/supertracker/SuperTracker.java index 5f9ea3618c..f86668514e 100644 --- a/src/main/java/supertracker/SuperTracker.java +++ b/src/main/java/supertracker/SuperTracker.java @@ -4,8 +4,8 @@ import supertracker.command.InvalidCommand; import supertracker.command.QuitCommand; import supertracker.parser.Parser; -import supertracker.storage.FileManager; import supertracker.storage.ItemStorage; +import supertracker.storage.TransactionStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; @@ -40,6 +40,7 @@ private static void run() { try { ItemStorage.loadData(); + TransactionStorage.loadTransactionData(); } catch (IOException e) { Ui.printError(ErrorMessage.FILE_LOAD_ERROR); } diff --git a/src/main/java/supertracker/command/AddCommand.java b/src/main/java/supertracker/command/AddCommand.java index 148ccc0243..6343b33bc8 100644 --- a/src/main/java/supertracker/command/AddCommand.java +++ b/src/main/java/supertracker/command/AddCommand.java @@ -2,7 +2,6 @@ import supertracker.item.Inventory; import supertracker.item.Item; -import supertracker.storage.FileManager; import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; diff --git a/src/main/java/supertracker/command/BuyCommand.java b/src/main/java/supertracker/command/BuyCommand.java index b2fe7143dd..620505b21c 100644 --- a/src/main/java/supertracker/command/BuyCommand.java +++ b/src/main/java/supertracker/command/BuyCommand.java @@ -2,7 +2,6 @@ import supertracker.item.Transaction; import supertracker.item.TransactionList; -import supertracker.storage.FileManager; import supertracker.storage.TransactionStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; diff --git a/src/main/java/supertracker/command/DeleteCommand.java b/src/main/java/supertracker/command/DeleteCommand.java index bd911a0b0f..ced4c9503f 100644 --- a/src/main/java/supertracker/command/DeleteCommand.java +++ b/src/main/java/supertracker/command/DeleteCommand.java @@ -1,7 +1,6 @@ package supertracker.command; import supertracker.item.Inventory; -import supertracker.storage.FileManager; import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; diff --git a/src/main/java/supertracker/command/NewCommand.java b/src/main/java/supertracker/command/NewCommand.java index 0577a916da..545e4aa487 100644 --- a/src/main/java/supertracker/command/NewCommand.java +++ b/src/main/java/supertracker/command/NewCommand.java @@ -1,6 +1,5 @@ package supertracker.command; -import supertracker.storage.FileManager; import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; diff --git a/src/main/java/supertracker/command/RemoveCommand.java b/src/main/java/supertracker/command/RemoveCommand.java index e86630872e..8f642ffb2b 100644 --- a/src/main/java/supertracker/command/RemoveCommand.java +++ b/src/main/java/supertracker/command/RemoveCommand.java @@ -2,7 +2,6 @@ import supertracker.item.Inventory; import supertracker.item.Item; -import supertracker.storage.FileManager; import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; diff --git a/src/main/java/supertracker/command/RenameCommand.java b/src/main/java/supertracker/command/RenameCommand.java index 3f491abd8b..4d9a5decae 100644 --- a/src/main/java/supertracker/command/RenameCommand.java +++ b/src/main/java/supertracker/command/RenameCommand.java @@ -2,7 +2,6 @@ import supertracker.item.Inventory; import supertracker.item.Item; -import supertracker.storage.FileManager; import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; diff --git a/src/main/java/supertracker/command/SellCommand.java b/src/main/java/supertracker/command/SellCommand.java index 15db7f85b6..2271b1327f 100644 --- a/src/main/java/supertracker/command/SellCommand.java +++ b/src/main/java/supertracker/command/SellCommand.java @@ -2,7 +2,6 @@ import supertracker.item.Transaction; import supertracker.item.TransactionList; -import supertracker.storage.FileManager; import supertracker.storage.TransactionStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; diff --git a/src/main/java/supertracker/command/UpdateCommand.java b/src/main/java/supertracker/command/UpdateCommand.java index cd281b944b..a6745f958a 100644 --- a/src/main/java/supertracker/command/UpdateCommand.java +++ b/src/main/java/supertracker/command/UpdateCommand.java @@ -1,6 +1,5 @@ package supertracker.command; -import supertracker.storage.FileManager; import supertracker.storage.ItemStorage; import supertracker.ui.ErrorMessage; import supertracker.ui.Ui; diff --git a/src/main/java/supertracker/storage/FileManager.java b/src/main/java/supertracker/storage/FileManager.java index 9a8b7f394a..e00df39060 100644 --- a/src/main/java/supertracker/storage/FileManager.java +++ b/src/main/java/supertracker/storage/FileManager.java @@ -16,12 +16,6 @@ public class FileManager { protected static final String NO_DATE = "no date"; protected static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); protected static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); - protected static final int MAX_NUMBER_OF_PARAMS = 5; - protected static final int NAME_INDEX = 0; - protected static final int QUANTITY_INDEX = 1; - protected static final int PRICE_INDEX = 2; - protected static final int DATE_INDEX = 3; - protected static final int EXTRA_INDEX = 3; protected static void checkDataDirectory() { File directory = new File(DATA_PATH); diff --git a/src/main/java/supertracker/storage/ItemStorage.java b/src/main/java/supertracker/storage/ItemStorage.java index 8be3964eec..b8cb9d4e16 100644 --- a/src/main/java/supertracker/storage/ItemStorage.java +++ b/src/main/java/supertracker/storage/ItemStorage.java @@ -50,7 +50,7 @@ public static void saveData() throws IOException { } /** - * Loads and reads data from a designated text file from the path specified in the class. + * Loads and reads item data from a designated text file from the path specified in the class. * Parses each line of data into an Item class and adds to the item list in the Inventory class. * If data is corrupted, prints to the UI the number of corrupted lines. * @@ -67,18 +67,18 @@ public static void loadData() throws IOException { Inventory.clear(); Scanner fileScanner = new Scanner(saveFile); String itemData; - int corruptedData = 0; + boolean hasCorruptedData = false; while (fileScanner.hasNext()) { try { itemData = fileScanner.nextLine(); Item item = parseItemData(itemData); Inventory.put(item.getName(), item); } catch (Exception e) { - corruptedData++; + hasCorruptedData = true; } } - if (corruptedData != 0) { - Ui.printError(ErrorMessage.FILE_CORRUPTED_ERROR); + if (hasCorruptedData) { + Ui.printError(ErrorMessage.ITEM_FILE_CORRUPTED_ERROR); saveData(); } fileScanner.close(); diff --git a/src/main/java/supertracker/storage/TransactionStorage.java b/src/main/java/supertracker/storage/TransactionStorage.java index 8bac9072d3..1daff3dde4 100644 --- a/src/main/java/supertracker/storage/TransactionStorage.java +++ b/src/main/java/supertracker/storage/TransactionStorage.java @@ -1,31 +1,67 @@ package supertracker.storage; +import supertracker.TrackerException; import supertracker.item.Transaction; import supertracker.item.TransactionList; +import supertracker.ui.ErrorMessage; +import supertracker.ui.Ui; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.time.LocalDate; +import java.util.Scanner; public class TransactionStorage extends FileManager { protected static final String SAVE_FILE_NAME = "transactions.txt"; protected static final String FILE_PATH = DATA_PATH + SAVE_FILE_NAME; + protected static final int MAX_NUMBER_OF_PARAMS = 6; + protected static final int NAME_INDEX = 0; + protected static final int QUANTITY_INDEX = 1; + protected static final int PRICE_INDEX = 2; + protected static final int DATE_INDEX = 3; + protected static final int TYPE_INDEX = 4; + protected static final int EXTRA_INDEX = 3; + protected static final String[] PARAM_LABELS = {"NAME: ", "QTY: ", "PRICE: ", "DATE: ", "T: "}; + /** + * Saves a new transaction by writing into a text file. If the text file does not exist, all transactional data + * currently in the system will be saved. + * + * @throws IOException if text file cannot be opened or accessed for whatever reason + */ public static void saveTransaction(Transaction newTransaction) throws IOException { checkDataDirectory(); File saveFile = new File(FILE_PATH); - FileWriter fw = new FileWriter(saveFile, true); - BufferedWriter writer = new BufferedWriter(fw); - if (saveFile.exists()) { - String newData = getTransactionData(newTransaction); - writer.write(newData); - writer.close(); - fw.close(); + + if (!saveFile.exists()) { + saveFile.createNewFile(); + saveAllTransactions(); return; } + FileWriter fw = new FileWriter(saveFile, true); + BufferedWriter writer = new BufferedWriter(fw); + String newData = getTransactionData(newTransaction); + writer.write(newData); + + writer.close(); + fw.close(); + } + + /** + * Saves all transactional data in the transaction list. Assumes that the save file already exists. + * + * @throws IOException if text file cannot be opened or accessed for whatever reason + */ + private static void saveAllTransactions() throws IOException { + File saveFile = new File(FILE_PATH); + FileWriter fw = new FileWriter(saveFile); + BufferedWriter writer = new BufferedWriter(fw); + assert saveFile.exists(); + int transactionSize = TransactionList.getLength(); for (int i = 0; i < transactionSize; i++) { String transactionData = getTransactionData(TransactionList.get(i)); @@ -54,16 +90,78 @@ private static String getTransactionData(Transaction transaction) { } /** - * Loads and reads data from a designated text file from the path specified in the class. + * Loads and reads transaction data from a designated text file from the path specified in the class. + * Parses each line of data into a Transaction class and adds to the item list in the TransactionList class. + * If data is corrupted, prints to the UI that there are corrupted lines. + * If the transaction date parsed is a date that is larger than the current date, prints to the UI a message + * to alert the user that the date is not a possible transactional date. * * @throws IOException if specified path is unable to be opened or found */ - private static void loadTransactionData() throws IOException { + public static void loadTransactionData() throws IOException { checkDataDirectory(); File saveFile = new File(FILE_PATH); if (!saveFile.exists()) { return; } + + Scanner fileScanner = new Scanner(saveFile); + String transactionData; + boolean hasCorruptedData = false; + boolean hasDateAfterToday = false; + while (fileScanner.hasNext()) { + try { + transactionData = fileScanner.nextLine(); + Transaction transaction = parseTransactionData(transactionData); + TransactionList.add(transaction); + } catch (TrackerException e) { + hasCorruptedData = true; + hasDateAfterToday = true; + } catch (Exception e) { + hasCorruptedData = true; + } + } + if (hasCorruptedData) { + Ui.printError(ErrorMessage.TRANSACTION_FILE_CORRUPTED_ERROR); + if (hasDateAfterToday) { + Ui.printIndent(ErrorMessage.TRANSACTION_DATE_LOAD_ERROR); + //saveAllTransactions(); + } + } + fileScanner.close(); + } + + private static Transaction parseTransactionData(String transactionData) throws Exception { + String[] data = transactionData.split(SEPARATOR, MAX_NUMBER_OF_PARAMS); + + if (data.length < MAX_NUMBER_OF_PARAMS) { + throw new Exception(); + } + for (int i = 0; i < MAX_NUMBER_OF_PARAMS - 1; i++) { + if (!data[i].startsWith(PARAM_LABELS[i])) { + throw new Exception(); + } + data[i] = data[i].substring(data[i].indexOf(PARAM_LABELS[i])).trim(); + } + + String name = data[NAME_INDEX]; + + int quantity = Integer.parseInt(data[QUANTITY_INDEX]); + double price = Double.parseDouble(data[PRICE_INDEX]); + if (quantity < 0 && price < 0) { + throw new Exception(); + } + + LocalDate transactionDate = LocalDate.parse(data[DATE_INDEX], DATE_FORMAT); + if (transactionDate.isAfter(LocalDate.now())) { + throw new TrackerException(ErrorMessage.TRANSACTION_FILE_CORRUPTED_ERROR); + } + + if (!data[TYPE_INDEX].equals("b") && !data[TYPE_INDEX].equals("s")) { + throw new Exception(); + } + + return new Transaction(name, quantity, price, transactionDate, data[TYPE_INDEX]); } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 3bbe0542a9..ab1c115736 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -50,8 +50,13 @@ public class ErrorMessage { public static final String INVALID_FIND_FORMAT = "Invalid find command format!"; public static final String FILE_SAVE_ERROR = "Oops! Unable to save data due to an I/O error!"; public static final String FILE_LOAD_ERROR = "Oops! Unable to load your previous data due to an I/O error!"; - public static final String FILE_CORRUPTED_ERROR = - "Oops! Unable to load some of your previous data as the data in the save file has been corrupted!"; + public static final String ITEM_FILE_CORRUPTED_ERROR = + "Oops! Unable to load some of your previous item data as the data in the save file has been corrupted!"; + public static final String TRANSACTION_FILE_CORRUPTED_ERROR = + "Oops! Unable to load some of your previous transaction data" + + " as the data in the save file has been corrupted!"; + public static final String TRANSACTION_DATE_LOAD_ERROR = "Looks like you might have edited a transaction date " + + "in the save file to a date that has not happened yet"; public static final String INTEGER_OVERFLOW = "Unable to add your specified number of items. " + "Why do you need more than 2147483647 items anyway?"; public static final String INVALID_REV_EXP_TODAY_FORMAT = "Invalid revenue/expenditure command format. " + From 3aa4a6046bdb79a8f17b42577647c8115a6cad27 Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Tue, 9 Apr 2024 18:18:51 +0800 Subject: [PATCH 253/423] Add help command --- .../supertracker/command/HelpCommand.java | 61 ++++++++- .../java/supertracker/ui/HelpCommandUi.java | 125 ++++++++++++++++++ src/main/java/supertracker/ui/Ui.java | 1 - 3 files changed, 184 insertions(+), 3 deletions(-) create mode 100644 src/main/java/supertracker/ui/HelpCommandUi.java diff --git a/src/main/java/supertracker/command/HelpCommand.java b/src/main/java/supertracker/command/HelpCommand.java index e7ebf9482f..366b047f41 100644 --- a/src/main/java/supertracker/command/HelpCommand.java +++ b/src/main/java/supertracker/command/HelpCommand.java @@ -1,16 +1,73 @@ package supertracker.command; +import supertracker.ui.HelpCommandUi; import java.util.Scanner; public class HelpCommand implements Command{ + private static final String NEW_COMMAND = "new"; + private static final String LIST_COMMAND = "list"; + private static final String UPDATE_COMMAND = "update"; + private static final String DELETE_COMMAND = "delete"; + private static final String TRANSACTION_COMMAND = "transaction"; + private static final String FIND_COMMAND = "find"; + private static final String REPORT_COMMAND = "report"; + private static final String CHANGE_QUANTITY_COMMAND = "change"; + private static final String RENAME_COMMAND = "rename"; + private static final String EXPENDITURE_COMMAND = "exp"; + private static final String REVENUE_COMMAND = "rev"; public HelpCommand(){ } + private static String getHelpCommandReply(String input) { + if (!input.contains(" ")) { + return input; + } + return input.substring(0, input.indexOf(" ")); + } + @Override public void execute() { - Ui.helpOpeningMessage(); + HelpCommandUi.helpCommandSuccess(); Scanner in = new Scanner(System.in); String input = in.nextLine(); + String helpCommandWord = getHelpCommandReply(input); - + switch (helpCommandWord) { + case NEW_COMMAND: + HelpCommandUi.printNewCommandParams(); + break; + case DELETE_COMMAND: + HelpCommandUi.printDeleteCommandParams(); + break; + case CHANGE_QUANTITY_COMMAND: + HelpCommandUi.printChangeCommandParams(); + break; + case UPDATE_COMMAND: + HelpCommandUi.printUpdateCommandParams(); + break; + case FIND_COMMAND: + HelpCommandUi.printFindCommandParams(); + break; + case RENAME_COMMAND: + HelpCommandUi.printRenameCommandParams(); + break; + case LIST_COMMAND: + HelpCommandUi.printListCommandParams(); + break; + case REPORT_COMMAND: + HelpCommandUi.printReportCommandParams(); + break; + case TRANSACTION_COMMAND: + HelpCommandUi.printTransactionCommandParams(); + break; + case EXPENDITURE_COMMAND: + HelpCommandUi.printExpenditureCommandParams(); + break; + case REVENUE_COMMAND: + HelpCommandUi.printRevenueCommandParams(); + break; + default: + HelpCommandUi.printInvalidHelpMessage(); + break; + } } @Override diff --git a/src/main/java/supertracker/ui/HelpCommandUi.java b/src/main/java/supertracker/ui/HelpCommandUi.java new file mode 100644 index 0000000000..db7760d607 --- /dev/null +++ b/src/main/java/supertracker/ui/HelpCommandUi.java @@ -0,0 +1,125 @@ +package supertracker.ui; + +public class HelpCommandUi extends Ui { + private static final String INDENT_SPACES = " "; + private static final String HELP_MESSAGE = "Hello! These are the list of commands that i can help you with:"; + private static final String HELP_LIST_OF_COMMANDS = + "1. Create a new item: type 'new' to show parameters\n" + + INDENT_SPACES + "2. Delete an item: type 'delete' to show parameters\n" + + INDENT_SPACES + "3. Change quantity of an item: type 'change' to show parameters\n" + + INDENT_SPACES + "4. Update an item: type 'update' to show parameters\n" + + INDENT_SPACES + "5. Find an item: type 'find' to show parameters\n" + + INDENT_SPACES + "6. Rename an item: type 'rename' to show parameters\n" + + INDENT_SPACES + "7. List all items: type 'list' to show parameters\n" + + INDENT_SPACES + "8. Print a report: type 'report' to show parameters\n" + + INDENT_SPACES + "9. Print an expenditure: type 'exp' to show parameters\n" + + INDENT_SPACES + "10. Print a revenue: type 'rev' to show parameters\n" + + INDENT_SPACES + "11. Buying or selling items: type 'transaction' to show parameters\n" + + INDENT_SPACES + "**Any other invalid input will bring you back to the main console"; + private static final String HELP_CLOSING_MESSAGE = + INDENT_SPACES + "**Refer to UserGuide for further explanation\n" + + INDENT_SPACES + "**DO NOTE that You have also returned to the main console"; + private static final String HELP_NEW_PARAMETERS = + "A new item command should look like this: new n/NAME q/QUANTITY p/PRICE [e/EXPIRY_DATE]\n" + + HELP_CLOSING_MESSAGE; + private static final String HELP_FIND_PARAMETERS = + "A find command should look like this: find n/NAME\n" + HELP_CLOSING_MESSAGE; + private static final String HELP_DELETE_PARAMETERS = + "A delete command should look like this: delete n/NAME\n" + HELP_CLOSING_MESSAGE; + private static final String HELP_UPDATE_PARAMETERS = + "An update command should look like this: " + + "update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]\n" + + HELP_CLOSING_MESSAGE; + private static final String HELP_QUANTITY_PARAMETERS = + "A increase quantity command should look like this: add n/NAME q/QUANTITY\n" + + INDENT_SPACES + "A decrease quantity command should look like this: remove n/NAME q/QUANTITY\n" + + HELP_CLOSING_MESSAGE; + private static final String HELP_RENAME_PARAMETERS = + "A rename command should look like this: rename n/NAME r/NEW_NAME\n" + HELP_CLOSING_MESSAGE; + private static final String HELP_REPORT_PARAMETERS = + "A report command for low stock should look like this: report r/REPORT_TYPE t/THRESHOLD_VALUE\n" + + INDENT_SPACES + "A report command for expiry date should look like this: "+ + "report r/REPORT_TYPE [t/THRESHOLD_VALUE]\n" + + HELP_CLOSING_MESSAGE; + private static final String HELP_LIST_PARAMETERS = + "A list command should look like this: list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]\n" + HELP_CLOSING_MESSAGE; + private static final String HELP_TRANSACTION_PARAMETERS = + "A buy command should look like this: buy n/NAME q/QUANTITY p/PRICE\n" + + INDENT_SPACES + "A sell command should look like this: sell n/NAME q/QUANTITY\n" + + HELP_CLOSING_MESSAGE; + private static final String HELP_EXP_PARAMETERS = + "A expenditure command should look like this: exp type/EXPENDITURE_TYPE [from/START_DATE] [to/END_DATE]\n" + + HELP_CLOSING_MESSAGE; + private static final String HELP_REV_PARAMETERS = + "A revenue command should look like this: rev type/REVENUE_TYPE [from/START_DATE] [to/END_DATE]\n" + + HELP_CLOSING_MESSAGE; + private static final String INVALID_HELP_COMMAND_MESSAGE = + "You have input an invalid command.\n" + INDENT_SPACES + "You are now back in the main console."; + + public static void helpCommandSuccess() { + printIndent(HELP_MESSAGE); + printIndent(HELP_LIST_OF_COMMANDS); + printLine(); + } + + public static void printNewCommandParams() { + printLine(); + printIndent(HELP_NEW_PARAMETERS); + } + + public static void printDeleteCommandParams() { + printLine(); + printIndent(HELP_DELETE_PARAMETERS); + } + + public static void printChangeCommandParams() { + printLine(); + printIndent(HELP_QUANTITY_PARAMETERS); + } + + public static void printUpdateCommandParams() { + printLine(); + printIndent(HELP_UPDATE_PARAMETERS); + } + + public static void printFindCommandParams() { + printLine(); + printIndent(HELP_FIND_PARAMETERS); + } + + public static void printRenameCommandParams() { + printLine(); + printIndent(HELP_RENAME_PARAMETERS); + } + + public static void printListCommandParams() { + printLine(); + printIndent(HELP_LIST_PARAMETERS); + } + + public static void printReportCommandParams() { + printLine(); + printIndent(HELP_REPORT_PARAMETERS); + } + + public static void printTransactionCommandParams() { + printLine(); + printIndent(HELP_TRANSACTION_PARAMETERS); + } + + public static void printExpenditureCommandParams() { + printLine(); + printIndent(HELP_EXP_PARAMETERS); + } + + public static void printRevenueCommandParams() { + printLine(); + printIndent(HELP_REV_PARAMETERS); + } + + public static void printInvalidHelpMessage() { + printLine(); + printIndent(INVALID_HELP_COMMAND_MESSAGE); + } + +} diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index 361ae02d4d..be42915c92 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -35,7 +35,6 @@ public class Ui { private static final String TOTAL = "total"; private static final String DAY = "day"; private static final String RANGE = "range"; - private static String getListSize(int size){ return ("There are " + size + " unique items in your inventory:"); } From 5e74b33c92f142d8346c43e0fff0332bfc0ab69b Mon Sep 17 00:00:00 2001 From: awesomesjh <89649663+awesomesjh@users.noreply.github.com> Date: Tue, 9 Apr 2024 20:16:54 +0800 Subject: [PATCH 254/423] Update src/main/java/supertracker/command/HelpCommand.java --- src/main/java/supertracker/command/HelpCommand.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/supertracker/command/HelpCommand.java b/src/main/java/supertracker/command/HelpCommand.java index 366b047f41..d7b994ddfc 100644 --- a/src/main/java/supertracker/command/HelpCommand.java +++ b/src/main/java/supertracker/command/HelpCommand.java @@ -1,7 +1,9 @@ package supertracker.command; + import supertracker.ui.HelpCommandUi; import java.util.Scanner; -public class HelpCommand implements Command{ + +public class HelpCommand implements Command { private static final String NEW_COMMAND = "new"; private static final String LIST_COMMAND = "list"; private static final String UPDATE_COMMAND = "update"; From 60672d64bf0921c9d5247e5b487b88fb6ab1a2c0 Mon Sep 17 00:00:00 2001 From: awesomesjh <89649663+awesomesjh@users.noreply.github.com> Date: Tue, 9 Apr 2024 20:17:09 +0800 Subject: [PATCH 255/423] Update src/main/java/supertracker/command/HelpCommand.java --- src/main/java/supertracker/command/HelpCommand.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/supertracker/command/HelpCommand.java b/src/main/java/supertracker/command/HelpCommand.java index d7b994ddfc..7425fc009a 100644 --- a/src/main/java/supertracker/command/HelpCommand.java +++ b/src/main/java/supertracker/command/HelpCommand.java @@ -15,7 +15,8 @@ public class HelpCommand implements Command { private static final String RENAME_COMMAND = "rename"; private static final String EXPENDITURE_COMMAND = "exp"; private static final String REVENUE_COMMAND = "rev"; - public HelpCommand(){ + + public HelpCommand() { } private static String getHelpCommandReply(String input) { From 75fbb3467345b7ec14448ba52331046b83805c36 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Tue, 9 Apr 2024 20:32:32 +0800 Subject: [PATCH 256/423] handle new error created ways of handling empty date param and empty task type and created new error messages for expenditure and revenue --- src/main/java/supertracker/parser/Parser.java | 80 ++++++++++++++++--- .../java/supertracker/ui/ErrorMessage.java | 24 ++++-- 2 files changed, 83 insertions(+), 21 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 6b85e66493..8a0cb0b5d5 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -86,6 +86,8 @@ public class Parser { private static final String TOTAL = "total"; private static final String DAY = "day"; private static final String RANGE = "range"; + private static final String REV_COMMAND = "revenue"; + private static final String EXP_COMMAND = "expenditure"; // Do note that the file delimiter constant needs to follow the separator constant in the FileManager class private static final String FILE_DELIMITER = " ,,, "; @@ -755,9 +757,9 @@ private static Command parseExpenditureCommand(String input) throws TrackerExcep String fromString = matcher.group(FROM_GROUP).replace(FROM_FLAG + BASE_FLAG, "").trim(); String toString = matcher.group(TO_GROUP).replace(TO_FLAG + BASE_FLAG, "").trim(); - validateRevExpFormat(type, hasStart, hasEnd); - LocalDate to = parseDate(toString); - LocalDate from = parseDate(fromString); + validateRevExpFormat(type, hasStart, hasEnd, EXP_COMMAND); + LocalDate to = validateDateForRevAndExp(toString); + LocalDate from = validateDateForRevAndExp(fromString); return new ExpenditureCommand(type, from, to); } @@ -778,42 +780,94 @@ private static Command parseRevenueCommand(String input) throws TrackerException String taskType = matcher.group(TYPE_GROUP).trim(); String startDateString = matcher.group(FROM_GROUP).replace(FROM_GROUP + BASE_FLAG, "").trim(); String endDateString = matcher.group(TO_GROUP).replace(TO_GROUP + BASE_FLAG, "").trim(); - - validateRevExpFormat(taskType, hasStart, hasEnd); - LocalDate startDate = parseDate(startDateString); - LocalDate endDate = parseDate(endDateString); + validateRevExpFormat(taskType, hasStart, hasEnd, REV_COMMAND); + LocalDate startDate = validateDateForRevAndExp(startDateString); + LocalDate endDate = validateDateForRevAndExp(endDateString); return new RevenueCommand(taskType, startDate, endDate); } //@@author + private static LocalDate validateDateForRevAndExp(String startDateString) throws TrackerException { + LocalDate date; + try { + date = parseDate(startDateString); + } catch (TrackerException e) { + throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); + } + if (date.equals(UNDEFINED_DATE)) { + throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); + } + return date; + } + //@@author vimalapugazhan - private static void validateRevExpFormat(String taskType, boolean hasStart, boolean hasEnd) + private static void validateRevExpFormat(String taskType, boolean hasStart, boolean hasEnd, String command) throws TrackerException { switch (taskType) { case TODAY: if (hasStart || hasEnd) { - throw new TrackerException(ErrorMessage.INVALID_REV_EXP_TODAY_FORMAT); + validateTodayFormat(command); } break; case TOTAL: if (hasStart || hasEnd) { - throw new TrackerException(ErrorMessage.INVALID_REV_EXP_TOTAL_FORMAT); + validateTotalFormat(command); } break; case DAY: if (!hasStart || hasEnd) { - throw new TrackerException(ErrorMessage.INVALID_REV_EXP_DAY_FORMAT); + validateDayFormat(command); } break; case RANGE: if (!hasStart || !hasEnd) { - throw new TrackerException(ErrorMessage.INVALID_REV_EXP_RANGE_FORMAT); + validateRangeFormat(command); } break; - default: assert taskType.isEmpty(); + default: + handleInvalidFormat(command); break; } } //@@author + private static void validateTodayFormat(String command) throws TrackerException { + if (command.equals(EXP_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_EXP_TODAY_FORMAT); + } else if (command.equals(REV_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_REV_TODAY_FORMAT); + } + } + + private static void validateTotalFormat(String command) throws TrackerException { + if (command.equals(EXP_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_EXP_TOTAL_FORMAT); + } else if (command.equals(REV_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_REV_TOTAL_FORMAT); + } + } + + private static void validateDayFormat(String command) throws TrackerException { + if (command.equals(EXP_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_EXP_DAY_FORMAT); + } else if (command.equals(REV_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_REV_DAY_FORMAT); + } + } + + private static void validateRangeFormat(String command) throws TrackerException { + if (command.equals(EXP_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_EXP_RANGE_FORMAT); + } else if (command.equals(REV_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_REV_RANGE_FORMAT); + } + } + + private static void handleInvalidFormat(String command) throws TrackerException { + if (command.equals(EXP_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_EXP_FORMAT); + } else if (command.equals(REV_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_REV_FORMAT); + } + } } diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 3bbe0542a9..831b439946 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -54,12 +54,20 @@ public class ErrorMessage { "Oops! Unable to load some of your previous data as the data in the save file has been corrupted!"; public static final String INTEGER_OVERFLOW = "Unable to add your specified number of items. " + "Why do you need more than 2147483647 items anyway?"; - public static final String INVALID_REV_EXP_TODAY_FORMAT = "Invalid revenue/expenditure command format. " + - "\"rev task/today\" or \"exp task/today\""; - public static final String INVALID_REV_EXP_TOTAL_FORMAT = "Invalid revenue/expenditure command format. " + - "\"rev task/total\" or \"exp task/total\""; - public static final String INVALID_REV_EXP_DAY_FORMAT = "Invalid revenue/expenditure command format. " + - "\"rev task/day from/DATE\" or \"exp task/day from/DATE\""; - public static final String INVALID_REV_EXP_RANGE_FORMAT = "Invalid revenue/expenditure command format. " - + "\"rev task/range from/START_DATE to/END_DATE\" or \"exp task/range from/START_DATE to/END_DATE\""; + public static final String INVALID_REV_TODAY_FORMAT = "Invalid revenue command format. " + + "\"rev task/today\""; + public static final String INVALID_REV_TOTAL_FORMAT = "Invalid revenue command format. " + + "\"rev task/total\""; + public static final String INVALID_REV_DAY_FORMAT = "Invalid revenue command format. " + + "\"rev task/day from/DATE\""; + public static final String INVALID_REV_RANGE_FORMAT = "Invalid revenue command format. " + + "\"rev task/range from/START_DATE to/END_DATE\""; + public static final String INVALID_EXP_TODAY_FORMAT = "Invalid expenditure command format. " + + "\"exp task/today\""; + public static final String INVALID_EXP_TOTAL_FORMAT = "Invalid expenditure command format. " + + "\"exp task/total\""; + public static final String INVALID_EXP_DAY_FORMAT = "Invalid expenditure command format. " + + "\"exp task/day from/DATE\""; + public static final String INVALID_EXP_RANGE_FORMAT = "Invalid expenditure command format. " + + "\"exp task/range from/START_DATE to/END_DATE\""; } From b61d7db516be8dcbe3867093c64a463659ecd767 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 9 Apr 2024 21:39:56 +0800 Subject: [PATCH 257/423] Refactor help command --- .../supertracker/command/HelpCommand.java | 8 +- src/main/java/supertracker/parser/Parser.java | 6 +- .../java/supertracker/ui/HelpCommandUi.java | 131 +++++++++--------- 3 files changed, 76 insertions(+), 69 deletions(-) diff --git a/src/main/java/supertracker/command/HelpCommand.java b/src/main/java/supertracker/command/HelpCommand.java index 7425fc009a..abe6d59379 100644 --- a/src/main/java/supertracker/command/HelpCommand.java +++ b/src/main/java/supertracker/command/HelpCommand.java @@ -1,6 +1,8 @@ package supertracker.command; import supertracker.ui.HelpCommandUi; +import supertracker.ui.Ui; + import java.util.Scanner; public class HelpCommand implements Command { @@ -16,9 +18,6 @@ public class HelpCommand implements Command { private static final String EXPENDITURE_COMMAND = "exp"; private static final String REVENUE_COMMAND = "rev"; - public HelpCommand() { - } - private static String getHelpCommandReply(String input) { if (!input.contains(" ")) { return input; @@ -32,6 +31,7 @@ public void execute() { Scanner in = new Scanner(System.in); String input = in.nextLine(); String helpCommandWord = getHelpCommandReply(input); + Ui.printLine(); switch (helpCommandWord) { case NEW_COMMAND: @@ -71,6 +71,8 @@ public void execute() { HelpCommandUi.printInvalidHelpMessage(); break; } + + HelpCommandUi.helpClosingMessage(); } @Override diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index ea62da53ce..2df45eb1df 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -172,15 +172,15 @@ public static Command parseCommand(String input) throws TrackerException { case QUIT_COMMAND: command = new QuitCommand(); break; + case HELP_COMMAND: + command = new HelpCommand(); + break; case NEW_COMMAND: command = parseNewCommand(params); break; case LIST_COMMAND: command = parseListCommand(params); break; - case HELP_COMMAND: - command = new HelpCommand(); - break; case UPDATE_COMMAND: command = parseUpdateCommand(params); break; diff --git a/src/main/java/supertracker/ui/HelpCommandUi.java b/src/main/java/supertracker/ui/HelpCommandUi.java index db7760d607..f7cd9d502c 100644 --- a/src/main/java/supertracker/ui/HelpCommandUi.java +++ b/src/main/java/supertracker/ui/HelpCommandUi.java @@ -1,125 +1,130 @@ package supertracker.ui; public class HelpCommandUi extends Ui { - private static final String INDENT_SPACES = " "; - private static final String HELP_MESSAGE = "Hello! These are the list of commands that i can help you with:"; - private static final String HELP_LIST_OF_COMMANDS = - "1. Create a new item: type 'new' to show parameters\n" + - INDENT_SPACES + "2. Delete an item: type 'delete' to show parameters\n" + - INDENT_SPACES + "3. Change quantity of an item: type 'change' to show parameters\n" + - INDENT_SPACES + "4. Update an item: type 'update' to show parameters\n" + - INDENT_SPACES + "5. Find an item: type 'find' to show parameters\n" + - INDENT_SPACES + "6. Rename an item: type 'rename' to show parameters\n" + - INDENT_SPACES + "7. List all items: type 'list' to show parameters\n" + - INDENT_SPACES + "8. Print a report: type 'report' to show parameters\n" + - INDENT_SPACES + "9. Print an expenditure: type 'exp' to show parameters\n" + - INDENT_SPACES + "10. Print a revenue: type 'rev' to show parameters\n" + - INDENT_SPACES + "11. Buying or selling items: type 'transaction' to show parameters\n" + - INDENT_SPACES + "**Any other invalid input will bring you back to the main console"; - private static final String HELP_CLOSING_MESSAGE = - INDENT_SPACES + "**Refer to UserGuide for further explanation\n" + - INDENT_SPACES + "**DO NOTE that You have also returned to the main console"; + private static final String HELP_SUCCESS_MESSAGE_FIRST_LINE = + "Hello! These are the list of commands that I can help you with:"; + private static final String HELP_SUCCESS_MESSAGE_SECOND_LINE = + "** Any other invalid input will bring you back to the main console"; + private static final String[] HELP_LIST_OF_COMMANDS = { + "Create a new item: type 'new' to show parameters", + "Delete an item: type 'delete' to show parameters", + "Change quantity of an item: type 'change' to show parameters", + "Update an item: type 'update' to show parameters", + "Find an item: type 'find' to show parameters", + "Rename an item: type 'rename' to show parameters", + "List all items: type 'list' to show parameters", + "Print a report: type 'report' to show parameters", + "Print expenditure: type 'exp' to show parameters", + "Print revenue: type 'rev' to show parameters", + "Buy or sell items: type 'transaction' to show parameters" + }; + private static final String HELP_CLOSING_MESSAGE_FIRST_LINE = + "** Refer to UserGuide for further explanation"; + private static final String HELP_CLOSING_MESSAGE_SECOND_LINE = + "** DO NOTE that you have been returned to the main console"; private static final String HELP_NEW_PARAMETERS = - "A new item command should look like this: new n/NAME q/QUANTITY p/PRICE [e/EXPIRY_DATE]\n" + - HELP_CLOSING_MESSAGE; + "A new item command should look like this: new n/NAME q/QUANTITY p/PRICE [e/EXPIRY_DATE]"; private static final String HELP_FIND_PARAMETERS = - "A find command should look like this: find n/NAME\n" + HELP_CLOSING_MESSAGE; + "A find command should look like this: find n/NAME"; private static final String HELP_DELETE_PARAMETERS = - "A delete command should look like this: delete n/NAME\n" + HELP_CLOSING_MESSAGE; + "A delete command should look like this: delete n/NAME"; private static final String HELP_UPDATE_PARAMETERS = "An update command should look like this: " + - "update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]\n" + - HELP_CLOSING_MESSAGE; - private static final String HELP_QUANTITY_PARAMETERS = - "A increase quantity command should look like this: add n/NAME q/QUANTITY\n" + - INDENT_SPACES + "A decrease quantity command should look like this: remove n/NAME q/QUANTITY\n" + - HELP_CLOSING_MESSAGE; + "update n/NAME [q/NEW_QUANTITY] [p/NEW_PRICE] [e/NEW_EXPIRY_DATE]"; + private static final String HELP_ADD_QUANTITY_PARAMETERS = + "A add command should look like this: add n/NAME q/QUANTITY"; + private static final String HELP_REMOVE_QUANTITY_PARAMETERS = + "A remove command should look like this: remove n/NAME q/QUANTITY"; private static final String HELP_RENAME_PARAMETERS = - "A rename command should look like this: rename n/NAME r/NEW_NAME\n" + HELP_CLOSING_MESSAGE; - private static final String HELP_REPORT_PARAMETERS = - "A report command for low stock should look like this: report r/REPORT_TYPE t/THRESHOLD_VALUE\n" + - INDENT_SPACES + "A report command for expiry date should look like this: "+ - "report r/REPORT_TYPE [t/THRESHOLD_VALUE]\n" + - HELP_CLOSING_MESSAGE; + "A rename command should look like this: rename n/NAME r/NEW_NAME"; + private static final String HELP_LOW_STOCK_REPORT_PARAMETERS = + "A report command for low stock should look like this: report r/low stock t/THRESHOLD_VALUE"; + private static final String HELP_EXPIRY_REPORT_PARAMETERS = + "A report command for expiry date should look like this: report r/expiry"; private static final String HELP_LIST_PARAMETERS = - "A list command should look like this: list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]\n" + HELP_CLOSING_MESSAGE; - private static final String HELP_TRANSACTION_PARAMETERS = - "A buy command should look like this: buy n/NAME q/QUANTITY p/PRICE\n" + - INDENT_SPACES + "A sell command should look like this: sell n/NAME q/QUANTITY\n" + - HELP_CLOSING_MESSAGE; + "A list command should look like this: list [q/] [p/] [e/] [sq/] [sp/] [se/] [r/]"; + private static final String HELP_BUY_TRANSACTION_PARAMETERS = + "A buy command should look like this: buy n/NAME q/QUANTITY p/PRICE"; + private static final String HELP_SELL_TRANSACTION_PARAMETERS = + "A sell command should look like this: sell n/NAME q/QUANTITY"; private static final String HELP_EXP_PARAMETERS = - "A expenditure command should look like this: exp type/EXPENDITURE_TYPE [from/START_DATE] [to/END_DATE]\n" + - HELP_CLOSING_MESSAGE; + "A expenditure command should look like this: exp type/EXPENDITURE_TYPE [from/START_DATE] [to/END_DATE]"; private static final String HELP_REV_PARAMETERS = - "A revenue command should look like this: rev type/REVENUE_TYPE [from/START_DATE] [to/END_DATE]\n" + - HELP_CLOSING_MESSAGE; - private static final String INVALID_HELP_COMMAND_MESSAGE = - "You have input an invalid command.\n" + INDENT_SPACES + "You are now back in the main console."; + "A revenue command should look like this: rev type/REVENUE_TYPE [from/START_DATE] [to/END_DATE]"; + private static final String INVALID_HELP_COMMAND_MESSAGE_FIRST_LINE = + "You have input an invalid command."; + private static final String INVALID_HELP_COMMAND_MESSAGE_SECOND_LINE = + "You are now back in the main console."; + + private static void printHelpListOfCommands() { + int index = 1; + for (String command : HELP_LIST_OF_COMMANDS) { + printIndent(index + ". " + command); + index++; + } + } public static void helpCommandSuccess() { - printIndent(HELP_MESSAGE); - printIndent(HELP_LIST_OF_COMMANDS); + printIndent(HELP_SUCCESS_MESSAGE_FIRST_LINE); + printHelpListOfCommands(); + printIndent(HELP_SUCCESS_MESSAGE_SECOND_LINE); printLine(); } public static void printNewCommandParams() { - printLine(); printIndent(HELP_NEW_PARAMETERS); } public static void printDeleteCommandParams() { - printLine(); printIndent(HELP_DELETE_PARAMETERS); } public static void printChangeCommandParams() { - printLine(); - printIndent(HELP_QUANTITY_PARAMETERS); + printIndent(HELP_ADD_QUANTITY_PARAMETERS); + printIndent(HELP_REMOVE_QUANTITY_PARAMETERS); } public static void printUpdateCommandParams() { - printLine(); printIndent(HELP_UPDATE_PARAMETERS); } public static void printFindCommandParams() { - printLine(); printIndent(HELP_FIND_PARAMETERS); } public static void printRenameCommandParams() { - printLine(); printIndent(HELP_RENAME_PARAMETERS); } public static void printListCommandParams() { - printLine(); printIndent(HELP_LIST_PARAMETERS); } public static void printReportCommandParams() { - printLine(); - printIndent(HELP_REPORT_PARAMETERS); + printIndent(HELP_LOW_STOCK_REPORT_PARAMETERS); + printIndent(HELP_EXPIRY_REPORT_PARAMETERS); } public static void printTransactionCommandParams() { - printLine(); - printIndent(HELP_TRANSACTION_PARAMETERS); + printIndent(HELP_BUY_TRANSACTION_PARAMETERS); + printIndent(HELP_SELL_TRANSACTION_PARAMETERS); } public static void printExpenditureCommandParams() { - printLine(); printIndent(HELP_EXP_PARAMETERS); } public static void printRevenueCommandParams() { - printLine(); printIndent(HELP_REV_PARAMETERS); } public static void printInvalidHelpMessage() { - printLine(); - printIndent(INVALID_HELP_COMMAND_MESSAGE); + printIndent(INVALID_HELP_COMMAND_MESSAGE_FIRST_LINE); + printIndent(INVALID_HELP_COMMAND_MESSAGE_SECOND_LINE); } + public static void helpClosingMessage() { + printIndent(HELP_CLOSING_MESSAGE_FIRST_LINE); + printIndent(HELP_CLOSING_MESSAGE_SECOND_LINE); + } } From 137a94564da5fb6f08cff087ea1f4642d478e869 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 9 Apr 2024 21:41:47 +0800 Subject: [PATCH 258/423] Fix code indentation --- .../java/supertracker/ui/HelpCommandUi.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/supertracker/ui/HelpCommandUi.java b/src/main/java/supertracker/ui/HelpCommandUi.java index f7cd9d502c..fe79414c32 100644 --- a/src/main/java/supertracker/ui/HelpCommandUi.java +++ b/src/main/java/supertracker/ui/HelpCommandUi.java @@ -6,17 +6,17 @@ public class HelpCommandUi extends Ui { private static final String HELP_SUCCESS_MESSAGE_SECOND_LINE = "** Any other invalid input will bring you back to the main console"; private static final String[] HELP_LIST_OF_COMMANDS = { - "Create a new item: type 'new' to show parameters", - "Delete an item: type 'delete' to show parameters", - "Change quantity of an item: type 'change' to show parameters", - "Update an item: type 'update' to show parameters", - "Find an item: type 'find' to show parameters", - "Rename an item: type 'rename' to show parameters", - "List all items: type 'list' to show parameters", - "Print a report: type 'report' to show parameters", - "Print expenditure: type 'exp' to show parameters", - "Print revenue: type 'rev' to show parameters", - "Buy or sell items: type 'transaction' to show parameters" + "Create a new item: type 'new' to show parameters", + "Delete an item: type 'delete' to show parameters", + "Change quantity of an item: type 'change' to show parameters", + "Update an item: type 'update' to show parameters", + "Find an item: type 'find' to show parameters", + "Rename an item: type 'rename' to show parameters", + "List all items: type 'list' to show parameters", + "Print a report: type 'report' to show parameters", + "Print expenditure: type 'exp' to show parameters", + "Print revenue: type 'rev' to show parameters", + "Buy or sell items: type 'transaction' to show parameters" }; private static final String HELP_CLOSING_MESSAGE_FIRST_LINE = "** Refer to UserGuide for further explanation"; From 07767ee6240148d5ebb7ef7ea699e7aac6c6a8b1 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 9 Apr 2024 21:46:06 +0800 Subject: [PATCH 259/423] Refactor code --- .../java/supertracker/ui/HelpCommandUi.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/supertracker/ui/HelpCommandUi.java b/src/main/java/supertracker/ui/HelpCommandUi.java index fe79414c32..65e43ad60d 100644 --- a/src/main/java/supertracker/ui/HelpCommandUi.java +++ b/src/main/java/supertracker/ui/HelpCommandUi.java @@ -5,18 +5,19 @@ public class HelpCommandUi extends Ui { "Hello! These are the list of commands that I can help you with:"; private static final String HELP_SUCCESS_MESSAGE_SECOND_LINE = "** Any other invalid input will bring you back to the main console"; + private static final String TO_SHOW_PARAMETERS = " to show parameters"; private static final String[] HELP_LIST_OF_COMMANDS = { - "Create a new item: type 'new' to show parameters", - "Delete an item: type 'delete' to show parameters", - "Change quantity of an item: type 'change' to show parameters", - "Update an item: type 'update' to show parameters", - "Find an item: type 'find' to show parameters", - "Rename an item: type 'rename' to show parameters", - "List all items: type 'list' to show parameters", - "Print a report: type 'report' to show parameters", - "Print expenditure: type 'exp' to show parameters", - "Print revenue: type 'rev' to show parameters", - "Buy or sell items: type 'transaction' to show parameters" + "Create a new item: type 'new'", + "Delete an item: type 'delete'", + "Change quantity of an item: type 'change'", + "Update an item: type 'update'", + "Find an item: type 'find'", + "Rename an item: type 'rename'", + "List all items: type 'list'", + "Print a report: type 'report'", + "Print expenditure: type 'exp'", + "Print revenue: type 'rev'", + "Buy or sell items: type 'transaction'" }; private static final String HELP_CLOSING_MESSAGE_FIRST_LINE = "** Refer to UserGuide for further explanation"; @@ -59,7 +60,7 @@ public class HelpCommandUi extends Ui { private static void printHelpListOfCommands() { int index = 1; for (String command : HELP_LIST_OF_COMMANDS) { - printIndent(index + ". " + command); + printIndent(index + ". " + command + TO_SHOW_PARAMETERS); index++; } } From 105fa9a9aa497ea483b8c31a9b15a3889811e598 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 9 Apr 2024 21:49:17 +0800 Subject: [PATCH 260/423] Fix checkstyle --- .../java/supertracker/ui/HelpCommandUi.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/supertracker/ui/HelpCommandUi.java b/src/main/java/supertracker/ui/HelpCommandUi.java index 65e43ad60d..cf3ebad758 100644 --- a/src/main/java/supertracker/ui/HelpCommandUi.java +++ b/src/main/java/supertracker/ui/HelpCommandUi.java @@ -7,17 +7,17 @@ public class HelpCommandUi extends Ui { "** Any other invalid input will bring you back to the main console"; private static final String TO_SHOW_PARAMETERS = " to show parameters"; private static final String[] HELP_LIST_OF_COMMANDS = { - "Create a new item: type 'new'", - "Delete an item: type 'delete'", - "Change quantity of an item: type 'change'", - "Update an item: type 'update'", - "Find an item: type 'find'", - "Rename an item: type 'rename'", - "List all items: type 'list'", - "Print a report: type 'report'", - "Print expenditure: type 'exp'", - "Print revenue: type 'rev'", - "Buy or sell items: type 'transaction'" + "Create a new item: type 'new'", + "Delete an item: type 'delete'", + "Change quantity of an item: type 'change'", + "Update an item: type 'update'", + "Find an item: type 'find'", + "Rename an item: type 'rename'", + "List all items: type 'list'", + "Print a report: type 'report'", + "Print expenditure: type 'exp'", + "Print revenue: type 'rev'", + "Buy or sell items: type 'transaction'" }; private static final String HELP_CLOSING_MESSAGE_FIRST_LINE = "** Refer to UserGuide for further explanation"; From d5d40276ff821995b6e34f0e6ed6ebe79c16b3e3 Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Tue, 9 Apr 2024 22:14:15 +0800 Subject: [PATCH 261/423] Move lines of code --- src/main/java/supertracker/parser/Parser.java | 169 +++++++++--------- 1 file changed, 86 insertions(+), 83 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 21b7833fa1..e0f8b12bab 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -480,6 +480,92 @@ private static void validateNoIntegerOverflow(String name, int quantityToAdd) th } } + private static LocalDate validateDateForRevAndExp(String startDateString) throws TrackerException { + LocalDate date; + try { + date = parseDate(startDateString); + } catch (TrackerException e) { + throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); + } + if (date.equals(UNDEFINED_DATE)) { + throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); + } + return date; + } + + //@@author vimalapugazhan + private static void validateRevExpFormat(String taskType, boolean hasStart, boolean hasEnd, String command) + throws TrackerException { + switch (taskType) { + case TODAY: + if (hasStart || hasEnd) { + validateTodayFormat(command); + } + break; + case TOTAL: + if (hasStart || hasEnd) { + validateTotalFormat(command); + } + break; + case DAY: + if (!hasStart || hasEnd) { + validateDayFormat(command); + } + break; + case RANGE: + if (!hasStart || !hasEnd) { + validateRangeFormat(command); + } + break; + default: + handleInvalidFormat(command); + break; + } + } + //@@author + + //@@author dtaywd + private static void validateTodayFormat(String command) throws TrackerException { + if (command.equals(EXP_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_EXP_TODAY_FORMAT); + } else if (command.equals(REV_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_REV_TODAY_FORMAT); + } + } + + private static void validateTotalFormat(String command) throws TrackerException { + if (command.equals(EXP_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_EXP_TOTAL_FORMAT); + } else if (command.equals(REV_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_REV_TOTAL_FORMAT); + } + } + + private static void validateDayFormat(String command) throws TrackerException { + if (command.equals(EXP_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_EXP_DAY_FORMAT); + } else if (command.equals(REV_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_REV_DAY_FORMAT); + } + } + + private static void validateRangeFormat(String command) throws TrackerException { + if (command.equals(EXP_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_EXP_RANGE_FORMAT); + } else if (command.equals(REV_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_REV_RANGE_FORMAT); + } + } + + private static void handleInvalidFormat(String command) throws TrackerException { + if (command.equals(EXP_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_EXP_FORMAT); + } else if (command.equals(REV_COMMAND)) { + throw new TrackerException(ErrorMessage.INVALID_REV_FORMAT); + } + } + //@@author + private static Command parseNewCommand(String input) throws TrackerException { String[] flags = {NAME_FLAG, QUANTITY_FLAG, PRICE_FLAG, EX_DATE_FLAG}; Matcher matcher = getPatternMatcher(NEW_COMMAND_REGEX, input, flags); @@ -792,87 +878,4 @@ private static Command parseRevenueCommand(String input) throws TrackerException return new RevenueCommand(taskType, startDate, endDate); } //@@author - - private static LocalDate validateDateForRevAndExp(String startDateString) throws TrackerException { - LocalDate date; - try { - date = parseDate(startDateString); - } catch (TrackerException e) { - throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); - } - if (date.equals(UNDEFINED_DATE)) { - throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); - } - return date; - } - - //@@author vimalapugazhan - private static void validateRevExpFormat(String taskType, boolean hasStart, boolean hasEnd, String command) - throws TrackerException { - switch (taskType) { - case TODAY: - if (hasStart || hasEnd) { - validateTodayFormat(command); - } - break; - case TOTAL: - if (hasStart || hasEnd) { - validateTotalFormat(command); - } - break; - case DAY: - if (!hasStart || hasEnd) { - validateDayFormat(command); - } - break; - case RANGE: - if (!hasStart || !hasEnd) { - validateRangeFormat(command); - } - break; - default: - handleInvalidFormat(command); - break; - } - } - //@@author - private static void validateTodayFormat(String command) throws TrackerException { - if (command.equals(EXP_COMMAND)) { - throw new TrackerException(ErrorMessage.INVALID_EXP_TODAY_FORMAT); - } else if (command.equals(REV_COMMAND)) { - throw new TrackerException(ErrorMessage.INVALID_REV_TODAY_FORMAT); - } - } - - private static void validateTotalFormat(String command) throws TrackerException { - if (command.equals(EXP_COMMAND)) { - throw new TrackerException(ErrorMessage.INVALID_EXP_TOTAL_FORMAT); - } else if (command.equals(REV_COMMAND)) { - throw new TrackerException(ErrorMessage.INVALID_REV_TOTAL_FORMAT); - } - } - - private static void validateDayFormat(String command) throws TrackerException { - if (command.equals(EXP_COMMAND)) { - throw new TrackerException(ErrorMessage.INVALID_EXP_DAY_FORMAT); - } else if (command.equals(REV_COMMAND)) { - throw new TrackerException(ErrorMessage.INVALID_REV_DAY_FORMAT); - } - } - - private static void validateRangeFormat(String command) throws TrackerException { - if (command.equals(EXP_COMMAND)) { - throw new TrackerException(ErrorMessage.INVALID_EXP_RANGE_FORMAT); - } else if (command.equals(REV_COMMAND)) { - throw new TrackerException(ErrorMessage.INVALID_REV_RANGE_FORMAT); - } - } - - private static void handleInvalidFormat(String command) throws TrackerException { - if (command.equals(EXP_COMMAND)) { - throw new TrackerException(ErrorMessage.INVALID_EXP_FORMAT); - } else if (command.equals(REV_COMMAND)) { - throw new TrackerException(ErrorMessage.INVALID_REV_FORMAT); - } - } } From 11908f3ab5bffb0bf4c78e33846eccb488b81ee3 Mon Sep 17 00:00:00 2001 From: rismm Date: Tue, 9 Apr 2024 22:36:51 +0800 Subject: [PATCH 262/423] Update file loading --- src/main/java/supertracker/storage/TransactionStorage.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/supertracker/storage/TransactionStorage.java b/src/main/java/supertracker/storage/TransactionStorage.java index 1daff3dde4..422be4a7ee 100644 --- a/src/main/java/supertracker/storage/TransactionStorage.java +++ b/src/main/java/supertracker/storage/TransactionStorage.java @@ -126,8 +126,8 @@ public static void loadTransactionData() throws IOException { Ui.printError(ErrorMessage.TRANSACTION_FILE_CORRUPTED_ERROR); if (hasDateAfterToday) { Ui.printIndent(ErrorMessage.TRANSACTION_DATE_LOAD_ERROR); - //saveAllTransactions(); } + saveAllTransactions(); } fileScanner.close(); } @@ -142,7 +142,7 @@ private static Transaction parseTransactionData(String transactionData) throws E if (!data[i].startsWith(PARAM_LABELS[i])) { throw new Exception(); } - data[i] = data[i].substring(data[i].indexOf(PARAM_LABELS[i])).trim(); + data[i] = data[i].substring(data[i].indexOf(" ")).trim(); } String name = data[NAME_INDEX]; From 9387a912e4a201c04f3206a73d1c286e220fc614 Mon Sep 17 00:00:00 2001 From: DavidTay Date: Tue, 9 Apr 2024 22:56:33 +0800 Subject: [PATCH 263/423] corrected incorrect handling of expenditure and revenue command --- src/main/java/supertracker/parser/Parser.java | 65 +++++++++---------- 1 file changed, 29 insertions(+), 36 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 8a0cb0b5d5..992e3b88e2 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -86,8 +86,6 @@ public class Parser { private static final String TOTAL = "total"; private static final String DAY = "day"; private static final String RANGE = "range"; - private static final String REV_COMMAND = "revenue"; - private static final String EXP_COMMAND = "expenditure"; // Do note that the file delimiter constant needs to follow the separator constant in the FileManager class private static final String FILE_DELIMITER = " ,,, "; @@ -750,16 +748,19 @@ private static Command parseExpenditureCommand(String input) throws TrackerExcep throw new TrackerException(ErrorMessage.INVALID_EXP_FORMAT); } - boolean hasStart = !matcher.group(FROM_GROUP).isEmpty(); - boolean hasEnd = !matcher.group(TO_GROUP).isEmpty(); + boolean hasFrom = !matcher.group(FROM_GROUP).isEmpty(); + boolean hasTo = !matcher.group(TO_GROUP).isEmpty(); String type = matcher.group(TYPE_GROUP).trim(); String fromString = matcher.group(FROM_GROUP).replace(FROM_FLAG + BASE_FLAG, "").trim(); String toString = matcher.group(TO_GROUP).replace(TO_FLAG + BASE_FLAG, "").trim(); - validateRevExpFormat(type, hasStart, hasEnd, EXP_COMMAND); - LocalDate to = validateDateForRevAndExp(toString); - LocalDate from = validateDateForRevAndExp(fromString); + boolean hasStartParam = !fromString.isEmpty(); + boolean hasEndParam = !toString.isEmpty(); + + validateRevExpFormat(type, hasFrom, hasTo, EXPENDITURE_COMMAND, hasStartParam, hasEndParam); + LocalDate to = parseDate(toString); + LocalDate from = parseDate(fromString); return new ExpenditureCommand(type, from, to); } @@ -780,29 +781,21 @@ private static Command parseRevenueCommand(String input) throws TrackerException String taskType = matcher.group(TYPE_GROUP).trim(); String startDateString = matcher.group(FROM_GROUP).replace(FROM_GROUP + BASE_FLAG, "").trim(); String endDateString = matcher.group(TO_GROUP).replace(TO_GROUP + BASE_FLAG, "").trim(); - validateRevExpFormat(taskType, hasStart, hasEnd, REV_COMMAND); - LocalDate startDate = validateDateForRevAndExp(startDateString); - LocalDate endDate = validateDateForRevAndExp(endDateString); + + boolean hasStartParam = !startDateString.isEmpty(); + boolean hasEndParam = !endDateString.isEmpty(); + + validateRevExpFormat(taskType, hasStart, hasEnd, REVENUE_COMMAND, hasStartParam, hasEndParam); + LocalDate startDate = parseDate(startDateString); + LocalDate endDate = parseDate(endDateString); return new RevenueCommand(taskType, startDate, endDate); } //@@author - private static LocalDate validateDateForRevAndExp(String startDateString) throws TrackerException { - LocalDate date; - try { - date = parseDate(startDateString); - } catch (TrackerException e) { - throw new TrackerException(ErrorMessage.INVALID_DATE_FORMAT); - } - if (date.equals(UNDEFINED_DATE)) { - throw new TrackerException(ErrorMessage.EMPTY_PARAM_INPUT); - } - return date; - } - //@@author vimalapugazhan - private static void validateRevExpFormat(String taskType, boolean hasStart, boolean hasEnd, String command) + private static void validateRevExpFormat(String taskType, boolean hasStart, boolean hasEnd, String command, + boolean hasStartParam, boolean hasEndParam) throws TrackerException { switch (taskType) { case TODAY: @@ -816,12 +809,12 @@ private static void validateRevExpFormat(String taskType, boolean hasStart, bool } break; case DAY: - if (!hasStart || hasEnd) { + if (!hasStart || hasEnd || !hasStartParam) { validateDayFormat(command); } break; case RANGE: - if (!hasStart || !hasEnd) { + if (!hasStart || !hasEnd || !hasStartParam || !hasEndParam) { validateRangeFormat(command); } break; @@ -832,41 +825,41 @@ private static void validateRevExpFormat(String taskType, boolean hasStart, bool } //@@author private static void validateTodayFormat(String command) throws TrackerException { - if (command.equals(EXP_COMMAND)) { + if (command.equals(EXPENDITURE_COMMAND)) { throw new TrackerException(ErrorMessage.INVALID_EXP_TODAY_FORMAT); - } else if (command.equals(REV_COMMAND)) { + } else if (command.equals(REVENUE_COMMAND)) { throw new TrackerException(ErrorMessage.INVALID_REV_TODAY_FORMAT); } } private static void validateTotalFormat(String command) throws TrackerException { - if (command.equals(EXP_COMMAND)) { + if (command.equals(EXPENDITURE_COMMAND)) { throw new TrackerException(ErrorMessage.INVALID_EXP_TOTAL_FORMAT); - } else if (command.equals(REV_COMMAND)) { + } else if (command.equals(REVENUE_COMMAND)) { throw new TrackerException(ErrorMessage.INVALID_REV_TOTAL_FORMAT); } } private static void validateDayFormat(String command) throws TrackerException { - if (command.equals(EXP_COMMAND)) { + if (command.equals(EXPENDITURE_COMMAND)) { throw new TrackerException(ErrorMessage.INVALID_EXP_DAY_FORMAT); - } else if (command.equals(REV_COMMAND)) { + } else if (command.equals(REVENUE_COMMAND)) { throw new TrackerException(ErrorMessage.INVALID_REV_DAY_FORMAT); } } private static void validateRangeFormat(String command) throws TrackerException { - if (command.equals(EXP_COMMAND)) { + if (command.equals(EXPENDITURE_COMMAND)) { throw new TrackerException(ErrorMessage.INVALID_EXP_RANGE_FORMAT); - } else if (command.equals(REV_COMMAND)) { + } else if (command.equals(REVENUE_COMMAND)) { throw new TrackerException(ErrorMessage.INVALID_REV_RANGE_FORMAT); } } private static void handleInvalidFormat(String command) throws TrackerException { - if (command.equals(EXP_COMMAND)) { + if (command.equals(EXPENDITURE_COMMAND)) { throw new TrackerException(ErrorMessage.INVALID_EXP_FORMAT); - } else if (command.equals(REV_COMMAND)) { + } else if (command.equals(REVENUE_COMMAND)) { throw new TrackerException(ErrorMessage.INVALID_REV_FORMAT); } } From b04d4c793f1dcf9b9759acbe39b49b593b17f99d Mon Sep 17 00:00:00 2001 From: TimothyLKM <> Date: Wed, 10 Apr 2024 00:03:37 +0800 Subject: [PATCH 264/423] Authortags --- src/main/java/supertracker/command/FindCommand.java | 1 + src/main/java/supertracker/command/HelpCommand.java | 1 + src/main/java/supertracker/parser/Parser.java | 2 ++ src/main/java/supertracker/ui/HelpCommandUi.java | 1 + 4 files changed, 5 insertions(+) diff --git a/src/main/java/supertracker/command/FindCommand.java b/src/main/java/supertracker/command/FindCommand.java index a5edbe9bcf..0a8a9f731f 100644 --- a/src/main/java/supertracker/command/FindCommand.java +++ b/src/main/java/supertracker/command/FindCommand.java @@ -6,6 +6,7 @@ import java.util.List; +//@@author TimothyLKM public class FindCommand implements Command { private String name; diff --git a/src/main/java/supertracker/command/HelpCommand.java b/src/main/java/supertracker/command/HelpCommand.java index abe6d59379..ca9c3cff28 100644 --- a/src/main/java/supertracker/command/HelpCommand.java +++ b/src/main/java/supertracker/command/HelpCommand.java @@ -5,6 +5,7 @@ import java.util.Scanner; +//@@author TimothyLKM public class HelpCommand implements Command { private static final String NEW_COMMAND = "new"; private static final String LIST_COMMAND = "list"; diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index a1de2d7842..e5e9f57381 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -653,6 +653,7 @@ private static Command parseRemoveCommand(String input) throws TrackerException return new RemoveCommand(name, quantity); } + //@@author TimothyLKM private static Command parseFindCommand(String input) throws TrackerException { String[] flags = {NAME_FLAG}; Matcher matcher = getPatternMatcher(FIND_COMMAND_REGEX, input, flags); @@ -667,6 +668,7 @@ private static Command parseFindCommand(String input) throws TrackerException { return new FindCommand(name); } + //@@author private static Command parseReportCommand(String input) throws TrackerException { String[] flags = {REPORT_TYPE_FLAG, THRESHOLD_FLAG}; diff --git a/src/main/java/supertracker/ui/HelpCommandUi.java b/src/main/java/supertracker/ui/HelpCommandUi.java index cf3ebad758..9d293c1159 100644 --- a/src/main/java/supertracker/ui/HelpCommandUi.java +++ b/src/main/java/supertracker/ui/HelpCommandUi.java @@ -1,5 +1,6 @@ package supertracker.ui; +//@@author TimothyLKM public class HelpCommandUi extends Ui { private static final String HELP_SUCCESS_MESSAGE_FIRST_LINE = "Hello! These are the list of commands that I can help you with:"; From 240ab63e0c74e8de7f525a03ddb91969c44ab3a0 Mon Sep 17 00:00:00 2001 From: rismm Date: Wed, 10 Apr 2024 00:25:52 +0800 Subject: [PATCH 265/423] Add PPP Edit UG for file saving --- docs/AboutUs.md | 2 +- docs/UserGuide.md | 14 +++++++++----- docs/team/rismm.md | 44 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 6 deletions(-) create mode 100644 docs/team/rismm.md diff --git a/docs/AboutUs.md b/docs/AboutUs.md index 981012e367..40286171b3 100644 --- a/docs/AboutUs.md +++ b/docs/AboutUs.md @@ -3,7 +3,7 @@ | Display | Name | Github Profile | Portfolio | |--------------------------|:----------------------------:|:-------------------------------------------:|:---------------------------------:| -| ![](team/vimal-face.jpg) | Sim Jing Jie Ryan | [Github](https://github.com/rismm) | [Portfolio](docs/team/johndoe.md) | +| ![](team/vimal-face.jpg) | Sim Jing Jie Ryan | [Github](https://github.com/rismm) | [Portfolio](docs/team/rismm.md) | | ![](team/vimal-face.jpg) | Sim Jun Hong | [Github](https://github.com/awesomesjh) | [Portfolio](docs/team/johndoe.md) | | ![](team/vimal-face.jpg) | Tay Wen Duan David | [Github](https://github.com/dtaywd) | [Portfolio](docs/team/johndoe.md) | | ![](team/vimal-face.jpg) | Timothy Lau | [Github](https://github.com/TimothyLKM) | [Portfolio](docs/team/johndoe.md) | diff --git a/docs/UserGuide.md b/docs/UserGuide.md index 4fe07fdfb4..af6a64cf65 100644 --- a/docs/UserGuide.md +++ b/docs/UserGuide.md @@ -398,8 +398,9 @@ Format: `quit` -------------------------------------------------------------------------------------------------------------------- ### Saving inventory data -Inventory data in the program is saved to the hard disk in the file path `./data/` in the same directory that -the `SuperTracker.jar` file is in. Data will be saved automatically after any command that changes the item data in the inventory. +Data in the program is saved to the hard disk in the file path `./data/` in the same directory that +the `SuperTracker.jar` file is in. Item data will be saved automatically after any command that changes the item data in the inventory. +Similarly, transaction data will be saved automatically after commands that add transaction data.
@@ -410,12 +411,15 @@ If there is no data file, the program will the skip loading process.
### Editing the data file -Inventory data of the `SuperTracker` program is stored in a text file `items.txt` in the path `./data/` relative to +Data of the `SuperTracker` program is stored in a text files in the path `./data/` relative to the directory the `SuperTracker.jar` file is in. Users can edit and update the inventory data directly through the data file -if they would like to do so. -> Note: Edit the data file at your own caution. If the changes made to the data file are in an invalid format, the program +if they would like to do so. Inventory data is stored in `items.txt`, and transaction data is stored in `transactions.txt`. +> Note 1: **Edit the data file at your own caution.** If the changes made to the data file are in an invalid format, the program > will ignore those changes on its next load. The corrupted changes will be erased, so do keep a backup of the data > file before editing. +> +> Note 2: Edited transaction data with dates that have not happened yet **will be treated as corrupted data**, so do avoid adding +> transactions that have not happened yet. -------------------------------------------------------------------------------------------------------------------- diff --git a/docs/team/rismm.md b/docs/team/rismm.md new file mode 100644 index 0000000000..a6d57a2574 --- /dev/null +++ b/docs/team/rismm.md @@ -0,0 +1,44 @@ +# Sim Jing Jie Ryan's Project Portfolio Page + +## Project: SuperTracker + +SuperTracker is a desktop app for managing a supermarket's inventory and expenditures, +optimized for use via a Command Line Interface (CLI). + +Given below are my contributions to the project. + +- **Feature:** Base functionality of the input parser + - Implemented the use of a regex format for matching user inputs. + - Justification: Streamlines the process of obtaining the user parameters and checking for valid/invalid inputs entered by the user. + The base implementation can be used to simplify the parsing of inputs for any future commands that are to be implemented in the future. + - Highlights: The implementation allows user to enter valid input parameters in any order they wish. This introduced greater complexity and challenge in + the implementation in creating a format and regex that can accomplish this feature. + + +- **Feature:** File saving and loading + - Justification: This feature enables the program to save item and transaction data that was entered in the program to a local hard disk, + and loads the saved data back into the program when the program is started up again. + - Highlights: Corrupting the save files with invalid formats would not crash the program, and corrupted lines will be ignored. + + +- **Feature:** Error handling + - Added base implementation of error handling and error output messages + - Justification: Error handling is important to ensure that the program does not crash unexpectedly. The format that I have implemented + is used widely to catch errors in user inputs. + + +- **Code contributed:** [RepoSense link](https://nus-cs2113-ay2324s2.github.io/tp-dashboard/?search=rismm&breakdown=true&sort=groupTitle%20dsc&sortWithin=title&since=2024-02-23&timeframe=commit&mergegroup=&groupSelect=groupByRepos&checkedFileTypes=docs~functional-code~test-code~other) + + +- **Documentation:** + - [User Guide:](https://ay2324s2-cs2113-t13-4.github.io/tp/UserGuide.html) + - Added documentation for the features of saving, loading and editing file data + - [Developer Guide:](https://ay2324s2-cs2113-t13-4.github.io/tp/DeveloperGuide.html) + - Added implementation details of input parsing (the use of regex) and storage (data file saving and loading) + - Used PlantUML to create the following UML class and sequence diagrams for input parsing and the storage implementation + + +- **Contributions to team-based tasks:** + - Teammate PRs reviewed: [#40](https://github.com/AY2324S2-CS2113-T13-4/tp/pull/40), [#70](https://github.com/AY2324S2-CS2113-T13-4/tp/pull/70), [#73](https://github.com/AY2324S2-CS2113-T13-4/tp/pull/73) + - Contributed to JUnit tests for parser and storage, also helped fix JUnit tests for the update command + - Helped detect bugs and provided suggestions to teammates on fixes/improvements that they can make From 3cdc26b078c90406cd190db571e3996cef9f86de Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 10 Apr 2024 00:57:49 +0800 Subject: [PATCH 266/423] Add clear command --- .../supertracker/command/ClearCommand.java | 50 +++++++++++++++++++ .../supertracker/item/TransactionList.java | 9 ++++ src/main/java/supertracker/parser/Parser.java | 29 ++++++++++- .../java/supertracker/ui/ErrorMessage.java | 3 +- src/main/java/supertracker/ui/Ui.java | 26 ++++++++++ 5 files changed, 114 insertions(+), 3 deletions(-) create mode 100644 src/main/java/supertracker/command/ClearCommand.java diff --git a/src/main/java/supertracker/command/ClearCommand.java b/src/main/java/supertracker/command/ClearCommand.java new file mode 100644 index 0000000000..bd9430aa67 --- /dev/null +++ b/src/main/java/supertracker/command/ClearCommand.java @@ -0,0 +1,50 @@ +package supertracker.command; + +import supertracker.item.Transaction; +import supertracker.item.TransactionList; +import supertracker.ui.Ui; + +import java.time.LocalDate; +import java.util.Iterator; +import java.util.Scanner; + +public class ClearCommand implements Command { + private static final String CLEAR_CONFIRM = "y"; + private LocalDate beforeDate; + + public ClearCommand(LocalDate beforeDate) { + this.beforeDate = beforeDate; + } + + @Override + public void execute() { + Ui.clearCommandConfirmation(beforeDate); + Scanner in = new Scanner(System.in); + String input = in.nextLine(); + Ui.printLine(); + + if (!input.equalsIgnoreCase(CLEAR_CONFIRM)) { + Ui.clearCommandCancelled(); + return; + } + + int oldTransactionListSize = TransactionList.size(); + + Iterator iterator = TransactionList.iterator(); + while (iterator.hasNext()) { + Transaction transaction = iterator.next(); + if (transaction.getTransactionDate().isBefore(beforeDate)) { + iterator.remove(); + } + } + + int newTransactionListSize = TransactionList.size(); + int transactionsCleared = oldTransactionListSize - newTransactionListSize; + Ui.clearCommandSuccess(transactionsCleared, beforeDate); + } + + @Override + public boolean isQuit() { + return false; + } +} diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index 5cbf3d195a..0ab5081f37 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -3,6 +3,7 @@ import java.math.BigDecimal; import java.time.LocalDate; import java.util.ArrayList; +import java.util.Iterator; public class TransactionList { private static final String TODAY = "today"; @@ -19,6 +20,14 @@ public static void add(Transaction transaction) { transactionList.add(transaction); } + public static int size() { + return transactionList.size(); + } + + public static Iterator iterator() { + return transactionList.iterator(); + } + //@@author vimalapugazhan public static BigDecimal calculateRange(LocalDate start, LocalDate end, String flag) { BigDecimal totalAmount = BigDecimal.ZERO; diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 35c0fe67cd..be6734fa01 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -4,6 +4,7 @@ import supertracker.command.AddCommand; import supertracker.command.BuyCommand; +import supertracker.command.ClearCommand; import supertracker.command.Command; import supertracker.command.DeleteCommand; import supertracker.command.FindCommand; @@ -48,6 +49,7 @@ public class Parser { private static final String REPORT_COMMAND = "report"; private static final String BUY_COMMAND = "buy"; private static final String SELL_COMMAND = "sell"; + private static final String CLEAR_COMMAND = "clear"; private static final String RENAME_COMMAND = "rename"; private static final String EXPENDITURE_COMMAND = "exp"; private static final String REVENUE_COMMAND = "rev"; @@ -58,11 +60,13 @@ public class Parser { private static final String QUANTITY_FLAG = "q"; private static final String PRICE_FLAG = "p"; private static final String EX_DATE_FLAG = "e"; + private static final String BEFORE_DATE_FLAG = "b"; private static final String NAME_GROUP = "name"; private static final String NEW_NAME_GROUP = "rename"; private static final String QUANTITY_GROUP = "quantity"; private static final String PRICE_GROUP = "price"; private static final String EX_DATE_GROUP = "expiry"; + private static final String BEFORE_DATE_GROUP = "before"; private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); private static final DateTimeFormatter EX_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); @@ -116,7 +120,6 @@ public class Parser { private static final String REMOVE_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; private static final String FIND_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) "; - private static final String REPORT_COMMAND_REGEX = REPORT_TYPE_FLAG + BASE_FLAG + "(?<" + REPORT_TYPE_GROUP + ">.*) " + "(?<" + THRESHOLD_GROUP + ">(?:" + THRESHOLD_FLAG + BASE_FLAG + ".*)?) "; private static final String BUY_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " @@ -124,6 +127,8 @@ public class Parser { + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) "; private static final String SELL_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) "; + private static final String CLEAR_COMMAND_REGEX = "(?<" + BEFORE_DATE_GROUP + ">(?:" + + BEFORE_DATE_FLAG + BASE_FLAG + ".*)?) "; private static final String EXP_COMMAND_REGEX = TYPE_FLAG + BASE_FLAG + "(?<" + TYPE_GROUP + ">.*) " + "(?<" + FROM_GROUP + ">(?:" + FROM_FLAG + BASE_FLAG + ".*)?) " + "(?<" + TO_GROUP + ">(?:" + TO_FLAG + BASE_FLAG + ".*)?) "; @@ -207,6 +212,9 @@ public static Command parseCommand(String input) throws TrackerException { case SELL_COMMAND: command = parseSellCommand(params); break; + case CLEAR_COMMAND: + command = parseClearCommand(params); + break; case RENAME_COMMAND: command = parseRenameCommand(params); break; @@ -378,7 +386,6 @@ private static LocalDate parseExpiryDateUpdate(String dateString) throws Tracker } //@@author - private static void validateItemExistsInInventory(String name, String errorMessage) throws TrackerException { if (!Inventory.contains(name)) { throw new TrackerException(name + errorMessage); @@ -832,6 +839,24 @@ private static Command parseSellCommand(String input) throws TrackerException { return new SellCommand(name, quantity, currentDate); } + private static Command parseClearCommand(String input) throws TrackerException { + String[] flags = {BEFORE_DATE_FLAG}; + Matcher matcher = getPatternMatcher(CLEAR_COMMAND_REGEX, input, flags); + + if (!matcher.matches()) { + throw new TrackerException(ErrorMessage.INVALID_CLEAR_FORMAT); + } + + String dateString = matcher.group(BEFORE_DATE_GROUP).replace(BEFORE_DATE_FLAG + BASE_FLAG, "").trim(); + LocalDate beforeDate = parseDate(dateString); + + if (beforeDate.isEqual(UNDEFINED_DATE)) { + beforeDate = LocalDate.now(); + } + + return new ClearCommand(beforeDate); + } + //@@author dtaywd private static Command parseExpenditureCommand(String input) throws TrackerException { String[] flags = {TYPE_FLAG, FROM_FLAG, TO_FLAG}; diff --git a/src/main/java/supertracker/ui/ErrorMessage.java b/src/main/java/supertracker/ui/ErrorMessage.java index 831b439946..ba5dfafa7d 100644 --- a/src/main/java/supertracker/ui/ErrorMessage.java +++ b/src/main/java/supertracker/ui/ErrorMessage.java @@ -11,6 +11,7 @@ public class ErrorMessage { public static final String INVALID_REMOVE_FORMAT = "Invalid remove command format!"; public static final String INVALID_BUY_FORMAT = "Invalid buy command format!"; public static final String INVALID_SELL_FORMAT = "Invalid sell command format!"; + public static final String INVALID_CLEAR_FORMAT = "Invalid clear command format!"; public static final String INVALID_REPORT_FORMAT = "Invalid report command format! " + "Follow 'report r/REPORT_TYPE [t/THRESHOLD_VALUE]'"; public static final String INVALID_EXP_FORMAT = "Invalid expenditure command format! " + @@ -41,7 +42,7 @@ public class ErrorMessage { public static final String INVALID_QUANTITY_FORMAT = "Invalid value for quantity"; public static final String INVALID_PRICE_FORMAT = "Invalid value for price"; public static final String INVALID_DATE_FORMAT = "Invalid date. Follow \"dd-mm-yyyy\" format"; - public static final String INVALID_DATE = "This date is cannot exist"; + public static final String INVALID_DATE = "This date cannot exist"; public static final String QUANTITY_TOO_SMALL = "Quantity should be more than or equal to 0"; public static final String PRICE_TOO_SMALL = "Price should be more than or equal to 0"; public static final String QUANTITY_TOO_LARGE = "Quantity should be less than or equal to 2147483647"; diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index be42915c92..e0e4b9eb80 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -28,6 +28,10 @@ public class Ui { private static final String REPORT_EXPIRED_NO_ITEMS_OPENING = "There are no items that are expired!"; private static final String REPORT_INVENTORY_NO_ITEMS = "There are no items in the inventory, " + "please consider adding some in!"; + private static final String CLEAR_CONFIRMATION_FIRST_LINE = "Are you sure you want to clear all transactions before "; + private static final String CLEAR_CONFIRMATION_SECOND_LINE = "Enter 'y' or 'Y' if you wish to proceed"; + private static final String CLEAR_CONFIRMATION_THIRD_LINE = "Enter anything else if you wish to cancel the clear operation"; + private static final String CLEAR_CANCELLED = "Clear operation has been cancelled"; private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); private static final DateTimeFormatter DATE_FORMAT_PRINT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); @@ -35,6 +39,7 @@ public class Ui { private static final String TOTAL = "total"; private static final String DAY = "day"; private static final String RANGE = "range"; + private static String getListSize(int size){ return ("There are " + size + " unique items in your inventory:"); } @@ -412,4 +417,25 @@ private static String padStringWithQuotes(String name, boolean hasComma) { String end = hasComma ? "\"," : "\""; return "\"" + name + end; } + + public static void clearCommandConfirmation(LocalDate beforeDate) { + printIndent(CLEAR_CONFIRMATION_FIRST_LINE + beforeDate.format(DATE_FORMAT_PRINT) + "?"); + printIndent(CLEAR_CONFIRMATION_SECOND_LINE); + printIndent(CLEAR_CONFIRMATION_THIRD_LINE); + printLine(); + } + + public static void clearCommandCancelled() { + printIndent(CLEAR_CANCELLED); + } + + public static void clearCommandSuccess(int transactionsCleared, LocalDate beforeDate) { + String dateString = beforeDate.format(DATE_FORMAT_PRINT); + if (transactionsCleared == 0) { + printIndent("Nothing cleared. No transactions before " + dateString + " available to clear"); + return; + } + String plural = transactionsCleared == 1 ? "" : "s"; + printIndent(transactionsCleared + " transaction" + plural + " before " + beforeDate.format(DATE_FORMAT_PRINT) + " successfully cleared!"); + } } From 41d2e694ea9dd6fa01ab6f5c312c864c7801223c Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 10 Apr 2024 01:22:46 +0800 Subject: [PATCH 267/423] Rearrange variables and fix checkstyle --- src/main/java/supertracker/parser/Parser.java | 18 +++++++++--------- src/main/java/supertracker/ui/Ui.java | 9 ++++++--- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/main/java/supertracker/parser/Parser.java b/src/main/java/supertracker/parser/Parser.java index 27ee2310dc..01a9571fd4 100644 --- a/src/main/java/supertracker/parser/Parser.java +++ b/src/main/java/supertracker/parser/Parser.java @@ -37,6 +37,10 @@ import java.time.LocalDate; public class Parser { + private static final DateTimeFormatter EX_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); + private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); + private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); + private static final double ROUNDING_FACTOR = 100.0; private static final String QUIT_COMMAND = "quit"; private static final String NEW_COMMAND = "new"; private static final String LIST_COMMAND = "list"; @@ -53,7 +57,6 @@ public class Parser { private static final String RENAME_COMMAND = "rename"; private static final String EXPENDITURE_COMMAND = "exp"; private static final String REVENUE_COMMAND = "rev"; - private static final double ROUNDING_FACTOR = 100.0; private static final String BASE_FLAG = "/"; private static final String NAME_FLAG = "n"; private static final String NEW_NAME_FLAG = "r"; @@ -61,19 +64,16 @@ public class Parser { private static final String PRICE_FLAG = "p"; private static final String EX_DATE_FLAG = "e"; private static final String BEFORE_DATE_FLAG = "b"; + private static final String SORT_QUANTITY_FLAG = "sq"; + private static final String SORT_PRICE_FLAG = "sp"; + private static final String SORT_EX_DATE_FLAG = "se"; + private static final String REVERSE_FLAG = "r"; private static final String NAME_GROUP = "name"; private static final String NEW_NAME_GROUP = "rename"; private static final String QUANTITY_GROUP = "quantity"; private static final String PRICE_GROUP = "price"; private static final String EX_DATE_GROUP = "expiry"; private static final String BEFORE_DATE_GROUP = "before"; - private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); - private static final LocalDate UNDEFINED_DATE = LocalDate.parse("01-01-99999", DATE_FORMAT_NULL); - private static final DateTimeFormatter EX_DATE_FORMAT = DateTimeFormatter.ofPattern("dd-MM-yyyy"); - private static final String SORT_QUANTITY_FLAG = "sq"; - private static final String SORT_PRICE_FLAG = "sp"; - private static final String SORT_EX_DATE_FLAG = "se"; - private static final String REVERSE_FLAG = "r"; private static final String SORT_QUANTITY_GROUP = "sortQuantity"; private static final String SORT_PRICE_GROUP = "sortPrice"; private static final String SORT_EX_DATE_GROUP = "sortExpiry"; @@ -96,7 +96,7 @@ public class Parser { // Do note that the file delimiter constant needs to follow the separator constant in the FileManager class private static final String FILE_DELIMITER = " ,,, "; - //To be used in getPatternMatcher to split the input into its respective parameter groups + // To be used in getPatternMatcher to split the input into its respective parameter groups private static final String NEW_COMMAND_REGEX = NAME_FLAG + BASE_FLAG + "(?<" + NAME_GROUP + ">.*) " + QUANTITY_FLAG + BASE_FLAG + "(?<" + QUANTITY_GROUP + ">.*) " + PRICE_FLAG + BASE_FLAG + "(?<" + PRICE_GROUP + ">.*) " diff --git a/src/main/java/supertracker/ui/Ui.java b/src/main/java/supertracker/ui/Ui.java index e0e4b9eb80..3d94db6ffe 100644 --- a/src/main/java/supertracker/ui/Ui.java +++ b/src/main/java/supertracker/ui/Ui.java @@ -28,9 +28,11 @@ public class Ui { private static final String REPORT_EXPIRED_NO_ITEMS_OPENING = "There are no items that are expired!"; private static final String REPORT_INVENTORY_NO_ITEMS = "There are no items in the inventory, " + "please consider adding some in!"; - private static final String CLEAR_CONFIRMATION_FIRST_LINE = "Are you sure you want to clear all transactions before "; + private static final String CLEAR_CONFIRMATION_FIRST_LINE = + "Are you sure you want to clear all transactions before "; private static final String CLEAR_CONFIRMATION_SECOND_LINE = "Enter 'y' or 'Y' if you wish to proceed"; - private static final String CLEAR_CONFIRMATION_THIRD_LINE = "Enter anything else if you wish to cancel the clear operation"; + private static final String CLEAR_CONFIRMATION_THIRD_LINE = + "Enter anything else if you wish to cancel the clear operation"; private static final String CLEAR_CANCELLED = "Clear operation has been cancelled"; private static final DateTimeFormatter DATE_FORMAT_NULL = DateTimeFormatter.ofPattern("dd-MM-yyyyy"); private static final DateTimeFormatter DATE_FORMAT_PRINT = DateTimeFormatter.ofPattern("dd/MM/yyyy"); @@ -436,6 +438,7 @@ public static void clearCommandSuccess(int transactionsCleared, LocalDate before return; } String plural = transactionsCleared == 1 ? "" : "s"; - printIndent(transactionsCleared + " transaction" + plural + " before " + beforeDate.format(DATE_FORMAT_PRINT) + " successfully cleared!"); + printIndent(transactionsCleared + " transaction" + plural + + " before " + dateString + " successfully cleared!"); } } From fd711647778be673784b5c806b9ddf5b91d0638f Mon Sep 17 00:00:00 2001 From: awesomesjh Date: Wed, 10 Apr 2024 02:16:30 +0800 Subject: [PATCH 268/423] Add tests for clear command --- .../java/supertracker/item/Transaction.java | 3 + .../supertracker/item/TransactionList.java | 8 +- .../storage/TransactionStorage.java | 2 +- .../command/ClearCommandTest.java | 108 ++++++++++++++++++ 4 files changed, 116 insertions(+), 5 deletions(-) create mode 100644 src/test/java/supertracker/command/ClearCommandTest.java diff --git a/src/main/java/supertracker/item/Transaction.java b/src/main/java/supertracker/item/Transaction.java index 2d922df6c0..114aca06b8 100644 --- a/src/main/java/supertracker/item/Transaction.java +++ b/src/main/java/supertracker/item/Transaction.java @@ -4,11 +4,14 @@ import java.time.LocalDate; public class Transaction extends Item { + private static final String BUY_FLAG = "b"; + private static final String SELL_FLAG = "s"; private String type; public Transaction(String name, int quantity, double price, LocalDate transactionDate, String type) { super(name, quantity, price, transactionDate); this.type = type; + assert type.equals(BUY_FLAG) || type.equals(SELL_FLAG); } public String getType() { diff --git a/src/main/java/supertracker/item/TransactionList.java b/src/main/java/supertracker/item/TransactionList.java index 9f38ba3d6b..8b55e5d784 100644 --- a/src/main/java/supertracker/item/TransactionList.java +++ b/src/main/java/supertracker/item/TransactionList.java @@ -16,10 +16,6 @@ public static Transaction get(int index) { return transactionList.get(index); } - public static int getLength() { - return transactionList.size(); - } - public static void add(Transaction transaction) { transactionList.add(transaction); } @@ -28,6 +24,10 @@ public static int size() { return transactionList.size(); } + public static void clear() { + transactionList.clear(); + } + public static Iterator iterator() { return transactionList.iterator(); } diff --git a/src/main/java/supertracker/storage/TransactionStorage.java b/src/main/java/supertracker/storage/TransactionStorage.java index 422be4a7ee..bd0b8325a9 100644 --- a/src/main/java/supertracker/storage/TransactionStorage.java +++ b/src/main/java/supertracker/storage/TransactionStorage.java @@ -62,7 +62,7 @@ private static void saveAllTransactions() throws IOException { BufferedWriter writer = new BufferedWriter(fw); assert saveFile.exists(); - int transactionSize = TransactionList.getLength(); + int transactionSize = TransactionList.size(); for (int i = 0; i < transactionSize; i++) { String transactionData = getTransactionData(TransactionList.get(i)); writer.write(transactionData); diff --git a/src/test/java/supertracker/command/ClearCommandTest.java b/src/test/java/supertracker/command/ClearCommandTest.java new file mode 100644 index 0000000000..b52a3d3e27 --- /dev/null +++ b/src/test/java/supertracker/command/ClearCommandTest.java @@ -0,0 +1,108 @@ +package supertracker.command; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import supertracker.TrackerException; +import supertracker.item.Transaction; +import supertracker.item.TransactionList; +import supertracker.parser.Parser; + +import java.io.ByteArrayInputStream; +import java.io.InputStream; +import java.time.LocalDate; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; + +public class ClearCommandTest { + private static final String BUY_FLAG = "b"; + private static final String SELL_FLAG = "s"; + private final InputStream sysInBackup = System.in; + private ByteArrayInputStream in; + + @BeforeEach + public void setUp() { + TransactionList.clear(); + Transaction[] transactions = { + new Transaction("Apple", 1, 1.00, LocalDate.parse("2024-01-01"), BUY_FLAG), + new Transaction("Banana", 2, 2.00, LocalDate.parse("2023-01-01"), SELL_FLAG), + new Transaction("Cake", 3, 3.00, LocalDate.parse("2022-01-01"), BUY_FLAG), + new Transaction("Egg", 4, 4.00, LocalDate.parse("2021-01-01"), SELL_FLAG), + new Transaction("Milk", 5, 5.00, LocalDate.parse("2020-01-01"), BUY_FLAG), + }; + for (Transaction transaction : transactions) { + TransactionList.add(transaction); + } + System.setIn(sysInBackup); + } + + @Test + public void clearCommand_validData_correctlyConstructed(){ + String input = "Y"; + in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + LocalDate beforeDate = LocalDate.parse("2024-01-01"); + + Command clearCommand = new ClearCommand(beforeDate); + clearCommand.execute(); + + assertEquals(1, TransactionList.size()); + assertEquals("Apple", TransactionList.get(0).getName()); + } + + @Test + public void clearCommand_validData_clearAll(){ + String input = "y"; + in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + LocalDate beforeDate = LocalDate.parse("2024-02-02"); + + Command clearCommand = new ClearCommand(beforeDate); + clearCommand.execute(); + + assertEquals(0, TransactionList.size()); + } + + @Test + public void clearCommand_validData_clearNone(){ + String input = "y"; + in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + LocalDate beforeDate = LocalDate.parse("1999-01-01"); + + Command clearCommand = new ClearCommand(beforeDate); + clearCommand.execute(); + + assertEquals(5, TransactionList.size()); + assertEquals("Milk", TransactionList.get(4).getName()); + } + + @Test + public void clearCommand_inValidConfirmation(){ + String input = " y "; + in = new ByteArrayInputStream(input.getBytes()); + System.setIn(in); + + LocalDate beforeDate = LocalDate.parse("2024-01-01"); + + Command clearCommand = new ClearCommand(beforeDate); + clearCommand.execute(); + + assertEquals(5, TransactionList.size()); + assertEquals("Milk", TransactionList.get(4).getName()); + } + + @Test + public void clearCommand_invalidDate(){ + String userInput = "clear b/29-02-2023"; + assertThrows(TrackerException.class, () -> Parser.parseCommand(userInput)); + } + + @AfterEach void tearDown() { + System.setIn(sysInBackup); + } +} From ebd09664058cff9483b9b201fd7ae76efa6d2d32 Mon Sep 17 00:00:00 2001 From: rismm Date: Wed, 10 Apr 2024 02:21:03 +0800 Subject: [PATCH 269/423] Update UG --- docs/DeveloperGuide.md | 66 ++++++++++++++---- docs/uml-diagrams/FileManager.puml | 25 ++++--- docs/uml-diagrams/ItemStorage.puml | 60 ++++++++++++++++ docs/uml-diagrams/ItemStorageClass.png | Bin 0 -> 33072 bytes docs/uml-diagrams/Parser.puml | 7 +- docs/uml-diagrams/ParserClass.png | Bin 18918 -> 18851 bytes docs/uml-diagrams/ParserSequence.png | Bin 20106 -> 19758 bytes docs/uml-diagrams/TransactionStorage.puml | 65 +++++++++++++++++ docs/uml-diagrams/TransactionStorageClass.png | Bin 0 -> 41908 bytes 9 files changed, 195 insertions(+), 28 deletions(-) create mode 100644 docs/uml-diagrams/ItemStorage.puml create mode 100644 docs/uml-diagrams/ItemStorageClass.png create mode 100644 docs/uml-diagrams/TransactionStorage.puml create mode 100644 docs/uml-diagrams/TransactionStorageClass.png diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 69ed335662..27d3dd0d78 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -65,22 +65,27 @@ This will be used by each command's respective parsing method and returns the re object to `SuperTracker+handleCommands()` ### File Saving and Loading -Saving and loading data of `Item` objects is performed by the `FileManager` class. As the program is running, -`Item` objects will be stored in the `Inventory` class. The following is a class diagram of `FileManager` -and its relevant dependencies\ -![FileManagerClass](./uml-diagrams/FileManagerClass.png) +Currently, the program handles 2 classes of save data, `Item` and `Transaction`. +Saving and loading data of these objects is performed by the `ItemStorage` and `TransactionStorage` classes that inherit +from the `FileManager` class. As the program is running, `Item` objects will be stored in the `Inventory` class, +while `Transaction` objects will be stored in the `TransactionList` class. + +#### Item objects +The following is a class diagram of `ItemStorage` and its relevant dependencies\ +![ItemStorage](./uml-diagrams/ItemStorageClass.png) Take note that the `Command` class in the diagram refers to the classes that implement the `Command` interface and make changes to the item list in `Inventory` -#### Saving -Saving is performed automatically each time the item list is updated. Currently, there are only 5 commands that can make changes to -the item list and will call `FileManager+saveData()` at the end of `Command+execute()`. -> Commands that call `FileManager+saveData()` in `execute()`: +##### **Saving** +Saving is performed automatically each time the item list is updated. Currently, there are only 6 commands that can make changes to +the item list and will call `ItemStorage+saveData()` at the end of `CommandClass+execute()`. +> Commands that call `ItemStorage+saveData()` in `execute()`: > - `NewCommand` > - `UpdateCommand` > - `DeleteCommand` > - `AddCommand` > - `RemoveCommand` +> - `RenameCommand` Item data is saved into a text file in `./data/items.txt` by generating a string for each `Item` in the list, containing the attributes of the `item`. The string generated will have the attributes in the format and order of `NAME,QUANTITY,PRICE,EXPIRY_DATE`. Since an `Item`'s expiry date is @@ -90,17 +95,52 @@ optional, `EXPIRY_DATE` can be the string `"no date"` if the expiry date is dete > The program generates the string `"Apple ,,, 5 ,,, 2.50 ,,, 19-04-2024 ,,, end"` with `end` signifying the end of the data string.\ > Do note that the `end` is only a placeholder and can be any string of characters. -This string is generated by the method `FileManager-getItemData()` +This string is generated by the method `ItemStorage-getItemData()` -#### Loading -Loading is performed at the start of the program in `SuperTracker-run()` where it calls the method `FileManager+loadData()`. -`loadData()` looks for the save text file at `./data/items.txt` and reads the lines from the file `items.txt` exists. As indicated earlier, +##### **Loading** +Loading is performed at the start of the program in `SuperTracker-run()` where it calls the method `ItemStorage+loadData()`. +`loadData()` looks for the save text file at `./data/items.txt` and reads the lines from the file `items.txt` if it exists. As indicated earlier, each line containing a single `Item`'s data will be in the format and order of `NAME,QUANTITY,PRICE,EXPIRY_DATE`. Each attribute will be parsed into its relevant data type, creating a new `Item` with the extracted attributes, which is then added to the item list in `Inventory`. In the event where the line of data read is not in the correct format, or the attributes are unable to be parsed into its relevant data type _(i.e. the string in the QUANTITY part reads "f1ve" instead of "5")_, the line will be ignored and a new `Item` will not be added to the list. The corrupted lines of data will also be erased from the save file. -The parsing of string data to an `Item` object is handled by the method `FileManager-parseItemData()`. +The parsing of string data to an `Item` object is handled by the method `ItemStorage-parseItemData()`. + +#### Transaction objects +The following is a class diagram of `TransactionStorage` and its relevant dependencies\ +![TransactionStorage](uml-diagrams/TransactionStorageClass.png) + +Take note that the `Command` class in the diagram refers to the classes that implement the `Command` interface and add transactions to list in `TransactionList` + +The saving and loading is largely similar to that of Item objects detailed above. + +##### **Saving** +Currently, there are only 2 commands that can make changes to +the item list and will call `TransactionStorage+saveTransaction()` at the end of `CommandClass+execute()`. +> Commands that call `TransactionStorage+saveTransaction()` in `execute()`: +> - `BuyCommand` +> - `SellCommand` + +Transaction data is saved into a text file in `./data/transactions.txt` by generating a string the newly added `Transaction` in the list, containing the attributes of the `Transaction`. +The string generated will have the attributes in the format and order of `NAME,QUANTITY,PRICE,TRANSACTION_DATE,TYPE`. This string will be appended to end the of the data file as mentioned. +If the data file does not exist while the program calls `TransactionStorage+saveTransaction()`, the data file will be recreated and all transaction data +currently in the program will be re-saved using string format above in the method `TransactionStorage-saveAllTransactions()`. +> For example, suppose the program wants to save the `Transaction` with attributes `name = "Apple"`, `quantity = 5`, `price = 2.50`, `transactionDate = 19-04-2024, type = "s"` +> and the program uses `" ,,, "` to indicate separation between groups.\ +> The program generates the string `"NAME: Apple ,,, QTY: 5 ,,, PRICE: 2.50 ,,, DATE: 19-04-2024 ,,, T: s ,,, end"` with `end` signifying the end of the data string.\ +> Do note that the `end` is only a placeholder and can be any string of characters. +> > To justify why the saved string format is different from `Item` objects, the save file of `Transactions` can also act as a receipt of the user's expenses by making it much more readable. + +The string is generated by the method `TransactionStorage-getTransactionData()` + +##### **Loading** +`SuperTracker.run()` calls `TransactionStorage+loadTransactionData()` at the beginning of the program. +`loadTransactionData` looks for the save file `./data/transactions.txt` and reads the lines from `transactions.txt` if it exists. The attributes +of a `Transaction` is extracted from the line and a new `Transaction` object is created and put in the `TransactionList` class. Similar to loading `Item` data, +corrupted `Transaction` data will be dealt with accordingly. +> Note: Including the criteria for corrupted data in `Item` data, if a transaction date has been edited such that the new date is of a date that has not occurred yet, +> _(e.g. changing a date from today to 1 year from today)_, this will also be treated as corrupted 'Transaction' data. ### New Command The following is a class diagram of the NewCommand and its relevant dependencies
diff --git a/docs/uml-diagrams/FileManager.puml b/docs/uml-diagrams/FileManager.puml index 701de80cdc..5239cbb6b1 100644 --- a/docs/uml-diagrams/FileManager.puml +++ b/docs/uml-diagrams/FileManager.puml @@ -8,19 +8,24 @@ class FileManager class Inventory class Item class Command - -FileManager <.. SuperTracker -Inventory <.. FileManager -Item <. FileManager +class TransactionStorage +class ItemStorage +class Transaction +class TransactionList + +FileManager <|-- ItemStorage +FileManager <|-- TransactionStorage +Inventory <.. ItemStorage +Item <. ItemStorage Item "*" <-* Inventory +Item <|-- Transaction +Transaction "*" <-* TransactionList FileManager <.. Command -Inventory <.. Command class FileManager { - {static}+saveData():void - {static}+loadData():void - {static}-getItemData(item:Item):String - {static}-parseItemData(data:String):Item + {static}#DATA_PATH:String + {static}#checkDataDirectory():void + {static}#getNameQtyPriceStrings(item:Item):String[] } class SuperTracker { @@ -41,8 +46,6 @@ class Item { -quantity:int -price:double -expiryDate:LocalDate - +Item(name:String, quantity:int, - price:double, expiryDate:LocalDate) +getName():String } diff --git a/docs/uml-diagrams/ItemStorage.puml b/docs/uml-diagrams/ItemStorage.puml new file mode 100644 index 0000000000..e7476905ce --- /dev/null +++ b/docs/uml-diagrams/ItemStorage.puml @@ -0,0 +1,60 @@ +@startuml + +skinparam classAttributeIconSize 0 +skinparam CircledCharacterFontSize 0 +skinparam CircledCharacterRadius 0 + +class SuperTracker +class FileManager +class Inventory +class Item +class CommandClass +class ItemStorage + +FileManager <|--- ItemStorage +Inventory <.. ItemStorage +Item <.. ItemStorage +Item "*" <--* Inventory +ItemStorage <.. CommandClass +ItemStorage <. SuperTracker + +class FileManager { + {static}#DATA_PATH:String + {static}#checkDataDirectory():void + {static}#getNameQtyPriceStrings(item:Item):String[] +} + +class ItemStorage { + {static}+saveData():void + {static}+loadData():void + {static}-getItemData(item:Item):String + {static}-parseItemData(data:String):Item +} + +class SuperTracker { + {static}-run():void +} + +class CommandClass { + +execute():void +} + +class Inventory { + {static}+getItems():List + {static}+put(name:String, item:Item):void +} + +class Item { + -name:String + -quantity:int + -price:double + -expiryDate:LocalDate + +getName():String +} + +note right of CommandClass + CommandClass refers to the classes + that implement the Command interface +endnote + +@enduml \ No newline at end of file diff --git a/docs/uml-diagrams/ItemStorageClass.png b/docs/uml-diagrams/ItemStorageClass.png new file mode 100644 index 0000000000000000000000000000000000000000..b12aef45f05448a23f8d3aaf80fcf95c0c7c7734 GIT binary patch literal 33072 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

4SkC1V5WpKT9*idU@?u>Pw>JKdF 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 From 5dcb0b52b7480bf10fa3471027d27732f6d3f10f Mon Sep 17 00:00:00 2001 From: DavidTay Date: Mon, 25 Mar 2024 23:03:38 +0800 Subject: [PATCH 089/423] Update NewCommand sequence diagram --- docs/uml-diagrams/NewCommand.puml | 2 +- docs/uml-diagrams/NewCommandSequence.png | Bin 17689 -> 29742 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/uml-diagrams/NewCommand.puml b/docs/uml-diagrams/NewCommand.puml index 55ee1140af..fb7580e8bd 100644 --- a/docs/uml-diagrams/NewCommand.puml +++ b/docs/uml-diagrams/NewCommand.puml @@ -58,7 +58,7 @@ participant ":Item" as Item #fbffb2 SuperTracker -> NewCommand : execute() activate NewCommand #cbf7f4 -NewCommand -> Item ** : new Item(name:String, quantity:int, price:double) +NewCommand -> Item ** : new Item(name:String, quantity:int, price:double, expiryDate:LocalDate) activate Item #fbffb2 Item --> NewCommand : :Item deactivate Item diff --git a/docs/uml-diagrams/NewCommandSequence.png b/docs/uml-diagrams/NewCommandSequence.png index dab7860a81acfeaf377269d755ec7f1363e22488..e8d01e4958651c00e2b07b2c068f2b224a205471 100644 GIT binary patch literal 29742 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