From 5d02bfc01219e20d04e2470a752da2fd93290e86 Mon Sep 17 00:00:00 2001 From: ChenKangg Date: Wed, 20 Mar 2024 11:54:13 +0800 Subject: [PATCH 1/2] Add tag and untag function --- src/main/java/seedu/duke/Duke.java | 13 +++++++ src/main/java/seedu/duke/Parser.java | 36 +++++++++++++++++++ src/main/java/seedu/duke/TravelActivity.java | 19 ++++++++++ .../java/seedu/duke/TravelActivityList.java | 33 ++++++++++++++++- 4 files changed, 100 insertions(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/Duke.java b/src/main/java/seedu/duke/Duke.java index efe43dfedd..7f1eee2685 100644 --- a/src/main/java/seedu/duke/Duke.java +++ b/src/main/java/seedu/duke/Duke.java @@ -53,6 +53,19 @@ public static void main(String[] args) { Ui.printLine(); break; + case "tag": + Ui.printLine(); + Parser.tagCommand(command, list); + Ui.printLine(); + break; + + case "untag": + Ui.printLine(); + Parser.removeTagCommand(command, list); + Ui.printLine(); + break; + + case "help": Ui.printLine(); Ui.helpCommand(); diff --git a/src/main/java/seedu/duke/Parser.java b/src/main/java/seedu/duke/Parser.java index 847354e4e1..a967c011d1 100644 --- a/src/main/java/seedu/duke/Parser.java +++ b/src/main/java/seedu/duke/Parser.java @@ -109,4 +109,40 @@ public static void uncheckCommand(String[] command, TravelActivityList list) thr throw new OmniException("Please specify which task to uncheck"); } } + + /** + * Handles the case where the tag command is given as input + * + * @param command Command array of input string without spaces + * @param list List of travel activities + * @throws OmniException if command.length == 2 + * @throws OmniException if command.length == 1 + */ + public static void tagCommand(String[] command, TravelActivityList list) throws OmniException { + if (command.length == 3 && isNumeric(command[1])){ + int listNumber = Integer.parseInt(command[1]); + String tag = command[2]; + list.tagActivity(listNumber, tag); + } else if (command.length == 2) { + throw new OmniException("Please specify a tag name"); + } else { + throw new OmniException("Please specify which task to tag"); + } + } + + /** + * Handles the case where the untag command is given as input + * + * @param command Command array of input string without spaces + * @param list List of travel activities + * @throws OmniException if command.length != 2 && command[1] is not numeric + */ + public static void removeTagCommand(String[] command, TravelActivityList list) throws OmniException { + if (command.length == 2 && isNumeric(command[1])) { + int listNumber = Integer.parseInt(command[1]); + list.removeTag(listNumber); + } else { + throw new OmniException("Please specify which task to remove tag"); + } + } } diff --git a/src/main/java/seedu/duke/TravelActivity.java b/src/main/java/seedu/duke/TravelActivity.java index d5a31419b7..025cee4a69 100644 --- a/src/main/java/seedu/duke/TravelActivity.java +++ b/src/main/java/seedu/duke/TravelActivity.java @@ -5,6 +5,9 @@ public class TravelActivity { private String travelActivity; /** Travel activity status */ private boolean taskIsDone = false; + /** Travel activity tag */ + private String tag; + public TravelActivity(String line){ travelActivity = line; } @@ -32,4 +35,20 @@ public String getPlan(){ public boolean getTaskStatus() {return taskIsDone;} + /** + * Gets the tag of the travel activity + * @return The tag of the travel activity + */ + public String getTag() { + return tag; + } + + public void setTag(String tag) { + this.tag = tag; + } + + public void removeTag() { + this.tag = ""; + } + } diff --git a/src/main/java/seedu/duke/TravelActivityList.java b/src/main/java/seedu/duke/TravelActivityList.java index d41f111240..20fa136c8b 100644 --- a/src/main/java/seedu/duke/TravelActivityList.java +++ b/src/main/java/seedu/duke/TravelActivityList.java @@ -130,5 +130,36 @@ public void uncheckTravelActivity(int taskNumber) throws OmniException{ System.out.println(markedTask); } + /** + * Adds a tag to travel activity + * @param taskNumber The travel activity number on the list + * @param tag The tag of travel activity + */ + public void tagActivity(int taskNumber, String tag) throws OmniException{ + assert taskNumber != 0 : "There is no tasks in the list"; + if (taskNumber > travelActivities.size()) { + throw new OmniException("Travel activity cannot be found"); + } + int indexOfTask = taskNumber - 1; + TravelActivity taggedTask = travelActivities.get(indexOfTask); + taggedTask.setTag(tag); + System.out.println("I have tagged this task:"); + System.out.println(taggedTask + "(" + tag + ")"); + } -} + /** + * Removes the tag on a travel activity + * @param taskNumber The travel activity number on the list + */ + public void removeTag(int taskNumber) throws OmniException { + assert taskNumber != 0 : "There is no task in the list"; + if (taskNumber > travelActivities.size()) { + throw new OmniException("Travel activity cannot be found"); + } + int indexOfTask = taskNumber - 1; + TravelActivity taggedTask = travelActivities.get(indexOfTask); + taggedTask.removeTag(); + System.out.println("Tag removed from the task:"); + System.out.println(taggedTask); + } +} \ No newline at end of file From 07a3f94497c50266a2162f743cd32f358d3eb6ae Mon Sep 17 00:00:00 2001 From: ChenKangg Date: Wed, 20 Mar 2024 12:12:46 +0800 Subject: [PATCH 2/2] fix build gradle --- src/main/java/seedu/duke/TravelActivityList.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/seedu/duke/TravelActivityList.java b/src/main/java/seedu/duke/TravelActivityList.java index 20fa136c8b..ad0340172a 100644 --- a/src/main/java/seedu/duke/TravelActivityList.java +++ b/src/main/java/seedu/duke/TravelActivityList.java @@ -162,4 +162,4 @@ public void removeTag(int taskNumber) throws OmniException { System.out.println("Tag removed from the task:"); System.out.println(taggedTask); } -} \ No newline at end of file +}