diff --git a/src/main/java/duke/FixedDurationTask.java b/src/main/java/duke/FixedDurationTask.java new file mode 100644 index 0000000000..92bc81fea3 --- /dev/null +++ b/src/main/java/duke/FixedDurationTask.java @@ -0,0 +1,37 @@ +package duke; + +/** + * Encapsulates FixedDurationTask which are Tasks with a fixed duration. + */ +public class FixedDurationTask extends Task { + private String duration; + + public FixedDurationTask(String description, String duration) { + super(description); + this.duration = duration; + } + + public FixedDurationTask(String description, boolean isDone, String duration) { + super(description, isDone); + this.duration = duration; + } + + /** + * Returns a String representation for FixedDurationTask for output. + */ + @Override + public String toString() { + return "[F]" + super.toString() + " (for: " + + this.duration + ")"; + } + + /** + * Returns a String representation of FixedDurationTask for storage. + */ + @Override + public String toTxt() { + return "F | " + super.toTxt() + + " | " + this.duration; + } + +} diff --git a/src/main/java/duke/Parser.java b/src/main/java/duke/Parser.java index bff49c360a..91dcefa697 100644 --- a/src/main/java/duke/Parser.java +++ b/src/main/java/duke/Parser.java @@ -37,6 +37,9 @@ public String parse() { } else if (command.startsWith("event")) { Event newEvent = createEventFromCommand(); return this.taskList.addTask(newEvent); + } else if (command.startsWith("fixedduration")) { + FixedDurationTask newFixedDurationTask = createFixedDurationTaskFromCommand(); + return this.taskList.addTask(newFixedDurationTask); } else if (command.startsWith("delete")) { return this.taskList.deleteTask(Integer.valueOf(command.split(" ")[1]) - 1); } else if (command.startsWith("bye")) { @@ -54,6 +57,18 @@ public String parse() { return "Invalid command."; } + /** + * Creates the new FixedDurationTask from the command. + * + * @return The new FixedDurationTask. + */ + private FixedDurationTask createFixedDurationTaskFromCommand() { + String name = command.split(" /for ", 2)[0].split(" ", 2)[1]; + String duration = command.split(" /for ", 2)[1]; + FixedDurationTask newFixedDurationTask = new FixedDurationTask(name, duration); + return newFixedDurationTask; + } + /** * Creates the new Event from the command. * diff --git a/src/main/java/duke/Storage.java b/src/main/java/duke/Storage.java index 42e5b1f843..57e277a368 100644 --- a/src/main/java/duke/Storage.java +++ b/src/main/java/duke/Storage.java @@ -84,12 +84,27 @@ private Task storageToTask(String input) throws DukeException { return this.createDeadlineFromStorage(input, description, isComplete); } else if (taskType.equals("E")) { return this.createEventFromStorage(input, description, isComplete); + } else if (taskType.equals("F")) { + return this.createFixedDurationTaskFromStorage(input, description, isComplete); } else { throw new DukeException("Unknown task type."); } } + /** + * Creates the FixedDurationTask from the storage input. + * + * @param input The input line. + * @param description The description of the FixedDurationTask. + * @param isComplete Whether the FixedDurationTask is completed. + * @return The Event. + */ + private FixedDurationTask createFixedDurationTaskFromStorage(String input, String description, boolean isComplete) { + String duration = input.split(" \\| ")[3]; + return new FixedDurationTask(description, isComplete, duration); + } + /** * Creates the Event from the storage input. * diff --git a/src/main/java/duke/TaskList.java b/src/main/java/duke/TaskList.java index 9577b71d62..c41d0de4d3 100644 --- a/src/main/java/duke/TaskList.java +++ b/src/main/java/duke/TaskList.java @@ -87,4 +87,5 @@ public String findTask(String keyword) { } return Ui.listMatchingTasks(result); } + }