From c0c217d725e625dbc7d3a9dc6b0294981d9607f7 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 18 Aug 2022 14:47:15 +0800 Subject: [PATCH 01/28] Skeletal version of Duke --- src/main/java/Duke.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5d313334cc..ca23bfc412 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,10 +1,25 @@ +import java.util.Scanner; + public class Duke { public static void main(String[] args) { + /* String logo = " ____ _ \n" + "| _ \\ _ _| | _____ \n" + "| | | | | | | |/ / _ \\\n" + "| |_| | |_| | < __/\n" + "|____/ \\__,_|_|\\_\\___|\n"; System.out.println("Hello from\n" + logo); + */ + System.out.println("Hello! I'm Duke\nWhat can I do for you?"); + while (true) { + Scanner sc = new Scanner(System.in); + String s = sc.next(); + if (s.equals("bye")) { + System.out.println("Bye. Hope to see you again soon!"); + break; + } else { + System.out.println(s); + } + } } } From 1adc1f40cac4cd929869ec2aaa59387c564fdff0 Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 18 Aug 2022 14:58:46 +0800 Subject: [PATCH 02/28] Add the ability to store text entered by the user --- src/main/java/Duke.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index ca23bfc412..06f3380196 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -11,14 +11,22 @@ public static void main(String[] args) { System.out.println("Hello from\n" + logo); */ System.out.println("Hello! I'm Duke\nWhat can I do for you?"); + String[] store = new String[100]; + int count = 0; while (true) { Scanner sc = new Scanner(System.in); - String s = sc.next(); + String s = sc.nextLine(); if (s.equals("bye")) { System.out.println("Bye. Hope to see you again soon!"); break; + } else if (s.equals("list")) { + for (int a = 0; a < count; a++) { + System.out.println((a + 1) + ". " + store[a]); + } } else { - System.out.println(s); + store[count] = s; + count++; + System.out.println("added: " + s); } } } From 92577e8bc6e5cdb31648ce273d4181641999e5cd Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 19 Aug 2022 02:56:29 +0800 Subject: [PATCH 03/28] Add the ability to mark tasks as done and change the status back to not done. --- src/main/java/Duke.java | 37 ++++++++++++++++++++++--------------- src/main/java/Task.java | 26 ++++++++++++++++++++++++++ 2 files changed, 48 insertions(+), 15 deletions(-) create mode 100644 src/main/java/Task.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 06f3380196..747dbdecab 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -2,32 +2,39 @@ public class Duke { public static void main(String[] args) { - /* - String logo = " ____ _ \n" - + "| _ \\ _ _| | _____ \n" - + "| | | | | | | |/ / _ \\\n" - + "| |_| | |_| | < __/\n" - + "|____/ \\__,_|_|\\_\\___|\n"; - System.out.println("Hello from\n" + logo); - */ System.out.println("Hello! I'm Duke\nWhat can I do for you?"); - String[] store = new String[100]; + Scanner sc = new Scanner(System.in); + Task[] tasks = new Task[100]; int count = 0; while (true) { - Scanner sc = new Scanner(System.in); - String s = sc.nextLine(); + String s = sc.next(); if (s.equals("bye")) { System.out.println("Bye. Hope to see you again soon!"); break; } else if (s.equals("list")) { for (int a = 0; a < count; a++) { - System.out.println((a + 1) + ". " + store[a]); + System.out.println((a + 1) + "." + tasks[a]); } + sc.nextLine(); + } else if (s.equals("mark")) { + int index = sc.nextInt() - 1; + tasks[index].markAsDone(); + System.out.println("Nice! I've marked this task as done:"); + System.out.println(tasks[index]); + sc.nextLine(); + } else if (s.equals("unmark")) { + int index = sc.nextInt() - 1; + tasks[index].markNotDone(); + System.out.println("OK, I've marked this task as not done yet:"); + System.out.println(tasks[index]); + sc.nextLine(); } else { - store[count] = s; - count++; - System.out.println("added: " + s); + String rest = sc.nextLine(); + String whole = s + rest; + tasks[count++] = new Task(whole); + System.out.println("added: " + whole); } } + sc.close(); } } diff --git a/src/main/java/Task.java b/src/main/java/Task.java new file mode 100644 index 0000000000..04b1fe4e37 --- /dev/null +++ b/src/main/java/Task.java @@ -0,0 +1,26 @@ +public class Task { + protected String description; + protected boolean isDone; + + public Task(String description) { + this.description = description; + this.isDone = false; + } + + public String getStatusIcon() { + return (isDone ? "X" : " "); // mark done task with X + } + + @Override + public String toString() { + return "[" + this.getStatusIcon() + "] " + this.description; + } + + public void markAsDone() { + isDone = true; + } + + public void markNotDone() { + isDone = false; + } +} From d0db35fee491d85b5f4fd7ca5d95e40938e7ea57 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 19 Aug 2022 04:14:08 +0800 Subject: [PATCH 04/28] Add support for tracking ToDos, Deadlines, and Events --- src/main/java/Deadline.java | 14 ++++++++++++++ src/main/java/Duke.java | 28 +++++++++++++++++++++++++++- src/main/java/Event.java | 14 ++++++++++++++ src/main/java/Task.java | 4 +++- 4 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 src/main/java/Deadline.java create mode 100644 src/main/java/Event.java diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java new file mode 100644 index 0000000000..d82c0f4205 --- /dev/null +++ b/src/main/java/Deadline.java @@ -0,0 +1,14 @@ +public class Deadline extends Task { + private String deadline; + + public Deadline(String description, String deadline) { + super(description); + this.deadline = deadline; + type = 'D'; + } + + @Override + public String toString() { + return super.toString() + "(by: " + deadline + ")"; + } +} diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 747dbdecab..ee60f8aa91 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -28,9 +28,35 @@ public static void main(String[] args) { System.out.println("OK, I've marked this task as not done yet:"); System.out.println(tasks[index]); sc.nextLine(); + } else if (s.equals("todo")) { + String task = sc.nextLine(); + tasks[count++] = new Task(task); + System.out.println("Got it. I've added this task:"); + System.out.println(tasks[count - 1]); + System.out.println("Now you have " + count + " tasks in the list."); + } else if (s.equals("deadline")) { + String rest = sc.nextLine(); + String[] split = rest.split("/"); + String task = split[0]; + String deadline = split[1]; + deadline = deadline.substring(deadline.indexOf(' ') + 1); + tasks[count++] = new Deadline(task, deadline); + System.out.println("Got it. I've added this task:"); + System.out.println(tasks[count - 1]); + System.out.println("Now you have " + count + " tasks in the list."); + } else if (s.equals("event")) { + String rest = sc.nextLine(); + String[] split = rest.split("/"); + String task = split[0]; + String time = split[1]; + time = time.substring(time.indexOf(' ') + 1); + tasks[count++] = new Event(task, time); + System.out.println("Got it. I've added this task:"); + System.out.println(tasks[count - 1]); + System.out.println("Now you have " + count + " tasks in the list."); } else { String rest = sc.nextLine(); - String whole = s + rest; + String whole = " " + s + rest; tasks[count++] = new Task(whole); System.out.println("added: " + whole); } diff --git a/src/main/java/Event.java b/src/main/java/Event.java new file mode 100644 index 0000000000..9a384ef01b --- /dev/null +++ b/src/main/java/Event.java @@ -0,0 +1,14 @@ +public class Event extends Task{ + private String time; + + public Event(String description, String time) { + super(description); + this.time = time; + type = 'E'; + } + + @Override + public String toString() { + return super.toString() + "(at: " + time + ")"; + } +} diff --git a/src/main/java/Task.java b/src/main/java/Task.java index 04b1fe4e37..91dcdbe21d 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -1,10 +1,12 @@ public class Task { protected String description; protected boolean isDone; + protected char type; public Task(String description) { this.description = description; this.isDone = false; + type = 'T'; } public String getStatusIcon() { @@ -13,7 +15,7 @@ public String getStatusIcon() { @Override public String toString() { - return "[" + this.getStatusIcon() + "] " + this.description; + return "[" + type + "][" + getStatusIcon() + "]" + description; } public void markAsDone() { From e6afc93e4cf647772c2f63b246c0c42bbfe08e60 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 19 Aug 2022 05:16:13 +0800 Subject: [PATCH 05/28] Use the input/output redirection technique to semi-automate the testing of Duke. --- src/main/java/Duke.java | 1 + text-ui-test/EXPECTED.TXT | 37 ++++++++++++++++++++++++++++++------- text-ui-test/input.txt | 10 ++++++++++ 3 files changed, 41 insertions(+), 7 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index ee60f8aa91..2861176282 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -12,6 +12,7 @@ public static void main(String[] args) { System.out.println("Bye. Hope to see you again soon!"); break; } else if (s.equals("list")) { + System.out.println("Here are the tasks in your list:"); for (int a = 0; a < count; a++) { System.out.println((a + 1) + "." + tasks[a]); } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 657e74f6e7..3b71d238e2 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,7 +1,30 @@ -Hello from - ____ _ -| _ \ _ _| | _____ -| | | | | | | |/ / _ \ -| |_| | |_| | < __/ -|____/ \__,_|_|\_\___| - +Hello! I'm Duke +What can I do for you? +Got it. I've added this task: +[T][ ] borrow book +Now you have 1 tasks in the list. +Got it. I've added this task: +[D][ ] return book (by: Sunday) +Now you have 2 tasks in the list. +Got it. I've added this task: +[E][ ] project meeting (at: Mon 2-4pm) +Now you have 3 tasks in the list. +Here are the tasks in your list: +1.[T][ ] borrow book +2.[D][ ] return book (by: Sunday) +3.[E][ ] project meeting (at: Mon 2-4pm) +Nice! I've marked this task as done: +[T][X] borrow book +Nice! I've marked this task as done: +[D][X] return book (by: Sunday) +Here are the tasks in your list: +1.[T][X] borrow book +2.[D][X] return book (by: Sunday) +3.[E][ ] project meeting (at: Mon 2-4pm) +OK, I've marked this task as not done yet: +[D][ ] return book (by: Sunday) +Here are the tasks in your list: +1.[T][X] borrow book +2.[D][ ] return book (by: Sunday) +3.[E][ ] project meeting (at: Mon 2-4pm) +Bye. Hope to see you again soon! \ No newline at end of file diff --git a/text-ui-test/input.txt b/text-ui-test/input.txt index e69de29bb2..861fcc1caa 100644 --- a/text-ui-test/input.txt +++ b/text-ui-test/input.txt @@ -0,0 +1,10 @@ +todo borrow book +deadline return book /by Sunday +event project meeting /at Mon 2-4pm +list +mark 1 +mark 2 +list +unmark 2 +list +bye \ No newline at end of file From 248aa72cc33dfda68aa1bc8c111b25cbde8fccad Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 19 Aug 2022 10:33:07 +0800 Subject: [PATCH 06/28] Handle errors such as incorrect inputs entered by the user. --- src/main/java/Duke.java | 109 ++++++++++++++++--------------- src/main/java/DukeException.java | 5 ++ 2 files changed, 62 insertions(+), 52 deletions(-) create mode 100644 src/main/java/DukeException.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 2861176282..dcb3f36782 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -7,59 +7,64 @@ public static void main(String[] args) { Task[] tasks = new Task[100]; int count = 0; while (true) { - String s = sc.next(); - if (s.equals("bye")) { - System.out.println("Bye. Hope to see you again soon!"); - break; - } else if (s.equals("list")) { - System.out.println("Here are the tasks in your list:"); - for (int a = 0; a < count; a++) { - System.out.println((a + 1) + "." + tasks[a]); + try { + String s = sc.next(); + if (s.equals("bye")) { + System.out.println("Bye. Hope to see you again soon!"); + break; + } else if (s.equals("list")) { + System.out.println("Here are the tasks in your list:"); + for (int a = 0; a < count; a++) { + System.out.println((a + 1) + "." + tasks[a]); + } + sc.nextLine(); + } else if (s.equals("mark")) { + int index = sc.nextInt() - 1; + tasks[index].markAsDone(); + System.out.println("Nice! I've marked this task as done:"); + System.out.println(tasks[index]); + sc.nextLine(); + } else if (s.equals("unmark")) { + int index = sc.nextInt() - 1; + tasks[index].markNotDone(); + System.out.println("OK, I've marked this task as not done yet:"); + System.out.println(tasks[index]); + sc.nextLine(); + } else if (s.equals("todo")) { + String task = sc.nextLine(); + if (task.trim().isEmpty()) { + throw new DukeException("☹ OOPS!!! The description of a todo cannot be empty."); + } + tasks[count++] = new Task(task); + System.out.println("Got it. I've added this task:"); + System.out.println(tasks[count - 1]); + System.out.println("Now you have " + count + " tasks in the list."); + } else if (s.equals("deadline")) { + String rest = sc.nextLine(); + String[] split = rest.split("/"); + String task = split[0]; + String deadline = split[1]; + deadline = deadline.substring(deadline.indexOf(' ') + 1); + tasks[count++] = new Deadline(task, deadline); + System.out.println("Got it. I've added this task:"); + System.out.println(tasks[count - 1]); + System.out.println("Now you have " + count + " tasks in the list."); + } else if (s.equals("event")) { + String rest = sc.nextLine(); + String[] split = rest.split("/"); + String task = split[0]; + String time = split[1]; + time = time.substring(time.indexOf(' ') + 1); + tasks[count++] = new Event(task, time); + System.out.println("Got it. I've added this task:"); + System.out.println(tasks[count - 1]); + System.out.println("Now you have " + count + " tasks in the list."); + } else { + String rest = sc.nextLine(); + throw new DukeException("☹ OOPS!!! I'm sorry, but I don't know what that means :-("); } - sc.nextLine(); - } else if (s.equals("mark")) { - int index = sc.nextInt() - 1; - tasks[index].markAsDone(); - System.out.println("Nice! I've marked this task as done:"); - System.out.println(tasks[index]); - sc.nextLine(); - } else if (s.equals("unmark")) { - int index = sc.nextInt() - 1; - tasks[index].markNotDone(); - System.out.println("OK, I've marked this task as not done yet:"); - System.out.println(tasks[index]); - sc.nextLine(); - } else if (s.equals("todo")) { - String task = sc.nextLine(); - tasks[count++] = new Task(task); - System.out.println("Got it. I've added this task:"); - System.out.println(tasks[count - 1]); - System.out.println("Now you have " + count + " tasks in the list."); - } else if (s.equals("deadline")) { - String rest = sc.nextLine(); - String[] split = rest.split("/"); - String task = split[0]; - String deadline = split[1]; - deadline = deadline.substring(deadline.indexOf(' ') + 1); - tasks[count++] = new Deadline(task, deadline); - System.out.println("Got it. I've added this task:"); - System.out.println(tasks[count - 1]); - System.out.println("Now you have " + count + " tasks in the list."); - } else if (s.equals("event")) { - String rest = sc.nextLine(); - String[] split = rest.split("/"); - String task = split[0]; - String time = split[1]; - time = time.substring(time.indexOf(' ') + 1); - tasks[count++] = new Event(task, time); - System.out.println("Got it. I've added this task:"); - System.out.println(tasks[count - 1]); - System.out.println("Now you have " + count + " tasks in the list."); - } else { - String rest = sc.nextLine(); - String whole = " " + s + rest; - tasks[count++] = new Task(whole); - System.out.println("added: " + whole); + } catch (DukeException e) { + System.out.println(e.getMessage()); } } sc.close(); diff --git a/src/main/java/DukeException.java b/src/main/java/DukeException.java new file mode 100644 index 0000000000..fe8837e3a3 --- /dev/null +++ b/src/main/java/DukeException.java @@ -0,0 +1,5 @@ +public class DukeException extends Exception { + public DukeException(String message) { + super(message); + } +} From 09a9ccd615a684917cc59be3789d45b7b550e0e7 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 19 Aug 2022 10:50:55 +0800 Subject: [PATCH 07/28] Add support for deleting tasks from the list. --- src/main/java/Duke.java | 50 +++++++++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index dcb3f36782..33c739aa8b 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,11 +1,11 @@ import java.util.Scanner; +import java.util.ArrayList; public class Duke { public static void main(String[] args) { System.out.println("Hello! I'm Duke\nWhat can I do for you?"); Scanner sc = new Scanner(System.in); - Task[] tasks = new Task[100]; - int count = 0; + ArrayList tasks = new ArrayList<>(); while (true) { try { String s = sc.next(); @@ -14,51 +14,67 @@ public static void main(String[] args) { break; } else if (s.equals("list")) { System.out.println("Here are the tasks in your list:"); - for (int a = 0; a < count; a++) { - System.out.println((a + 1) + "." + tasks[a]); + for (int a = 0; a < tasks.size(); a++) { + System.out.println((a + 1) + "." + tasks.get(a)); } sc.nextLine(); } else if (s.equals("mark")) { int index = sc.nextInt() - 1; - tasks[index].markAsDone(); + if (index >= tasks.size()) { + throw new DukeException("Index out of bound!"); + } + tasks.get(index).markAsDone(); System.out.println("Nice! I've marked this task as done:"); - System.out.println(tasks[index]); + System.out.println(tasks.get(index)); sc.nextLine(); } else if (s.equals("unmark")) { int index = sc.nextInt() - 1; - tasks[index].markNotDone(); + if (index >= tasks.size()) { + throw new DukeException("Index out of bound!"); + } + tasks.get(index).markNotDone(); System.out.println("OK, I've marked this task as not done yet:"); - System.out.println(tasks[index]); + System.out.println(tasks.get(index)); sc.nextLine(); } else if (s.equals("todo")) { String task = sc.nextLine(); if (task.trim().isEmpty()) { throw new DukeException("☹ OOPS!!! The description of a todo cannot be empty."); } - tasks[count++] = new Task(task); + tasks.add(new Task(task)); System.out.println("Got it. I've added this task:"); - System.out.println(tasks[count - 1]); - System.out.println("Now you have " + count + " tasks in the list."); + System.out.println(tasks.get(tasks.size() - 1)); + System.out.println("Now you have " + tasks.size() + " tasks in the list."); } else if (s.equals("deadline")) { String rest = sc.nextLine(); String[] split = rest.split("/"); String task = split[0]; String deadline = split[1]; deadline = deadline.substring(deadline.indexOf(' ') + 1); - tasks[count++] = new Deadline(task, deadline); + tasks.add(new Deadline(task, deadline)); System.out.println("Got it. I've added this task:"); - System.out.println(tasks[count - 1]); - System.out.println("Now you have " + count + " tasks in the list."); + System.out.println(tasks.get(tasks.size() - 1)); + System.out.println("Now you have " + tasks.size() + " tasks in the list."); } else if (s.equals("event")) { String rest = sc.nextLine(); String[] split = rest.split("/"); String task = split[0]; String time = split[1]; time = time.substring(time.indexOf(' ') + 1); - tasks[count++] = new Event(task, time); + tasks.add(new Event(task, time)); System.out.println("Got it. I've added this task:"); - System.out.println(tasks[count - 1]); - System.out.println("Now you have " + count + " tasks in the list."); + System.out.println(tasks.get(tasks.size() - 1)); + System.out.println("Now you have " + tasks.size() + " tasks in the list."); + } else if (s.equals("delete")) { + int index = sc.nextInt() - 1; + if (index >= tasks.size()) { + throw new DukeException("Index out of bound!"); + } + tasks.remove(index); + System.out.println("Noted. I've removed this task:"); + System.out.println(tasks.get(index)); + System.out.println("Now you have " + tasks.size() + " tasks in the list."); + sc.nextLine(); } else { String rest = sc.nextLine(); throw new DukeException("☹ OOPS!!! I'm sorry, but I don't know what that means :-("); From 4418b596f0dfcfc129efebb4c7a58f77ea829f08 Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 27 Aug 2022 11:06:42 +0800 Subject: [PATCH 08/28] Save the tasks in the hard disk automatically whenever the task list changes. Load the data from the hard disk when the project starts up. --- duke.txt | 0 src/main/java/Deadline.java | 5 ++++ src/main/java/Duke.java | 57 ++++++++++++++++++++++++++++++++++++- src/main/java/Event.java | 5 ++++ src/main/java/Task.java | 4 +++ 5 files changed, 70 insertions(+), 1 deletion(-) create mode 100644 duke.txt diff --git a/duke.txt b/duke.txt new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index d82c0f4205..c01b4d1d24 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -11,4 +11,9 @@ public Deadline(String description, String deadline) { public String toString() { return super.toString() + "(by: " + deadline + ")"; } + + @Override + public String data() { + return super.data() + ", " + deadline; + } } diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 33c739aa8b..85d7c7b231 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,3 +1,7 @@ +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; import java.util.Scanner; import java.util.ArrayList; @@ -5,7 +9,7 @@ public class Duke { public static void main(String[] args) { System.out.println("Hello! I'm Duke\nWhat can I do for you?"); Scanner sc = new Scanner(System.in); - ArrayList tasks = new ArrayList<>(); + ArrayList tasks = initialize(); while (true) { try { String s = sc.next(); @@ -79,10 +83,61 @@ public static void main(String[] args) { String rest = sc.nextLine(); throw new DukeException("☹ OOPS!!! I'm sorry, but I don't know what that means :-("); } + modify(tasks); } catch (DukeException e) { System.out.println(e.getMessage()); } } sc.close(); } + + private static ArrayList initialize() { + File file = new File("./duke.txt"); + ArrayList tasks = new ArrayList<>(); + Scanner sc; + try { + file.createNewFile(); + sc = new Scanner(file); + } catch (IOException e) { + return tasks; + } + while (sc.hasNext()) { + String task = sc.nextLine(); + String[] split = task.split(", "); + for (String element : split) { + System.out.println(element); + } + if (split[0].equals("T")) { + tasks.add(new Task(split[2])); + if (split[1].equals("1")) { + tasks.get(tasks.size() - 1).markAsDone(); + } + } else if (split[0].equals("D")) { + tasks.add(new Deadline(split[2], split[3])); + if (split[1].equals("1")) { + tasks.get(tasks.size() - 1).markAsDone(); + } + } else if (split[0].equals("E")) { + tasks.add(new Event(split[2], split[3])); + if (split[1].equals("1")) { + tasks.get(tasks.size() - 1).markAsDone(); + } + } + } + return tasks; + } + + private static void modify(ArrayList tasks) { + String data = ""; + try { + FileWriter fw = new FileWriter("./duke.txt"); + for (Task task : tasks) { + data += task.data() + "\n"; + } + fw.write(data); + fw.close(); + } catch (IOException e) { + + } + } } diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 9a384ef01b..5dbca3bd23 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -11,4 +11,9 @@ public Event(String description, String time) { public String toString() { return super.toString() + "(at: " + time + ")"; } + + @Override + public String data() { + return super.data() + ", " + time; + } } diff --git a/src/main/java/Task.java b/src/main/java/Task.java index 91dcdbe21d..ee1884ebb8 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -25,4 +25,8 @@ public void markAsDone() { public void markNotDone() { isDone = false; } + + public String data() { + return type + ", " + (isDone ? 1 : 0) + ", " + description; + } } From fb0a521b4338b6abc217924c3bcae7ab007c74bd Mon Sep 17 00:00:00 2001 From: unknown Date: Sat, 27 Aug 2022 13:04:15 +0800 Subject: [PATCH 09/28] Store deadline and event dates as a java.time.LocalDate in the task objects. Accept dates in yyyy-mm-dd format and print in MMM dd yyyy format --- src/main/java/Deadline.java | 9 ++++++--- src/main/java/Event.java | 9 ++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index d82c0f4205..ab59fa5f9b 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -1,14 +1,17 @@ +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + public class Deadline extends Task { - private String deadline; + private LocalDate deadline; public Deadline(String description, String deadline) { super(description); - this.deadline = deadline; + this.deadline = LocalDate.parse(deadline); type = 'D'; } @Override public String toString() { - return super.toString() + "(by: " + deadline + ")"; + return super.toString() + "(by: " + deadline.format(DateTimeFormatter.ofPattern("MMM d yyyy")) + ")"; } } diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 9a384ef01b..f7979cd6c4 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -1,14 +1,17 @@ +import java.time.LocalDate; +import java.time.format.DateTimeFormatter; + public class Event extends Task{ - private String time; + private LocalDate time; public Event(String description, String time) { super(description); - this.time = time; + this.time = LocalDate.parse(time); type = 'E'; } @Override public String toString() { - return super.toString() + "(at: " + time + ")"; + return super.toString() + "(at: " + time.format(DateTimeFormatter.ofPattern("MMM d yyyy")) + ")"; } } From c66d9a49f3b396f63eaef0b6255ab6c5179cb45b Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Sep 2022 16:36:34 +0800 Subject: [PATCH 10/28] Extract Ui, Storage, Parser, TaskList, and Command into Classes --- src/main/java/AddCommand.java | 34 ++++++ src/main/java/Command.java | 3 + src/main/java/Deadline.java | 9 +- src/main/java/DeleteCommand.java | 12 ++ src/main/java/Duke.java | 181 ++++++++----------------------- src/main/java/Event.java | 9 +- src/main/java/ExitCommand.java | 6 + src/main/java/ListCommand.java | 6 + src/main/java/MarkCommand.java | 14 +++ src/main/java/Parser.java | 49 +++++++++ src/main/java/Storage.java | 38 +++++++ src/main/java/Task.java | 24 ++-- src/main/java/TaskList.java | 11 ++ src/main/java/ToDo.java | 11 ++ src/main/java/Ui.java | 55 ++++++++++ 15 files changed, 315 insertions(+), 147 deletions(-) create mode 100644 src/main/java/AddCommand.java create mode 100644 src/main/java/Command.java create mode 100644 src/main/java/DeleteCommand.java create mode 100644 src/main/java/ExitCommand.java create mode 100644 src/main/java/ListCommand.java create mode 100644 src/main/java/MarkCommand.java create mode 100644 src/main/java/Parser.java create mode 100644 src/main/java/Storage.java create mode 100644 src/main/java/TaskList.java create mode 100644 src/main/java/ToDo.java create mode 100644 src/main/java/Ui.java diff --git a/src/main/java/AddCommand.java b/src/main/java/AddCommand.java new file mode 100644 index 0000000000..abf72a40e9 --- /dev/null +++ b/src/main/java/AddCommand.java @@ -0,0 +1,34 @@ +public class AddCommand extends Command { + private char type; + private String description; + private String detail; + + public AddCommand(char type, String description) { + this.type = type; + this.description = description; + } + + public AddCommand(char type, String description, String detail) { + this(type, description); + this.detail = detail; + } + + @Override + public void run(Duke duke) { + Task task; + switch (type) { + case 'T': + task = new ToDo(description); + break; + case 'D': + task = new Deadline(description, detail); + break; + case 'E': + task = new Event(description, detail); + break; + default: + task = new Task(""); // error + } + duke.add(task); + } +} diff --git a/src/main/java/Command.java b/src/main/java/Command.java new file mode 100644 index 0000000000..0c47ac83f7 --- /dev/null +++ b/src/main/java/Command.java @@ -0,0 +1,3 @@ +public abstract class Command { + public abstract void run(Duke duke); +} diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index baed4484dd..26d5e1a3e1 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -2,7 +2,7 @@ import java.time.format.DateTimeFormatter; public class Deadline extends Task { - private LocalDate deadline; + private final LocalDate deadline; public Deadline(String description, String deadline) { super(description); @@ -10,9 +10,14 @@ public Deadline(String description, String deadline) { type = 'D'; } + public Deadline(String description, boolean isDone, String deadline) { + this(description, deadline); + this.isDone = isDone; + } + @Override public String toString() { - return super.toString() + "(by: " + deadline.format(DateTimeFormatter.ofPattern("MMM d yyyy")) + ")"; + return super.toString() + " (by: " + deadline.format(DateTimeFormatter.ofPattern("MMM d yyyy")) + ")"; } @Override diff --git a/src/main/java/DeleteCommand.java b/src/main/java/DeleteCommand.java new file mode 100644 index 0000000000..31c543ab9a --- /dev/null +++ b/src/main/java/DeleteCommand.java @@ -0,0 +1,12 @@ +public class DeleteCommand extends Command { + int index; + + public DeleteCommand(int index) { + this.index = index; + } + + @Override + public void run(Duke duke) { + duke.deleteTask(index); + } +} diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 85d7c7b231..0474983dcb 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,143 +1,58 @@ -import java.io.File; -import java.io.FileNotFoundException; -import java.io.FileWriter; -import java.io.IOException; -import java.util.Scanner; -import java.util.ArrayList; - public class Duke { - public static void main(String[] args) { - System.out.println("Hello! I'm Duke\nWhat can I do for you?"); - Scanner sc = new Scanner(System.in); - ArrayList tasks = initialize(); - while (true) { - try { - String s = sc.next(); - if (s.equals("bye")) { - System.out.println("Bye. Hope to see you again soon!"); - break; - } else if (s.equals("list")) { - System.out.println("Here are the tasks in your list:"); - for (int a = 0; a < tasks.size(); a++) { - System.out.println((a + 1) + "." + tasks.get(a)); - } - sc.nextLine(); - } else if (s.equals("mark")) { - int index = sc.nextInt() - 1; - if (index >= tasks.size()) { - throw new DukeException("Index out of bound!"); - } - tasks.get(index).markAsDone(); - System.out.println("Nice! I've marked this task as done:"); - System.out.println(tasks.get(index)); - sc.nextLine(); - } else if (s.equals("unmark")) { - int index = sc.nextInt() - 1; - if (index >= tasks.size()) { - throw new DukeException("Index out of bound!"); - } - tasks.get(index).markNotDone(); - System.out.println("OK, I've marked this task as not done yet:"); - System.out.println(tasks.get(index)); - sc.nextLine(); - } else if (s.equals("todo")) { - String task = sc.nextLine(); - if (task.trim().isEmpty()) { - throw new DukeException("☹ OOPS!!! The description of a todo cannot be empty."); - } - tasks.add(new Task(task)); - System.out.println("Got it. I've added this task:"); - System.out.println(tasks.get(tasks.size() - 1)); - System.out.println("Now you have " + tasks.size() + " tasks in the list."); - } else if (s.equals("deadline")) { - String rest = sc.nextLine(); - String[] split = rest.split("/"); - String task = split[0]; - String deadline = split[1]; - deadline = deadline.substring(deadline.indexOf(' ') + 1); - tasks.add(new Deadline(task, deadline)); - System.out.println("Got it. I've added this task:"); - System.out.println(tasks.get(tasks.size() - 1)); - System.out.println("Now you have " + tasks.size() + " tasks in the list."); - } else if (s.equals("event")) { - String rest = sc.nextLine(); - String[] split = rest.split("/"); - String task = split[0]; - String time = split[1]; - time = time.substring(time.indexOf(' ') + 1); - tasks.add(new Event(task, time)); - System.out.println("Got it. I've added this task:"); - System.out.println(tasks.get(tasks.size() - 1)); - System.out.println("Now you have " + tasks.size() + " tasks in the list."); - } else if (s.equals("delete")) { - int index = sc.nextInt() - 1; - if (index >= tasks.size()) { - throw new DukeException("Index out of bound!"); - } - tasks.remove(index); - System.out.println("Noted. I've removed this task:"); - System.out.println(tasks.get(index)); - System.out.println("Now you have " + tasks.size() + " tasks in the list."); - sc.nextLine(); - } else { - String rest = sc.nextLine(); - throw new DukeException("☹ OOPS!!! I'm sorry, but I don't know what that means :-("); - } - modify(tasks); - } catch (DukeException e) { - System.out.println(e.getMessage()); - } - } - sc.close(); + private final Storage storage = new Storage("./duke.txt"); + private final TaskList tasks = storage.load(); + private final Ui ui = new Ui(); + private boolean isActive = true; + + public void start() { + ui.greet(); + while (isActive) { + String input = ui.read(); + Command command = Parser.parseInput(input); + command.run(this); + storage.save(tasks); + } // System.out.println(e.getMessage()); + ui.close(); + } + + public void add(Task task) { // error if description is empty + tasks.add(task); + ui.addTask(task); + ui.infoCount(tasks.size()); + } + + public void printTasks() { + ui.printTasks(tasks); } - private static ArrayList initialize() { - File file = new File("./duke.txt"); - ArrayList tasks = new ArrayList<>(); - Scanner sc; - try { - file.createNewFile(); - sc = new Scanner(file); - } catch (IOException e) { - return tasks; + public void markTask(int index, boolean isDone) { + if (index >= tasks.size()) { + return; // throw new DukeException("Index out of bound!"); } - while (sc.hasNext()) { - String task = sc.nextLine(); - String[] split = task.split(", "); - for (String element : split) { - System.out.println(element); - } - if (split[0].equals("T")) { - tasks.add(new Task(split[2])); - if (split[1].equals("1")) { - tasks.get(tasks.size() - 1).markAsDone(); - } - } else if (split[0].equals("D")) { - tasks.add(new Deadline(split[2], split[3])); - if (split[1].equals("1")) { - tasks.get(tasks.size() - 1).markAsDone(); - } - } else if (split[0].equals("E")) { - tasks.add(new Event(split[2], split[3])); - if (split[1].equals("1")) { - tasks.get(tasks.size() - 1).markAsDone(); - } - } + Task task = tasks.get(index); + if (isDone) { + task.markAsDone(); + ui.markAsDone(task); + } else { + task.markNotDone(); + ui.markNotDone(task); } - return tasks; } - private static void modify(ArrayList tasks) { - String data = ""; - try { - FileWriter fw = new FileWriter("./duke.txt"); - for (Task task : tasks) { - data += task.data() + "\n"; - } - fw.write(data); - fw.close(); - } catch (IOException e) { - + public void deleteTask(int index) { + if (index >= tasks.size()) { + return; // throw new DukeException("Index out of bound!"); } + Task task = tasks.remove(index); + ui.deleteTask(task); + ui.infoCount(tasks.size()); + } + + public void exit() { + isActive = false; + } + + public static void main(String[] args) { + new Duke().start(); } } diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 928bba43f4..a4c1a8d4e5 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -2,7 +2,7 @@ import java.time.format.DateTimeFormatter; public class Event extends Task{ - private LocalDate time; + private final LocalDate time; public Event(String description, String time) { super(description); @@ -10,9 +10,14 @@ public Event(String description, String time) { type = 'E'; } + public Event(String description, boolean isDone, String time) { + this(description, time); + this.isDone = isDone; + } + @Override public String toString() { - return super.toString() + "(at: " + time.format(DateTimeFormatter.ofPattern("MMM d yyyy")) + ")"; + return super.toString() + " (at: " + time.format(DateTimeFormatter.ofPattern("MMM d yyyy")) + ")"; } @Override diff --git a/src/main/java/ExitCommand.java b/src/main/java/ExitCommand.java new file mode 100644 index 0000000000..1f9f26822e --- /dev/null +++ b/src/main/java/ExitCommand.java @@ -0,0 +1,6 @@ +public class ExitCommand extends Command { + @Override + public void run(Duke duke) { + duke.exit(); + } +} diff --git a/src/main/java/ListCommand.java b/src/main/java/ListCommand.java new file mode 100644 index 0000000000..5455e8f0ea --- /dev/null +++ b/src/main/java/ListCommand.java @@ -0,0 +1,6 @@ +public class ListCommand extends Command { + @Override + public void run(Duke duke) { + duke.printTasks(); + } +} diff --git a/src/main/java/MarkCommand.java b/src/main/java/MarkCommand.java new file mode 100644 index 0000000000..36ee07df7c --- /dev/null +++ b/src/main/java/MarkCommand.java @@ -0,0 +1,14 @@ +public class MarkCommand extends Command { + int index; + boolean isDone; + + public MarkCommand(int index, boolean isDone) { + this.index = index; + this.isDone = isDone; + } + + @Override + public void run(Duke duke) { + duke.markTask(index, isDone); + } +} diff --git a/src/main/java/Parser.java b/src/main/java/Parser.java new file mode 100644 index 0000000000..7ece9f531d --- /dev/null +++ b/src/main/java/Parser.java @@ -0,0 +1,49 @@ +public class Parser { + public static Task parseStorageTask(String input) { + String[] inputParts = input.split(", "); + String type = inputParts[0]; + boolean isDone = inputParts[1] == "X"; + String description = inputParts[2]; + switch (type) { + case "T": + return new ToDo(description, isDone); + case "D": + return new Deadline(description, isDone, inputParts[3]); + case "E": + return new Event(description, isDone, inputParts[3]); + default: + return new Task(""); // error + } + } + + public static Command parseInput(String input) { + String[] inputParts; + inputParts = splitFirst(input, " "); + switch (inputParts[0]) { + case "bye": + return new ExitCommand(); + case "list": + return new ListCommand(); + case "mark": + return new MarkCommand(Integer.parseInt(inputParts[1]) - 1, true); + case "unmark": + return new MarkCommand(Integer.parseInt(inputParts[1]) - 1, false); + case "todo": + return new AddCommand('T', inputParts[1]); + case "deadline": + inputParts = splitFirst(inputParts[1], " /by "); + return new AddCommand('D', inputParts[0], inputParts[1]); + case "event": + inputParts = splitFirst(inputParts[1], " /at "); + return new AddCommand('E', inputParts[0], inputParts[1]); + case "delete": + return new DeleteCommand(Integer.parseInt(inputParts[1]) - 1); + default: + return new ExitCommand(); // throw new DukeException("☹ OOPS!!! I'm sorry, but I don't know what that means :-("); + } + } + + public static String[] splitFirst(String string, String regex) { + return string.split(regex, 2); + } +} diff --git a/src/main/java/Storage.java b/src/main/java/Storage.java new file mode 100644 index 0000000000..43b5556435 --- /dev/null +++ b/src/main/java/Storage.java @@ -0,0 +1,38 @@ +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.Scanner; + +public class Storage { + private String path; + + public Storage(String path) { + this.path = path; + } + + public TaskList load() { + File file = new File(path); + TaskList tasks = new TaskList(); + Scanner sc; + try { + file.createNewFile(); + sc = new Scanner(file); + } catch (IOException e) { + return tasks; + } + while (sc.hasNext()) { + tasks.add(Parser.parseStorageTask(sc.nextLine())); + } + return tasks; + } + + public void save(TaskList tasks) { + try { + FileWriter fw = new FileWriter("./duke.txt"); + fw.write(tasks.data()); + fw.close(); + } catch (IOException e) { + + } + } +} diff --git a/src/main/java/Task.java b/src/main/java/Task.java index ee1884ebb8..73e6b4c09b 100644 --- a/src/main/java/Task.java +++ b/src/main/java/Task.java @@ -5,17 +5,12 @@ public class Task { public Task(String description) { this.description = description; - this.isDone = false; - type = 'T'; - } - - public String getStatusIcon() { - return (isDone ? "X" : " "); // mark done task with X + isDone = false; } - @Override - public String toString() { - return "[" + type + "][" + getStatusIcon() + "]" + description; + public Task(String description, boolean isDone) { + this(description); + this.isDone = isDone; } public void markAsDone() { @@ -26,7 +21,16 @@ public void markNotDone() { isDone = false; } + public char getStatusIcon() { + return isDone ? 'X' : ' '; // done = X + } + + @Override + public String toString() { + return String.format("[%c][%c] %s", type, getStatusIcon(), description); + } + public String data() { - return type + ", " + (isDone ? 1 : 0) + ", " + description; + return String.format("%c, %c, %s", type, getStatusIcon(), description); } } diff --git a/src/main/java/TaskList.java b/src/main/java/TaskList.java new file mode 100644 index 0000000000..5b640a80a1 --- /dev/null +++ b/src/main/java/TaskList.java @@ -0,0 +1,11 @@ +import java.util.ArrayList; + +public class TaskList extends ArrayList { + public String data() { + String acc = ""; + for (Task task : this) { + acc += task.data() + "\n"; + } + return acc; + } +} diff --git a/src/main/java/ToDo.java b/src/main/java/ToDo.java new file mode 100644 index 0000000000..ac58b7d04f --- /dev/null +++ b/src/main/java/ToDo.java @@ -0,0 +1,11 @@ +public class ToDo extends Task { + public ToDo(String description) { + super(description); + type = 'T'; + } + + public ToDo(String description, boolean isDone) { + this(description); + this.isDone = isDone; + } +} diff --git a/src/main/java/Ui.java b/src/main/java/Ui.java new file mode 100644 index 0000000000..c14ca48592 --- /dev/null +++ b/src/main/java/Ui.java @@ -0,0 +1,55 @@ +import java.util.Scanner; + +public class Ui { + public Scanner sc = new Scanner(System.in); + + public void print(String string) { + System.out.println(string); + } + + public void greet() { + print("Hello! I'm Duke"); + print("What can I do for you?"); + } + + public String read() { + return sc.nextLine(); + } + + public void addTask(Task task) { + print("Got it. I've added this task:"); + print(task.toString()); + } + + public void printTasks(TaskList tasks) { + print("Here are the tasks in your list:"); + for (int a = 0; a < tasks.size(); a++) { + print((a + 1) + ". " + tasks.get(a)); + } + } + + public void markAsDone(Task task) { + print("Nice! I've marked this task as done:"); + print(task.toString()); + } + + public void markNotDone(Task task) { + print("OK, I've marked this task as not done yet:"); + print(task.toString()); + } + + public void infoCount(int count) { + print("Now you have " + count + " tasks in the list."); + } + + public void deleteTask(Task task) { + print("Noted. I've removed this task:"); + print(task.toString()); + } + + + public void close() { + print("Bye. Hope to see you again soon!"); + sc.close(); + } +} From d31c73391574461fd193f3e893e9090002341730 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Sep 2022 17:13:24 +0800 Subject: [PATCH 11/28] Organize the classes into suitable java packages. --- README.md | 4 ++-- src/main/java/{ => duke}/AddCommand.java | 4 ++++ src/main/java/{ => duke}/Command.java | 4 ++++ src/main/java/{ => duke}/Deadline.java | 2 ++ src/main/java/{ => duke}/DeleteCommand.java | 5 +++++ src/main/java/{ => duke}/Duke.java | 6 ++++-- src/main/java/{ => duke}/DukeException.java | 2 ++ src/main/java/{ => duke}/Event.java | 4 +++- src/main/java/{ => duke}/ExitCommand.java | 5 +++++ src/main/java/{ => duke}/ListCommand.java | 5 +++++ src/main/java/{ => duke}/MarkCommand.java | 5 +++++ src/main/java/{ => duke}/Parser.java | 4 +++- src/main/java/{ => duke}/Storage.java | 4 ++++ src/main/java/{ => duke}/Task.java | 2 ++ src/main/java/{ => duke}/TaskList.java | 4 ++++ src/main/java/{ => duke}/ToDo.java | 4 ++++ src/main/java/{ => duke}/Ui.java | 7 ++++++- text-ui-test/EXPECTED.TXT | 2 +- text-ui-test/runtest.bat | 2 +- 19 files changed, 66 insertions(+), 9 deletions(-) rename src/main/java/{ => duke}/AddCommand.java (96%) rename src/main/java/{ => duke}/Command.java (68%) rename src/main/java/{ => duke}/Deadline.java (97%) rename src/main/java/{ => duke}/DeleteCommand.java (80%) rename src/main/java/{ => duke}/Duke.java (89%) rename src/main/java/{ => duke}/DukeException.java (89%) rename src/main/java/{ => duke}/Event.java (92%) rename src/main/java/{ => duke}/ExitCommand.java (68%) rename src/main/java/{ => duke}/ListCommand.java (69%) rename src/main/java/{ => duke}/MarkCommand.java (84%) rename src/main/java/{ => duke}/Parser.java (92%) rename src/main/java/{ => duke}/Storage.java (95%) rename src/main/java/{ => duke}/Task.java (98%) rename src/main/java/{ => duke}/TaskList.java (87%) rename src/main/java/{ => duke}/ToDo.java (87%) rename src/main/java/{ => duke}/Ui.java (93%) diff --git a/README.md b/README.md index 8715d4d915..0f2208ab64 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Duke project template +# duke.Duke project template This is a project template for a greenfield Java project. It's named after the Java mascot _Duke_. Given below are instructions on how to use it. @@ -13,7 +13,7 @@ Prerequisites: JDK 11, update Intellij to the most recent version. 1. If there are any further prompts, accept the defaults. 1. Configure the project to use **JDK 11** (not other versions) as explained in [here](https://www.jetbrains.com/help/idea/sdk.html#set-up-jdk).
In the same dialog, set the **Project language level** field to the `SDK default` option. -3. After that, locate the `src/main/java/Duke.java` file, right-click it, and choose `Run Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output: +3. After that, locate the `src/main/java/duke.Duke.java` file, right-click it, and choose `Run duke.Duke.main()` (if the code editor is showing compile errors, try restarting the IDE). If the setup is correct, you should see something like the below as the output: ``` Hello from ____ _ diff --git a/src/main/java/AddCommand.java b/src/main/java/duke/AddCommand.java similarity index 96% rename from src/main/java/AddCommand.java rename to src/main/java/duke/AddCommand.java index abf72a40e9..311cf9bb88 100644 --- a/src/main/java/AddCommand.java +++ b/src/main/java/duke/AddCommand.java @@ -1,3 +1,7 @@ +package duke; + +import duke.Duke; + public class AddCommand extends Command { private char type; private String description; diff --git a/src/main/java/Command.java b/src/main/java/duke/Command.java similarity index 68% rename from src/main/java/Command.java rename to src/main/java/duke/Command.java index 0c47ac83f7..67c60138f7 100644 --- a/src/main/java/Command.java +++ b/src/main/java/duke/Command.java @@ -1,3 +1,7 @@ +package duke; + +import duke.Duke; + public abstract class Command { public abstract void run(Duke duke); } diff --git a/src/main/java/Deadline.java b/src/main/java/duke/Deadline.java similarity index 97% rename from src/main/java/Deadline.java rename to src/main/java/duke/Deadline.java index 26d5e1a3e1..c82c509204 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/duke/Deadline.java @@ -1,3 +1,5 @@ +package duke; + import java.time.LocalDate; import java.time.format.DateTimeFormatter; diff --git a/src/main/java/DeleteCommand.java b/src/main/java/duke/DeleteCommand.java similarity index 80% rename from src/main/java/DeleteCommand.java rename to src/main/java/duke/DeleteCommand.java index 31c543ab9a..4214c5e1fa 100644 --- a/src/main/java/DeleteCommand.java +++ b/src/main/java/duke/DeleteCommand.java @@ -1,3 +1,8 @@ +package duke; + +import duke.Command; +import duke.Duke; + public class DeleteCommand extends Command { int index; diff --git a/src/main/java/Duke.java b/src/main/java/duke/Duke.java similarity index 89% rename from src/main/java/Duke.java rename to src/main/java/duke/Duke.java index 0474983dcb..af3c87c3ef 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/duke/Duke.java @@ -1,3 +1,5 @@ +package duke; + public class Duke { private final Storage storage = new Storage("./duke.txt"); private final TaskList tasks = storage.load(); @@ -27,7 +29,7 @@ public void printTasks() { public void markTask(int index, boolean isDone) { if (index >= tasks.size()) { - return; // throw new DukeException("Index out of bound!"); + return; // throw new duke.DukeException("Index out of bound!"); } Task task = tasks.get(index); if (isDone) { @@ -41,7 +43,7 @@ public void markTask(int index, boolean isDone) { public void deleteTask(int index) { if (index >= tasks.size()) { - return; // throw new DukeException("Index out of bound!"); + return; // throw new duke.DukeException("Index out of bound!"); } Task task = tasks.remove(index); ui.deleteTask(task); diff --git a/src/main/java/DukeException.java b/src/main/java/duke/DukeException.java similarity index 89% rename from src/main/java/DukeException.java rename to src/main/java/duke/DukeException.java index fe8837e3a3..3fcd0f5ea8 100644 --- a/src/main/java/DukeException.java +++ b/src/main/java/duke/DukeException.java @@ -1,3 +1,5 @@ +package duke; + public class DukeException extends Exception { public DukeException(String message) { super(message); diff --git a/src/main/java/Event.java b/src/main/java/duke/Event.java similarity index 92% rename from src/main/java/Event.java rename to src/main/java/duke/Event.java index a4c1a8d4e5..d5ef22cbfd 100644 --- a/src/main/java/Event.java +++ b/src/main/java/duke/Event.java @@ -1,7 +1,9 @@ +package duke; + import java.time.LocalDate; import java.time.format.DateTimeFormatter; -public class Event extends Task{ +public class Event extends Task { private final LocalDate time; public Event(String description, String time) { diff --git a/src/main/java/ExitCommand.java b/src/main/java/duke/ExitCommand.java similarity index 68% rename from src/main/java/ExitCommand.java rename to src/main/java/duke/ExitCommand.java index 1f9f26822e..c8ed8ffe6b 100644 --- a/src/main/java/ExitCommand.java +++ b/src/main/java/duke/ExitCommand.java @@ -1,3 +1,8 @@ +package duke; + +import duke.Command; +import duke.Duke; + public class ExitCommand extends Command { @Override public void run(Duke duke) { diff --git a/src/main/java/ListCommand.java b/src/main/java/duke/ListCommand.java similarity index 69% rename from src/main/java/ListCommand.java rename to src/main/java/duke/ListCommand.java index 5455e8f0ea..167b88a4d2 100644 --- a/src/main/java/ListCommand.java +++ b/src/main/java/duke/ListCommand.java @@ -1,3 +1,8 @@ +package duke; + +import duke.Command; +import duke.Duke; + public class ListCommand extends Command { @Override public void run(Duke duke) { diff --git a/src/main/java/MarkCommand.java b/src/main/java/duke/MarkCommand.java similarity index 84% rename from src/main/java/MarkCommand.java rename to src/main/java/duke/MarkCommand.java index 36ee07df7c..e49005913f 100644 --- a/src/main/java/MarkCommand.java +++ b/src/main/java/duke/MarkCommand.java @@ -1,3 +1,8 @@ +package duke; + +import duke.Command; +import duke.Duke; + public class MarkCommand extends Command { int index; boolean isDone; diff --git a/src/main/java/Parser.java b/src/main/java/duke/Parser.java similarity index 92% rename from src/main/java/Parser.java rename to src/main/java/duke/Parser.java index 7ece9f531d..4e816730f8 100644 --- a/src/main/java/Parser.java +++ b/src/main/java/duke/Parser.java @@ -1,3 +1,5 @@ +package duke; + public class Parser { public static Task parseStorageTask(String input) { String[] inputParts = input.split(", "); @@ -39,7 +41,7 @@ public static Command parseInput(String input) { case "delete": return new DeleteCommand(Integer.parseInt(inputParts[1]) - 1); default: - return new ExitCommand(); // throw new DukeException("☹ OOPS!!! I'm sorry, but I don't know what that means :-("); + return new ExitCommand(); // throw new duke.DukeException("☹ OOPS!!! I'm sorry, but I don't know what that means :-("); } } diff --git a/src/main/java/Storage.java b/src/main/java/duke/Storage.java similarity index 95% rename from src/main/java/Storage.java rename to src/main/java/duke/Storage.java index 43b5556435..7550528aa4 100644 --- a/src/main/java/Storage.java +++ b/src/main/java/duke/Storage.java @@ -1,3 +1,7 @@ +package duke; + +import duke.Parser; + import java.io.File; import java.io.FileWriter; import java.io.IOException; diff --git a/src/main/java/Task.java b/src/main/java/duke/Task.java similarity index 98% rename from src/main/java/Task.java rename to src/main/java/duke/Task.java index 73e6b4c09b..4d9dc45140 100644 --- a/src/main/java/Task.java +++ b/src/main/java/duke/Task.java @@ -1,3 +1,5 @@ +package duke; + public class Task { protected String description; protected boolean isDone; diff --git a/src/main/java/TaskList.java b/src/main/java/duke/TaskList.java similarity index 87% rename from src/main/java/TaskList.java rename to src/main/java/duke/TaskList.java index 5b640a80a1..6d33a8085e 100644 --- a/src/main/java/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -1,3 +1,7 @@ +package duke; + +import duke.Task; + import java.util.ArrayList; public class TaskList extends ArrayList { diff --git a/src/main/java/ToDo.java b/src/main/java/duke/ToDo.java similarity index 87% rename from src/main/java/ToDo.java rename to src/main/java/duke/ToDo.java index ac58b7d04f..b8676fe72e 100644 --- a/src/main/java/ToDo.java +++ b/src/main/java/duke/ToDo.java @@ -1,3 +1,7 @@ +package duke; + +import duke.Task; + public class ToDo extends Task { public ToDo(String description) { super(description); diff --git a/src/main/java/Ui.java b/src/main/java/duke/Ui.java similarity index 93% rename from src/main/java/Ui.java rename to src/main/java/duke/Ui.java index c14ca48592..1bde0bbae2 100644 --- a/src/main/java/Ui.java +++ b/src/main/java/duke/Ui.java @@ -1,3 +1,8 @@ +package duke; + +import duke.Task; +import duke.TaskList; + import java.util.Scanner; public class Ui { @@ -8,7 +13,7 @@ public void print(String string) { } public void greet() { - print("Hello! I'm Duke"); + print("Hello! I'm duke.Duke"); print("What can I do for you?"); } diff --git a/text-ui-test/EXPECTED.TXT b/text-ui-test/EXPECTED.TXT index 3b71d238e2..57f9de6507 100644 --- a/text-ui-test/EXPECTED.TXT +++ b/text-ui-test/EXPECTED.TXT @@ -1,4 +1,4 @@ -Hello! I'm Duke +Hello! I'm duke.Duke What can I do for you? Got it. I've added this task: [T][ ] borrow book diff --git a/text-ui-test/runtest.bat b/text-ui-test/runtest.bat index 0873744649..62752b8814 100644 --- a/text-ui-test/runtest.bat +++ b/text-ui-test/runtest.bat @@ -15,7 +15,7 @@ IF ERRORLEVEL 1 ( REM no error here, errorlevel == 0 REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT -java -classpath ..\bin Duke < input.txt > ACTUAL.TXT +java -classpath ..\bin duke.Duke < input.txt > ACTUAL.TXT REM compare the output to the expected output FC ACTUAL.TXT EXPECTED.TXT From 96fc62ce4b58c755acd09e2bf65091ee24867b0a Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Sep 2022 19:20:47 +0800 Subject: [PATCH 12/28] Use Gradle to automate some of the build tasks of the project. --- CONTRIBUTORS.md | 9 -- build.gradle | 41 +++++ gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 59536 bytes gradle/wrapper/gradle-wrapper.properties | 5 + gradlew | 185 +++++++++++++++++++++++ gradlew.bat | 89 +++++++++++ src/main/java/duke/Duke.java | 4 +- 7 files changed, 322 insertions(+), 11 deletions(-) delete mode 100644 CONTRIBUTORS.md create mode 100644 build.gradle create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md deleted file mode 100644 index 8e359a0145..0000000000 --- a/CONTRIBUTORS.md +++ /dev/null @@ -1,9 +0,0 @@ -# Contributors - -Display | Name | Github Profile | Homepage ----|:---:|:---:|:---: -![](https://avatars0.githubusercontent.com/u/22460123?s=100) | Jeffry Lum | [Github](https://github.com/j-lum/) | [Homepage](https://se.kasugano.moe) -![](https://avatars0.githubusercontent.com/u/1673303?s=100) | Damith C. Rajapakse | [Github](https://github.com/damithc/) | [Homepage](https://www.comp.nus.edu.sg/~damithch/) -# I would like to join this list. How can I help the project - -For more information, please refer to our [contributor's guide](https://oss-generic.github.io/process/). diff --git a/build.gradle b/build.gradle new file mode 100644 index 0000000000..8a747821a5 --- /dev/null +++ b/build.gradle @@ -0,0 +1,41 @@ +plugins { + id 'java' + id 'application' + id 'com.github.johnrengelman.shadow' version '5.1.0' +} + +repositories { + mavenCentral() +} + +dependencies { + testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' + testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' +} + +test { + useJUnitPlatform() + + testLogging { + events "passed", "skipped", "failed" + + showExceptions true + exceptionFormat "full" + showCauses true + showStackTraces true + showStandardStreams = false + } +} + +application { + mainClassName = "seedu.duke.Duke" +} + +shadowJar { + archiveBaseName = "duke" + archiveClassifier = null +} + +run{ + standardInput = System.in +} \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7454180f2ae8848c63b8b4dea2cb829da983f2fa GIT binary patch literal 59536 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 QuEJmfE|#`Dqx|px0L@K;Y5)KL literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 0000000000..69a9715077 --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.1-bin.zip +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew new file mode 100644 index 0000000000..744e882ed5 --- /dev/null +++ b/gradlew @@ -0,0 +1,185 @@ +#!/usr/bin/env sh + +# +# Copyright 2015 the original author or authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +############################################################################## +## +## Gradle start up script for UN*X +## +############################################################################## + +# Attempt to set APP_HOME +# Resolve links: $0 may be a link +PRG="$0" +# Need this for relative symlinks. +while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG=`dirname "$PRG"`"/$link" + fi +done +SAVED="`pwd`" +cd "`dirname \"$PRG\"`/" >/dev/null +APP_HOME="`pwd -P`" +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MSYS* | MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac + +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD="java" + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." +fi + +# Increase the maximum file descriptors if we can. +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then + MAX_FD_LIMIT=`ulimit -H -n` + if [ $? -eq 0 ] ; then + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then + MAX_FD="$MAX_FD_LIMIT" + fi + ulimit -n $MAX_FD + if [ $? -ne 0 ] ; then + warn "Could not set maximum file descriptor limit: $MAX_FD" + fi + else + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" + fi +fi + +# For Darwin, add options to specify how the application appears in the dock +if $darwin; then + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" +fi + +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then + APP_HOME=`cygpath --path --mixed "$APP_HOME"` + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` + + # We build the pattern for arguments to be converted via cygpath + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` + SEP="" + for dir in $ROOTDIRSRAW ; do + ROOTDIRS="$ROOTDIRS$SEP$dir" + SEP="|" + done + OURCYGPATTERN="(^($ROOTDIRS))" + # Add a user-defined pattern to the cygpath arguments + if [ "$GRADLE_CYGPATTERN" != "" ] ; then + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" + fi + # Now convert the arguments - kludge to limit ourselves to /bin/sh + i=0 + for arg in "$@" ; do + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option + + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` + else + eval `echo args$i`="\"$arg\"" + fi + i=`expr $i + 1` + done + case $i in + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + esac +fi + +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " +} +APP_ARGS=`save "$@"` + +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000000..107acd32c4 --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,89 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto execute + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index af3c87c3ef..5841e70b2a 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -28,7 +28,7 @@ public void printTasks() { } public void markTask(int index, boolean isDone) { - if (index >= tasks.size()) { + if (index < 0 || index >= tasks.size()) { return; // throw new duke.DukeException("Index out of bound!"); } Task task = tasks.get(index); @@ -42,7 +42,7 @@ public void markTask(int index, boolean isDone) { } public void deleteTask(int index) { - if (index >= tasks.size()) { + if (index < 0 || index >= tasks.size()) { return; // throw new duke.DukeException("Index out of bound!"); } Task task = tasks.remove(index); From f8cbd0f9052f60b87fcbbd0f94a6703967b59eb3 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Sep 2022 19:55:59 +0800 Subject: [PATCH 13/28] Add JUnit tests to test the behavior of the code. --- src/main/java/duke/AddCommand.java | 8 +++----- src/main/java/duke/Command.java | 2 -- src/main/java/duke/Deadline.java | 2 +- src/main/java/duke/DeleteCommand.java | 3 --- src/test/java/duke/DeadlineTest.java | 19 +++++++++++++++++++ src/test/java/duke/ToDoTest.java | 17 +++++++++++++++++ 6 files changed, 40 insertions(+), 11 deletions(-) create mode 100644 src/test/java/duke/DeadlineTest.java create mode 100644 src/test/java/duke/ToDoTest.java diff --git a/src/main/java/duke/AddCommand.java b/src/main/java/duke/AddCommand.java index 311cf9bb88..5b02577473 100644 --- a/src/main/java/duke/AddCommand.java +++ b/src/main/java/duke/AddCommand.java @@ -1,11 +1,9 @@ package duke; -import duke.Duke; - public class AddCommand extends Command { - private char type; - private String description; - private String detail; + protected char type; + protected String description; + protected String detail; public AddCommand(char type, String description) { this.type = type; diff --git a/src/main/java/duke/Command.java b/src/main/java/duke/Command.java index 67c60138f7..c236c85f5f 100644 --- a/src/main/java/duke/Command.java +++ b/src/main/java/duke/Command.java @@ -1,7 +1,5 @@ package duke; -import duke.Duke; - public abstract class Command { public abstract void run(Duke duke); } diff --git a/src/main/java/duke/Deadline.java b/src/main/java/duke/Deadline.java index c82c509204..243afcaa9a 100644 --- a/src/main/java/duke/Deadline.java +++ b/src/main/java/duke/Deadline.java @@ -4,7 +4,7 @@ import java.time.format.DateTimeFormatter; public class Deadline extends Task { - private final LocalDate deadline; + protected final LocalDate deadline; public Deadline(String description, String deadline) { super(description); diff --git a/src/main/java/duke/DeleteCommand.java b/src/main/java/duke/DeleteCommand.java index 4214c5e1fa..adf6b96235 100644 --- a/src/main/java/duke/DeleteCommand.java +++ b/src/main/java/duke/DeleteCommand.java @@ -1,8 +1,5 @@ package duke; -import duke.Command; -import duke.Duke; - public class DeleteCommand extends Command { int index; diff --git a/src/test/java/duke/DeadlineTest.java b/src/test/java/duke/DeadlineTest.java new file mode 100644 index 0000000000..f39635771d --- /dev/null +++ b/src/test/java/duke/DeadlineTest.java @@ -0,0 +1,19 @@ +package duke; + +import org.junit.jupiter.api.Test; + +import java.time.format.DateTimeFormatter; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class DeadlineTest { + @Test + public void toStringTest() { + assertEquals("[D][ ] Deadline (by: Dec 16 2022)", new Deadline("Deadline", "2022-12-16").toString()); + } + + @Test + public void deadlineTest() { + assertEquals("Sep 16 2022", new Deadline("Deadline", "2022-09-16").deadline.format(DateTimeFormatter.ofPattern("MMM d yyyy"))); + } +} diff --git a/src/test/java/duke/ToDoTest.java b/src/test/java/duke/ToDoTest.java new file mode 100644 index 0000000000..debf6a8682 --- /dev/null +++ b/src/test/java/duke/ToDoTest.java @@ -0,0 +1,17 @@ +package duke; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +public class ToDoTest { + @Test + public void toStringTest() { + assertEquals("[T][ ] ToDo", new ToDo("ToDo").toString()); + } + + @Test + public void descriptionTest() { + assertEquals("ToDo", new ToDo("ToDo").description); + } +} From 92cedc7563f5bcfa8adc8d39c49e2d2ad300bd3e Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Sep 2022 22:06:42 +0800 Subject: [PATCH 14/28] Add JavaDoc comments to the code. --- src/main/java/duke/AddCommand.java | 21 +++++++++++ src/main/java/duke/Command.java | 8 ++++ src/main/java/duke/Deadline.java | 26 +++++++++++++ src/main/java/duke/DeleteCommand.java | 13 +++++++ src/main/java/duke/Duke.java | 28 ++++++++++++++ src/main/java/duke/DukeException.java | 8 ++++ src/main/java/duke/Event.java | 26 +++++++++++++ src/main/java/duke/ExitCommand.java | 11 ++++-- src/main/java/duke/ListCommand.java | 11 ++++-- src/main/java/duke/MarkCommand.java | 17 +++++++-- src/main/java/duke/Parser.java | 22 +++++++++++ src/main/java/duke/Storage.java | 20 +++++++++- src/main/java/duke/Task.java | 35 ++++++++++++++++++ src/main/java/duke/TaskList.java | 10 ++++- src/main/java/duke/ToDo.java | 16 +++++++- src/main/java/duke/Ui.java | 53 +++++++++++++++++++++++++-- 16 files changed, 306 insertions(+), 19 deletions(-) diff --git a/src/main/java/duke/AddCommand.java b/src/main/java/duke/AddCommand.java index 5b02577473..4f9a5c9b98 100644 --- a/src/main/java/duke/AddCommand.java +++ b/src/main/java/duke/AddCommand.java @@ -1,20 +1,41 @@ package duke; +/** + * Represents a Command to add a task to Duke, either a ToDo, a Deadline, or an Event. + */ public class AddCommand extends Command { protected char type; protected String description; protected String detail; + /** + * Constructor of AddCommand with type and description. + * + * @param type Type of Task to add. + * @param description Description of Task to add. + */ public AddCommand(char type, String description) { this.type = type; this.description = description; } + /** + * Constructor of AddCommand with type, description, and detail. + * + * @param type Type of Task to add. + * @param description Description of Task to add. + * @param detail Additional detail of Task to add (deadline for Deadline and time for Event). + */ public AddCommand(char type, String description, String detail) { this(type, description); this.detail = detail; } + /** + * Run the AddCommand, add a Task to Duke. + * + * @param duke Duke instance to run the AddCommand at. + */ @Override public void run(Duke duke) { Task task; diff --git a/src/main/java/duke/Command.java b/src/main/java/duke/Command.java index c236c85f5f..fb685f50ab 100644 --- a/src/main/java/duke/Command.java +++ b/src/main/java/duke/Command.java @@ -1,5 +1,13 @@ package duke; +/** + * Represents the abstract concept of a Command, which could be run in Duke. + */ public abstract class Command { + /** + * Abstract method to run the Command. + * + * @param duke Duke instance to run the Command at. + */ public abstract void run(Duke duke); } diff --git a/src/main/java/duke/Deadline.java b/src/main/java/duke/Deadline.java index 243afcaa9a..fbf92a2204 100644 --- a/src/main/java/duke/Deadline.java +++ b/src/main/java/duke/Deadline.java @@ -3,25 +3,51 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; +/** + * Represents a Deadline, which is a Task with a deadline. + */ public class Deadline extends Task { protected final LocalDate deadline; + /** + * Constructor of Deadline with description and deadline. + * + * @param description Description of the Task. + * @param deadline Deadline of the Task. + */ public Deadline(String description, String deadline) { super(description); this.deadline = LocalDate.parse(deadline); type = 'D'; } + /** + * Constructor of Deadline with description, boolean to set the Deadline as done or not done, and deadline. + * + * @param description Description of the Task. + * @param isDone Boolean to set the Task as done or not done. + * @param deadline Deadline of the Task. + */ public Deadline(String description, boolean isDone, String deadline) { this(description, deadline); this.isDone = isDone; } + /** + * Returns the String representation of the Deadline for UI. + * + * @return String representation of the Deadline for UI. + */ @Override public String toString() { return super.toString() + " (by: " + deadline.format(DateTimeFormatter.ofPattern("MMM d yyyy")) + ")"; } + /** + * Returns the String representation of the Deadline for Storage. + * + * @return String representation of the Deadline for Storage. + */ @Override public String data() { return super.data() + ", " + deadline; diff --git a/src/main/java/duke/DeleteCommand.java b/src/main/java/duke/DeleteCommand.java index adf6b96235..cdcb9b2b3c 100644 --- a/src/main/java/duke/DeleteCommand.java +++ b/src/main/java/duke/DeleteCommand.java @@ -1,12 +1,25 @@ package duke; +/** + * Represents a Command to delete a Task from Duke. + */ public class DeleteCommand extends Command { int index; + /** + * Constructor of DeleteCommand with index of Task to delete. + * + * @param index Index of Task to delete. + */ public DeleteCommand(int index) { this.index = index; } + /** + * Run the DeleteCommand, delete a Task from Duke. + * + * @param duke Duke instance to run the Command at. + */ @Override public void run(Duke duke) { duke.deleteTask(index); diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index 5841e70b2a..62872d32d4 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -1,11 +1,17 @@ package duke; +/** + * Represents Duke, a Personal Assistant Chatterbot that helps a person to keep track of various things. + */ public class Duke { private final Storage storage = new Storage("./duke.txt"); private final TaskList tasks = storage.load(); private final Ui ui = new Ui(); private boolean isActive = true; + /** + * Start the Duke Chatterbot. + */ public void start() { ui.greet(); while (isActive) { @@ -17,16 +23,30 @@ public void start() { ui.close(); } + /** + * Add a Task to Duke. + * + * @param task Task to add. + */ public void add(Task task) { // error if description is empty tasks.add(task); ui.addTask(task); ui.infoCount(tasks.size()); } + /** + * Print all current tasks to the UI. + */ public void printTasks() { ui.printTasks(tasks); } + /** + * Mark a Task as done or not done. + * + * @param index Index of Task to mark. + * @param isDone Boolean to mark the Task as done or not done. + */ public void markTask(int index, boolean isDone) { if (index < 0 || index >= tasks.size()) { return; // throw new duke.DukeException("Index out of bound!"); @@ -41,6 +61,11 @@ public void markTask(int index, boolean isDone) { } } + /** + * Delete a Task. + * + * @param index Index of Task to delete. + */ public void deleteTask(int index) { if (index < 0 || index >= tasks.size()) { return; // throw new duke.DukeException("Index out of bound!"); @@ -50,6 +75,9 @@ public void deleteTask(int index) { ui.infoCount(tasks.size()); } + /** + * Exit the Duke Chatterbot. + */ public void exit() { isActive = false; } diff --git a/src/main/java/duke/DukeException.java b/src/main/java/duke/DukeException.java index 3fcd0f5ea8..f741ace379 100644 --- a/src/main/java/duke/DukeException.java +++ b/src/main/java/duke/DukeException.java @@ -1,6 +1,14 @@ package duke; +/** + * Represents an Exception in Duke. + */ public class DukeException extends Exception { + /** + * Constructor of DukeException with message. + * + * @param message Message explaining the Exception. + */ public DukeException(String message) { super(message); } diff --git a/src/main/java/duke/Event.java b/src/main/java/duke/Event.java index d5ef22cbfd..d01fb8392e 100644 --- a/src/main/java/duke/Event.java +++ b/src/main/java/duke/Event.java @@ -3,25 +3,51 @@ import java.time.LocalDate; import java.time.format.DateTimeFormatter; +/** + * Represents an Event, which is a Task with time. + */ public class Event extends Task { private final LocalDate time; + /** + * Constructor of Event with description and time. + * + * @param description Description of the Event. + * @param time Time of the Event. + */ public Event(String description, String time) { super(description); this.time = LocalDate.parse(time); type = 'E'; } + /** + * Constructor of Event with description, boolean to set the Event as done or not done, and time. + * + * @param description Description of the Event. + * @param isDone Boolean to set the Event as done or not done. + * @param time Time of the Event. + */ public Event(String description, boolean isDone, String time) { this(description, time); this.isDone = isDone; } + /** + * Returns the String representation of the Event for UI. + * + * @return String representation of the Event for UI. + */ @Override public String toString() { return super.toString() + " (at: " + time.format(DateTimeFormatter.ofPattern("MMM d yyyy")) + ")"; } + /** + * Returns the String representation of the Event for Storage. + * + * @return String representation of the Event for Storage. + */ @Override public String data() { return super.data() + ", " + time; diff --git a/src/main/java/duke/ExitCommand.java b/src/main/java/duke/ExitCommand.java index c8ed8ffe6b..f35963069d 100644 --- a/src/main/java/duke/ExitCommand.java +++ b/src/main/java/duke/ExitCommand.java @@ -1,9 +1,14 @@ package duke; -import duke.Command; -import duke.Duke; - +/** + * Represents a Command to exit Duke. + */ public class ExitCommand extends Command { + /** + * Run the ExitCommand, exit Duke. + * + * @param duke Duke instance to run the ExitCommand at. + */ @Override public void run(Duke duke) { duke.exit(); diff --git a/src/main/java/duke/ListCommand.java b/src/main/java/duke/ListCommand.java index 167b88a4d2..34639f10b8 100644 --- a/src/main/java/duke/ListCommand.java +++ b/src/main/java/duke/ListCommand.java @@ -1,9 +1,14 @@ package duke; -import duke.Command; -import duke.Duke; - +/** + * Represents a Command to print all tasks in Duke to the UI. + */ public class ListCommand extends Command { + /** + * Run the ListCommand, print all tasks in Duke to the UI. + * + * @param duke Duke instance to run the ListCommand at. + */ @Override public void run(Duke duke) { duke.printTasks(); diff --git a/src/main/java/duke/MarkCommand.java b/src/main/java/duke/MarkCommand.java index e49005913f..baf31edb9f 100644 --- a/src/main/java/duke/MarkCommand.java +++ b/src/main/java/duke/MarkCommand.java @@ -1,17 +1,28 @@ package duke; -import duke.Command; -import duke.Duke; - +/** + * Represents a Command to mark a task as done or not done in Duke. + */ public class MarkCommand extends Command { int index; boolean isDone; + /** + * Constructor of MarkCommand with index of Task to mark and boolean to mark the Task as done or not done. + * + * @param index Index of Task to mark. + * @param isDone Boolean to mark the Task as done or not done. + */ public MarkCommand(int index, boolean isDone) { this.index = index; this.isDone = isDone; } + /** + * Run the MarkCommand, mark a task as done or not done in Duke. + * + * @param duke Duke instance to run the MarkCommand at. + */ @Override public void run(Duke duke) { duke.markTask(index, isDone); diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index 4e816730f8..a1b4dbf9d2 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -1,6 +1,15 @@ package duke; +/** + * Represents a Parser to parse the input and return an Object corresponding to it. + */ public class Parser { + /** + * Returns a Task which results from parsing the data input from Storage. + * + * @param input Data input from Storage. + * @return Task corresponding to the data input from Storage. + */ public static Task parseStorageTask(String input) { String[] inputParts = input.split(", "); String type = inputParts[0]; @@ -18,6 +27,12 @@ public static Task parseStorageTask(String input) { } } + /** + * Returns a Command which results from parsing the user input. + * + * @param input Text input from user. + * @return Command corresponding to the user input. + */ public static Command parseInput(String input) { String[] inputParts; inputParts = splitFirst(input, " "); @@ -45,6 +60,13 @@ public static Command parseInput(String input) { } } + /** + * Returns a String array with 2 elements, which results from splitting the String once with the substring (regex). + * + * @param string Original String. + * @param regex Substring used to split the String. + * @return String array with 2 elements, which results from splitting the String once with the substring. + */ public static String[] splitFirst(String string, String regex) { return string.split(regex, 2); } diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/Storage.java index 7550528aa4..63cc968244 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/Storage.java @@ -1,19 +1,30 @@ package duke; -import duke.Parser; - import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.Scanner; +/** + * Represents a Storage to load and save the data of Duke. + */ public class Storage { private String path; + /** + * Constructor of Storage with path name to the Storage file. + * + * @param path Path name to the Storage file. + */ public Storage(String path) { this.path = path; } + /** + * Returns a TaskList which results from loading the data in the Storage file. + * + * @return TaskList from the data in the Storage file. + */ public TaskList load() { File file = new File(path); TaskList tasks = new TaskList(); @@ -30,6 +41,11 @@ public TaskList load() { return tasks; } + /** + * Saves the current Duke data to the Storage file. + * + * @param tasks TaskList which represents the current Duke data. + */ public void save(TaskList tasks) { try { FileWriter fw = new FileWriter("./duke.txt"); diff --git a/src/main/java/duke/Task.java b/src/main/java/duke/Task.java index 4d9dc45140..5ee470c4d9 100644 --- a/src/main/java/duke/Task.java +++ b/src/main/java/duke/Task.java @@ -1,37 +1,72 @@ package duke; +/** + * Represents a Task with description, boolean to set the Task as done or not done, and type (ToDo = 'T', Deadline = 'D', Event = 'E'). + */ public class Task { protected String description; protected boolean isDone; protected char type; + /** + * Constructor of Task with description. + * + * @param description Description of the Task. + */ public Task(String description) { this.description = description; isDone = false; } + /** + * Constructor of Task with description and boolean to set the Task as done or not done. + * + * @param description Description of the Task. + * @param isDone Boolean to set the Task as done or not done. + */ public Task(String description, boolean isDone) { this(description); this.isDone = isDone; } + /** + * Marks Task as done. + */ public void markAsDone() { isDone = true; } + /** + * Marks Task as not done. + */ public void markNotDone() { isDone = false; } + /** + * Returns the status icon of the Task, 'X' if done and ' ' if not done. + * + * @return Status icon of the Task, 'X' if done and ' ' if not done. + */ public char getStatusIcon() { return isDone ? 'X' : ' '; // done = X } + /** + * Returns the String representation of the Task for UI. + * + * @return String representation of the Task for UI. + */ @Override public String toString() { return String.format("[%c][%c] %s", type, getStatusIcon(), description); } + /** + * Returns the String representation of the Task for Storage. + * + * @return String representation of the Task for Storage. + */ public String data() { return String.format("%c, %c, %s", type, getStatusIcon(), description); } diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index 6d33a8085e..6a5dbf9f7a 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -1,10 +1,16 @@ package duke; -import duke.Task; - import java.util.ArrayList; +/** + * Represents a list of tasks. + */ public class TaskList extends ArrayList { + /** + * Returns the String representation of the TaskList for Storage. + * + * @return String representation of the TaskList for Storage. + */ public String data() { String acc = ""; for (Task task : this) { diff --git a/src/main/java/duke/ToDo.java b/src/main/java/duke/ToDo.java index b8676fe72e..b52e61096b 100644 --- a/src/main/java/duke/ToDo.java +++ b/src/main/java/duke/ToDo.java @@ -1,13 +1,25 @@ package duke; -import duke.Task; - +/** + * Represents a ToDo, which is a Task. + */ public class ToDo extends Task { + /** + * Constructor of ToDo with description. + * + * @param description Description of the ToDo. + */ public ToDo(String description) { super(description); type = 'T'; } + /** + * Constructor of ToDo with description and boolean to set the ToDo as done or not done. + * + * @param description Description of the ToDo. + * @param isDone Boolean to set the ToDo as done or not done. + */ public ToDo(String description, boolean isDone) { this(description); this.isDone = isDone; diff --git a/src/main/java/duke/Ui.java b/src/main/java/duke/Ui.java index 1bde0bbae2..eaea42d1b8 100644 --- a/src/main/java/duke/Ui.java +++ b/src/main/java/duke/Ui.java @@ -1,31 +1,54 @@ package duke; -import duke.Task; -import duke.TaskList; - import java.util.Scanner; +/** + * Represents the UI component of Duke. + */ public class Ui { public Scanner sc = new Scanner(System.in); + /** + * Prints a String to the UI. + * + * @param string String to print. + */ public void print(String string) { System.out.println(string); } + /** + * Prints a greeting message to the UI. + */ public void greet() { print("Hello! I'm duke.Duke"); print("What can I do for you?"); } + /** + * Reads a line of user input and returns it. + * + * @return A line of user input that is read. + */ public String read() { return sc.nextLine(); } + /** + * Prints a response from adding a Task in Duke to the UI. + * + * @param task Task added in Duke. + */ public void addTask(Task task) { print("Got it. I've added this task:"); print(task.toString()); } + /** + * Prints all tasks in the TaskList to the UI. + * + * @param tasks List of tasks to print. + */ public void printTasks(TaskList tasks) { print("Here are the tasks in your list:"); for (int a = 0; a < tasks.size(); a++) { @@ -33,26 +56,48 @@ public void printTasks(TaskList tasks) { } } + /** + * Prints a response from marking a Task as done in Duke to the UI. + * + * @param task Task marked as done in Duke. + */ public void markAsDone(Task task) { print("Nice! I've marked this task as done:"); print(task.toString()); } + /** + * Prints a response from marking a Task as not done in Duke to the UI. + * + * @param task Task marked as not done in Duke. + */ public void markNotDone(Task task) { print("OK, I've marked this task as not done yet:"); print(task.toString()); } + /** + * Prints an information about the current number of tasks in Duke. + * + * @param count Number of tasks in Duke. + */ public void infoCount(int count) { print("Now you have " + count + " tasks in the list."); } + /** + * Prints a response from deleting a Task in Duke to the UI. + * + * @param task Task deleted in Duke. + */ public void deleteTask(Task task) { print("Noted. I've removed this task:"); print(task.toString()); } - + /** + * Prints a goodbye message and closes the UI. + */ public void close() { print("Bye. Hope to see you again soon!"); sc.close(); From febe0f6a492a9398e17990e4965220dfb7f69ea4 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Sep 2022 22:35:27 +0800 Subject: [PATCH 15/28] Tweak the code to comply with a given coding standard --- src/main/java/duke/AddCommand.java | 22 +++++------ src/main/java/duke/Deadline.java | 4 +- src/main/java/duke/Event.java | 4 +- src/main/java/duke/Parser.java | 57 ++++++++++++++-------------- src/main/java/duke/Storage.java | 2 +- src/main/java/duke/Task.java | 16 ++++++++ src/main/java/duke/TaskList.java | 11 +++++- src/main/java/duke/Ui.java | 4 +- src/test/java/duke/DeadlineTest.java | 6 ++- 9 files changed, 77 insertions(+), 49 deletions(-) diff --git a/src/main/java/duke/AddCommand.java b/src/main/java/duke/AddCommand.java index 5b02577473..efb8e12c8f 100644 --- a/src/main/java/duke/AddCommand.java +++ b/src/main/java/duke/AddCommand.java @@ -19,17 +19,17 @@ public AddCommand(char type, String description, String detail) { public void run(Duke duke) { Task task; switch (type) { - case 'T': - task = new ToDo(description); - break; - case 'D': - task = new Deadline(description, detail); - break; - case 'E': - task = new Event(description, detail); - break; - default: - task = new Task(""); // error + case 'T': + task = new ToDo(description); + break; + case 'D': + task = new Deadline(description, detail); + break; + case 'E': + task = new Event(description, detail); + break; + default: + task = new Task(""); // error } duke.add(task); } diff --git a/src/main/java/duke/Deadline.java b/src/main/java/duke/Deadline.java index 243afcaa9a..b01b9a8a22 100644 --- a/src/main/java/duke/Deadline.java +++ b/src/main/java/duke/Deadline.java @@ -23,7 +23,7 @@ public String toString() { } @Override - public String data() { - return super.data() + ", " + deadline; + public String toData() { + return super.toData() + ", " + deadline; } } diff --git a/src/main/java/duke/Event.java b/src/main/java/duke/Event.java index d5ef22cbfd..caece8db59 100644 --- a/src/main/java/duke/Event.java +++ b/src/main/java/duke/Event.java @@ -23,7 +23,7 @@ public String toString() { } @Override - public String data() { - return super.data() + ", " + time; + public String toData() { + return super.toData() + ", " + time; } } diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index 4e816730f8..ed2df63482 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -7,14 +7,14 @@ public static Task parseStorageTask(String input) { boolean isDone = inputParts[1] == "X"; String description = inputParts[2]; switch (type) { - case "T": - return new ToDo(description, isDone); - case "D": - return new Deadline(description, isDone, inputParts[3]); - case "E": - return new Event(description, isDone, inputParts[3]); - default: - return new Task(""); // error + case "T": + return new ToDo(description, isDone); + case "D": + return new Deadline(description, isDone, inputParts[3]); + case "E": + return new Event(description, isDone, inputParts[3]); + default: + return new Task(""); // error } } @@ -22,26 +22,27 @@ public static Command parseInput(String input) { String[] inputParts; inputParts = splitFirst(input, " "); switch (inputParts[0]) { - case "bye": - return new ExitCommand(); - case "list": - return new ListCommand(); - case "mark": - return new MarkCommand(Integer.parseInt(inputParts[1]) - 1, true); - case "unmark": - return new MarkCommand(Integer.parseInt(inputParts[1]) - 1, false); - case "todo": - return new AddCommand('T', inputParts[1]); - case "deadline": - inputParts = splitFirst(inputParts[1], " /by "); - return new AddCommand('D', inputParts[0], inputParts[1]); - case "event": - inputParts = splitFirst(inputParts[1], " /at "); - return new AddCommand('E', inputParts[0], inputParts[1]); - case "delete": - return new DeleteCommand(Integer.parseInt(inputParts[1]) - 1); - default: - return new ExitCommand(); // throw new duke.DukeException("☹ OOPS!!! I'm sorry, but I don't know what that means :-("); + case "bye": + return new ExitCommand(); + case "list": + return new ListCommand(); + case "mark": + return new MarkCommand(Integer.parseInt(inputParts[1]) - 1, true); + case "unmark": + return new MarkCommand(Integer.parseInt(inputParts[1]) - 1, false); + case "todo": + return new AddCommand('T', inputParts[1]); + case "deadline": + inputParts = splitFirst(inputParts[1], " /by "); + return new AddCommand('D', inputParts[0], inputParts[1]); + case "event": + inputParts = splitFirst(inputParts[1], " /at "); + return new AddCommand('E', inputParts[0], inputParts[1]); + case "delete": + return new DeleteCommand(Integer.parseInt(inputParts[1]) - 1); + default: + return new ExitCommand(); + // throw new duke.DukeException("☹ OOPS!!! I'm sorry, but I don't know what that means :-("); } } diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/Storage.java index 7550528aa4..579401ed84 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/Storage.java @@ -33,7 +33,7 @@ public TaskList load() { public void save(TaskList tasks) { try { FileWriter fw = new FileWriter("./duke.txt"); - fw.write(tasks.data()); + fw.write(tasks.toData()); fw.close(); } catch (IOException e) { diff --git a/src/main/java/duke/Task.java b/src/main/java/duke/Task.java index 4d9dc45140..041326332a 100644 --- a/src/main/java/duke/Task.java +++ b/src/main/java/duke/Task.java @@ -1,5 +1,12 @@ package duke; +<<<<<<< Updated upstream +======= +/** + * Represents a Task with description, boolean to set the Task as done or not done, and type (ToDo = 'T', + * Deadline = 'D', Event = 'E'). + */ +>>>>>>> Stashed changes public class Task { protected String description; protected boolean isDone; @@ -32,7 +39,16 @@ public String toString() { return String.format("[%c][%c] %s", type, getStatusIcon(), description); } +<<<<<<< Updated upstream public String data() { +======= + /** + * Returns the String representation of the Task for Storage. + * + * @return String representation of the Task for Storage. + */ + public String toData() { +>>>>>>> Stashed changes return String.format("%c, %c, %s", type, getStatusIcon(), description); } } diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index 6d33a8085e..04a30c0fa1 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -5,10 +5,19 @@ import java.util.ArrayList; public class TaskList extends ArrayList { +<<<<<<< Updated upstream public String data() { +======= + /** + * Returns the String representation of the TaskList for Storage. + * + * @return String representation of the TaskList for Storage. + */ + public String toData() { +>>>>>>> Stashed changes String acc = ""; for (Task task : this) { - acc += task.data() + "\n"; + acc += task.toData() + "\n"; } return acc; } diff --git a/src/main/java/duke/Ui.java b/src/main/java/duke/Ui.java index 1bde0bbae2..fd1cd4d112 100644 --- a/src/main/java/duke/Ui.java +++ b/src/main/java/duke/Ui.java @@ -28,8 +28,8 @@ public void addTask(Task task) { public void printTasks(TaskList tasks) { print("Here are the tasks in your list:"); - for (int a = 0; a < tasks.size(); a++) { - print((a + 1) + ". " + tasks.get(a)); + for (int i = 0; i < tasks.size(); i++) { + print((i + 1) + ". " + tasks.get(i)); } } diff --git a/src/test/java/duke/DeadlineTest.java b/src/test/java/duke/DeadlineTest.java index f39635771d..356cc25bc3 100644 --- a/src/test/java/duke/DeadlineTest.java +++ b/src/test/java/duke/DeadlineTest.java @@ -9,11 +9,13 @@ public class DeadlineTest { @Test public void toStringTest() { - assertEquals("[D][ ] Deadline (by: Dec 16 2022)", new Deadline("Deadline", "2022-12-16").toString()); + assertEquals("[D][ ] Deadline (by: Dec 16 2022)", + new Deadline("Deadline", "2022-12-16").toString()); } @Test public void deadlineTest() { - assertEquals("Sep 16 2022", new Deadline("Deadline", "2022-09-16").deadline.format(DateTimeFormatter.ofPattern("MMM d yyyy"))); + assertEquals("Sep 16 2022", new Deadline("Deadline", "2022-09-16").deadline + .format(DateTimeFormatter.ofPattern("MMM d yyyy"))); } } From 2d794ce4120e39497faf3fdb0e2f7465850078f5 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 16 Sep 2022 23:08:52 +0800 Subject: [PATCH 16/28] Give users a way to find a task by searching for a keyword --- src/main/java/duke/AddCommand.java | 2 +- src/main/java/duke/Duke.java | 13 ++++++++++++- src/main/java/duke/FindCommand.java | 27 +++++++++++++++++++++++++++ src/main/java/duke/Parser.java | 2 ++ src/main/java/duke/Ui.java | 12 +++++++++--- 5 files changed, 51 insertions(+), 5 deletions(-) create mode 100644 src/main/java/duke/FindCommand.java diff --git a/src/main/java/duke/AddCommand.java b/src/main/java/duke/AddCommand.java index 5b02577473..7e08049bf3 100644 --- a/src/main/java/duke/AddCommand.java +++ b/src/main/java/duke/AddCommand.java @@ -31,6 +31,6 @@ public void run(Duke duke) { default: task = new Task(""); // error } - duke.add(task); + duke.addTask(task); } } diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index 5841e70b2a..43962be8af 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -17,7 +17,7 @@ public void start() { ui.close(); } - public void add(Task task) { // error if description is empty + public void addTask(Task task) { // error if description is empty tasks.add(task); ui.addTask(task); ui.infoCount(tasks.size()); @@ -50,6 +50,17 @@ public void deleteTask(int index) { ui.infoCount(tasks.size()); } + /** + * Print all tasks that matches the keyword to the UI. + * + * @param keyword Keyword to match. + */ + public void findTasks(String keyword) { + TaskList matches = (TaskList) tasks.clone(); + matches.removeIf(task -> !task.toString().toLowerCase().contains(keyword.toLowerCase())); + ui.findTasks(matches); + } + public void exit() { isActive = false; } diff --git a/src/main/java/duke/FindCommand.java b/src/main/java/duke/FindCommand.java new file mode 100644 index 0000000000..fc0c188415 --- /dev/null +++ b/src/main/java/duke/FindCommand.java @@ -0,0 +1,27 @@ +package duke; + +/** + * Represents a Command to find tasks in Duke that matches a certain keyword. + */ +public class FindCommand extends Command { + protected String keyword; + + /** + * Constructor of FindCommand with keyword to match. + * + * @param keyword Keyword to match. + */ + public FindCommand(String keyword) { + this.keyword = keyword; + } + + /** + * Run the FindCommand, print all tasks in Duke that matches the keyword to the UI. + * + * @param duke Duke instance to run the AddCommand at. + */ + @Override + public void run(Duke duke) { + duke.findTasks(keyword); + } +} diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index 4e816730f8..f19cea2004 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -30,6 +30,8 @@ public static Command parseInput(String input) { return new MarkCommand(Integer.parseInt(inputParts[1]) - 1, true); case "unmark": return new MarkCommand(Integer.parseInt(inputParts[1]) - 1, false); + case "find": + return new FindCommand(inputParts[1]); case "todo": return new AddCommand('T', inputParts[1]); case "deadline": diff --git a/src/main/java/duke/Ui.java b/src/main/java/duke/Ui.java index 1bde0bbae2..d49c89f066 100644 --- a/src/main/java/duke/Ui.java +++ b/src/main/java/duke/Ui.java @@ -1,8 +1,5 @@ package duke; -import duke.Task; -import duke.TaskList; - import java.util.Scanner; public class Ui { @@ -52,6 +49,15 @@ public void deleteTask(Task task) { print(task.toString()); } + /** + * Print all matching tasks to the UI. + */ + public void findTasks(TaskList tasks) { + print("Here are the matching tasks in your list:"); + for (int i = 0; i < tasks.size(); i++) { + print((i + 1) + ". " + tasks.get(i)); + } + } public void close() { print("Bye. Hope to see you again soon!"); From d7e4287c2b3950be794f3f75b4bf5c591b1abd45 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 18 Sep 2022 13:44:02 +0800 Subject: [PATCH 17/28] Use checkStyle to detect coding style violations --- build.gradle | 5 + config/checkstyle/checkstyle.xml | 434 +++++++++++++++++++++++++++++ config/checkstyle/suppressions.xml | 10 + 3 files changed, 449 insertions(+) create mode 100644 config/checkstyle/checkstyle.xml create mode 100644 config/checkstyle/suppressions.xml diff --git a/build.gradle b/build.gradle index 8a747821a5..649dba0aca 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,11 @@ plugins { id 'java' id 'application' id 'com.github.johnrengelman.shadow' version '5.1.0' + id 'checkstyle' +} + +checkstyle { + toolVersion = '10.2' } repositories { diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml new file mode 100644 index 0000000000..62281d3553 --- /dev/null +++ b/config/checkstyle/checkstyle.xml @@ -0,0 +1,434 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/config/checkstyle/suppressions.xml b/config/checkstyle/suppressions.xml new file mode 100644 index 0000000000..dcaa1af3c3 --- /dev/null +++ b/config/checkstyle/suppressions.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file From 97d8588b892c16ab7a93c52a112fb0dd31051612 Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 18 Sep 2022 18:49:55 +0800 Subject: [PATCH 18/28] Add a GUI to Duke with JavaFX technology --- build.gradle | 15 +++ src/main/java/duke/DialogBox.java | 75 ++++++++++++ src/main/java/duke/Duke.java | 144 +++++++++++++++++++++++- src/main/java/duke/Launcher.java | 12 ++ src/main/java/duke/Main.java | 31 +++++ src/main/java/duke/MainWindow.java | 60 ++++++++++ src/main/java/duke/Ui.java | 16 ++- src/main/resources/images/Duke.png | Bin 0 -> 214023 bytes src/main/resources/images/User.png | Bin 0 -> 32449 bytes src/main/resources/view/DialogBox.fxml | 16 +++ src/main/resources/view/MainWindow.fxml | 19 ++++ 11 files changed, 383 insertions(+), 5 deletions(-) create mode 100644 src/main/java/duke/DialogBox.java create mode 100644 src/main/java/duke/Launcher.java create mode 100644 src/main/java/duke/Main.java create mode 100644 src/main/java/duke/MainWindow.java create mode 100644 src/main/resources/images/Duke.png create mode 100644 src/main/resources/images/User.png create mode 100644 src/main/resources/view/DialogBox.fxml create mode 100644 src/main/resources/view/MainWindow.fxml diff --git a/build.gradle b/build.gradle index 649dba0aca..932e6ff368 100644 --- a/build.gradle +++ b/build.gradle @@ -16,6 +16,21 @@ repositories { dependencies { testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.5.0' testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.5.0' + + String javaFxVersion = '11' + + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-base', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-controls', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-fxml', version: javaFxVersion, classifier: 'linux' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'win' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'mac' + implementation group: 'org.openjfx', name: 'javafx-graphics', version: javaFxVersion, classifier: 'linux' } test { diff --git a/src/main/java/duke/DialogBox.java b/src/main/java/duke/DialogBox.java new file mode 100644 index 0000000000..2492d1f27b --- /dev/null +++ b/src/main/java/duke/DialogBox.java @@ -0,0 +1,75 @@ +package duke; + +import java.io.IOException; +import java.util.Collections; + +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.geometry.Pos; +import javafx.scene.Node; +import javafx.scene.control.Label; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; + +/** + * An example of a custom control using FXML. + * This control represents a dialog box consisting of an ImageView to represent the speaker's face and a label + * containing text from the speaker. + */ +public class DialogBox extends HBox { + @FXML + private Label dialog; + @FXML + private ImageView displayPicture; + + private DialogBox(String text, Image img) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(MainWindow.class.getResource("/view/DialogBox.fxml")); + fxmlLoader.setController(this); + fxmlLoader.setRoot(this); + fxmlLoader.load(); + } catch (IOException e) { + e.printStackTrace(); + } + + dialog.setText(text); + displayPicture.setImage(img); + } + + /** + * Flips the dialog box such that the ImageView is on the left and text on the right. + */ + private void flip() { + ObservableList tmp = FXCollections.observableArrayList(this.getChildren()); + Collections.reverse(tmp); + getChildren().setAll(tmp); + setAlignment(Pos.TOP_LEFT); + } + + /** + * + * + * @param text + * @param img + * @return + */ + public static DialogBox getUserDialog(String text, Image img) { + var db = new DialogBox(text, img); + db.flip(); + return db; + } + + /** + * + * + * @param text + * @param img + * @return + */ + public static DialogBox getDukeDialog(String text, Image img) { + return new DialogBox(text, img); + } +} diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index 82c9211b8c..15ee60c405 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -1,18 +1,38 @@ package duke; +import javafx.application.Application; +import javafx.scene.Scene; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.ScrollPane; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Region; +import javafx.scene.layout.VBox; +import javafx.stage.Stage; + /** * Represents Duke, a Personal Assistant Chatterbot that helps a person to keep track of various things. */ -public class Duke { +public class Duke extends Application { private final Storage storage = new Storage("./duke.txt"); private final TaskList tasks = storage.load(); private final Ui ui = new Ui(); private boolean isActive = true; + private ScrollPane scrollPane; + private VBox dialogContainer; + private TextField userInput; + private Button sendButton; + private Scene scene; + private Image user = new Image(this.getClass().getResourceAsStream("/images/User.png")); + private Image duke = new Image(this.getClass().getResourceAsStream("/images/Duke.png")); + /** * Start the Duke Chatterbot. */ - public void start() { + public void startDuke() { ui.greet(); while (isActive) { String input = ui.read(); @@ -93,7 +113,125 @@ public void exit() { isActive = false; } + /** + * + * + * @param stage + */ + @Override + public void start(Stage stage) { + /* Label helloWorld = new Label("Hello World!"); // Creating a new Label control + Scene scene = new Scene(helloWorld); // Setting the scene to be our Label + + stage.setScene(scene); // Setting the stage to show our screen + stage.show(); // Render the stage. */ + + // Step 1. Setting up required components + + // The container for the content of the chat to scroll. + scrollPane = new ScrollPane(); + dialogContainer = new VBox(); + scrollPane.setContent(dialogContainer); + + userInput = new TextField(); + sendButton = new Button("Send"); + + AnchorPane mainLayout = new AnchorPane(); + mainLayout.getChildren().addAll(scrollPane, userInput, sendButton); + + scene = new Scene(mainLayout); + + stage.setScene(scene); + stage.show(); + + //Step 2. Formatting the window to look as expected + stage.setTitle("Duke"); + stage.setResizable(false); + stage.setMinHeight(600.0); + stage.setMinWidth(400.0); + + mainLayout.setPrefSize(400.0, 600.0); + + scrollPane.setPrefSize(385, 535); + scrollPane.setHbarPolicy(ScrollPane.ScrollBarPolicy.NEVER); + scrollPane.setVbarPolicy(ScrollPane.ScrollBarPolicy.ALWAYS); + + scrollPane.setVvalue(1.0); + scrollPane.setFitToWidth(true); + + // You will need to import `javafx.scene.layout.Region` for this. + dialogContainer.setPrefHeight(Region.USE_COMPUTED_SIZE); + + userInput.setPrefWidth(325.0); + + sendButton.setPrefWidth(55.0); + + AnchorPane.setTopAnchor(scrollPane, 1.0); + + AnchorPane.setBottomAnchor(sendButton, 1.0); + AnchorPane.setRightAnchor(sendButton, 1.0); + + AnchorPane.setLeftAnchor(userInput , 1.0); + AnchorPane.setBottomAnchor(userInput, 1.0); + + //Step 3. Add functionality to handle user input. + sendButton.setOnMouseClicked((event) -> { + handleUserInput(); + }); + + userInput.setOnAction((event) -> { + handleUserInput(); + }); + + // Scroll down to the end every time dialogContainer's height changes. + dialogContainer.heightProperty().addListener((observable) -> scrollPane.setVvalue(1.0)); + } + + /** + * Iteration 1: + * Creates a label with the specified text and adds it to the dialog container. + * @param text String containing text to add + * @return a label with the specified text that has word wrap enabled. + */ + private Label getDialogLabel(String text) { + // You will need to import `javafx.scene.control.Label`. + Label textToAdd = new Label(text); + textToAdd.setWrapText(true); + + return textToAdd; + } + + /** + * Iteration 2: + * Creates two dialog boxes, one echoing user input and the other containing Duke's reply and then appends them to + * the dialog container. Clears the user input after processing. + */ + private void handleUserInput() { + String userText = userInput.getText(); + String dukeText = getResponse(userInput.getText()); + dialogContainer.getChildren().addAll( + DialogBox.getUserDialog(userText, user), + DialogBox.getDukeDialog(dukeText, duke) + ); + userInput.clear(); + } + + /** + * + */ + protected String getResponse(String input) { + Command command = Parser.parseInput(input); + command.run(this); + storage.save(tasks); + return ui.collect(); + } + + /** + * + * + * @param args + */ public static void main(String[] args) { - new Duke().start(); + new Duke().startDuke(); } } diff --git a/src/main/java/duke/Launcher.java b/src/main/java/duke/Launcher.java new file mode 100644 index 0000000000..e4ef6b4628 --- /dev/null +++ b/src/main/java/duke/Launcher.java @@ -0,0 +1,12 @@ +package duke; + +import javafx.application.Application; + +/** + * A launcher class to workaround classpath issues. + */ +public class Launcher { + public static void main(String[] args) { + Application.launch(Main.class, args); + } +} diff --git a/src/main/java/duke/Main.java b/src/main/java/duke/Main.java new file mode 100644 index 0000000000..db593707b5 --- /dev/null +++ b/src/main/java/duke/Main.java @@ -0,0 +1,31 @@ +package duke; + +import java.io.IOException; + +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Scene; +import javafx.scene.layout.AnchorPane; +import javafx.stage.Stage; + +/** + * A GUI for Duke using FXML. + */ +public class Main extends Application { + + private Duke duke = new Duke(); + + @Override + public void start(Stage stage) { + try { + FXMLLoader fxmlLoader = new FXMLLoader(Main.class.getResource("/view/MainWindow.fxml")); + AnchorPane ap = fxmlLoader.load(); + Scene scene = new Scene(ap); + stage.setScene(scene); + fxmlLoader.getController().setDuke(duke); + stage.show(); + } catch (IOException e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/duke/MainWindow.java b/src/main/java/duke/MainWindow.java new file mode 100644 index 0000000000..e172c85894 --- /dev/null +++ b/src/main/java/duke/MainWindow.java @@ -0,0 +1,60 @@ +package duke; + +import javafx.fxml.FXML; +import javafx.scene.control.Button; +import javafx.scene.control.ScrollPane; +import javafx.scene.control.TextField; +import javafx.scene.image.Image; +import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.VBox; + +/** + * Controller for MainWindow. Provides the layout for the other controls. + */ +public class MainWindow extends AnchorPane { + @FXML + private ScrollPane scrollPane; + @FXML + private VBox dialogContainer; + @FXML + private TextField userInput; + @FXML + private Button sendButton; + + private Duke duke; + + private Image userImage = new Image(this.getClass().getResourceAsStream("/images/User.png")); + private Image dukeImage = new Image(this.getClass().getResourceAsStream("/images/Duke.png")); + + /** + * + */ + @FXML + public void initialize() { + scrollPane.vvalueProperty().bind(dialogContainer.heightProperty()); + } + + /** + * + * + * @param d + */ + public void setDuke(Duke d) { + duke = d; + } + + /** + * Creates two dialog boxes, one echoing user input and the other containing Duke's reply and then appends them to + * the dialog container. Clears the user input after processing. + */ + @FXML + private void handleUserInput() { + String input = userInput.getText(); + String response = duke.getResponse(input); + dialogContainer.getChildren().addAll( + DialogBox.getUserDialog(input, userImage), + DialogBox.getDukeDialog(response, dukeImage) + ); + userInput.clear(); + } +} diff --git a/src/main/java/duke/Ui.java b/src/main/java/duke/Ui.java index f447ce068a..76cd3809a6 100644 --- a/src/main/java/duke/Ui.java +++ b/src/main/java/duke/Ui.java @@ -6,7 +6,8 @@ * Represents the UI component of Duke. */ public class Ui { - public Scanner sc = new Scanner(System.in); + private Scanner sc = new Scanner(System.in); + private String output = ""; /** * Prints a String to the UI. @@ -14,7 +15,7 @@ public class Ui { * @param string String to print. */ public void print(String string) { - System.out.println(string); + output += string + '\n'; } /** @@ -107,6 +108,17 @@ public void findTasks(TaskList tasks) { } } + /** + * Collects the output accumulated by the UI, returns it, and resets the UI output. + * + * @return Output accumulated in the UI. + */ + public String collect() { + String temp = output; + output = ""; + return temp; + } + /** * Prints a goodbye message and closes the UI. */ diff --git a/src/main/resources/images/Duke.png b/src/main/resources/images/Duke.png new file mode 100644 index 0000000000000000000000000000000000000000..961890be4e1682dca0b11eb96d5e0266b03aeaba GIT binary patch literal 214023 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°dJ?+>K5Ui4V#WN_qYR$>&2HOzVId5tqT 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 + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/view/MainWindow.fxml b/src/main/resources/view/MainWindow.fxml new file mode 100644 index 0000000000..44d4d7e42c --- /dev/null +++ b/src/main/resources/view/MainWindow.fxml @@ -0,0 +1,19 @@ + + + + + + + + + + + +