From 43b3d5506eb1fb004e0d63fce904cba4dfca9b3c Mon Sep 17 00:00:00 2001 From: Edward Alvin Date: Sat, 29 Jan 2022 12:57:03 +0800 Subject: [PATCH 01/10] Create an echo() and replyBye() method for Duke --- src/main/java/Duke.java | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 5d313334cc..4fb8cac31a 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,10 +1,36 @@ +import java.util.Scanner; + public class Duke { + static final String BYE = "bye"; public static void main(String[] args) { + Scanner sc = new Scanner(System.in); + String logo = " ____ _ \n" + "| _ \\ _ _| | _____ \n" + "| | | | | | | |/ / _ \\\n" + "| |_| | |_| | < __/\n" + "|____/ \\__,_|_|\\_\\___|\n"; System.out.println("Hello from\n" + logo); + String input = sc.nextLine(); + while (!isBye(input)) { + echo(input); + input = sc.nextLine(); + } + replyBye(); + } + + public static void echo(String words) { + System.out.println("------------------------------------"); + System.out.println(words); + System.out.println("------------------------------------"); + System.out.println(""); + } + + public static boolean isBye(String word) { + return Duke.BYE.equals(word); + } + + public static void replyBye() { + System.out.println("Bye. Hope to see you again soon!"); } } From 319056f08bf9f005e5f9cdab0ee208537d24ebb5 Mon Sep 17 00:00:00 2001 From: Edward Alvin Date: Sat, 29 Jan 2022 13:00:02 +0800 Subject: [PATCH 02/10] Add welcome message for Duke --- src/main/java/Duke.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 4fb8cac31a..eafacb8e04 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -12,6 +12,8 @@ public static void main(String[] args) { + "|____/ \\__,_|_|\\_\\___|\n"; System.out.println("Hello from\n" + logo); String input = sc.nextLine(); + + replyWelcomeMessage(); while (!isBye(input)) { echo(input); input = sc.nextLine(); @@ -30,6 +32,10 @@ public static boolean isBye(String word) { return Duke.BYE.equals(word); } + public static void replyWelcomeMessage() { + System.out.println("Hello! I'm Duke"); + System.out.println("What can I do for you?"); + } public static void replyBye() { System.out.println("Bye. Hope to see you again soon!"); } From 0688e256092161315bc78b543e222ee01191615c Mon Sep 17 00:00:00 2001 From: Edward Alvin Date: Sat, 29 Jan 2022 13:50:00 +0800 Subject: [PATCH 03/10] Implement word list into Duke --- src/main/java/Duke.java | 43 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index eafacb8e04..a06e09dd76 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,7 +1,12 @@ +import java.lang.reflect.Array; +import java.util.ArrayList; import java.util.Scanner; public class Duke { static final String BYE = "bye"; + static final String LIST = "list"; + static final ArrayList textHistory = new ArrayList<>(); + public static void main(String[] args) { Scanner sc = new Scanner(System.in); @@ -11,19 +16,45 @@ public static void main(String[] args) { + "| |_| | |_| | < __/\n" + "|____/ \\__,_|_|\\_\\___|\n"; System.out.println("Hello from\n" + logo); - String input = sc.nextLine(); replyWelcomeMessage(); - while (!isBye(input)) { - echo(input); + String input = ""; + while (true) { input = sc.nextLine(); + if (isList(input)) { + printHistory(); + continue; + } + + if (isBye(input)) { + break; + } + + echo(input); + storeWord(input); } replyBye(); } + public static void storeWord(String word) { + Duke.textHistory.add(word); + } + + public static void printHistory() { + int i = 1; + System.out.println("------------------------------------"); + for(String word: Duke.textHistory) { + System.out.println(i + ". " + word); + } + System.out.println("------------------------------------"); + System.out.println(""); + } + +// public static void displayResult() + public static void echo(String words) { System.out.println("------------------------------------"); - System.out.println(words); + System.out.println("added: " + words); System.out.println("------------------------------------"); System.out.println(""); } @@ -32,6 +63,10 @@ public static boolean isBye(String word) { return Duke.BYE.equals(word); } + public static boolean isList(String word) { + return Duke.LIST.equals(word); + } + public static void replyWelcomeMessage() { System.out.println("Hello! I'm Duke"); System.out.println("What can I do for you?"); From 53466c70c27e537ca467097ef80a68ff8c5b42c4 Mon Sep 17 00:00:00 2001 From: Edward Alvin Date: Sat, 29 Jan 2022 14:28:59 +0800 Subject: [PATCH 04/10] Implement marking/unmarking of word list in Duke --- src/main/java/Duke.java | 51 +++++++++++++++++++++++++++++---- src/main/java/WordListItem.java | 23 +++++++++++++++ 2 files changed, 69 insertions(+), 5 deletions(-) create mode 100644 src/main/java/WordListItem.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index a06e09dd76..3b74aeddf0 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -5,7 +5,9 @@ public class Duke { static final String BYE = "bye"; static final String LIST = "list"; - static final ArrayList textHistory = new ArrayList<>(); + static final String MARK = "mark"; + static final String UNMARK = "unmark"; + static final ArrayList textHistory = new ArrayList<>(); public static void main(String[] args) { Scanner sc = new Scanner(System.in); @@ -21,11 +23,27 @@ public static void main(String[] args) { String input = ""; while (true) { input = sc.nextLine(); + if (input.isEmpty()) { + warnEmpty(); + continue; + } if (isList(input)) { printHistory(); continue; } + if (isMark(input)) { + int itemNumber = Integer.parseInt(input.substring(5)); + markItem(itemNumber); + continue; + } + + if (isUnmark(input)) { + int itemNumber = Integer.parseInt(input.substring(7)); + unmarkItem(itemNumber); + continue; + } + if (isBye(input)) { break; } @@ -37,20 +55,31 @@ public static void main(String[] args) { } public static void storeWord(String word) { - Duke.textHistory.add(word); + Duke.textHistory.add(new WordListItem(word)); } public static void printHistory() { int i = 1; System.out.println("------------------------------------"); - for(String word: Duke.textHistory) { - System.out.println(i + ". " + word); + for(WordListItem wordListItem: Duke.textHistory) { + System.out.println(i + ". " + wordListItem); + i++; } System.out.println("------------------------------------"); System.out.println(""); } -// public static void displayResult() + public static void markItem(int itemNumber) { + Duke.textHistory.get(itemNumber - 1).markItem(); + System.out.println("Nice! I've marked this task as done: "); + System.out.println(" " + Duke.textHistory.get(itemNumber - 1)); + } + + public static void unmarkItem(int itemNumber) { + Duke.textHistory.get(itemNumber - 1).unmarkItem(); + System.out.println("Nice! I've marked this task as not done: "); + System.out.println(" " + Duke.textHistory.get(itemNumber - 1)); + } public static void echo(String words) { System.out.println("------------------------------------"); @@ -63,6 +92,14 @@ public static boolean isBye(String word) { return Duke.BYE.equals(word); } + public static boolean isMark(String word) { + return word.startsWith(Duke.MARK); + } + + public static boolean isUnmark(String word) { + return word.startsWith(Duke.UNMARK); + } + public static boolean isList(String word) { return Duke.LIST.equals(word); } @@ -71,6 +108,10 @@ public static void replyWelcomeMessage() { System.out.println("Hello! I'm Duke"); System.out.println("What can I do for you?"); } + + public static void warnEmpty() { + System.out.println("input is Empty!"); + } public static void replyBye() { System.out.println("Bye. Hope to see you again soon!"); } diff --git a/src/main/java/WordListItem.java b/src/main/java/WordListItem.java new file mode 100644 index 0000000000..9771578382 --- /dev/null +++ b/src/main/java/WordListItem.java @@ -0,0 +1,23 @@ +public class WordListItem { + private String description; + private boolean isDone; + + public WordListItem(String description) { + this.description = description; + this.isDone = false; + } + + public void markItem() { + this.isDone = true; + } + + public void unmarkItem() { + this.isDone = false; + } + + @Override + public String toString() { + String doneSymbol = isDone ? "[X]" : "[ ]"; + return doneSymbol + " " + this.description; + } +} From be0072b1cfce62fc0529d20201425484804ea855 Mon Sep 17 00:00:00 2001 From: Edward Alvin Date: Sat, 29 Jan 2022 14:41:14 +0800 Subject: [PATCH 05/10] Refactor word list into its own class --- src/main/java/Duke.java | 42 +++++++------------------------------ src/main/java/WordList.java | 42 +++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 35 deletions(-) create mode 100644 src/main/java/WordList.java diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 3b74aeddf0..26e66f3d47 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,5 +1,3 @@ -import java.lang.reflect.Array; -import java.util.ArrayList; import java.util.Scanner; public class Duke { @@ -7,10 +5,11 @@ public class Duke { static final String LIST = "list"; static final String MARK = "mark"; static final String UNMARK = "unmark"; - static final ArrayList textHistory = new ArrayList<>(); + static WordList wordList; public static void main(String[] args) { Scanner sc = new Scanner(System.in); + wordList = new WordList(); String logo = " ____ _ \n" + "| _ \\ _ _| | _____ \n" @@ -20,7 +19,7 @@ public static void main(String[] args) { System.out.println("Hello from\n" + logo); replyWelcomeMessage(); - String input = ""; + String input; while (true) { input = sc.nextLine(); if (input.isEmpty()) { @@ -28,19 +27,19 @@ public static void main(String[] args) { continue; } if (isList(input)) { - printHistory(); + wordList.printList(); continue; } if (isMark(input)) { int itemNumber = Integer.parseInt(input.substring(5)); - markItem(itemNumber); + wordList.markItem(itemNumber); continue; } if (isUnmark(input)) { int itemNumber = Integer.parseInt(input.substring(7)); - unmarkItem(itemNumber); + wordList.unmarkItem(itemNumber); continue; } @@ -49,38 +48,11 @@ public static void main(String[] args) { } echo(input); - storeWord(input); + wordList.storeWord(input); } replyBye(); } - public static void storeWord(String word) { - Duke.textHistory.add(new WordListItem(word)); - } - - public static void printHistory() { - int i = 1; - System.out.println("------------------------------------"); - for(WordListItem wordListItem: Duke.textHistory) { - System.out.println(i + ". " + wordListItem); - i++; - } - System.out.println("------------------------------------"); - System.out.println(""); - } - - public static void markItem(int itemNumber) { - Duke.textHistory.get(itemNumber - 1).markItem(); - System.out.println("Nice! I've marked this task as done: "); - System.out.println(" " + Duke.textHistory.get(itemNumber - 1)); - } - - public static void unmarkItem(int itemNumber) { - Duke.textHistory.get(itemNumber - 1).unmarkItem(); - System.out.println("Nice! I've marked this task as not done: "); - System.out.println(" " + Duke.textHistory.get(itemNumber - 1)); - } - public static void echo(String words) { System.out.println("------------------------------------"); System.out.println("added: " + words); diff --git a/src/main/java/WordList.java b/src/main/java/WordList.java new file mode 100644 index 0000000000..988f407411 --- /dev/null +++ b/src/main/java/WordList.java @@ -0,0 +1,42 @@ +import java.util.ArrayList; + +public class WordList { + private ArrayList wordList; + + public WordList() { + this.wordList = new ArrayList<>(); + } + + public void storeWord(String word) { + this.wordList.add(new WordListItem(word)); + } + + public void markItem(int itemNumber) { + this.wordList.get(itemNumber - 1).markItem(); + System.out.println("Nice! I've marked this task as done: "); + System.out.println(" " + this.wordList.get(itemNumber - 1)); + } + + public void unmarkItem(int itemNumber) { + this.wordList.get(itemNumber - 1).unmarkItem(); + System.out.println("Nice! I've marked this task as not done: "); + System.out.println(" " + this.wordList.get(itemNumber - 1)); + } + + public void printList() { + System.out.println(this); + } + + @Override + public String toString() { + int i = 1; + String str = ""; + str += "------------------------------------\n"; + for(WordListItem wordListItem: this.wordList) { + str += i + ". " + wordListItem + "\n"; + i++; + } + str += "------------------------------------\n"; + return str; + } +} From e8e109238a1a6d66963410960f69268ddb3aa21d Mon Sep 17 00:00:00 2001 From: Edward Alvin Date: Sun, 30 Jan 2022 00:24:40 +0800 Subject: [PATCH 06/10] Create class Todo, Deadline, and Event --- src/main/java/Deadline.java | 14 ++++++++++++++ src/main/java/Event.java | 14 ++++++++++++++ src/main/java/Todo.java | 12 ++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 src/main/java/Deadline.java create mode 100644 src/main/java/Event.java create mode 100644 src/main/java/Todo.java diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java new file mode 100644 index 0000000000..43ee62d8d8 --- /dev/null +++ b/src/main/java/Deadline.java @@ -0,0 +1,14 @@ +public class Deadline extends WordListItem{ + static private final String SYMBOL = "[D]"; + private String datetime; + + public Deadline(String description, String datetime) { + super(description); + this.datetime = datetime; + } + + @Override + public String toString() { + return SYMBOL + super.toString() + "(by: " + this.datetime + ")"; + } +} diff --git a/src/main/java/Event.java b/src/main/java/Event.java new file mode 100644 index 0000000000..014010688a --- /dev/null +++ b/src/main/java/Event.java @@ -0,0 +1,14 @@ +public class Event extends WordListItem{ + static private final String SYMBOL = "[E]"; + private String datetime; + + public Event(String description, String datetime) { + super(description); + this.datetime = datetime; + } + + @Override + public String toString() { + return SYMBOL + super.toString() + "(at: " + this.datetime + ")"; + } +} diff --git a/src/main/java/Todo.java b/src/main/java/Todo.java new file mode 100644 index 0000000000..6aa3a599a4 --- /dev/null +++ b/src/main/java/Todo.java @@ -0,0 +1,12 @@ +public class Todo extends WordListItem{ + static private final String SYMBOL = "[T]"; + + public Todo(String description) { + super(description); + } + + @Override + public String toString() { + return SYMBOL + super.toString(); + } +} From a4f055265b01542ef532b8e724705990248a3147 Mon Sep 17 00:00:00 2001 From: Edward Alvin Date: Sun, 30 Jan 2022 13:59:46 +0800 Subject: [PATCH 07/10] Refactor code using InputType enum and an InputParser --- src/main/java/InputParser.java | 14 ++++++++++++++ src/main/java/InputType.java | 14 ++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 src/main/java/InputParser.java create mode 100644 src/main/java/InputType.java diff --git a/src/main/java/InputParser.java b/src/main/java/InputParser.java new file mode 100644 index 0000000000..4de24393e3 --- /dev/null +++ b/src/main/java/InputParser.java @@ -0,0 +1,14 @@ +public class InputParser { + static Object[] parseInput(String input) { + InputType type = InputType.NONE; + String value = input; + for(InputType inputType: InputType.values()) { + if (input.startsWith(inputType.label)) { + value = input.substring(inputType.label.length() + 1); + type = inputType; + return new Object[]{type, value}; + } + } + return new Object[]{type, value}; + } +} diff --git a/src/main/java/InputType.java b/src/main/java/InputType.java new file mode 100644 index 0000000000..aaee755d67 --- /dev/null +++ b/src/main/java/InputType.java @@ -0,0 +1,14 @@ +public enum InputType { + BYE("bye"), + LIST("list"), + MARK("mark"), + UNMARK("unmark"), + NONE("none"); + + public final String label; + + private InputType(String label) { + this.label = label; + } + +} From b0bfa5459355dc91aa2936d9c945162e066c6694 Mon Sep 17 00:00:00 2001 From: Edward Alvin Date: Sun, 30 Jan 2022 14:38:13 +0800 Subject: [PATCH 08/10] Refactor Duke with processInput() and move sout() statements to WordList --- src/main/java/Duke.java | 68 +++++++++++++------------------------ src/main/java/WordList.java | 7 ++++ 2 files changed, 30 insertions(+), 45 deletions(-) diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 26e66f3d47..91ad9596a4 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -1,10 +1,6 @@ import java.util.Scanner; public class Duke { - static final String BYE = "bye"; - static final String LIST = "list"; - static final String MARK = "mark"; - static final String UNMARK = "unmark"; static WordList wordList; public static void main(String[] args) { @@ -26,54 +22,36 @@ public static void main(String[] args) { warnEmpty(); continue; } - if (isList(input)) { - wordList.printList(); - continue; - } - - if (isMark(input)) { - int itemNumber = Integer.parseInt(input.substring(5)); - wordList.markItem(itemNumber); - continue; - } - if (isUnmark(input)) { - int itemNumber = Integer.parseInt(input.substring(7)); - wordList.unmarkItem(itemNumber); - continue; - } + Object[] parseResult = InputParser.parseInput(input); + InputType inputType = (InputType) parseResult[0]; + String value = (String) parseResult[1]; - if (isBye(input)) { + processInput(inputType, value); + if (inputType == InputType.BYE) { break; } - - echo(input); - wordList.storeWord(input); } - replyBye(); - } - - public static void echo(String words) { - System.out.println("------------------------------------"); - System.out.println("added: " + words); - System.out.println("------------------------------------"); - System.out.println(""); - } - - public static boolean isBye(String word) { - return Duke.BYE.equals(word); - } - - public static boolean isMark(String word) { - return word.startsWith(Duke.MARK); } - public static boolean isUnmark(String word) { - return word.startsWith(Duke.UNMARK); - } - - public static boolean isList(String word) { - return Duke.LIST.equals(word); + public static void processInput(InputType inputType, String value) { + switch(inputType) { + case LIST: + wordList.printList(); + break; + case MARK: + wordList.markItem(Integer.parseInt(value)); + break; + case UNMARK: + wordList.unmarkItem(Integer.parseInt(value)); + break; + case BYE: + replyBye(); + break; + case NONE: + wordList.storeWord(value); + break; + } } public static void replyWelcomeMessage() { diff --git a/src/main/java/WordList.java b/src/main/java/WordList.java index 988f407411..9e6960d30f 100644 --- a/src/main/java/WordList.java +++ b/src/main/java/WordList.java @@ -9,6 +9,9 @@ public WordList() { public void storeWord(String word) { this.wordList.add(new WordListItem(word)); + System.out.println(" ------------------------------------"); + System.out.println(" added: " + word); + System.out.println(" ------------------------------------"); } public void markItem(int itemNumber) { @@ -27,6 +30,10 @@ public void printList() { System.out.println(this); } + public int length() { + return this.wordList.size(); + } + @Override public String toString() { int i = 1; From 4dcb935709362687da0788827c7a4c124dcd9548 Mon Sep 17 00:00:00 2001 From: Edward Alvin Date: Sun, 30 Jan 2022 14:44:07 +0800 Subject: [PATCH 09/10] Hotfix minor bug in InputParser --- src/main/java/InputParser.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/InputParser.java b/src/main/java/InputParser.java index 4de24393e3..3373555220 100644 --- a/src/main/java/InputParser.java +++ b/src/main/java/InputParser.java @@ -4,7 +4,10 @@ static Object[] parseInput(String input) { String value = input; for(InputType inputType: InputType.values()) { if (input.startsWith(inputType.label)) { - value = input.substring(inputType.label.length() + 1); + value = ""; + if (inputType.label.length() < input.length()) { + value = input.substring(inputType.label.length() + 1); + } type = inputType; return new Object[]{type, value}; } From 888a7b80f002e634fbe1af03b5e97d8a587357e3 Mon Sep 17 00:00:00 2001 From: Edward Alvin Date: Sun, 30 Jan 2022 15:31:24 +0800 Subject: [PATCH 10/10] Refactor and adjust WordList as well as Duke to adjust with Todo, Deadline, and Event --- src/main/java/Deadline.java | 2 +- src/main/java/Duke.java | 18 +++++++++++++----- src/main/java/Event.java | 2 +- src/main/java/InputParser.java | 26 ++++++++++++++++++++++---- src/main/java/InputType.java | 3 +++ src/main/java/WordList.java | 24 +++++++++++++++++++++--- 6 files changed, 61 insertions(+), 14 deletions(-) diff --git a/src/main/java/Deadline.java b/src/main/java/Deadline.java index 43ee62d8d8..bbbdb034df 100644 --- a/src/main/java/Deadline.java +++ b/src/main/java/Deadline.java @@ -9,6 +9,6 @@ public Deadline(String description, String datetime) { @Override public String toString() { - return SYMBOL + super.toString() + "(by: " + this.datetime + ")"; + return SYMBOL + super.toString() + " (by: " + this.datetime + ")"; } } diff --git a/src/main/java/Duke.java b/src/main/java/Duke.java index 91ad9596a4..5148c154ac 100644 --- a/src/main/java/Duke.java +++ b/src/main/java/Duke.java @@ -25,7 +25,7 @@ public static void main(String[] args) { Object[] parseResult = InputParser.parseInput(input); InputType inputType = (InputType) parseResult[0]; - String value = (String) parseResult[1]; + String[] value = (String[]) parseResult[1]; processInput(inputType, value); if (inputType == InputType.BYE) { @@ -34,22 +34,30 @@ public static void main(String[] args) { } } - public static void processInput(InputType inputType, String value) { + public static void processInput(InputType inputType, String[] value) { switch(inputType) { case LIST: wordList.printList(); break; case MARK: - wordList.markItem(Integer.parseInt(value)); + wordList.markItem(Integer.parseInt(value[0])); break; case UNMARK: - wordList.unmarkItem(Integer.parseInt(value)); + wordList.unmarkItem(Integer.parseInt(value[0])); + break; + case TODO: + wordList.storeTodo(value[0]); + break; + case DEADLINE: + wordList.storeDeadline(value[0], value[1]); + break; + case EVENT: + wordList.storeEvent(value[0], value[1]); break; case BYE: replyBye(); break; case NONE: - wordList.storeWord(value); break; } } diff --git a/src/main/java/Event.java b/src/main/java/Event.java index 014010688a..44576accda 100644 --- a/src/main/java/Event.java +++ b/src/main/java/Event.java @@ -9,6 +9,6 @@ public Event(String description, String datetime) { @Override public String toString() { - return SYMBOL + super.toString() + "(at: " + this.datetime + ")"; + return SYMBOL + super.toString() + " (at: " + this.datetime + ")"; } } diff --git a/src/main/java/InputParser.java b/src/main/java/InputParser.java index 3373555220..e515a454c8 100644 --- a/src/main/java/InputParser.java +++ b/src/main/java/InputParser.java @@ -1,13 +1,31 @@ public class InputParser { static Object[] parseInput(String input) { InputType type = InputType.NONE; - String value = input; + String[] value = new String[]{ input }; for(InputType inputType: InputType.values()) { + if (inputType == InputType.NONE) { + continue; + } + if (input.startsWith(inputType.label)) { - value = ""; - if (inputType.label.length() < input.length()) { - value = input.substring(inputType.label.length() + 1); + if (inputType == InputType.BYE || inputType == InputType.LIST) { + value = new String[]{}; + } else if (inputType == InputType.TODO || inputType == InputType.MARK + || inputType == InputType.UNMARK) { + String description = input.substring(inputType.label.length() + 1); + value = new String[]{description}; + } else if (inputType == InputType.DEADLINE) { + int datetimeIndex = input.indexOf("/by"); + String description = input.substring(inputType.label.length() + 1, datetimeIndex - 1); + String datetime = input.substring(datetimeIndex + 4); + value = new String[]{description, datetime}; + } else if (inputType == InputType.EVENT) { + int datetimeIndex = input.indexOf("/at"); + String description = input.substring(inputType.label.length() + 1, datetimeIndex - 1); + String datetime = input.substring(datetimeIndex + 4); + value = new String[]{description, datetime}; } + type = inputType; return new Object[]{type, value}; } diff --git a/src/main/java/InputType.java b/src/main/java/InputType.java index aaee755d67..8d2d2f2fce 100644 --- a/src/main/java/InputType.java +++ b/src/main/java/InputType.java @@ -1,6 +1,9 @@ public enum InputType { BYE("bye"), LIST("list"), + DEADLINE("deadline"), + EVENT("event"), + TODO("todo"), MARK("mark"), UNMARK("unmark"), NONE("none"); diff --git a/src/main/java/WordList.java b/src/main/java/WordList.java index 9e6960d30f..171ee8e70d 100644 --- a/src/main/java/WordList.java +++ b/src/main/java/WordList.java @@ -7,13 +7,31 @@ public WordList() { this.wordList = new ArrayList<>(); } - public void storeWord(String word) { - this.wordList.add(new WordListItem(word)); + private void echoAddedItem(WordListItem wordListItem) { System.out.println(" ------------------------------------"); - System.out.println(" added: " + word); + System.out.println(" Got it. I've added this task: "); + System.out.println(" " + wordListItem); System.out.println(" ------------------------------------"); } + public void storeTodo(String word) { + WordListItem todo = new Todo(word); + this.wordList.add(todo); + echoAddedItem(todo); + } + + public void storeDeadline(String word, String datetime) { + WordListItem deadline = new Deadline(word, datetime); + this.wordList.add(deadline); + echoAddedItem(deadline); + } + + public void storeEvent(String word, String datetime) { + WordListItem event = new Event(word, datetime); + this.wordList.add(event); + echoAddedItem(event); + } + public void markItem(int itemNumber) { this.wordList.get(itemNumber - 1).markItem(); System.out.println("Nice! I've marked this task as done: ");