From fb3bb5c24e6f5ce4b0f21e93ce93129d4795266d Mon Sep 17 00:00:00 2001 From: EugeneChanJiajun Date: Sun, 17 Mar 2024 13:58:01 +0800 Subject: [PATCH 1/4] Add parser class along with exceptions --- src/main/java/seedu/duke/Duke.java | 81 ++++++++++++------- src/main/java/seedu/duke/OmniException.java | 7 ++ src/main/java/seedu/duke/Parser.java | 37 +++++++++ .../java/seedu/duke/TravelActivityList.java | 2 +- src/main/java/seedu/duke/Ui.java | 6 +- 5 files changed, 102 insertions(+), 31 deletions(-) create mode 100644 src/main/java/seedu/duke/OmniException.java create mode 100644 src/main/java/seedu/duke/Parser.java diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index a986059afb..ce2af00477 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -6,45 +6,68 @@ public class Duke { private Ui ui = new Ui(); public static void main(String[] args) { - new Duke().runBot(); boolean userSaysBye = false; - TravelActivityList travelActivityList = new TravelActivityList(); + TravelActivityList list = new TravelActivityList(); String line; Scanner in = new Scanner(System.in); while (!userSaysBye) { line = in.nextLine(); - if (line.equals("list")) { - // Prints the all the tasks in the list - System.out.println("Here are the travel activities in your list:"); - travelActivityList.listTravelActivities(); - } else if (line.startsWith("add")){ - // Adds a travel activity into the list - String[] sentence = line.split(" "); - // Checks if the description of the task is empty - TravelActivity newTask = new TravelActivity(sentence[1]); - travelActivityList.addTravelActivity(newTask); - System.out.println("I added a new travel activity"); - System.out.println(newTask); - - } else if(line.startsWith("delete")){ - // Deletes the task in the list - String[] sentence = line.split(" "); - // Checks if the description of the task is empty or non-numerical - - int taskNumber = Integer.parseInt(sentence[1]); - travelActivityList.removeTravelActivity(taskNumber); - } else if(line.startsWith("find")) { - String[] taskName = line.split(" "); - travelActivityList.searchTask(taskName[1]); - } - else if(line.startsWith("bye")){ + String[] command = line.split(" "); + + switch (command[0].toLowerCase()) { + case "list": + Ui.printLine(); + Parser.getList(list); + Ui.printLine(); + break; + case "add": + try { + Ui.printLine(); + Parser.addCommand(line, command, list); + Ui.printLine(); + } + catch (OmniException exception){ + Ui.printLine(); + System.out.println("Warning! " + exception.getMessage()); + } + break; + case "delete": + try { + Ui.printLine(); + Parser.deleteCommand(command, list); + Ui.printLine(); + } + catch (OmniException exception){ + Ui.printLine(); + System.out.println("Warning! " + exception.getMessage()); + } + break; + case "find": + try { + Ui.printLine(); + Parser.findCommand(command, list); + Ui.printLine(); + } + catch (OmniException exception){ + Ui.printLine(); + System.out.println("Warning! " + exception.getMessage()); + } + break; + case "bye": + Ui.printLine(); + System.out.println("Hope to see you again soon. Bye!"); + Ui.printLine(); userSaysBye = true; - } + break; + default: + Ui.printLine(); + System.out.println("This is not a valid command"); + Ui.printLine(); + } } } - public void runBot(){ ui.printGreeting(); } diff --git a/src/main/java/seedu/duke/OmniException.java b/src/main/java/seedu/duke/OmniException.java new file mode 100644 index 0000000000..1e6f034193 --- /dev/null +++ b/src/main/java/seedu/duke/OmniException.java @@ -0,0 +1,7 @@ +package seedu.duke; + +public class OmniException extends Exception { + public OmniException(String errorMessage){ + super(errorMessage); + } +} diff --git a/src/main/java/seedu/duke/Parser.java b/src/main/java/seedu/duke/Parser.java new file mode 100644 index 0000000000..e242ebe171 --- /dev/null +++ b/src/main/java/seedu/duke/Parser.java @@ -0,0 +1,37 @@ +package seedu.duke; + +public class Parser { + public static void getList(TravelActivityList list){ + System.out.println("Here are the travel activities in your list:"); + list.listTravelActivities(); + } + + public static void addCommand(String line, String[] command, TravelActivityList list) throws OmniException{ + if (command.length >= 2) { + TravelActivity newActivity = new TravelActivity(line.substring(4)); + list.addTravelActivity(newActivity); + System.out.println("I added a new travel activity"); + System.out.println(newActivity); + } else { + throw new OmniException("The description of add cannot be empty!"); + } + } + + public static void deleteCommand(String[] command, TravelActivityList list) throws OmniException { + if (command.length == 2){ + int listNumber = Integer.parseInt(command[1]); + list.removeTravelActivity(listNumber); + } else { + throw new OmniException("Please specify which task to delete"); + } + } + + public static void findCommand(String[] command, TravelActivityList list) throws OmniException{ + if (command.length == 2) { + String keyword = command[1]; + list.searchKeyword(keyword); + } else { + throw new OmniException("Please specify which keyword you want to find!"); + } + } +} diff --git a/src/main/java/seedu/duke/TravelActivityList.java b/src/main/java/seedu/duke/TravelActivityList.java index 8cc96a9a8a..8ff0929eb4 100644 --- a/src/main/java/seedu/duke/TravelActivityList.java +++ b/src/main/java/seedu/duke/TravelActivityList.java @@ -66,7 +66,7 @@ public String getDescription(String plan){ return "cant be found"; } - public void searchTask (String taskName) { + public void searchKeyword (String taskName) { ArrayList temporaryArray = new ArrayList();; int temporaryArrayCounter = 0; boolean isFound = false; diff --git a/src/main/java/seedu/duke/Ui.java b/src/main/java/seedu/duke/Ui.java index 6920a08409..beb18ef17b 100644 --- a/src/main/java/seedu/duke/Ui.java +++ b/src/main/java/seedu/duke/Ui.java @@ -10,6 +10,7 @@ public class Ui { * Prints the greetings */ public void printGreeting() { + printLine(); System.out.println(" ____ _ _ _ _____ ____ ____ _ _____ _ \n" + "/ _ \\/ \\__/|/ \\ /|/ \\/__ __\\/ __\\/ _ \\/ \\ |\\/ __// \\ \n" + "| / \\|| |\\/||| |\\ ||| | / \\ | \\/|| / \\|| | //| \\ | | \n" + @@ -17,17 +18,20 @@ public void printGreeting() { "\\____/\\_/ \\|\\_/ \\|\\_/ \\_/ \\_/\\_\\\\_/ \\|\\__/ \\____\\\\____/)"); System.out.println("Hello"); System.out.println("How may I assist you?"); + printLine(); } /** * Prints the farewell greetings */ public void printBye(){ + printLine(); System.out.println("Thank you for using Omnitravel"); System.out.println("We hope to see you again! Goodbye!"); + printLine(); } - public void printLine(){ + public static void printLine(){ System.out.println("____________________________________________________________"); } From 36c057ccf47614b4f7e51d6a8caad195bfc09f71 Mon Sep 17 00:00:00 2001 From: EugeneChanJiajun Date: Sun, 17 Mar 2024 14:21:12 +0800 Subject: [PATCH 2/4] fix expected output --- text-ui-test/EXPECTED.TXT | 18 +++++++++--------- text-ui-test/input.txt | 1 - 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 892cb6cae7..36d1f288e6 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,9 +1,9 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| - -What is your name? -Hello James Gosling +____________________________________________________________ + ____ _ _ _ _____ ____ ____ _ _____ _ +/ _ \/ \__/|/ \ /|/ \/__ __\/ __\/ _ \/ \ |\/ __// \ +| / \|| |\/||| |\ ||| | / \ | \/|| / \|| | //| \ | | +| \_/|| | ||| | \||| | | | | /| |-||| \// | /_ | |_/\ +\____/\_/ \|\_/ \|\_/ \_/ \_/\_\\_/ \|\__/ \____\\____/) +Hello +How may I assist you? +____________________________________________________________ diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index f6ec2e9f95..e69de29bb2 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -1 +0,0 @@ -James Gosling \ No newline at end of file From cfdfe3aed6f980ab9b4babbe990151e70b4bb013 Mon Sep 17 00:00:00 2001 From: EugeneChanJiajun Date: Sun, 17 Mar 2024 14:38:49 +0800 Subject: [PATCH 3/4] Update test --- text-ui-test/runtest.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text-ui-test/runtest.sh b/text-ui-test/runtest.sh index 1dcbd12021..6eb4eb49d6 100755 --- a/text-ui-test/runtest.sh +++ b/text-ui-test/runtest.sh @@ -10,8 +10,8 @@ cd text-ui-test java -jar $(find ../build/libs/ -mindepth 1 -print -quit) < input.txt > ACTUAL.TXT -cp EXPECTED.TXT EXPECTED-UNIX.TXT -dos2unix EXPECTED-UNIX.TXT ACTUAL.TXT +#cp EXPECTED.TXT EXPECTED-UNIX.TXT +#dos2unix EXPECTED-UNIX.TXT ACTUAL.TXT diff EXPECTED-UNIX.TXT ACTUAL.TXT if [ $? -eq 0 ] then From 64e372d6c0dabdf552941aa3ff22c516704215cb Mon Sep 17 00:00:00 2001 From: EugeneChanJiajun Date: Sun, 17 Mar 2024 14:44:14 +0800 Subject: [PATCH 4/4] Update test --- text-ui-test/runtest.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text-ui-test/runtest.sh b/text-ui-test/runtest.sh index 6eb4eb49d6..c1eea6db84 100755 --- a/text-ui-test/runtest.sh +++ b/text-ui-test/runtest.sh @@ -12,7 +12,7 @@ java -jar $(find ../build/libs/ -mindepth 1 -print -quit) < input.txt > ACTUAL. #cp EXPECTED.TXT EXPECTED-UNIX.TXT #dos2unix EXPECTED-UNIX.TXT ACTUAL.TXT -diff EXPECTED-UNIX.TXT ACTUAL.TXT +diff EXPECTED.TXT ACTUAL.TXT if [ $? -eq 0 ] then echo "Test passed!"