diff --git a/src/main/java/duke/Duke.java b/src/main/java/duke/Duke.java index b363084ab8..47b7019b09 100644 --- a/src/main/java/duke/Duke.java +++ b/src/main/java/duke/Duke.java @@ -2,11 +2,23 @@ import java.io.IOException; +import duke.exception.InvalidDataException; +import duke.exception.InvalidTypeException; +import duke.misc.Parser; +import duke.misc.TaskList; + public class Duke { private TaskList taskList; private Parser parser; + /** + * Constructor for Duke class + */ + public Duke() { + taskList = new TaskList(); + } + /** * Function to get Duke's response to user inputs. * @@ -27,11 +39,4 @@ public String getResponse(String input) { } return parser.allocate(input, taskList); } - - /** - * Constructor for Duke class - */ - public Duke() { - taskList = new TaskList(); - } } diff --git a/src/main/java/duke/DukeException.java b/src/main/java/duke/exception/DukeException.java similarity index 92% rename from src/main/java/duke/DukeException.java rename to src/main/java/duke/exception/DukeException.java index 6f4b58138f..95a7c0417b 100644 --- a/src/main/java/duke/DukeException.java +++ b/src/main/java/duke/exception/DukeException.java @@ -1,4 +1,4 @@ -package duke; +package duke.exception; /** * Exception class unique to Duke. diff --git a/src/main/java/duke/InvalidDataException.java b/src/main/java/duke/exception/InvalidDataException.java similarity index 92% rename from src/main/java/duke/InvalidDataException.java rename to src/main/java/duke/exception/InvalidDataException.java index 5781b64bd9..bda91727e5 100644 --- a/src/main/java/duke/InvalidDataException.java +++ b/src/main/java/duke/exception/InvalidDataException.java @@ -1,4 +1,4 @@ -package duke; +package duke.exception; /** * Invalid Data Exception that extends Duke Exception class. diff --git a/src/main/java/duke/InvalidDescriptionException.java b/src/main/java/duke/exception/InvalidDescriptionException.java similarity index 93% rename from src/main/java/duke/InvalidDescriptionException.java rename to src/main/java/duke/exception/InvalidDescriptionException.java index b6204e1ce9..0c177af2d1 100644 --- a/src/main/java/duke/InvalidDescriptionException.java +++ b/src/main/java/duke/exception/InvalidDescriptionException.java @@ -1,4 +1,4 @@ -package duke; +package duke.exception; /** * Invalid Description Exception that extends Duke Exception class. diff --git a/src/main/java/duke/InvalidIndexException.java b/src/main/java/duke/exception/InvalidIndexException.java similarity index 92% rename from src/main/java/duke/InvalidIndexException.java rename to src/main/java/duke/exception/InvalidIndexException.java index ee411385ef..35efa5ebe4 100644 --- a/src/main/java/duke/InvalidIndexException.java +++ b/src/main/java/duke/exception/InvalidIndexException.java @@ -1,4 +1,4 @@ -package duke; +package duke.exception; /** * Invalid Index Exception that extends Duke Exception class. diff --git a/src/main/java/duke/InvalidTypeException.java b/src/main/java/duke/exception/InvalidTypeException.java similarity index 92% rename from src/main/java/duke/InvalidTypeException.java rename to src/main/java/duke/exception/InvalidTypeException.java index 1219cc9ec9..791674d63b 100644 --- a/src/main/java/duke/InvalidTypeException.java +++ b/src/main/java/duke/exception/InvalidTypeException.java @@ -1,4 +1,4 @@ -package duke; +package duke.exception; /** * Invalid Type Exception that extends Duke Exception class. diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/misc/Parser.java similarity index 92% rename from src/main/java/duke/Parser.java rename to src/main/java/duke/misc/Parser.java index 4c58cd63d3..5f259b5e1a 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/misc/Parser.java @@ -1,7 +1,15 @@ -package duke; +package duke.misc; import java.io.IOException; +import duke.exception.InvalidDescriptionException; +import duke.exception.InvalidIndexException; +import duke.exception.InvalidTypeException; +import duke.task.Deadline; +import duke.task.Event; +import duke.task.Task; +import duke.task.Todo; + /** * Parser class to handle user inputs. */ diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/misc/Storage.java similarity index 94% rename from src/main/java/duke/Storage.java rename to src/main/java/duke/misc/Storage.java index 8789185343..5e698d75b6 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/misc/Storage.java @@ -1,4 +1,4 @@ -package duke; +package duke.misc; import java.io.BufferedReader; import java.io.FileReader; @@ -10,6 +10,13 @@ import java.nio.file.Paths; import java.util.ArrayList; +import duke.exception.InvalidDataException; +import duke.exception.InvalidTypeException; +import duke.task.Deadline; +import duke.task.Event; +import duke.task.Task; +import duke.task.Todo; + /** * Storage class that interacts with the .txt file to store and retrieve data. */ diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/misc/TaskList.java similarity index 89% rename from src/main/java/duke/TaskList.java rename to src/main/java/duke/misc/TaskList.java index d1fda62f01..2c3e817465 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/misc/TaskList.java @@ -1,8 +1,14 @@ -package duke; +package duke.misc; import java.io.IOException; import java.util.ArrayList; +import duke.exception.InvalidDataException; +import duke.exception.InvalidDescriptionException; +import duke.exception.InvalidIndexException; +import duke.exception.InvalidTypeException; +import duke.task.Task; + /** * TaskList class to store all the tasks in Duke. */ @@ -18,15 +24,21 @@ public TaskList() { this.items = new ArrayList<>(); } + /** + * Function to read in data from .txt file. + * @throws IOException In case data has errors + * @throws InvalidTypeException In cases data has an invalid type. + * @throws InvalidDataException In case data is invalid. + */ public void initialise() throws IOException, InvalidTypeException, InvalidDataException { try { this.items = this.storage.readData(); - } catch (IOException e) { - throw e; } catch (InvalidTypeException e) { throw e; } catch (InvalidDataException e) { throw e; + } catch (IOException e) { + throw e; } } diff --git a/src/main/java/duke/Ui.java b/src/main/java/duke/misc/Ui.java similarity index 82% rename from src/main/java/duke/Ui.java rename to src/main/java/duke/misc/Ui.java index 9f1cc0906e..69766f003e 100644 --- a/src/main/java/duke/Ui.java +++ b/src/main/java/duke/misc/Ui.java @@ -1,15 +1,14 @@ -package duke; +package duke.misc; /** * UI class to handle aesthetics of Duke. */ public class Ui { - private static final String OPENING = " ____ _ \n" + static final String OPENING = " ____ _ \n" + "| _ \\ _ _| | _____ \n" + "| | | | | | | |/ / _ \\\n" + "| |_| | |_| | < __/\n" + "|____/ \\__,_|_|\\_\\___|\n"; - - static final String WELCOME = OPENING + "\nHello I am Duke!\nWhat can I help you with?"; static final String GOODBYE = "Goodbye. See you soon!"; + static final String WELCOME = OPENING + "\nHello I am Duke!\nWhat can I help you with?"; } diff --git a/src/main/java/duke/DateTime.java b/src/main/java/duke/task/DateTime.java similarity index 95% rename from src/main/java/duke/DateTime.java rename to src/main/java/duke/task/DateTime.java index e3a8814f33..4901fdcb4c 100644 --- a/src/main/java/duke/DateTime.java +++ b/src/main/java/duke/task/DateTime.java @@ -1,4 +1,4 @@ -package duke; +package duke.task; import java.time.LocalDate; import java.time.format.DateTimeFormatter; @@ -22,8 +22,6 @@ public class DateTime { public DateTime(String date) { if (isValidFormat(date)) { this.date = LocalDate.parse(date); - } else { - System.out.println(INVALID_DATE_MESSAGE); } } diff --git a/src/main/java/duke/Deadline.java b/src/main/java/duke/task/Deadline.java similarity index 88% rename from src/main/java/duke/Deadline.java rename to src/main/java/duke/task/Deadline.java index c420fce488..8e7af19826 100644 --- a/src/main/java/duke/Deadline.java +++ b/src/main/java/duke/task/Deadline.java @@ -1,10 +1,10 @@ -package duke; +package duke.task; /** * Deadline class for tasks that have a set deadline. */ public class Deadline extends Task { - static final String symbol = "D"; + static final String SYMBOL = "D"; private DateTime deadline; /** @@ -38,7 +38,7 @@ public Deadline(String title, boolean isComplete, String deadline) { @Override public String saveString() { int completeSymbol = this.complete ? 1 : 0; - return String.format("%s|%d|%s|%s", symbol, completeSymbol, this.title, this.deadline.saveString()); + return String.format("%s|%d|%s|%s", SYMBOL, completeSymbol, this.title, this.deadline.saveString()); } /** @@ -49,6 +49,6 @@ public String saveString() { @Override public String toString() { String completeSymbol = this.complete ? "[/]" : "[X]"; - return String.format("[%s]%s %s (by: %s)", symbol, completeSymbol, this.title, this.deadline); + return String.format("[%s]%s %s (by: %s)", SYMBOL, completeSymbol, this.title, this.deadline); } } diff --git a/src/main/java/duke/Event.java b/src/main/java/duke/task/Event.java similarity index 87% rename from src/main/java/duke/Event.java rename to src/main/java/duke/task/Event.java index 8b37757da3..36f2e8f9aa 100644 --- a/src/main/java/duke/Event.java +++ b/src/main/java/duke/task/Event.java @@ -1,10 +1,10 @@ -package duke; +package duke.task; /** * Event class for tasks that have a set timing. */ public class Event extends Task { - static final String symbol = "E"; + static final String SYMBOL = "E"; private DateTime time; /** @@ -38,7 +38,7 @@ public Event(String title, boolean isComplete, String time) { @Override public String saveString() { int completeSymbol = this.complete ? 1 : 0; - return String.format("%s|%d|%s|%s", symbol, completeSymbol, this.title, this.time.saveString()); + return String.format("%s|%d|%s|%s", SYMBOL, completeSymbol, this.title, this.time.saveString()); } /** @@ -49,6 +49,6 @@ public String saveString() { @Override public String toString() { String completeSymbol = this.complete ? "[/]" : "[X]"; - return String.format("[%s]%s %s (at: %s)", symbol, completeSymbol, this.title, this.time); + return String.format("[%s]%s %s (at: %s)", SYMBOL, completeSymbol, this.title, this.time); } } diff --git a/src/main/java/duke/Task.java b/src/main/java/duke/task/Task.java similarity index 87% rename from src/main/java/duke/Task.java rename to src/main/java/duke/task/Task.java index 9527a0d6af..fb5ebd0dfa 100644 --- a/src/main/java/duke/Task.java +++ b/src/main/java/duke/task/Task.java @@ -1,10 +1,10 @@ -package duke; +package duke.task; /** * Task class to represent a task to be manipulated by Duke. */ public class Task { - static final String symbol = "T"; + static final String SYMBOL = "T"; protected String title; protected boolean complete; @@ -43,7 +43,7 @@ public void complete() { */ public String saveString() { int completeSymbol = this.complete ? 1 : 0; - return String.format("%s|%d|%s", symbol, completeSymbol, this.title); + return String.format("%s|%d|%s", SYMBOL, completeSymbol, this.title); } /** @@ -54,6 +54,6 @@ public String saveString() { @Override public String toString() { String completeSymbol = this.complete ? "[/]" : "[X]"; - return String.format("[%s]%s %s", symbol, completeSymbol, this.title); + return String.format("[%s]%s %s", SYMBOL, completeSymbol, this.title); } } diff --git a/src/main/java/duke/Todo.java b/src/main/java/duke/task/Todo.java similarity index 96% rename from src/main/java/duke/Todo.java rename to src/main/java/duke/task/Todo.java index 1be7a1c47a..b9e0bc4925 100644 --- a/src/main/java/duke/Todo.java +++ b/src/main/java/duke/task/Todo.java @@ -1,4 +1,4 @@ -package duke; +package duke.task; /** * Todo class for Tasks that need to be completed. diff --git a/src/test/java/duke/DukeTest.java b/src/test/java/duke/DukeTest.java deleted file mode 100644 index b6ba1b14d9..0000000000 --- a/src/test/java/duke/DukeTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package duke; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -import org.junit.jupiter.api.Test; - -public class DukeTest { - - private TaskList t = new TaskList(); - - private Storage s = new Storage(); - - @Test - public void invalidCommandTest() { - try { - Parser.handleInput("example hello"); - } catch (InvalidTypeException e) { - assertEquals("OOPS!!! I'm sorry, but I don't know what that means :-(", - e.getMessage()); - } catch (InvalidDescriptionException e) { - assertEquals("OOPS!!! The description of a task cannot be empty", - e.getMessage()); - } - } - - @Test - public void invalidIndexTest() { - try { - t.completeTask(-1); - } catch (InvalidIndexException e) { - assertEquals("OOPS!!! The index you have chosen is out of bounds", - e.getMessage()); - } - } - - @Test - public void invalidDataTest() { - try { - s.stringToTask("example hello"); - } catch (InvalidTypeException e) { - assertEquals("OOPS!!! I'm sorry, but I don't know what that means :-(", - e.getMessage()); - } catch (InvalidDataException e) { - assertEquals("OOPS!!! The data here is invalid!", - e.getMessage()); - } - } -} diff --git a/src/test/java/duke/misc/ParserTest.java b/src/test/java/duke/misc/ParserTest.java new file mode 100644 index 0000000000..5b589ec14d --- /dev/null +++ b/src/test/java/duke/misc/ParserTest.java @@ -0,0 +1,23 @@ +package duke.misc; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import duke.exception.InvalidDescriptionException; +import duke.exception.InvalidTypeException; + +public class ParserTest { + @Test + public void invalidCommandTest() { + try { + Parser.handleInput("example hello"); + } catch (InvalidTypeException e) { + assertEquals("OOPS!!! I'm sorry, but I don't know what that means :-(", + e.getMessage()); + } catch (InvalidDescriptionException e) { + assertEquals("OOPS!!! The description of a task cannot be empty", + e.getMessage()); + } + } +} diff --git a/src/test/java/duke/misc/StorageTest.java b/src/test/java/duke/misc/StorageTest.java new file mode 100644 index 0000000000..672ce2ba71 --- /dev/null +++ b/src/test/java/duke/misc/StorageTest.java @@ -0,0 +1,25 @@ +package duke.misc; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import duke.exception.InvalidDataException; +import duke.exception.InvalidTypeException; + +public class StorageTest { + private Storage s = new Storage(); + + @Test + public void invalidDataTest() { + try { + s.stringToTask("example hello"); + } catch (InvalidTypeException e) { + assertEquals("OOPS!!! I'm sorry, but I don't know what that means :-(", + e.getMessage()); + } catch (InvalidDataException e) { + assertEquals("OOPS!!! The data here is invalid!", + e.getMessage()); + } + } +} diff --git a/src/test/java/duke/misc/TaskListTest.java b/src/test/java/duke/misc/TaskListTest.java new file mode 100644 index 0000000000..091b320a7c --- /dev/null +++ b/src/test/java/duke/misc/TaskListTest.java @@ -0,0 +1,21 @@ +package duke.misc; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import duke.exception.InvalidIndexException; + +public class TaskListTest { + private TaskList t = new TaskList(); + + @Test + public void invalidIndexTest() { + try { + t.completeTask(-1); + } catch (InvalidIndexException e) { + assertEquals("OOPS!!! The index you have chosen is out of bounds", + e.getMessage()); + } + } +}