From 6ebf004b2328930505db9c8f8afb3e00d5aacee8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 3 Sep 2023 03:42:44 +0000 Subject: [PATCH] Rebuild pages at b4b3357306f59dbb2a3ab376e7699ec7ac2e2b2e --- SungMatt_ip_master/authorship.json | 2 +- SungMatt_ip_master/commits.json | 2 +- SynapseProgramming_ip_master/authorship.json | 2 +- SynapseProgramming_ip_master/commits.json | 2 +- andytoh1_ip_master/authorship.json | 2 +- andytoh1_ip_master/commits.json | 2 +- archive.zip | Bin 6680072 -> 6690178 bytes jinyang628_ip_master/authorship.json | 2 +- jinyang628_ip_master/commits.json | 2 +- jrchoo_ip_master/authorship.json | 2 +- jrchoo_ip_master/commits.json | 2 +- nicolengk_ip_master/authorship.json | 2 +- nicolengk_ip_master/commits.json | 2 +- reposense-logs/reposense.log.0 | 14142 ++++++++--------- summary.json | 2 +- tiif_ip_master/authorship.json | 2 +- tiif_ip_master/commits.json | 2 +- xxiaoweii_ip_master/authorship.json | 2 +- xxiaoweii_ip_master/commits.json | 2 +- 19 files changed, 7088 insertions(+), 7088 deletions(-) diff --git a/SungMatt_ip_master/authorship.json b/SungMatt_ip_master/authorship.json index cdf10f1a..15f1e439 100644 --- a/SungMatt_ip_master/authorship.json +++ b/SungMatt_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/MattBot/MattBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Task;","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Todo;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Deadline;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Event;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import MattBot.Parser;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"import MattBot.Storage;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"import MattBot.TaskList;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":"import java.util.List;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":"public class MattBot {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":" private static final String NAME \u003d \"MattBot\";","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" private static Storage mattmory;","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" private static TaskList tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" private static DateTimeFormatter dTFormat \u003d DateTimeFormatter.ofPattern(\"yyyyMMdd\u0027T\u0027HHmm\");","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" // Load save file","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":" // List\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" mattmory \u003d new Storage();","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" tasks \u003d mattmory.load();","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" /*String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Hello from\\n\" + logo);*/","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Hello! I\u0027m \" + NAME);","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" String userInput;","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" label:","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" while (true) {","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" // Take user input in, and process user input","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":" userInput \u003d sc.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":57,"author":{"gitId":"SungMatt"},"content":" String command \u003d userInput.split(\" \",2)[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"SungMatt"},"content":" switch (command) {","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"SungMatt"},"content":" case \"bye\":","lastModifiedDate":"2023-09-03"},{"lineNumber":60,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-23"},{"lineNumber":61,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Bye, Hope to see you soon!\");","lastModifiedDate":"2023-08-22"},{"lineNumber":62,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-23"},{"lineNumber":63,"author":{"gitId":"SungMatt"},"content":" break label;","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"SungMatt"},"content":" case \"list\":","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-23"},{"lineNumber":66,"author":{"gitId":"SungMatt"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.getTask(i + 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SungMatt"},"content":" System.out.println(String.format(\"%d. %s\", i + 1, t));","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":70,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-23"},{"lineNumber":71,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"SungMatt"},"content":" case \"mark\": {","lastModifiedDate":"2023-09-03"},{"lineNumber":73,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-23"},{"lineNumber":74,"author":{"gitId":"SungMatt"},"content":" int taskId \u003d Integer.parseInt(userInput.split(\" \", 2)[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"SungMatt"},"content":" tasks.markTask(taskId);","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.getTask(taskId);","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Great job! You have completed the task \" + t.showName());","lastModifiedDate":"2023-08-23"},{"lineNumber":79,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":81,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":82,"author":{"gitId":"SungMatt"},"content":" case \"unmark\": {","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-23"},{"lineNumber":84,"author":{"gitId":"SungMatt"},"content":" int taskId \u003d Integer.parseInt(userInput.split(\" \", 2)[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"SungMatt"},"content":" tasks.unmarkTask(taskId);","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.getTask(taskId);","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Oh no, you have uncompleted \" + t.showName());","lastModifiedDate":"2023-08-23"},{"lineNumber":89,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":91,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":92,"author":{"gitId":"SungMatt"},"content":" default: {","lastModifiedDate":"2023-09-03"},{"lineNumber":93,"author":{"gitId":"SungMatt"},"content":" int len \u003d userInput.split(\" \", 2).length;","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"SungMatt"},"content":" if (len \u003c\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Oh no, your input is bad.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"SungMatt"},"content":" System.out.println(command + \" requires an argument.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"SungMatt"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-23"},{"lineNumber":102,"author":{"gitId":"SungMatt"},"content":" String arguments \u003d userInput.split(\" \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"SungMatt"},"content":" Task t;","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"SungMatt"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"SungMatt"},"content":" t \u003d new Todo(arguments);","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"SungMatt"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-09-02"},{"lineNumber":107,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"I\u0027ve added this to your tasks: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":109,"author":{"gitId":"SungMatt"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"SungMatt"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"SungMatt"},"content":" String name \u003d arguments.split(\" /by \", 2)[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"SungMatt"},"content":" String dueDate \u003d arguments.split(\" /by \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":114,"author":{"gitId":"SungMatt"},"content":" LocalDateTime dtDueDate \u003d LocalDateTime.parse(dueDate, dTFormat);","lastModifiedDate":"2023-09-03"},{"lineNumber":115,"author":{"gitId":"SungMatt"},"content":" t \u003d new Deadline(name, dtDueDate);","lastModifiedDate":"2023-09-03"},{"lineNumber":116,"author":{"gitId":"SungMatt"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-09-02"},{"lineNumber":117,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"I\u0027ve added this to your tasks: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":119,"author":{"gitId":"SungMatt"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"SungMatt"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":121,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Your date is invalid. It should be in the form YYYYMMDDTHHMM. An example is 20231231T2359.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":122,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":123,"author":{"gitId":"SungMatt"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":124,"author":{"gitId":"SungMatt"},"content":" String name \u003d arguments.split(\" /from \", 2)[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"SungMatt"},"content":" String dates \u003d arguments.split(\" /from \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"SungMatt"},"content":" String startDate \u003d dates.split(\" /to \")[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"SungMatt"},"content":" String endDate \u003d dates.split(\" /to \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":129,"author":{"gitId":"SungMatt"},"content":" LocalDateTime dtStartDate \u003d LocalDateTime.parse(startDate, dTFormat);","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"SungMatt"},"content":" LocalDateTime dtEndDate \u003d LocalDateTime.parse(endDate, dTFormat);","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"SungMatt"},"content":" t \u003d new Event(name, dtStartDate, dtEndDate);","lastModifiedDate":"2023-09-03"},{"lineNumber":132,"author":{"gitId":"SungMatt"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-09-02"},{"lineNumber":133,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"I\u0027ve added this to your tasks: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":135,"author":{"gitId":"SungMatt"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"SungMatt"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":137,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Your date is invalid. It should be in the form YYYYMMDDTHHMM. An example is 20231231T2359.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":138,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":139,"author":{"gitId":"SungMatt"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"SungMatt"},"content":" if (tasks.size() \u003d\u003d 0 || tasks.size() \u003c Integer.parseInt(arguments)) {","lastModifiedDate":"2023-09-02"},{"lineNumber":141,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Oops, you\u0027re deleting a task that doesn\u0027t exist.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":142,"author":{"gitId":"SungMatt"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"SungMatt"},"content":" t \u003d tasks.getTask(Integer.parseInt(arguments));","lastModifiedDate":"2023-09-02"},{"lineNumber":145,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"I have removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":146,"author":{"gitId":"SungMatt"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"SungMatt"},"content":" tasks.removeTask(Integer.parseInt(arguments));","lastModifiedDate":"2023-09-02"},{"lineNumber":148,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":149,"author":{"gitId":"SungMatt"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":150,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"I didn\u0027t quite understand your input.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"SungMatt"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":155,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":156,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":157,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":158,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":159,"author":{"gitId":"SungMatt"},"content":" public static void printTop() {","lastModifiedDate":"2023-08-23"},{"lineNumber":160,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"SungMatt"},"content":" public static void printBottom() {","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":165,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"SungMatt":165}},{"path":"src/main/java/MattBot/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package MattBot;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Task;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Todo;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Deadline;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Event;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"import MattBot.Storage;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":" public final static DateTimeFormatter DTFORMAT \u003d DateTimeFormatter.ofPattern(\"yyyyMMdd\u0027T\u0027HHmm\");","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" public Parser() {}","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" /*public static void parseInput(String input) {","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":" String[] details \u003d input.split(\" \");","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" String command \u003d details[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":" } except (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Ahh! You need to give an input!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" switch (command) {","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" case \"list\":","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.getTask(i + 1);","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" System.out.println(String.format(\"%d. %s\", i + 1, t));","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" }*/","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" public static Task parseFile(String saveString) {","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" String[] details \u003d saveString.split(\" \\\\| \");","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" Task newTask;","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" switch (details[0]) {","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" case \"T\":","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":" newTask \u003d new Todo(details[2], getBoolean(details[1]));","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":" case \"D\":","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":" newTask \u003d new Deadline(details[2], getBoolean(details[1]),","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" LocalDateTime.parse(details[3], DTFORMAT));","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" case \"E\":","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" newTask \u003d new Event(details[2], getBoolean(details[1]),","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" LocalDateTime.parse(details[3],DTFORMAT) , LocalDateTime.parse(details[4],DTFORMAT));","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":" default:","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":" // Should throw an error here, maybe a can\u0027t read error?","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":" newTask \u003d new Todo(\"Oops, no details!\", true);","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Yikes, your savefile had some issues!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":" newTask \u003d new Todo(\"Oops, no details!\", true);","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"SungMatt"},"content":" return newTask;","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"SungMatt"},"content":" * Gets a boolean value from a String-represented 1 or 0.","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"SungMatt"},"content":" * @params String Done state as represented by 1 or 0","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"SungMatt"},"content":" * @return True or False","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"SungMatt"},"content":" public static boolean getBoolean(String value)","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SungMatt"},"content":" {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"SungMatt"},"content":" return (value.equals(\"1\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":70,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"SungMatt":71}},{"path":"src/main/java/MattBot/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package MattBot;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Task;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Todo;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Deadline;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Event;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"import MattBot.Parser;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":"import java.io.File; // Import the File class","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":"import java.io.IOException; // Import the IOException class to handle errors","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":"import java.io.FileNotFoundException; // Import this class to handle errors","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":"import java.io.FileWriter; // Import the FileWriter class","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" protected TaskList data;","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" private BufferedReader myReader;","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":" private Path dataPath;","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" private static final String SAVE_NAME \u003d \"mattbot.txt\";","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" private static final String SAVE_FOLDER \u003d \"data/\";","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" public Storage() throws IOException {","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" dataPath \u003d Paths.get(SAVE_FOLDER + SAVE_NAME);","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" if (!Files.exists(dataPath)) {","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" Files.createDirectory(Paths.get(SAVE_FOLDER));","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" Files.createFile(dataPath);","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" myReader \u003d Files.newBufferedReader(dataPath);","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":" // myReader.close();","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" * Loads list of tasks from the earlier specified filepath.","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" * @return List of tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" public TaskList load() throws IOException {","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":" while (true) {","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":" String nextLine \u003d myReader.readLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":" if (nextLine \u003d\u003d null) {","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" taskList.addTask(Parser.parseFile(nextLine));","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":" return taskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SungMatt"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"SungMatt"},"content":" return data;","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"SungMatt"},"content":" public void writeBack(TaskList tL) {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"SungMatt"},"content":" // Format should be in","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"SungMatt"},"content":" // [Type] | [isDone] | Name | startDate | endDate","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"SungMatt"},"content":" data \u003d tL;","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"SungMatt"},"content":" ArrayList\u003cTask\u003e aLTask \u003d tL.getTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SungMatt"},"content":" ArrayList\u003cString\u003e toWrite \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"SungMatt"},"content":" for (int i \u003d 0; i \u003c aLTask.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"SungMatt"},"content":" Task t \u003d aLTask.get(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"SungMatt"},"content":" toWrite.add(t.toFile());","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"SungMatt"},"content":" Files.delete(dataPath);","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"SungMatt"},"content":" Files.write(dataPath, toWrite);","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"SungMatt"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Oh no, I\u0027ve failed to write the save file.\");","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"SungMatt"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"SungMatt":84}},{"path":"src/main/java/MattBot/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package MattBot;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Task;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Todo;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Deadline;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Event;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":" protected ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":" public TaskList() {","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":" tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" * Adds new task to list.","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" * @params t Task to be added.","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":" * Removes task specified by index from list.","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" * @params idx 1-based index of task to be removed.","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":" public void removeTask(int idx) {","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" tasks.remove(idx - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" * Marks task as done.","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" * @params idx 1-based index of task to be marked as complete.","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" public void markTask(int idx) {","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.get(idx - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":" t.markAsDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":" * Marks task as not done.","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" * @params idx 1-based index of task to be marked as incomplete.","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" public void unmarkTask(int idx) {","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.get(idx - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":" t.markAsNotDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" * Returns size of task list.","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" public int size() {","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" return tasks.size();","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SungMatt"},"content":" * Returns entire task list.","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"SungMatt"},"content":" * @return List of tasks.","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"SungMatt"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"SungMatt"},"content":" return tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"SungMatt"},"content":" public Task getTask(int idx) {","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SungMatt"},"content":" return tasks.get(idx - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"SungMatt":70}},{"path":"src/main/java/MattBot/commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package MattBot;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"public enum commands {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":" TODO,","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":" DEADLINE,","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":" EVENT,","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":" LIST,","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":" BYE,","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":" MARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":" UNMARK","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"SungMatt":10}},{"path":"src/main/java/MattBot/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package MattBot.task;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import MattBot.task.Task;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":" protected LocalDateTime date;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":" public static final DateTimeFormatter DTFORMAT \u003d DateTimeFormatter.ofPattern(\"yyyyMMdd\u0027T\u0027HHmm\");","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":" public Deadline(String name, LocalDateTime date) {","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":" super(name, false);","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":" this.date \u003d date;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":" public Deadline(String name, boolean isDone, LocalDateTime date ) {","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" super(name, isDone);","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" public LocalDateTime getDate() {","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":" return this.date;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" * Returns a friendly version of the date.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":" * @returns Date in form of May 12 2023 20:00","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" public String dateToString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":" return this.date.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH\u0027:\u0027mm\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" * Identifies itself as a Deadline.","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" * @returns Character to identify the type of Task.","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":" public String identifier() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" return \"D\";","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" * Returns String form for storage.","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" * @returns String for storage format.","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":" public String toFile() {","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":" return identifier() + \" | \" + showStatusAsFile() + \" | \" + showName() + \" | \" + getDate().format(DTFORMAT);","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" return String.format(\"[%s] [%s] %s (by: %s)\", this.identifier(), this.showStatus(), this.showName(), dateToString());","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"SungMatt":56}},{"path":"src/main/java/MattBot/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package MattBot.task;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":" protected LocalDateTime startDate;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":" protected LocalDateTime endDate;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":" public static final DateTimeFormatter DTFORMAT \u003d DateTimeFormatter.ofPattern(\"yyyyMMdd\u0027T\u0027HHmm\");","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":" public Event(String name, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":" super(name, false);","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":" public Event(String name, boolean isDone, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" super(name, isDone);","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":" public LocalDateTime getStartDate() {","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":" return this.startDate;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" public LocalDateTime getEndDate() {","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" return this.endDate;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" public String identifier() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" return \"E\";","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" * Returns a friendly version of the start date.","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" * @returns Start Date in form of May 12 2023 20:00","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" public String startDateToString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":" return this.startDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH\u0027:\u0027mm\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":" * Returns a friendly version of the end date.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" * @returns End Date in form of May 12 2023 20:00","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" public String endDateToString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" return this.endDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH\u0027:\u0027mm\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":" * Returns String form for storage.","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" * @returns String for storage format.","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" public String toFile() {","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":" return identifier() + \" | \" + showStatusAsFile() + \" | \" + showName() + \" | \" + getStartDate().format(DTFORMAT)","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"SungMatt"},"content":" + \" | \" + getEndDate().format(DTFORMAT);","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SungMatt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"SungMatt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"SungMatt"},"content":" return String.format(\"[%s] [%s] %s (from: %s to: %s)\", this.identifier(), this.showStatus(), this.showName(),","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"SungMatt"},"content":" this.startDateToString(), this.endDateToString());","lastModifiedDate":"2023-09-03"},{"lineNumber":63,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"SungMatt":64}},{"path":"src/main/java/MattBot/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package MattBot.task;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":" protected String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" public String showStatus() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":" public String showName() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" return this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" public abstract String identifier();","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" public abstract String toFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":" public String showStatusAsFile() { return (isDone ? \"1\" : \"0\"); }","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" return String.format(\"[%s] [%s] %s\", this.identifier(), this.showStatus(), this.showName());","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"SungMatt":35}},{"path":"src/main/java/MattBot/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package MattBot.task;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":" public Todo(String name) {","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":" super(name, false);","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":" public Todo(String name, boolean isDone) {","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":" super(name, isDone);","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":" public String identifier() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":" return \"T\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":" * Returns String form for storage.","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":" * @returns String for storage format.","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":" public String toFile() {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" return identifier() + \" | \" + showStatusAsFile() + \" | \" + showName();","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"SungMatt":22}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"todo Eat supper","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"deadline CS2103 Homework /by Tomorrow","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"event CS1010S Tutorial /from 1pm tomorrow /to 2pm tomorrow","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"SungMatt":5}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":"java -classpath ../bin MattBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SungMatt":1,"-":37}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":" id \u0027checkstyle\u0027","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"checkstyle {","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":" toolVersion \u003d \"10.11.2\"","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":18,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":19,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" mainClass.set(\"mattbot.MattBot\")","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" archiveBaseName \u003d \"mattbot\"","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":43,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":46,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":47,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SungMatt":7,"-":40}},{"path":"src/main/java/mattbot/MattBot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package mattbot;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Task;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Todo;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Deadline;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Event;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"import mattbot.Parser;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"import mattbot.Storage;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"import mattbot.TaskList;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":"import java.util.List;","lastModifiedDate":"2023-08-22"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":"public class MattBot {","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" private static final String NAME \u003d \"MattBot\";","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" private static Storage mattmory;","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" private static TaskList tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":" private static final DateTimeFormatter PRINT_DTF \u003d DateTimeFormatter.ofPattern(\"yyyyMMdd\u0027T\u0027HHmm\");","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":" // Load save file","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" // List\u003cTask\u003e taskList \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" mattmory \u003d new Storage();","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" tasks \u003d mattmory.load();","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" tasks \u003d new TaskList();","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":" /*String logo \u003d \" ____ _ \\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":" + \"| _ \\\\ _ _| | _____ \\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" + \"| | | | | | | |/ / _ \\\\\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" + \"| |_| | |_| | \u003c __/\\n\"","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" + \"|____/ \\\\__,_|_|\\\\_\\\\___|\\n\";","lastModifiedDate":"2023-08-22"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Hello from\\n\" + logo);*/","lastModifiedDate":"2023-08-22"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Hello! I\u0027m \" + NAME);","lastModifiedDate":"2023-08-22"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-22"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-22"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" Scanner sc \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" String userInput;","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" label:","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" while (true) {","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":" // Take user input in, and process user input","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"SungMatt"},"content":" userInput \u003d sc.nextLine();","lastModifiedDate":"2023-08-22"},{"lineNumber":58,"author":{"gitId":"SungMatt"},"content":" String command \u003d userInput.split(\" \",2)[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"SungMatt"},"content":" switch (command) {","lastModifiedDate":"2023-09-03"},{"lineNumber":60,"author":{"gitId":"SungMatt"},"content":" case \"bye\":","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-23"},{"lineNumber":62,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Bye, Hope to see you soon!\");","lastModifiedDate":"2023-08-22"},{"lineNumber":63,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-23"},{"lineNumber":64,"author":{"gitId":"SungMatt"},"content":" break label;","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"SungMatt"},"content":" case \"list\":","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-23"},{"lineNumber":67,"author":{"gitId":"SungMatt"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.getTask(i + 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"SungMatt"},"content":" System.out.println(String.format(\"%d. %s\", i + 1, t));","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":71,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-23"},{"lineNumber":72,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":73,"author":{"gitId":"SungMatt"},"content":" case \"mark\": {","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-23"},{"lineNumber":75,"author":{"gitId":"SungMatt"},"content":" int taskId \u003d Integer.parseInt(userInput.split(\" \", 2)[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"SungMatt"},"content":" tasks.markTask(taskId);","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.getTask(taskId);","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Great job! You have completed the task \" + t.showName());","lastModifiedDate":"2023-08-23"},{"lineNumber":80,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-23"},{"lineNumber":81,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":82,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"SungMatt"},"content":" case \"unmark\": {","lastModifiedDate":"2023-09-03"},{"lineNumber":84,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-23"},{"lineNumber":85,"author":{"gitId":"SungMatt"},"content":" int taskId \u003d Integer.parseInt(userInput.split(\" \", 2)[1]);","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"SungMatt"},"content":" tasks.unmarkTask(taskId);","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.getTask(taskId);","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Oh no, you have uncompleted \" + t.showName());","lastModifiedDate":"2023-08-23"},{"lineNumber":90,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-23"},{"lineNumber":91,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":92,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":93,"author":{"gitId":"SungMatt"},"content":" default: {","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"SungMatt"},"content":" int len \u003d userInput.split(\" \", 2).length;","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"SungMatt"},"content":" if (len \u003c\u003d 1) {","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Oh no, your input is bad.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"SungMatt"},"content":" System.out.println(command + \" requires an argument.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"SungMatt"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":101,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":102,"author":{"gitId":"SungMatt"},"content":" printTop();","lastModifiedDate":"2023-08-23"},{"lineNumber":103,"author":{"gitId":"SungMatt"},"content":" String arguments \u003d userInput.split(\" \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"SungMatt"},"content":" Task t;","lastModifiedDate":"2023-08-24"},{"lineNumber":105,"author":{"gitId":"SungMatt"},"content":" if (command.equals(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":106,"author":{"gitId":"SungMatt"},"content":" t \u003d new Todo(arguments);","lastModifiedDate":"2023-08-24"},{"lineNumber":107,"author":{"gitId":"SungMatt"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"I\u0027ve added this to your tasks: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":110,"author":{"gitId":"SungMatt"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":111,"author":{"gitId":"SungMatt"},"content":" } else if (command.equals(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":112,"author":{"gitId":"SungMatt"},"content":" String name \u003d arguments.split(\" /by \", 2)[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":113,"author":{"gitId":"SungMatt"},"content":" String dueDate \u003d arguments.split(\" /by \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":114,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":115,"author":{"gitId":"SungMatt"},"content":" LocalDateTime dtDueDate \u003d LocalDateTime.parse(dueDate, PRINT_DTF);","lastModifiedDate":"2023-09-03"},{"lineNumber":116,"author":{"gitId":"SungMatt"},"content":" t \u003d new Deadline(name, dtDueDate);","lastModifiedDate":"2023-09-03"},{"lineNumber":117,"author":{"gitId":"SungMatt"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-09-02"},{"lineNumber":118,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":119,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"I\u0027ve added this to your tasks: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":120,"author":{"gitId":"SungMatt"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":121,"author":{"gitId":"SungMatt"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":122,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Your date is invalid. It should be in the form YYYYMMDDTHHMM. An example is 20231231T2359.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":123,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":124,"author":{"gitId":"SungMatt"},"content":" } else if (command.equals(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":125,"author":{"gitId":"SungMatt"},"content":" String name \u003d arguments.split(\" /from \", 2)[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":126,"author":{"gitId":"SungMatt"},"content":" String dates \u003d arguments.split(\" /from \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":127,"author":{"gitId":"SungMatt"},"content":" String startDate \u003d dates.split(\" /to \")[0];","lastModifiedDate":"2023-08-24"},{"lineNumber":128,"author":{"gitId":"SungMatt"},"content":" String endDate \u003d dates.split(\" /to \", 2)[1];","lastModifiedDate":"2023-08-24"},{"lineNumber":129,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"SungMatt"},"content":" LocalDateTime dtStartDate \u003d LocalDateTime.parse(startDate, PRINT_DTF);","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"SungMatt"},"content":" LocalDateTime dtEndDate \u003d LocalDateTime.parse(endDate, PRINT_DTF);","lastModifiedDate":"2023-09-03"},{"lineNumber":132,"author":{"gitId":"SungMatt"},"content":" t \u003d new Event(name, dtStartDate, dtEndDate);","lastModifiedDate":"2023-09-03"},{"lineNumber":133,"author":{"gitId":"SungMatt"},"content":" tasks.addTask(t);","lastModifiedDate":"2023-09-02"},{"lineNumber":134,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":135,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"I\u0027ve added this to your tasks: \");","lastModifiedDate":"2023-08-24"},{"lineNumber":136,"author":{"gitId":"SungMatt"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"SungMatt"},"content":" } catch (DateTimeParseException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":138,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Your date is invalid. It should be in the form YYYYMMDDTHHMM. An example is 20231231T2359.\");","lastModifiedDate":"2023-09-03"},{"lineNumber":139,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":140,"author":{"gitId":"SungMatt"},"content":" } else if (command.equals(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":141,"author":{"gitId":"SungMatt"},"content":" if (tasks.size() \u003d\u003d 0 || tasks.size() \u003c Integer.parseInt(arguments)) {","lastModifiedDate":"2023-09-02"},{"lineNumber":142,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Oops, you\u0027re deleting a task that doesn\u0027t exist.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":143,"author":{"gitId":"SungMatt"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":144,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":145,"author":{"gitId":"SungMatt"},"content":" t \u003d tasks.getTask(Integer.parseInt(arguments));","lastModifiedDate":"2023-09-02"},{"lineNumber":146,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"I have removed this task:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":147,"author":{"gitId":"SungMatt"},"content":" System.out.println(t);","lastModifiedDate":"2023-08-24"},{"lineNumber":148,"author":{"gitId":"SungMatt"},"content":" tasks.removeTask(Integer.parseInt(arguments));","lastModifiedDate":"2023-09-02"},{"lineNumber":149,"author":{"gitId":"SungMatt"},"content":" mattmory.writeBack(tasks);","lastModifiedDate":"2023-09-02"},{"lineNumber":150,"author":{"gitId":"SungMatt"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"I didn\u0027t quite understand your input.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"SungMatt"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":153,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":154,"author":{"gitId":"SungMatt"},"content":" printBottom();","lastModifiedDate":"2023-08-23"},{"lineNumber":155,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":156,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":157,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":158,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":159,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":160,"author":{"gitId":"SungMatt"},"content":" public static void printTop() {","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":162,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":163,"author":{"gitId":"SungMatt"},"content":" public static void printBottom() {","lastModifiedDate":"2023-08-23"},{"lineNumber":164,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"____________________________________________________________\");","lastModifiedDate":"2023-08-23"},{"lineNumber":165,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":166,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"SungMatt":166}},{"path":"src/main/java/mattbot/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package mattbot;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Task;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Todo;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Deadline;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Event;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"import mattbot.Storage;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":"public class Parser {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":" public final static DateTimeFormatter DTFORMAT \u003d DateTimeFormatter.ofPattern(\"yyyyMMdd\u0027T\u0027HHmm\");","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" public Parser() {}","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" /*public static void parseInput(String input) {","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":" String[] details \u003d input.split(\" \");","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" String command \u003d details[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":" } except (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Ahh! You need to give an input!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" switch (command) {","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" case \"list\":","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" for (int i \u003d 0; i \u003c tasks.size(); i++) {","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.getTask(i + 1);","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" System.out.println(String.format(\"%d. %s\", i + 1, t));","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" }*/","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" public static Task parseFile(String saveString) {","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" String[] details \u003d saveString.split(\" \\\\| \");","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" Task newTask;","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" switch (details[0]) {","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" case \"T\":","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":" newTask \u003d new Todo(details[2], getBoolean(details[1]));","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":" case \"D\":","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":" newTask \u003d new Deadline(details[2], getBoolean(details[1]),","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" LocalDateTime.parse(details[3], DTFORMAT));","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" case \"E\":","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" newTask \u003d new Event(details[2], getBoolean(details[1]),","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" LocalDateTime.parse(details[3],DTFORMAT) , LocalDateTime.parse(details[4],DTFORMAT));","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":" default:","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":" // Should throw an error here, maybe a can\u0027t read error?","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":" newTask \u003d new Todo(\"Oops, no details!\", true);","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" } catch (ArrayIndexOutOfBoundsException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Yikes, your savefile had some issues!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":" newTask \u003d new Todo(\"Oops, no details!\", true);","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"SungMatt"},"content":" return newTask;","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"SungMatt"},"content":" * Gets a boolean value from a String-represented 1 or 0.","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"SungMatt"},"content":" * @params String Done state as represented by 1 or 0","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"SungMatt"},"content":" * @return True or False","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"SungMatt"},"content":" public static boolean getBoolean(String value)","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SungMatt"},"content":" {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"SungMatt"},"content":" return (value.equals(\"1\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":70,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"SungMatt":71}},{"path":"src/main/java/mattbot/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package mattbot;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Task;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Todo;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Deadline;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Event;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"import mattbot.Parser;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":"import java.io.BufferedReader;","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":"import java.io.File; // Import the File class","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":"import java.io.IOException; // Import the IOException class to handle errors","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":"import java.io.FileNotFoundException; // Import this class to handle errors","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":"import java.io.FileWriter; // Import the FileWriter class","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":"public class Storage {","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" protected TaskList data;","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" private BufferedReader myReader;","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":" private Path dataPath;","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" private static final String SAVE_NAME \u003d \"mattbot.txt\";","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" private static final String SAVE_FOLDER \u003d \"data/\";","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" public Storage() throws IOException {","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" dataPath \u003d Paths.get(SAVE_FOLDER + SAVE_NAME);","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" if (!Files.exists(dataPath)) {","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" Files.createDirectory(Paths.get(SAVE_FOLDER));","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" Files.createFile(dataPath);","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" myReader \u003d Files.newBufferedReader(dataPath);","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":" // myReader.close();","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" * Loads list of tasks from the earlier specified filepath.","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" * @return List of tasks","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" public TaskList load() throws IOException {","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":" while (true) {","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":" String nextLine \u003d myReader.readLine();","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":" if (nextLine \u003d\u003d null) {","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" break;","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" taskList.addTask(Parser.parseFile(nextLine));","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":" return taskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SungMatt"},"content":" public TaskList getTaskList() {","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"SungMatt"},"content":" return data;","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"SungMatt"},"content":" public void writeBack(TaskList tL) {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"SungMatt"},"content":" // Format should be in","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"SungMatt"},"content":" // [Type] | [isDone] | Name | startDate | endDate","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"SungMatt"},"content":" data \u003d tL;","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"SungMatt"},"content":" ArrayList\u003cTask\u003e aLTask \u003d tL.getTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SungMatt"},"content":" ArrayList\u003cString\u003e toWrite \u003d new ArrayList\u003cString\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"SungMatt"},"content":" for (int i \u003d 0; i \u003c aLTask.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"SungMatt"},"content":" Task t \u003d aLTask.get(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"SungMatt"},"content":" toWrite.add(t.toFile());","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"SungMatt"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"SungMatt"},"content":" Files.delete(dataPath);","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"SungMatt"},"content":" Files.write(dataPath, toWrite);","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"SungMatt"},"content":" } catch (IOException e) {","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"SungMatt"},"content":" System.out.println(\"Oh no, I\u0027ve failed to write the save file.\");","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"SungMatt"},"content":" System.out.println(e);","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"SungMatt":84}},{"path":"src/main/java/mattbot/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package mattbot;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Task;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Todo;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Deadline;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Event;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"public class TaskList {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":" protected ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":" public TaskList() {","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":" tasks \u003d new ArrayList\u003cTask\u003e();","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" * Adds new task to list.","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" * @params t Task to be added.","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" public void addTask(Task t) {","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" tasks.add(t);","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":" * Removes task specified by index from list.","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" * @params idx 1-based index of task to be removed.","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":" public void removeTask(int idx) {","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" tasks.remove(idx - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" * Marks task as done.","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" * @params idx 1-based index of task to be marked as complete.","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" public void markTask(int idx) {","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.get(idx - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":" t.markAsDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":" * Marks task as not done.","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" * @params idx 1-based index of task to be marked as incomplete.","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" public void unmarkTask(int idx) {","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" Task t \u003d tasks.get(idx - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":" t.markAsNotDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" * Returns size of task list.","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" public int size() {","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" return tasks.size();","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SungMatt"},"content":" * Returns entire task list.","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"SungMatt"},"content":" * @return List of tasks.","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"SungMatt"},"content":" **/","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"SungMatt"},"content":" public ArrayList\u003cTask\u003e getTasks() {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"SungMatt"},"content":" return tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"SungMatt"},"content":" public Task getTask(int idx) {","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SungMatt"},"content":" return tasks.get(idx - 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"SungMatt":70}},{"path":"src/main/java/mattbot/commands.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package MattBot;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"public enum commands {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":" TODO,","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":" DEADLINE,","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":" EVENT,","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":" LIST,","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":" BYE,","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":" MARK,","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":" UNMARK","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"SungMatt":10}},{"path":"src/main/java/mattbot/task/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package mattbot.task;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import mattbot.task.Task;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":" protected LocalDateTime date;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":" public static final DateTimeFormatter DTFORMAT \u003d DateTimeFormatter.ofPattern(\"yyyyMMdd\u0027T\u0027HHmm\");","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":" public Deadline(String name, LocalDateTime date) {","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":" super(name, false);","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":" this.date \u003d date;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":" public Deadline(String name, boolean isDone, LocalDateTime date ) {","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" super(name, isDone);","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":" this.date \u003d date;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" public LocalDateTime getDate() {","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":" return this.date;","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" * Returns a friendly version of the date.","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":" * @returns Date in form of May 12 2023 20:00","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" public String dateToString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":" return this.date.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH\u0027:\u0027mm\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" * Identifies itself as a Deadline.","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" * @returns Character to identify the type of Task.","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":" public String identifier() {","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" return \"D\";","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" * Returns String form for storage.","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" * @returns String for storage format.","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":" public String toFile() {","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":" return identifier() + \" | \" + showStatusAsFile() + \" | \" + showName() + \" | \" + getDate().format(DTFORMAT);","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" return String.format(\"[%s] [%s] %s (by: %s)\", this.identifier(), this.showStatus(), this.showName(), dateToString());","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"SungMatt":56}},{"path":"src/main/java/mattbot/task/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package mattbot.task;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"import java.time.temporal.ChronoUnit;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":" protected LocalDateTime startDate;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":" protected LocalDateTime endDate;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":" public static final DateTimeFormatter DTFORMAT \u003d DateTimeFormatter.ofPattern(\"yyyyMMdd\u0027T\u0027HHmm\");","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":" public Event(String name, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":" super(name, false);","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":" public Event(String name, boolean isDone, LocalDateTime startDate, LocalDateTime endDate) {","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" super(name, isDone);","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":" public LocalDateTime getStartDate() {","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":" return this.startDate;","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" public LocalDateTime getEndDate() {","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" return this.endDate;","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" public String identifier() {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":" return \"E\";","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" * Returns a friendly version of the start date.","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"SungMatt"},"content":" * @returns Start Date in form of May 12 2023 20:00","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"SungMatt"},"content":" public String startDateToString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"SungMatt"},"content":" return this.startDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH\u0027:\u0027mm\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"SungMatt"},"content":" * Returns a friendly version of the end date.","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"SungMatt"},"content":" * @returns End Date in form of May 12 2023 20:00","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"SungMatt"},"content":" public String endDateToString() {","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"SungMatt"},"content":" return this.endDate.format(DateTimeFormatter.ofPattern(\"MMM dd yyyy HH\u0027:\u0027mm\"));","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SungMatt"},"content":" * Returns String form for storage.","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SungMatt"},"content":" * @returns String for storage format.","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SungMatt"},"content":" public String toFile() {","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SungMatt"},"content":" return identifier() + \" | \" + showStatusAsFile() + \" | \" + showName() + \" | \" + getStartDate().format(DTFORMAT)","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"SungMatt"},"content":" + \" | \" + getEndDate().format(DTFORMAT);","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SungMatt"},"content":" @Override","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"SungMatt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"SungMatt"},"content":" return String.format(\"[%s] [%s] %s (from: %s to: %s)\", this.identifier(), this.showStatus(), this.showName(),","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"SungMatt"},"content":" this.startDateToString(), this.endDateToString());","lastModifiedDate":"2023-09-03"},{"lineNumber":63,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"SungMatt":64}},{"path":"src/main/java/mattbot/task/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package mattbot.task;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"public abstract class Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":" protected String name;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":" protected boolean isDone;","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":" public Task(String name, boolean isDone) {","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":" this.name \u003d name;","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":" this.isDone \u003d isDone;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":" public void markAsDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":" this.isDone \u003d true;","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":" this.isDone \u003d false;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" public String showStatus() {","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" return (isDone ? \"X\" : \" \");","lastModifiedDate":"2023-08-23"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":24,"author":{"gitId":"SungMatt"},"content":" public String showName() {","lastModifiedDate":"2023-08-23"},{"lineNumber":25,"author":{"gitId":"SungMatt"},"content":" return this.name;","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"SungMatt"},"content":" public abstract String identifier();","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"SungMatt"},"content":" public abstract String toFile();","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"SungMatt"},"content":" public String showStatusAsFile() { return (isDone ? \"1\" : \"0\"); }","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SungMatt"},"content":" public String toString() {","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"SungMatt"},"content":" return String.format(\"[%s] [%s] %s\", this.identifier(), this.showStatus(), this.showName());","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"SungMatt":35}},{"path":"src/main/java/mattbot/task/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package mattbot.task;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":" public Todo(String name) {","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":" super(name, false);","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":" public Todo(String name, boolean isDone) {","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":" super(name, isDone);","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":" public String identifier() {","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":" return \"T\";","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":" /*","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":" * Returns String form for storage.","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" *","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":" * @returns String for storage format.","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":" */","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SungMatt"},"content":" public String toFile() {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SungMatt"},"content":" return identifier() + \" | \" + showStatusAsFile() + \" | \" + showName();","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"SungMatt":22}},{"path":"src/test/java/MattBotTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"package mattbot; //same package as the class being tested","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SungMatt"},"content":"public class MattBotTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"SungMatt"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"SungMatt"},"content":" public void dummyTest() {","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"SungMatt"},"content":" assertEquals(2, 2);","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"SungMatt"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"SungMatt"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"SungMatt"},"content":" public void anotherDummyTest() {","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"SungMatt"},"content":" assertEquals(4, 4);","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"SungMatt"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"SungMatt"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"SungMatt":18}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SungMatt"},"content":"todo Eat supper","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"SungMatt"},"content":"deadline CS2103 Homework /by Tomorrow","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"SungMatt"},"content":"event CS1010S Tutorial /from 1pm tomorrow /to 2pm tomorrow","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"SungMatt"},"content":"list","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"SungMatt"},"content":"bye","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"SungMatt":5}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"SungMatt"},"content":"java -classpath ../bin MattBot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SungMatt":1,"-":37}}] diff --git a/SungMatt_ip_master/commits.json b/SungMatt_ip_master/commits.json index 0e40ecbe..91934078 100644 --- a/SungMatt_ip_master/commits.json +++ b/SungMatt_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"SungMatt":[{"date":"2023-08-22","commitResults":[{"hash":"db36ba53d7d4c1cf2d0204c2ba477aa63f4ffa04","isMergeCommit":false,"messageTitle":"Modify name of DukeBot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":10}}},{"hash":"88a0916917f38fd9b14da93e33559fcbbde62fa6","isMergeCommit":false,"messageTitle":"Add echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"8bfebd580531ae277f82ea8e8cc26bf98f055a10","isMergeCommit":false,"messageTitle":"Add basic task adding functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":8}}}]},{"date":"2023-08-23","commitResults":[{"hash":"ba95f3baa8580b259274838e514bd4876e677197","isMergeCommit":false,"messageTitle":"Add Task functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"8206b6ad21e26de22a761b71c3bde9ab85d2d81e","isMergeCommit":false,"messageTitle":"Add marking and unmarking","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":10}}}]},{"date":"2023-08-24","commitResults":[{"hash":"bfa3ad4587864117d3fd120e37ddf65ca9d95326","isMergeCommit":false,"messageTitle":"Add functionality for multiple types of events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}},{"hash":"bc00219431539a837dedb763b8da8cae91acd922","isMergeCommit":false,"messageTitle":"Fix list type behavior","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cf971d647d3702db6be4425c672225995d110078","isMergeCommit":false,"messageTitle":"Add autotesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"sh":{"insertions":2,"deletions":2}}},{"hash":"bdd2a1d6f91a625a8e03144da42e694360764d07","isMergeCommit":false,"messageTitle":"Add error finding functionality","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"5b759a22c11bde20c8aa0b93b652e31149112072","isMergeCommit":false,"messageTitle":"Add removal function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"4c3ba546b08ffacdba8b215f69c6f94941744165","isMergeCommit":false,"messageTitle":"Add enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}}]},{"date":"2023-09-02","commitResults":[{"hash":"2934061a437d4f57acf14a5c7dbc6ca7be521191","isMergeCommit":false,"messageTitle":"Add save functionality","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":268,"deletions":22}}}]},{"date":"2023-09-03","commitResults":[{"hash":"ad06e0f4600385085bcbd08014cd8222fba07cc7","isMergeCommit":false,"messageTitle":"Add DateTime functionality","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":28}}},{"hash":"4243611b23bc5bcabea3b7b7035a690186896cb6","isMergeCommit":false,"messageTitle":"Make code pretty","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":97}}},{"hash":"b4939f261f70fcd3bd6d80913ad507619430702c","isMergeCommit":false,"messageTitle":"Restructure directories","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"8fce86bad7cbc9c3a34433b4305aa0291ce6b3e2","isMergeCommit":false,"messageTitle":"Add Packaging","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":9}}},{"hash":"4eff5e2e9ef9f17258532fad56c56e71c6d420cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 Add gradle support","messageBody":"","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SungMatt":{"java":577,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":0,"txt":5}},"authorContributionVariance":{"SungMatt":12902.525},"authorDisplayNameMap":{"SungMatt":"CS2103-T16-1 MATT..IANG"}} +{"authorDailyContributionsMap":{"SungMatt":[{"date":"2023-08-22","commitResults":[{"hash":"db36ba53d7d4c1cf2d0204c2ba477aa63f4ffa04","isMergeCommit":false,"messageTitle":"Modify name of DukeBot","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":10}}},{"hash":"88a0916917f38fd9b14da93e33559fcbbde62fa6","isMergeCommit":false,"messageTitle":"Add echo functionality","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":1}}},{"hash":"8bfebd580531ae277f82ea8e8cc26bf98f055a10","isMergeCommit":false,"messageTitle":"Add basic task adding functionality","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":20,"deletions":8}}}]},{"date":"2023-08-23","commitResults":[{"hash":"ba95f3baa8580b259274838e514bd4876e677197","isMergeCommit":false,"messageTitle":"Add Task functionality","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":0}}},{"hash":"8206b6ad21e26de22a761b71c3bde9ab85d2d81e","isMergeCommit":false,"messageTitle":"Add marking and unmarking","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":33,"deletions":10}}}]},{"date":"2023-08-24","commitResults":[{"hash":"bfa3ad4587864117d3fd120e37ddf65ca9d95326","isMergeCommit":false,"messageTitle":"Add functionality for multiple types of events","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":82,"deletions":8}}},{"hash":"bc00219431539a837dedb763b8da8cae91acd922","isMergeCommit":false,"messageTitle":"Fix list type behavior","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"cf971d647d3702db6be4425c672225995d110078","isMergeCommit":false,"messageTitle":"Add autotesting","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":5,"deletions":0},"sh":{"insertions":2,"deletions":2}}},{"hash":"bdd2a1d6f91a625a8e03144da42e694360764d07","isMergeCommit":false,"messageTitle":"Add error finding functionality","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"5b759a22c11bde20c8aa0b93b652e31149112072","isMergeCommit":false,"messageTitle":"Add removal function","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":18,"deletions":3}}},{"hash":"4c3ba546b08ffacdba8b215f69c6f94941744165","isMergeCommit":false,"messageTitle":"Add enums","messageBody":"","tags":["A-Enums"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}}]},{"date":"2023-09-02","commitResults":[{"hash":"2934061a437d4f57acf14a5c7dbc6ca7be521191","isMergeCommit":false,"messageTitle":"Add save functionality","messageBody":"","tags":["Level-7"],"fileTypesAndContributionMap":{"java":{"insertions":268,"deletions":22}}}]},{"date":"2023-09-03","commitResults":[{"hash":"ad06e0f4600385085bcbd08014cd8222fba07cc7","isMergeCommit":false,"messageTitle":"Add DateTime functionality","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":102,"deletions":28}}},{"hash":"4243611b23bc5bcabea3b7b7035a690186896cb6","isMergeCommit":false,"messageTitle":"Make code pretty","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":115,"deletions":97}}},{"hash":"b4939f261f70fcd3bd6d80913ad507619430702c","isMergeCommit":false,"messageTitle":"Restructure directories","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":0}}},{"hash":"8fce86bad7cbc9c3a34433b4305aa0291ce6b3e2","isMergeCommit":false,"messageTitle":"Add Packaging","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":51,"deletions":9}}},{"hash":"4eff5e2e9ef9f17258532fad56c56e71c6d420cf","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 Add gradle support","messageBody":"","fileTypesAndContributionMap":{}},{"hash":"78c0e74c0e9be23e3bafe8863e08949a6adb0a95","isMergeCommit":false,"messageTitle":"Add Gradle and Checkstyle","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":7,"deletions":2},"java":{"insertions":23,"deletions":4}}},{"hash":"50b2f95637900cdd18168c720d534bead4f38a2c","isMergeCommit":false,"messageTitle":"Updated packaging structure to follow code convention","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":2,"deletions":2},"java":{"insertions":31,"deletions":31}}}]}]},"authorFileTypeContributionMap":{"SungMatt":{"java":596,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":7,"txt":5}},"authorContributionVariance":{"SungMatt":17617.818},"authorDisplayNameMap":{"SungMatt":"CS2103-T16-1 MATT..IANG"}} diff --git a/SynapseProgramming_ip_master/authorship.json b/SynapseProgramming_ip_master/authorship.json index fe49716f..f3f278c2 100644 --- a/SynapseProgramming_ip_master/authorship.json +++ b/SynapseProgramming_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" implementation \u0027com.fasterxml.jackson.core:jackson-core:2.12.3\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" implementation \u0027com.fasterxml.jackson.core:jackson-databind:2.12.3\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" implementation \u0027com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.3\u0027","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SynapseProgramming":3,"-":42}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"import exceptions.ParserException;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"import io.Parser;","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import io.Ui;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Todo;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":" private Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" public Duke() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" this.storage \u003d new Storage(this.taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" public void listTasks() {","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"list is empty!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" return;","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":" String index \u003d Integer.toString(i + 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":" Task selectedTask \u003d taskList.get(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(index + \" \" + ui.displayTask(selectedTask));","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":" // set current task as un-done","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":" Task selectedTask \u003d taskList.get(parser.getIndex());","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SynapseProgramming"},"content":" selectedTask.setUnDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SynapseProgramming"},"content":" ui.displayAction(\"Marked selected task as un-done desu\", selectedTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"SynapseProgramming"},"content":" } catch (IndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Please enter a valid index!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SynapseProgramming"},"content":" public void markTaskAsDone() {","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SynapseProgramming"},"content":" // set current task as done","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SynapseProgramming"},"content":" Task selectedTask \u003d taskList.get(parser.getIndex());","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SynapseProgramming"},"content":" selectedTask.setDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"SynapseProgramming"},"content":" ui.displayAction(\"Marked selected task as done\", selectedTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"SynapseProgramming"},"content":" } catch (IndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Please enter a valid index!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"SynapseProgramming"},"content":" public void addTodo() {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"SynapseProgramming"},"content":" Task curentTask \u003d new Todo(parser.getTaskName());","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"SynapseProgramming"},"content":" taskList.add(curentTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"added:\\t\" + ui.displayTask(curentTask));","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SynapseProgramming"},"content":" } catch (StringIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Please enter a name after the todo command!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"SynapseProgramming"},"content":" public void addDeadline() {","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"SynapseProgramming"},"content":" Task curentTask \u003d parser.parseDeadline();","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"SynapseProgramming"},"content":" taskList.add(curentTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"added:\\t\" + ui.displayTask(curentTask));","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"SynapseProgramming"},"content":" } catch (ParserException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(ex.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"SynapseProgramming"},"content":" public void addEvent() {","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"SynapseProgramming"},"content":" Task curentTask \u003d parser.parseEvent();","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"SynapseProgramming"},"content":" taskList.add(curentTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"added:\\t\" + ui.displayTask(curentTask));","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"SynapseProgramming"},"content":" } catch (ParserException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(ex.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":97,"author":{"gitId":"SynapseProgramming"},"content":" public void deleteTask() {","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"SynapseProgramming"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"The list is empty!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"SynapseProgramming"},"content":" return;","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":103,"author":{"gitId":"SynapseProgramming"},"content":" // remove the current task","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"SynapseProgramming"},"content":" Task selectedTask \u003d taskList.get(parser.getIndex());","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"SynapseProgramming"},"content":" taskList.remove(parser.getIndex());","lastModifiedDate":"2023-09-02"},{"lineNumber":106,"author":{"gitId":"SynapseProgramming"},"content":" ui.displayAction(\"Deleting selected task!\", selectedTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":107,"author":{"gitId":"SynapseProgramming"},"content":" } catch (IndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Please enter a valid index!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":110,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"SynapseProgramming"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":114,"author":{"gitId":"SynapseProgramming"},"content":" ui.displayGreetings();","lastModifiedDate":"2023-09-02"},{"lineNumber":115,"author":{"gitId":"SynapseProgramming"},"content":" storage.loadTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":117,"author":{"gitId":"SynapseProgramming"},"content":" label:","lastModifiedDate":"2023-08-22"},{"lineNumber":118,"author":{"gitId":"SynapseProgramming"},"content":" while (true) {","lastModifiedDate":"2023-08-21"},{"lineNumber":119,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"SynapseProgramming"},"content":" parser.update();","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"SynapseProgramming"},"content":" } catch (NoSuchElementException ex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"SynapseProgramming"},"content":" // there is no input","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"SynapseProgramming"},"content":" if (parser.isInputThere()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":129,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"SynapseProgramming"},"content":" switch (parser.getCommandString()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"SynapseProgramming"},"content":" case \"bye\":","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"SynapseProgramming"},"content":" break label;","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"SynapseProgramming"},"content":" case \"list\":","lastModifiedDate":"2023-08-22"},{"lineNumber":135,"author":{"gitId":"SynapseProgramming"},"content":" listTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":137,"author":{"gitId":"SynapseProgramming"},"content":" case \"mark\": {","lastModifiedDate":"2023-08-22"},{"lineNumber":138,"author":{"gitId":"SynapseProgramming"},"content":" markTaskAsDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":140,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":141,"author":{"gitId":"SynapseProgramming"},"content":" case \"unmark\": {","lastModifiedDate":"2023-08-22"},{"lineNumber":142,"author":{"gitId":"SynapseProgramming"},"content":" unmarkTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":143,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":145,"author":{"gitId":"SynapseProgramming"},"content":" case \"todo\": {","lastModifiedDate":"2023-08-22"},{"lineNumber":146,"author":{"gitId":"SynapseProgramming"},"content":" addTodo();","lastModifiedDate":"2023-09-02"},{"lineNumber":147,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":148,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":149,"author":{"gitId":"SynapseProgramming"},"content":" case \"deadline\": {","lastModifiedDate":"2023-08-22"},{"lineNumber":150,"author":{"gitId":"SynapseProgramming"},"content":" addDeadline();","lastModifiedDate":"2023-09-02"},{"lineNumber":151,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":153,"author":{"gitId":"SynapseProgramming"},"content":" case \"event\": {","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"SynapseProgramming"},"content":" addEvent();","lastModifiedDate":"2023-09-02"},{"lineNumber":155,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"SynapseProgramming"},"content":" case \"delete\": {","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"SynapseProgramming"},"content":" deleteTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":159,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"SynapseProgramming"},"content":" default:","lastModifiedDate":"2023-08-22"},{"lineNumber":162,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Please enter a suitable task!\");","lastModifiedDate":"2023-08-22"},{"lineNumber":163,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":164,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":165,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":166,"author":{"gitId":"SynapseProgramming"},"content":" ui.displayGoodbye();","lastModifiedDate":"2023-09-02"},{"lineNumber":167,"author":{"gitId":"SynapseProgramming"},"content":" storage.saveTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":169,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"SynapseProgramming"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"SynapseProgramming"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"SynapseProgramming"},"content":" duke.run();","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"SynapseProgramming":174,"-":4}},{"path":"src/main/java/exceptions/ParserException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package exceptions;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"public class ParserException extends Exception {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":" public ParserException() {","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":" super();","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":" public ParserException(String message) {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":" super(message);","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"SynapseProgramming":13}},{"path":"src/main/java/io/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package io;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import exceptions.ParserException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Event;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" public Parser() {","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" inputTokens \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" inputString \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" public void update() throws NoSuchElementException {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" inputString \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" inputTokens \u003d inputString.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" public String getInputString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":" return this.inputString;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" public String[] getInputTokens() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" return this.inputTokens;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":" public int getIndex() throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" int index \u003d Integer.parseInt(inputTokens[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":" index--;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":" return index;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" public Deadline parseDeadline() throws ParserException {","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":" Deadline result \u003d null;","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SynapseProgramming"},"content":" String taskName \u003d this.getTaskName();","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"SynapseProgramming"},"content":" String[] parts \u003d taskName.split(\"/by\", 2);","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"SynapseProgramming"},"content":" String name \u003d parts[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SynapseProgramming"},"content":" String endDate \u003d parts[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SynapseProgramming"},"content":" endDate \u003d endDate.replace(\" \", \"\");","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SynapseProgramming"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SynapseProgramming"},"content":" LocalDate date \u003d LocalDate.parse(endDate, formatter);","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SynapseProgramming"},"content":" result \u003d new Deadline(name, date);","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"SynapseProgramming"},"content":" } catch (ArrayIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SynapseProgramming"},"content":" throw new ParserException(\"Please include a (/by) command, followed by a date\");","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"SynapseProgramming"},"content":" } catch (StringIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"SynapseProgramming"},"content":" throw new ParserException(","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"SynapseProgramming"},"content":" \"Please enter a name, followed by a (/by) command, followed by a date\");","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"SynapseProgramming"},"content":" } catch (DateTimeParseException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"SynapseProgramming"},"content":" throw new ParserException(\"Please enter a time format as dd/MM/yyyy\");","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"SynapseProgramming"},"content":" return result;","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"SynapseProgramming"},"content":" public Event parseEvent() throws ParserException {","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"SynapseProgramming"},"content":" Event result \u003d null;","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"SynapseProgramming"},"content":" String taskName \u003d this.getTaskName();","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"SynapseProgramming"},"content":" String[] parts \u003d taskName.split(\"/from\", 2);","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"SynapseProgramming"},"content":" String name \u003d parts[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"SynapseProgramming"},"content":" String dates \u003d parts[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"SynapseProgramming"},"content":" String[] datesplit \u003d dates.split(\"/to\", 2);","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"SynapseProgramming"},"content":" String startDate \u003d datesplit[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"SynapseProgramming"},"content":" String endDate \u003d datesplit[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"SynapseProgramming"},"content":" result \u003d new Event(name, startDate, endDate);","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"SynapseProgramming"},"content":" } catch (StringIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"SynapseProgramming"},"content":" throw new ParserException(\"The event command cannot be empty!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"SynapseProgramming"},"content":" } catch (ArrayIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"SynapseProgramming"},"content":" throw new ParserException(","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"SynapseProgramming"},"content":" \"Please enter a name, followed by a (/from) command, followed by a date, followed by a (/to) command and a date\");","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"SynapseProgramming"},"content":" return result;","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"SynapseProgramming"},"content":" public String getCommandString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"SynapseProgramming"},"content":" if (inputTokens.length \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"SynapseProgramming"},"content":" return \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"SynapseProgramming"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"SynapseProgramming"},"content":" return inputTokens[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"SynapseProgramming"},"content":" public String getTaskName() {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"SynapseProgramming"},"content":" String commandString \u003d this.getCommandString();","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"SynapseProgramming"},"content":" int commandLength \u003d commandString.length() + 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"SynapseProgramming"},"content":" return inputString.substring(commandLength);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"SynapseProgramming"},"content":" public boolean isInputThere() {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"SynapseProgramming"},"content":" return inputTokens.length \u003d\u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"SynapseProgramming"},"content":" private String inputString;","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"SynapseProgramming"},"content":" private String[] inputTokens;","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"SynapseProgramming"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"SynapseProgramming":118}},{"path":"src/main/java/io/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package io;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Event;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Todo;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":" public void displayGreetings() {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" String greeting \u003d \"Hello! I\u0027m KimochiUsagi (きもち うさぎ)!\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":" String info \u003d \"Ask the bunny a question!\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(info);","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" public void displayAction(String message, Task task) {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(message);","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(this.displayTask(task));","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" public void displayGoodbye() {","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":" String goodbye \u003d \"Bye. See you again! (またね)\";","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(goodbye);","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" public String displayTask(Task task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":" String answer \u003d \"\";","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" answer \u003d \"[\" + Todo.taskType + \"]\" + \"[\" + task.getDoneIcon() + \"] \" + task.getDescription();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":" Deadline deadTask \u003d (Deadline) task;","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":" answer \u003d","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":" \"[\" + Deadline.taskType + \"]\" + \"[\" + task.getDoneIcon() + \"] \" + task.getDescription()","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" + \"(\"","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":" + deadTask.getDeadDate() + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"SynapseProgramming"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"SynapseProgramming"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"SynapseProgramming"},"content":" answer \u003d","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"SynapseProgramming"},"content":" \"[\" + Event.taskType + \"]\" + \"[\" + task.getDoneIcon() + \"] \" + task.getDescription() + \"(\"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"SynapseProgramming"},"content":" + eventTask.getStartDate() + \" to \" + eventTask.getEndDate() + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"SynapseProgramming"},"content":" return answer;","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"SynapseProgramming":56}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.PropertyAccessor;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.core.JsonProcessingException;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" private ObjectMapper taskMapper;","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":" public Storage(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" this.taskList \u003d tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":" this.taskMapper \u003d new ObjectMapper();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" this.taskMapper.registerModule(new JavaTimeModule());","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":" PolymorphicTypeValidator ptv \u003d BasicPolymorphicTypeValidator.builder()","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" .allowIfSubType(\"java.util.ArrayList\")","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":" .allowIfSubType(\"ReceivedTasks\")","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" .allowIfSubType(\"tasks.Task\")","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" .build();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":" this.taskMapper.activateDefaultTyping(ptv, DefaultTyping.NON_FINAL);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":" this.taskMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":" public void loadTasks() {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":" Path filePath \u003d Paths.get(\"tasks.json\");","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":" String content \u003d new String(Files.readAllBytes(filePath));","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" TaskList plist \u003d this.taskMapper.readValue(content, TaskList.class);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":" for (int i \u003d 0; i \u003c plist.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":" Task wow \u003d plist.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"SynapseProgramming"},"content":" taskList.add(wow);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"SynapseProgramming"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(ex.getMessage() + \" not found! No list loaded!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"SynapseProgramming"},"content":" // given the original tasklist, save the tasks into a json file","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"SynapseProgramming"},"content":" public void saveTasks() {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"SynapseProgramming"},"content":" Path filePath \u003d Paths.get(\"tasks.json\");","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"SynapseProgramming"},"content":" String output \u003d","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"SynapseProgramming"},"content":" this.taskMapper.writeValueAsString(taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"SynapseProgramming"},"content":" Files.write(filePath, output.getBytes());","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"SynapseProgramming"},"content":" } catch (JsonProcessingException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"something went wrong\");","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"SynapseProgramming"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Unable to save to file!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"SynapseProgramming":72}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonTypeName;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"@JsonTypeName(\"tasks.Deadline\")","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":" public static final String taskType \u003d \"D\";","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" private LocalDate deadDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" public Deadline(String desc, LocalDate deaddate) {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" super(desc);","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" this.deadDate \u003d deaddate;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" public Deadline() {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" super(\"\");","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" public String getDeadDate() {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":" return this.deadDate.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"SynapseProgramming":27}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonTypeName;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"@JsonTypeName(\"tasks.Event\")","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":" public static final String taskType \u003d \"E\";","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":" private String startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" private String endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" public Event(String desc, String startDate, String endDate) {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" public Event() {","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" super(\"\");","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" public String getStartDate() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":" return this.startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" public String getEndDate() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":" return this.endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"SynapseProgramming":33}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonIgnoreProperties;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonSubTypes;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonTypeInfo;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"@JsonIgnoreProperties(ignoreUnknown \u003d true)","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"@JsonTypeInfo(use \u003d JsonTypeInfo.Id.NAME, include \u003d JsonTypeInfo.As.PROPERTY)","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"@JsonSubTypes({","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":" @JsonSubTypes.Type(value \u003d Todo.class, name \u003d \"tasks.Todo\"),","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":" @JsonSubTypes.Type(value \u003d Deadline.class, name \u003d \"tasks.Deadline\"),","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" @JsonSubTypes.Type(value \u003d Event.class, name \u003d \"tasks.Event\"),}","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":")","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" private String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":" private Boolean done;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" public Task(String desc) {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" this.description \u003d desc;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":" public void setDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":" public void setUnDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":" public String getDoneIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":" return this.done ? \"X\" : \" \";","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":" return this.description;","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"SynapseProgramming":42}},{"path":"src/main/java/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonIgnore;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":" public TaskList() {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" @JsonIgnore","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" @JsonIgnore","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" return tasks.isEmpty();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":" @JsonIgnore","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" @JsonIgnore","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" public Task get(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" @JsonIgnore","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":" public void remove(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"SynapseProgramming":44}},{"path":"src/main/java/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonTypeName;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"@JsonTypeName(\"tasks.Todo\")","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":" public static final String taskType \u003d \"T\";","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" public Todo() {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":" super(\"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" public Todo(String desc) {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" super(desc);","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"SynapseProgramming":20}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"todo hello","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"deadline world /by thursday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"event find bunnies /from monday /to sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"list","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"SynapseProgramming":9}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SynapseProgramming":1,"-":37}}] +[{"path":"build.gradle","fileType":"gradle","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"plugins {","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":" id \u0027java\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":" id \u0027application\u0027","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":" id \u0027com.github.johnrengelman.shadow\u0027 version \u00277.1.2\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":5,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"repositories {","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":" mavenCentral()","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"dependencies {","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" testImplementation group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-api\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":13,"author":{"gitId":"-"},"content":" testRuntimeOnly group: \u0027org.junit.jupiter\u0027, name: \u0027junit-jupiter-engine\u0027, version: \u00275.10.0\u0027","lastModifiedDate":"2023-08-05"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" implementation \u0027com.fasterxml.jackson.core:jackson-core:2.12.3\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" implementation \u0027com.fasterxml.jackson.core:jackson-databind:2.12.3\u0027","lastModifiedDate":"2023-08-27"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" implementation \u0027com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.3\u0027","lastModifiedDate":"2023-08-29"},{"lineNumber":17,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":"test {","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":" useJUnitPlatform()","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":" testLogging {","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":" events \"passed\", \"skipped\", \"failed\"","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":" showExceptions true","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":" exceptionFormat \"full\"","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":" showCauses true","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":" showStackTraces true","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":" showStandardStreams \u003d false","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":"application {","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" mainClass.set(\"seedu.duke.Duke\")","lastModifiedDate":"2023-08-05"},{"lineNumber":35,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":"shadowJar {","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":" archiveBaseName \u003d \"duke\"","lastModifiedDate":"2020-05-25"},{"lineNumber":39,"author":{"gitId":"-"},"content":" archiveClassifier \u003d null","lastModifiedDate":"2020-05-25"},{"lineNumber":40,"author":{"gitId":"-"},"content":" dependsOn(\"distZip\", \"distTar\")","lastModifiedDate":"2023-08-05"},{"lineNumber":41,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"},{"lineNumber":42,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":43,"author":{"gitId":"-"},"content":"run{","lastModifiedDate":"2020-05-25"},{"lineNumber":44,"author":{"gitId":"-"},"content":" standardInput \u003d System.in","lastModifiedDate":"2020-05-25"},{"lineNumber":45,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SynapseProgramming":3,"-":42}},{"path":"src/main/java/Duke.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"import exceptions.ParserException;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"import io.Parser;","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import io.Ui;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import storage.Storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Todo;","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":10,"author":{"gitId":"-"},"content":"public class Duke {","lastModifiedDate":"2019-07-29"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":" private Parser parser;","lastModifiedDate":"2023-08-31"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" private Ui ui;","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" private Storage storage;","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" public Duke() {","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":" this.taskList \u003d new TaskList();","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" this.parser \u003d new Parser();","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" this.ui \u003d new Ui();","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" this.storage \u003d new Storage(this.taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" public void listTasks() {","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"list is empty!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" return;","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" for (int i \u003d 0; i \u003c taskList.size(); i++) {","lastModifiedDate":"2023-09-02"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":" String index \u003d Integer.toString(i + 1);","lastModifiedDate":"2023-09-02"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":" Task selectedTask \u003d taskList.get(i);","lastModifiedDate":"2023-09-02"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(index + \" \" + ui.displayTask(selectedTask));","lastModifiedDate":"2023-09-02"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":" public void unmarkTask() {","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":" // set current task as un-done","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":" Task selectedTask \u003d taskList.get(parser.getIndex());","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SynapseProgramming"},"content":" selectedTask.setUnDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SynapseProgramming"},"content":" ui.displayAction(\"Marked selected task as un-done desu\", selectedTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"SynapseProgramming"},"content":" } catch (IndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Please enter a valid index!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SynapseProgramming"},"content":" public void markTaskAsDone() {","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SynapseProgramming"},"content":" // set current task as done","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SynapseProgramming"},"content":" Task selectedTask \u003d taskList.get(parser.getIndex());","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SynapseProgramming"},"content":" selectedTask.setDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"SynapseProgramming"},"content":" ui.displayAction(\"Marked selected task as done\", selectedTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"SynapseProgramming"},"content":" } catch (IndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Please enter a valid index!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"SynapseProgramming"},"content":" public void addTodo() {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"SynapseProgramming"},"content":" Task curentTask \u003d new Todo(parser.getTaskName());","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"SynapseProgramming"},"content":" taskList.add(curentTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"added:\\t\" + ui.displayTask(curentTask));","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SynapseProgramming"},"content":" } catch (StringIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Please enter a name after the todo command!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"SynapseProgramming"},"content":" public void addDeadline() {","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"SynapseProgramming"},"content":" Task curentTask \u003d parser.parseDeadline();","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"SynapseProgramming"},"content":" taskList.add(curentTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"added:\\t\" + ui.displayTask(curentTask));","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"SynapseProgramming"},"content":" } catch (ParserException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(ex.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"SynapseProgramming"},"content":" public void addEvent() {","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"SynapseProgramming"},"content":" Task curentTask \u003d parser.parseEvent();","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"SynapseProgramming"},"content":" taskList.add(curentTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"added:\\t\" + ui.displayTask(curentTask));","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"SynapseProgramming"},"content":" } catch (ParserException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(ex.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":94,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":95,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":96,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":97,"author":{"gitId":"SynapseProgramming"},"content":" public void deleteTask() {","lastModifiedDate":"2023-09-02"},{"lineNumber":98,"author":{"gitId":"SynapseProgramming"},"content":" if (taskList.isEmpty()) {","lastModifiedDate":"2023-09-02"},{"lineNumber":99,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"The list is empty!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":100,"author":{"gitId":"SynapseProgramming"},"content":" return;","lastModifiedDate":"2023-09-02"},{"lineNumber":101,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":102,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":103,"author":{"gitId":"SynapseProgramming"},"content":" // remove the current task","lastModifiedDate":"2023-09-02"},{"lineNumber":104,"author":{"gitId":"SynapseProgramming"},"content":" Task selectedTask \u003d taskList.get(parser.getIndex());","lastModifiedDate":"2023-09-02"},{"lineNumber":105,"author":{"gitId":"SynapseProgramming"},"content":" taskList.remove(parser.getIndex());","lastModifiedDate":"2023-09-02"},{"lineNumber":106,"author":{"gitId":"SynapseProgramming"},"content":" ui.displayAction(\"Deleting selected task!\", selectedTask);","lastModifiedDate":"2023-09-02"},{"lineNumber":107,"author":{"gitId":"SynapseProgramming"},"content":" } catch (IndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":108,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Please enter a valid index!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":109,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":110,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":111,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":112,"author":{"gitId":"SynapseProgramming"},"content":" public void run() {","lastModifiedDate":"2023-08-31"},{"lineNumber":113,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":114,"author":{"gitId":"SynapseProgramming"},"content":" ui.displayGreetings();","lastModifiedDate":"2023-09-02"},{"lineNumber":115,"author":{"gitId":"SynapseProgramming"},"content":" storage.loadTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":117,"author":{"gitId":"SynapseProgramming"},"content":" label:","lastModifiedDate":"2023-08-22"},{"lineNumber":118,"author":{"gitId":"SynapseProgramming"},"content":" while (true) {","lastModifiedDate":"2023-08-21"},{"lineNumber":119,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":120,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-08-23"},{"lineNumber":121,"author":{"gitId":"SynapseProgramming"},"content":" parser.update();","lastModifiedDate":"2023-08-30"},{"lineNumber":122,"author":{"gitId":"SynapseProgramming"},"content":" } catch (NoSuchElementException ex) {","lastModifiedDate":"2023-08-23"},{"lineNumber":123,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":124,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":125,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":126,"author":{"gitId":"SynapseProgramming"},"content":" // there is no input","lastModifiedDate":"2023-08-22"},{"lineNumber":127,"author":{"gitId":"SynapseProgramming"},"content":" if (parser.isInputThere()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":128,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":129,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":130,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":131,"author":{"gitId":"SynapseProgramming"},"content":" switch (parser.getCommandString()) {","lastModifiedDate":"2023-08-30"},{"lineNumber":132,"author":{"gitId":"SynapseProgramming"},"content":" case \"bye\":","lastModifiedDate":"2023-08-22"},{"lineNumber":133,"author":{"gitId":"SynapseProgramming"},"content":" break label;","lastModifiedDate":"2023-08-22"},{"lineNumber":134,"author":{"gitId":"SynapseProgramming"},"content":" case \"list\":","lastModifiedDate":"2023-08-22"},{"lineNumber":135,"author":{"gitId":"SynapseProgramming"},"content":" listTasks();","lastModifiedDate":"2023-09-02"},{"lineNumber":136,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":137,"author":{"gitId":"SynapseProgramming"},"content":" case \"mark\": {","lastModifiedDate":"2023-08-22"},{"lineNumber":138,"author":{"gitId":"SynapseProgramming"},"content":" markTaskAsDone();","lastModifiedDate":"2023-09-02"},{"lineNumber":139,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":140,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":141,"author":{"gitId":"SynapseProgramming"},"content":" case \"unmark\": {","lastModifiedDate":"2023-08-22"},{"lineNumber":142,"author":{"gitId":"SynapseProgramming"},"content":" unmarkTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":143,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":144,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":145,"author":{"gitId":"SynapseProgramming"},"content":" case \"todo\": {","lastModifiedDate":"2023-08-22"},{"lineNumber":146,"author":{"gitId":"SynapseProgramming"},"content":" addTodo();","lastModifiedDate":"2023-09-02"},{"lineNumber":147,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":148,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":149,"author":{"gitId":"SynapseProgramming"},"content":" case \"deadline\": {","lastModifiedDate":"2023-08-22"},{"lineNumber":150,"author":{"gitId":"SynapseProgramming"},"content":" addDeadline();","lastModifiedDate":"2023-09-02"},{"lineNumber":151,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-22"},{"lineNumber":152,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":153,"author":{"gitId":"SynapseProgramming"},"content":" case \"event\": {","lastModifiedDate":"2023-08-23"},{"lineNumber":154,"author":{"gitId":"SynapseProgramming"},"content":" addEvent();","lastModifiedDate":"2023-09-02"},{"lineNumber":155,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-23"},{"lineNumber":156,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":157,"author":{"gitId":"SynapseProgramming"},"content":" case \"delete\": {","lastModifiedDate":"2023-08-24"},{"lineNumber":158,"author":{"gitId":"SynapseProgramming"},"content":" deleteTask();","lastModifiedDate":"2023-09-02"},{"lineNumber":159,"author":{"gitId":"SynapseProgramming"},"content":" break;","lastModifiedDate":"2023-08-24"},{"lineNumber":160,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":161,"author":{"gitId":"SynapseProgramming"},"content":" default:","lastModifiedDate":"2023-08-22"},{"lineNumber":162,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Please enter a suitable task!\");","lastModifiedDate":"2023-08-22"},{"lineNumber":163,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":164,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-21"},{"lineNumber":165,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":166,"author":{"gitId":"SynapseProgramming"},"content":" ui.displayGoodbye();","lastModifiedDate":"2023-09-02"},{"lineNumber":167,"author":{"gitId":"SynapseProgramming"},"content":" storage.saveTasks();","lastModifiedDate":"2023-08-30"},{"lineNumber":168,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-21"},{"lineNumber":169,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":170,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":171,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":172,"author":{"gitId":"SynapseProgramming"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-31"},{"lineNumber":173,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":174,"author":{"gitId":"SynapseProgramming"},"content":" Duke duke \u003d new Duke();","lastModifiedDate":"2023-08-31"},{"lineNumber":175,"author":{"gitId":"SynapseProgramming"},"content":" duke.run();","lastModifiedDate":"2023-08-31"},{"lineNumber":176,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":177,"author":{"gitId":"-"},"content":" }","lastModifiedDate":"2019-07-29"},{"lineNumber":178,"author":{"gitId":"-"},"content":"}","lastModifiedDate":"2019-07-29"}],"authorContributionMap":{"SynapseProgramming":174,"-":4}},{"path":"src/main/java/exceptions/ParserException.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package exceptions;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"public class ParserException extends Exception {","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":" public ParserException() {","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":" super();","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":" public ParserException(String message) {","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":" super(message);","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"SynapseProgramming":13}},{"path":"src/main/java/io/Parser.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package io;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import exceptions.ParserException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"import java.time.format.DateTimeParseException;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2023-08-30"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Event;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"public class Parser {","lastModifiedDate":"2023-08-30"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" public Parser() {","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" inputTokens \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" inputString \u003d null;","lastModifiedDate":"2023-08-30"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":" scanner \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-30"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" public void update() throws NoSuchElementException {","lastModifiedDate":"2023-08-30"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" inputString \u003d scanner.nextLine();","lastModifiedDate":"2023-08-30"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" inputTokens \u003d inputString.split(\" \");","lastModifiedDate":"2023-08-30"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" public String getInputString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":" return this.inputString;","lastModifiedDate":"2023-08-30"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" public String[] getInputTokens() {","lastModifiedDate":"2023-08-30"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" return this.inputTokens;","lastModifiedDate":"2023-08-30"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":" public int getIndex() throws IndexOutOfBoundsException {","lastModifiedDate":"2023-08-30"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" int index \u003d Integer.parseInt(inputTokens[1]);","lastModifiedDate":"2023-08-30"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":" index--;","lastModifiedDate":"2023-08-30"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":" return index;","lastModifiedDate":"2023-08-30"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" public Deadline parseDeadline() throws ParserException {","lastModifiedDate":"2023-09-02"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":" Deadline result \u003d null;","lastModifiedDate":"2023-09-02"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":45,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":46,"author":{"gitId":"SynapseProgramming"},"content":" String taskName \u003d this.getTaskName();","lastModifiedDate":"2023-09-02"},{"lineNumber":47,"author":{"gitId":"SynapseProgramming"},"content":" String[] parts \u003d taskName.split(\"/by\", 2);","lastModifiedDate":"2023-09-02"},{"lineNumber":48,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":49,"author":{"gitId":"SynapseProgramming"},"content":" String name \u003d parts[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":50,"author":{"gitId":"SynapseProgramming"},"content":" String endDate \u003d parts[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":51,"author":{"gitId":"SynapseProgramming"},"content":" endDate \u003d endDate.replace(\" \", \"\");","lastModifiedDate":"2023-09-02"},{"lineNumber":52,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":53,"author":{"gitId":"SynapseProgramming"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(\"dd/MM/yyyy\");","lastModifiedDate":"2023-09-02"},{"lineNumber":54,"author":{"gitId":"SynapseProgramming"},"content":" LocalDate date \u003d LocalDate.parse(endDate, formatter);","lastModifiedDate":"2023-09-02"},{"lineNumber":55,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":56,"author":{"gitId":"SynapseProgramming"},"content":" result \u003d new Deadline(name, date);","lastModifiedDate":"2023-09-02"},{"lineNumber":57,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":58,"author":{"gitId":"SynapseProgramming"},"content":" } catch (ArrayIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":59,"author":{"gitId":"SynapseProgramming"},"content":" throw new ParserException(\"Please include a (/by) command, followed by a date\");","lastModifiedDate":"2023-09-02"},{"lineNumber":60,"author":{"gitId":"SynapseProgramming"},"content":" } catch (StringIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":61,"author":{"gitId":"SynapseProgramming"},"content":" throw new ParserException(","lastModifiedDate":"2023-09-02"},{"lineNumber":62,"author":{"gitId":"SynapseProgramming"},"content":" \"Please enter a name, followed by a (/by) command, followed by a date\");","lastModifiedDate":"2023-09-02"},{"lineNumber":63,"author":{"gitId":"SynapseProgramming"},"content":" } catch (DateTimeParseException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":64,"author":{"gitId":"SynapseProgramming"},"content":" throw new ParserException(\"Please enter a time format as dd/MM/yyyy\");","lastModifiedDate":"2023-09-02"},{"lineNumber":65,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":66,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":67,"author":{"gitId":"SynapseProgramming"},"content":" return result;","lastModifiedDate":"2023-09-02"},{"lineNumber":68,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":69,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":70,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":71,"author":{"gitId":"SynapseProgramming"},"content":" public Event parseEvent() throws ParserException {","lastModifiedDate":"2023-09-02"},{"lineNumber":72,"author":{"gitId":"SynapseProgramming"},"content":" Event result \u003d null;","lastModifiedDate":"2023-09-02"},{"lineNumber":73,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":74,"author":{"gitId":"SynapseProgramming"},"content":" String taskName \u003d this.getTaskName();","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"SynapseProgramming"},"content":" String[] parts \u003d taskName.split(\"/from\", 2);","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"SynapseProgramming"},"content":" String name \u003d parts[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"SynapseProgramming"},"content":" String dates \u003d parts[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"SynapseProgramming"},"content":" String[] datesplit \u003d dates.split(\"/to\", 2);","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"SynapseProgramming"},"content":" String startDate \u003d datesplit[0];","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"SynapseProgramming"},"content":" String endDate \u003d datesplit[1];","lastModifiedDate":"2023-09-02"},{"lineNumber":81,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":82,"author":{"gitId":"SynapseProgramming"},"content":" result \u003d new Event(name, startDate, endDate);","lastModifiedDate":"2023-09-02"},{"lineNumber":83,"author":{"gitId":"SynapseProgramming"},"content":" } catch (StringIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":84,"author":{"gitId":"SynapseProgramming"},"content":" throw new ParserException(\"The event command cannot be empty!\");","lastModifiedDate":"2023-09-02"},{"lineNumber":85,"author":{"gitId":"SynapseProgramming"},"content":" } catch (ArrayIndexOutOfBoundsException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":86,"author":{"gitId":"SynapseProgramming"},"content":" throw new ParserException(","lastModifiedDate":"2023-09-02"},{"lineNumber":87,"author":{"gitId":"SynapseProgramming"},"content":" \"Please enter a name, followed by a (/from) command, followed by a date, followed by a (/to) command and a date\");","lastModifiedDate":"2023-09-02"},{"lineNumber":88,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":89,"author":{"gitId":"SynapseProgramming"},"content":" return result;","lastModifiedDate":"2023-09-02"},{"lineNumber":90,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":91,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":92,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":93,"author":{"gitId":"SynapseProgramming"},"content":" public String getCommandString() {","lastModifiedDate":"2023-08-30"},{"lineNumber":94,"author":{"gitId":"SynapseProgramming"},"content":" if (inputTokens.length \u003d\u003d 0) {","lastModifiedDate":"2023-08-30"},{"lineNumber":95,"author":{"gitId":"SynapseProgramming"},"content":" return \"\";","lastModifiedDate":"2023-08-30"},{"lineNumber":96,"author":{"gitId":"SynapseProgramming"},"content":" } else {","lastModifiedDate":"2023-08-30"},{"lineNumber":97,"author":{"gitId":"SynapseProgramming"},"content":" return inputTokens[0];","lastModifiedDate":"2023-08-30"},{"lineNumber":98,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":99,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":100,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":101,"author":{"gitId":"SynapseProgramming"},"content":" public String getTaskName() {","lastModifiedDate":"2023-08-30"},{"lineNumber":102,"author":{"gitId":"SynapseProgramming"},"content":" String commandString \u003d this.getCommandString();","lastModifiedDate":"2023-08-30"},{"lineNumber":103,"author":{"gitId":"SynapseProgramming"},"content":" int commandLength \u003d commandString.length() + 1;","lastModifiedDate":"2023-08-30"},{"lineNumber":104,"author":{"gitId":"SynapseProgramming"},"content":" return inputString.substring(commandLength);","lastModifiedDate":"2023-08-30"},{"lineNumber":105,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":106,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":107,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":108,"author":{"gitId":"SynapseProgramming"},"content":" public boolean isInputThere() {","lastModifiedDate":"2023-08-30"},{"lineNumber":109,"author":{"gitId":"SynapseProgramming"},"content":" return inputTokens.length \u003d\u003d 0;","lastModifiedDate":"2023-08-30"},{"lineNumber":110,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-30"},{"lineNumber":111,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":112,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":113,"author":{"gitId":"SynapseProgramming"},"content":" private String inputString;","lastModifiedDate":"2023-08-30"},{"lineNumber":114,"author":{"gitId":"SynapseProgramming"},"content":" private String[] inputTokens;","lastModifiedDate":"2023-08-30"},{"lineNumber":115,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":116,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-30"},{"lineNumber":117,"author":{"gitId":"SynapseProgramming"},"content":" private Scanner scanner;","lastModifiedDate":"2023-08-30"},{"lineNumber":118,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-30"}],"authorContributionMap":{"SynapseProgramming":118}},{"path":"src/main/java/io/Ui.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package io;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Event;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Todo;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"public class Ui {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":" public void displayGreetings() {","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" String greeting \u003d \"Hello! I\u0027m KimochiUsagi (きもち うさぎ)!\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":" String info \u003d \"Ask the bunny a question!\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(greeting);","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(info);","lastModifiedDate":"2023-09-02"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" public void displayAction(String message, Task task) {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(message);","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(this.displayTask(task));","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" public void displayGoodbye() {","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":" String goodbye \u003d \"Bye. See you again! (またね)\";","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(goodbye);","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" public String displayTask(Task task) {","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":" String answer \u003d \"\";","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":" if (task instanceof Todo) {","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" answer \u003d \"[\" + Todo.taskType + \"]\" + \"[\" + task.getDoneIcon() + \"] \" + task.getDescription();","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":" } else if (task instanceof Deadline) {","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":" Deadline deadTask \u003d (Deadline) task;","lastModifiedDate":"2023-08-22"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":" answer \u003d","lastModifiedDate":"2023-08-22"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":" \"[\" + Deadline.taskType + \"]\" + \"[\" + task.getDoneIcon() + \"] \" + task.getDescription()","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" + \"(\"","lastModifiedDate":"2023-08-28"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":" + deadTask.getDeadDate() + \")\";","lastModifiedDate":"2023-08-22"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":45,"author":{"gitId":"SynapseProgramming"},"content":" } else if (task instanceof Event) {","lastModifiedDate":"2023-08-23"},{"lineNumber":46,"author":{"gitId":"SynapseProgramming"},"content":" Event eventTask \u003d (Event) task;","lastModifiedDate":"2023-08-23"},{"lineNumber":47,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":48,"author":{"gitId":"SynapseProgramming"},"content":" answer \u003d","lastModifiedDate":"2023-08-23"},{"lineNumber":49,"author":{"gitId":"SynapseProgramming"},"content":" \"[\" + Event.taskType + \"]\" + \"[\" + task.getDoneIcon() + \"] \" + task.getDescription() + \"(\"","lastModifiedDate":"2023-08-28"},{"lineNumber":50,"author":{"gitId":"SynapseProgramming"},"content":" + eventTask.getStartDate() + \" to \" + eventTask.getEndDate() + \")\";","lastModifiedDate":"2023-08-23"},{"lineNumber":51,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":52,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":53,"author":{"gitId":"SynapseProgramming"},"content":" return answer;","lastModifiedDate":"2023-08-22"},{"lineNumber":54,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":55,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":56,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"SynapseProgramming":56}},{"path":"src/main/java/storage/Storage.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package storage;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;","lastModifiedDate":"2023-08-29"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.PropertyAccessor;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.core.JsonProcessingException;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.databind.jsontype.BasicPolymorphicTypeValidator;","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.databind.jsontype.PolymorphicTypeValidator;","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;","lastModifiedDate":"2023-08-29"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":"import java.io.IOException;","lastModifiedDate":"2023-08-28"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"import java.nio.file.Files;","lastModifiedDate":"2023-08-28"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":"import java.nio.file.Path;","lastModifiedDate":"2023-08-28"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"import java.nio.file.Paths;","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.databind.ObjectMapper;","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.TaskList;","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":"public class Storage {","lastModifiedDate":"2023-08-30"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" private TaskList taskList;","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" private ObjectMapper taskMapper;","lastModifiedDate":"2023-08-28"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":" public Storage(TaskList tasks) {","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" this.taskList \u003d tasks;","lastModifiedDate":"2023-08-28"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":" this.taskMapper \u003d new ObjectMapper();","lastModifiedDate":"2023-08-28"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" this.taskMapper.registerModule(new JavaTimeModule());","lastModifiedDate":"2023-08-29"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":" PolymorphicTypeValidator ptv \u003d BasicPolymorphicTypeValidator.builder()","lastModifiedDate":"2023-08-28"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" .allowIfSubType(\"java.util.ArrayList\")","lastModifiedDate":"2023-08-28"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":" .allowIfSubType(\"ReceivedTasks\")","lastModifiedDate":"2023-08-28"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" .allowIfSubType(\"tasks.Task\")","lastModifiedDate":"2023-09-02"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" .build();","lastModifiedDate":"2023-08-28"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":" this.taskMapper.activateDefaultTyping(ptv, DefaultTyping.NON_FINAL);","lastModifiedDate":"2023-08-28"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":" this.taskMapper.setVisibility(PropertyAccessor.FIELD, Visibility.ANY);","lastModifiedDate":"2023-08-29"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":" public void loadTasks() {","lastModifiedDate":"2023-08-28"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":" Path filePath \u003d Paths.get(\"tasks.json\");","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":" String content \u003d new String(Files.readAllBytes(filePath));","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" TaskList plist \u003d this.taskMapper.readValue(content, TaskList.class);","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":" for (int i \u003d 0; i \u003c plist.size(); i++) {","lastModifiedDate":"2023-08-31"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":" Task wow \u003d plist.get(i);","lastModifiedDate":"2023-08-31"},{"lineNumber":45,"author":{"gitId":"SynapseProgramming"},"content":" taskList.add(wow);","lastModifiedDate":"2023-08-31"},{"lineNumber":46,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":47,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":48,"author":{"gitId":"SynapseProgramming"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":49,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(ex.getMessage() + \" not found! No list loaded!\");","lastModifiedDate":"2023-08-29"},{"lineNumber":50,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":51,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":52,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":53,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":54,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":55,"author":{"gitId":"SynapseProgramming"},"content":" // given the original tasklist, save the tasks into a json file","lastModifiedDate":"2023-08-28"},{"lineNumber":56,"author":{"gitId":"SynapseProgramming"},"content":" public void saveTasks() {","lastModifiedDate":"2023-08-28"},{"lineNumber":57,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":58,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-08-28"},{"lineNumber":59,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":60,"author":{"gitId":"SynapseProgramming"},"content":" Path filePath \u003d Paths.get(\"tasks.json\");","lastModifiedDate":"2023-08-28"},{"lineNumber":61,"author":{"gitId":"SynapseProgramming"},"content":" String output \u003d","lastModifiedDate":"2023-08-28"},{"lineNumber":62,"author":{"gitId":"SynapseProgramming"},"content":" this.taskMapper.writeValueAsString(taskList);","lastModifiedDate":"2023-08-31"},{"lineNumber":63,"author":{"gitId":"SynapseProgramming"},"content":" Files.write(filePath, output.getBytes());","lastModifiedDate":"2023-08-28"},{"lineNumber":64,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":65,"author":{"gitId":"SynapseProgramming"},"content":" } catch (JsonProcessingException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":66,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"something went wrong\");","lastModifiedDate":"2023-08-28"},{"lineNumber":67,"author":{"gitId":"SynapseProgramming"},"content":" } catch (IOException ex) {","lastModifiedDate":"2023-08-28"},{"lineNumber":68,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Unable to save to file!\");","lastModifiedDate":"2023-08-28"},{"lineNumber":69,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":70,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":71,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":72,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"SynapseProgramming":72}},{"path":"src/main/java/tasks/Deadline.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonTypeName;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"@JsonTypeName(\"tasks.Deadline\")","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"public class Deadline extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":" public static final String taskType \u003d \"D\";","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" private LocalDate deadDate;","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" public Deadline(String desc, LocalDate deaddate) {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" super(desc);","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" this.deadDate \u003d deaddate;","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" public Deadline() {","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" super(\"\");","lastModifiedDate":"2023-08-29"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" public String getDeadDate() {","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":" return this.deadDate.toString();","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"SynapseProgramming":27}},{"path":"src/main/java/tasks/Event.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonTypeName;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"@JsonTypeName(\"tasks.Event\")","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"public class Event extends Task {","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":" public static final String taskType \u003d \"E\";","lastModifiedDate":"2023-08-23"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":" private String startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" private String endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" public Event(String desc, String startDate, String endDate) {","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" super(desc);","lastModifiedDate":"2023-08-23"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" this.startDate \u003d startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" this.endDate \u003d endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" public Event() {","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" super(\"\");","lastModifiedDate":"2023-08-29"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-29"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" public String getStartDate() {","lastModifiedDate":"2023-08-23"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":" return this.startDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" public String getEndDate() {","lastModifiedDate":"2023-08-23"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":" return this.endDate;","lastModifiedDate":"2023-08-23"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-23"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-23"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"SynapseProgramming":33}},{"path":"src/main/java/tasks/Task.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonIgnoreProperties;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonSubTypes;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonTypeInfo;","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"@JsonIgnoreProperties(ignoreUnknown \u003d true)","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"@JsonTypeInfo(use \u003d JsonTypeInfo.Id.NAME, include \u003d JsonTypeInfo.As.PROPERTY)","lastModifiedDate":"2023-08-28"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"@JsonSubTypes({","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":" @JsonSubTypes.Type(value \u003d Todo.class, name \u003d \"tasks.Todo\"),","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":" @JsonSubTypes.Type(value \u003d Deadline.class, name \u003d \"tasks.Deadline\"),","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" @JsonSubTypes.Type(value \u003d Event.class, name \u003d \"tasks.Event\"),}","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":")","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":"public class Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" private String description;","lastModifiedDate":"2023-08-28"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":" private Boolean done;","lastModifiedDate":"2023-08-29"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" public Task(String desc) {","lastModifiedDate":"2023-08-22"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" this.description \u003d desc;","lastModifiedDate":"2023-08-22"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":" public void setDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" this.done \u003d true;","lastModifiedDate":"2023-08-22"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":" public void setUnDone() {","lastModifiedDate":"2023-08-22"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" this.done \u003d false;","lastModifiedDate":"2023-08-22"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":" public String getDoneIcon() {","lastModifiedDate":"2023-08-22"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":" return this.done ? \"X\" : \" \";","lastModifiedDate":"2023-08-22"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":" public String getDescription() {","lastModifiedDate":"2023-08-28"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":" return this.description;","lastModifiedDate":"2023-08-28"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"SynapseProgramming":42}},{"path":"src/main/java/tasks/TaskList.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonIgnore;","lastModifiedDate":"2023-08-31"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import java.util.ArrayList;","lastModifiedDate":"2023-08-28"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"public class TaskList {","lastModifiedDate":"2023-08-30"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":" public TaskList() {","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":" tasks \u003d new ArrayList\u003c\u003e();","lastModifiedDate":"2023-08-31"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-29"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" @JsonIgnore","lastModifiedDate":"2023-08-31"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" public int size() {","lastModifiedDate":"2023-08-31"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" return tasks.size();","lastModifiedDate":"2023-08-31"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" @JsonIgnore","lastModifiedDate":"2023-08-31"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" public boolean isEmpty() {","lastModifiedDate":"2023-08-31"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" return tasks.isEmpty();","lastModifiedDate":"2023-08-31"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":" @JsonIgnore","lastModifiedDate":"2023-08-31"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" public void add(Task task) {","lastModifiedDate":"2023-08-31"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":" tasks.add(task);","lastModifiedDate":"2023-08-31"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" @JsonIgnore","lastModifiedDate":"2023-08-31"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" public Task get(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":" return tasks.get(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" @JsonIgnore","lastModifiedDate":"2023-08-31"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":" public void remove(int index) {","lastModifiedDate":"2023-08-31"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":" tasks.remove(index);","lastModifiedDate":"2023-08-31"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-31"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-31"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" private ArrayList\u003cTask\u003e tasks;","lastModifiedDate":"2023-08-31"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-28"}],"authorContributionMap":{"SynapseProgramming":44}},{"path":"src/main/java/tasks/Todo.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package tasks;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import com.fasterxml.jackson.annotation.JsonTypeName;","lastModifiedDate":"2023-08-28"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Task;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"@JsonTypeName(\"tasks.Todo\")","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"public class Todo extends Task {","lastModifiedDate":"2023-08-22"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":" public static final String taskType \u003d \"T\";","lastModifiedDate":"2023-08-22"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":" public Todo() {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":" super(\"\");","lastModifiedDate":"2023-08-28"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-28"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-28"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":" public Todo(String desc) {","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" super(desc);","lastModifiedDate":"2023-08-22"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-08-22"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-08-22"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-08-22"}],"authorContributionMap":{"SynapseProgramming":20}},{"path":"src/test/java/io/ParserTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package io;","lastModifiedDate":"2023-09-02"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import exceptions.ParserException;","lastModifiedDate":"2023-09-02"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import java.io.ByteArrayInputStream;","lastModifiedDate":"2023-09-02"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import java.io.InputStream;","lastModifiedDate":"2023-09-02"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2023-09-02"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-02"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-02"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-02"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":"public class ParserTest {","lastModifiedDate":"2023-09-02"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":" @Test","lastModifiedDate":"2023-09-02"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":" public void parseDeadline_noByStatement_exceptionThrown() {","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":" String input \u003d \"deadline hello test\\n\";","lastModifiedDate":"2023-09-02"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":" InputStream in \u003d new ByteArrayInputStream(input.getBytes());","lastModifiedDate":"2023-09-02"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" System.setIn(in);","lastModifiedDate":"2023-09-02"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-02"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" parser.update();","lastModifiedDate":"2023-09-02"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" } catch (NoSuchElementException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Should not reach here\");","lastModifiedDate":"2023-09-02"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-02"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-02"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":" parser.parseDeadline();","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" fail();","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":" } catch (ParserException ex) {","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(ex.getMessage());","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":" System.setIn(System.in);","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":" public void parseDeadline_invalidDate_exceptionThrown() {","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":" String input \u003d \"deadline /by somedate\\n\";","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":" InputStream in \u003d new ByteArrayInputStream(input.getBytes());","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":" System.setIn(in);","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":" parser.update();","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"SynapseProgramming"},"content":" } catch (NoSuchElementException ex) {","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Should not reach here\");","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"SynapseProgramming"},"content":" parser.parseDeadline();","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"SynapseProgramming"},"content":" fail();","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"SynapseProgramming"},"content":" } catch (ParserException ex) {","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(ex.getMessage());","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"SynapseProgramming"},"content":" System.setIn(System.in);","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"SynapseProgramming"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":60,"author":{"gitId":"SynapseProgramming"},"content":" public void parseDeadline_noName_exceptionThrown() {","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"SynapseProgramming"},"content":" String input \u003d \"deadline\\n\";","lastModifiedDate":"2023-09-03"},{"lineNumber":63,"author":{"gitId":"SynapseProgramming"},"content":" InputStream in \u003d new ByteArrayInputStream(input.getBytes());","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"SynapseProgramming"},"content":" System.setIn(in);","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"SynapseProgramming"},"content":" Parser parser \u003d new Parser();","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":67,"author":{"gitId":"SynapseProgramming"},"content":" parser.update();","lastModifiedDate":"2023-09-03"},{"lineNumber":68,"author":{"gitId":"SynapseProgramming"},"content":" } catch (NoSuchElementException ex) {","lastModifiedDate":"2023-09-03"},{"lineNumber":69,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(\"Should not reach here\");","lastModifiedDate":"2023-09-03"},{"lineNumber":70,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":71,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"SynapseProgramming"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":73,"author":{"gitId":"SynapseProgramming"},"content":" parser.parseDeadline();","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"SynapseProgramming"},"content":" fail();","lastModifiedDate":"2023-09-02"},{"lineNumber":75,"author":{"gitId":"SynapseProgramming"},"content":" } catch (ParserException ex) {","lastModifiedDate":"2023-09-02"},{"lineNumber":76,"author":{"gitId":"SynapseProgramming"},"content":" System.out.println(ex.getMessage());","lastModifiedDate":"2023-09-02"},{"lineNumber":77,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":78,"author":{"gitId":"SynapseProgramming"},"content":" System.setIn(System.in);","lastModifiedDate":"2023-09-02"},{"lineNumber":79,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-02"},{"lineNumber":80,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-09-02"}],"authorContributionMap":{"SynapseProgramming":80}},{"path":"src/test/java/io/UiTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"package io;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"import exceptions.ParserException;","lastModifiedDate":"2023-09-03"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"import java.io.ByteArrayInputStream;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"import java.io.InputStream;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"import java.time.LocalDate;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"import java.util.NoSuchElementException;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"import org.junit.jupiter.api.Test;","lastModifiedDate":"2023-09-03"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Deadline;","lastModifiedDate":"2023-09-03"},{"lineNumber":10,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Event;","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"SynapseProgramming"},"content":"import tasks.Todo;","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"SynapseProgramming"},"content":"import static org.junit.jupiter.api.Assertions.assertEquals;","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"SynapseProgramming"},"content":"import static org.junit.jupiter.api.Assertions.fail;","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"SynapseProgramming"},"content":"public class UiTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"SynapseProgramming"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"SynapseProgramming"},"content":" public void displayTask_Deadlineobj_output() {","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"SynapseProgramming"},"content":" LocalDate date \u003d LocalDate.of(2021, 1, 1);","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"SynapseProgramming"},"content":" String name \u003d \"hello \";","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"SynapseProgramming"},"content":" Deadline input \u003d new Deadline(name, date);","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"SynapseProgramming"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"SynapseProgramming"},"content":" String output \u003d ui.displayTask(input);","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"SynapseProgramming"},"content":" assertEquals(\"[D][ ] hello (2021-01-01)\", output);","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"SynapseProgramming"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"SynapseProgramming"},"content":" public void displayTask_Eventobj_output() {","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"SynapseProgramming"},"content":" String name \u003d \"hello \";","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"SynapseProgramming"},"content":" String start \u003d \"mon\";","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"SynapseProgramming"},"content":" String end \u003d \"sun\";","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"SynapseProgramming"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"SynapseProgramming"},"content":" Event input \u003d new Event(name, start, end);","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"SynapseProgramming"},"content":" String output \u003d ui.displayTask(input);","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"SynapseProgramming"},"content":" assertEquals(\"[E][ ] hello (mon to sun)\", output);","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"SynapseProgramming"},"content":" @Test","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"SynapseProgramming"},"content":" public void displayTask_todoobj_output() {","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"SynapseProgramming"},"content":" String name \u003d \"hello \";","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"SynapseProgramming"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"SynapseProgramming"},"content":" Todo input \u003d new Todo(name);","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"SynapseProgramming"},"content":" String output \u003d ui.displayTask(input);","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"SynapseProgramming"},"content":" assertEquals(\"[T][ ] hello \", output);","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"SynapseProgramming"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"SynapseProgramming"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"SynapseProgramming"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"SynapseProgramming":49}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"SynapseProgramming"},"content":"todo hello","lastModifiedDate":"2023-08-23"},{"lineNumber":2,"author":{"gitId":"SynapseProgramming"},"content":"deadline world /by thursday","lastModifiedDate":"2023-08-23"},{"lineNumber":3,"author":{"gitId":"SynapseProgramming"},"content":"event find bunnies /from monday /to sunday","lastModifiedDate":"2023-08-23"},{"lineNumber":4,"author":{"gitId":"SynapseProgramming"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":5,"author":{"gitId":"SynapseProgramming"},"content":"mark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":6,"author":{"gitId":"SynapseProgramming"},"content":"mark 2","lastModifiedDate":"2023-08-23"},{"lineNumber":7,"author":{"gitId":"SynapseProgramming"},"content":"list","lastModifiedDate":"2023-08-23"},{"lineNumber":8,"author":{"gitId":"SynapseProgramming"},"content":"unmark 1","lastModifiedDate":"2023-08-23"},{"lineNumber":9,"author":{"gitId":"SynapseProgramming"},"content":"list","lastModifiedDate":"2023-08-23"}],"authorContributionMap":{"SynapseProgramming":9}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"-"},"content":"java -classpath ../bin Duke \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"SynapseProgramming"},"content":"#dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2023-08-23"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"SynapseProgramming":1,"-":37}}] diff --git a/SynapseProgramming_ip_master/commits.json b/SynapseProgramming_ip_master/commits.json index 94da39c5..a9bac6c0 100644 --- a/SynapseProgramming_ip_master/commits.json +++ b/SynapseProgramming_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"SynapseProgramming":[{"date":"2023-08-21","commitResults":[{"hash":"734a66800a1df6236875b7d340187a4d5e918bfe","isMergeCommit":false,"messageTitle":"Added in initial greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":8}}},{"hash":"906971659ddfe81607794f4e89bd46692972f870","isMergeCommit":false,"messageTitle":"Added in echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"e5e7fb40ea3aeb4902e5d65d2aad7d7b058d7e88","isMergeCommit":false,"messageTitle":"Completed level-2 feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}}]},{"date":"2023-08-22","commitResults":[{"hash":"e9d07fa464a9267f944bb1254313e40713c7cad8","isMergeCommit":false,"messageTitle":"Added in mark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"65fd77b4402c45ec1529d4b55ef40bd9e999c1c5","isMergeCommit":false,"messageTitle":"Modified input string parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":5}}},{"hash":"9d65caaa1d0ab01b17b1b023e7d60477dd74c249","isMergeCommit":false,"messageTitle":"Added in Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"91ac6f7cac3abec473eecb9f8c38d15212f305c1","isMergeCommit":false,"messageTitle":"Renamed userInputs array as taskList. Added in task marking","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":5}}},{"hash":"9cd8e335d38bf156320db24a0f7e23bfb7398f35","isMergeCommit":false,"messageTitle":"Added in unmark function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"e351321deeb8f26d7602e6fc3020bbdf207ff41f","isMergeCommit":false,"messageTitle":"Converted if-else chain to switch statement","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":30}}},{"hash":"620b1af2da7c57936d317d3a5d3f0318e0631722","isMergeCommit":false,"messageTitle":"Added in todo command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"83be3198a5ffd93689fa4eb487c57265548744f2","isMergeCommit":false,"messageTitle":"Added in Todo class to represent Todo event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"92dec94f9625383f281bbb87a6c4522ba8b9b34f","isMergeCommit":false,"messageTitle":"Added in UiFormatter class for formatting objects of type Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"1ddf9793afc436d1e886522bae0ac4095eb9cb7d","isMergeCommit":false,"messageTitle":"completed \"todo\" command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":2}}},{"hash":"8ab10ba94c203b040a848338a9cb5c97e2c25a62","isMergeCommit":false,"messageTitle":"removed default add task, and changed print statements to use UiFormatter","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"aa02ffab6a8fc825b0fe43957b88d18a9e27f79f","isMergeCommit":false,"messageTitle":"Added in Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"5fd772a81b82f76f518667a986b44cc116ed49da","isMergeCommit":false,"messageTitle":"Added in formatting for Deadline objects","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"b293421d5f689a97effefd3e5193e4f0fa0106b6","isMergeCommit":false,"messageTitle":"Added in deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"9f639de3829c1e5d8daa94b76289f53fd8bb8827","isMergeCommit":false,"messageTitle":"Added in Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"16cb6b6ff32d7ee3a8fb214014345da0b3ac0f42","isMergeCommit":false,"messageTitle":"Added in Event class to displayTask function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"b4af2cfbc1a3798dc7b61b99305ba167214ffff2","isMergeCommit":false,"messageTitle":"Added in Event command","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"f7fc11bccf2470470153ead65edf3e1bb13ffabf","isMergeCommit":false,"messageTitle":"Added in input testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"3dfb3a8d2af0b759fd94f36cd45c3a6f542fe518","isMergeCommit":false,"messageTitle":"Added in exception handling for mark and unmark commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":15}}},{"hash":"b7384cda1177eb094be86459b0dafe6c8dd29a64","isMergeCommit":false,"messageTitle":"Added in exception handling for end of line","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"83f297976e48dc683d69a7eb4316b1d58866e41e","isMergeCommit":false,"messageTitle":"Added in empty list check for list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"510c9eb7cc9b6597ecfde7ee57cd757b2ac5521a","isMergeCommit":false,"messageTitle":"Added in exception handling for todo command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":5}}},{"hash":"4ffd55777519714e535bf0dbc71fbc2edbda4a52","isMergeCommit":false,"messageTitle":"Added in exception handling for deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":8}}},{"hash":"4f50adf72971fe54e1d8bc70e552839dd0bbcbdd","isMergeCommit":false,"messageTitle":"Added in exception handling for event command","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":13}}}]},{"date":"2023-08-24","commitResults":[{"hash":"1036360dc848b827a9715eb065dd553142e91bd3","isMergeCommit":false,"messageTitle":"Added in case for deleting entries from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"752aa3b6d4346be95f552c85d0f819f2e197a538","isMergeCommit":true,"messageTitle":"Merge pull request #1 from SynapseProgramming/devel","messageBody":"Completed week 2 tasks","fileTypesAndContributionMap":{}}]},{"date":"2023-08-27","commitResults":[{"hash":"2d7c02079abf478b3a10917dfb40497639bbcdfc","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-Level-7","messageBody":"* add-gradle-support:\n Bump gradle and lib version\n Add Gradle support\n","fileTypesAndContributionMap":{}},{"hash":"1266a00de68a2ebbf6eed26d0c113898ffc185a0","isMergeCommit":false,"messageTitle":"Add json library as a dependency","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"0fff40c39e33eda6cb5128e0fbaeca0bb7ac383c","isMergeCommit":false,"messageTitle":"Add in Tasklistloader class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"70d745c2f027557ec2b2be6c48e7489a76e5e04f","isMergeCommit":false,"messageTitle":"Add in test json file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"c6fc339d09b52a1d052298b0661cac1287a9b470","isMergeCommit":false,"messageTitle":"Enable polymorphism for json Task parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"f377b3ee66bf57e0d94469c0635e8431f37d4f0d","isMergeCommit":false,"messageTitle":"Modify description field of Task class to private","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"2eb3e1fc0a4795485cb56b7ae643a4dd7b7d21d2","isMergeCommit":false,"messageTitle":"Fix missing fields in json file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":10}}},{"hash":"b398d003fe7df0da2741936c0457209da5a806ef","isMergeCommit":false,"messageTitle":"Modify access of description class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"b20bd5f86f411316f1ad75b80fa165a683db7249","isMergeCommit":false,"messageTitle":"Add in first working json serializing/ deserializing attempt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":6}}}]},{"date":"2023-08-29","commitResults":[{"hash":"e08b009480795a21fe0823f50d2d829cae7799d1","isMergeCommit":false,"messageTitle":"Remove commented code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":6}}},{"hash":"2a1935e939be676b75fc53ce23cfa9df0738f3ab","isMergeCommit":false,"messageTitle":"Code linting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"92394c7d2fced822bd88623fd5207ab11945ef07","isMergeCommit":false,"messageTitle":"Add in empty constructor required by Jackson library","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"69676dee55f0afd869e5f3f2aedbbfd505f9497d","isMergeCommit":false,"messageTitle":"Remove unused headers and comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":6}}},{"hash":"d95bb5c643b50464caa5007ea04d5740e4fa3299","isMergeCommit":false,"messageTitle":"Fix class field visibility for Jackon. \u0026 Save previous data to arraylist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"f3a868d0274eb1decbfae1f6fa5bb35112e0369b","isMergeCommit":false,"messageTitle":"change done to boolean object type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"324ebe865d995928cf332233a26a509abd06aa4d","isMergeCommit":false,"messageTitle":"Remove print test statements and commented code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":8}}},{"hash":"4a80709181364571e0168a46829b97533a129229","isMergeCommit":false,"messageTitle":"Place save tasks function to end of main function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"3698ca926892b8285891af0b7e0dc828aeaf320f","isMergeCommit":false,"messageTitle":"Add in more verbose warning for ( tasks.json not found)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ba398b9a123f7884d851e863d362c81eb4713df4","isMergeCommit":true,"messageTitle":"Merge pull request #2 from SynapseProgramming/branch-Level-7","messageBody":"Add task save to json file","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"3ba4a4eab3258662c2252648cecc66bd0dce231e","isMergeCommit":false,"messageTitle":"Add DeadTime support for parser","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":2,"deletions":0}}},{"hash":"b897a1d62d667622cb8b1d25d2f1aa59dde31d5b","isMergeCommit":false,"messageTitle":"Change date field to LocalDate type for Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"3e9087a23fbcd5d43065d4fffda87f9eec0c5534","isMergeCommit":false,"messageTitle":"Add in string formatting to Localdate type for deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"9f48ef4302046558dbbcc9158205b9df671b12e5","isMergeCommit":false,"messageTitle":"Remove toto and test print statements","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6b5795d7bec7377c450d7fe598e725cad8f81365","isMergeCommit":true,"messageTitle":"Merge pull request #3 from SynapseProgramming/branch-Level-8","messageBody":"Change deaddate field from string type to Date type","fileTypesAndContributionMap":{}},{"hash":"9b52c284edf6ef1cd0d20f61ce765ecfbcea8676","isMergeCommit":false,"messageTitle":"Rename ReceivedTasks to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"2f6b44637381a727654f17c896dde388c8a524a3","isMergeCommit":false,"messageTitle":"Rename Tasklistloader to Storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"da38f669d42ab65d7285369fa46c06d15689776e","isMergeCommit":false,"messageTitle":"Add in initial parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":3}}},{"hash":"dd800a99683fe8befd595700ff1519f066c29212","isMergeCommit":false,"messageTitle":"Remove commented code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}},{"hash":"a18874ba037f99f786701e76b5986c65ddfc7b63","isMergeCommit":false,"messageTitle":"Add in getIndex function into parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"464bef9d7c370ad376e29c090f339ed8aa22029d","isMergeCommit":false,"messageTitle":"Add in getIndex function call for unmark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":4}}},{"hash":"4046fa9ff61272777cee50af8afd21ff1aa8526b","isMergeCommit":false,"messageTitle":"Add in getCommandString function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":3}}},{"hash":"35180aace669e8020de7bbb32d9ad7c3c968faab","isMergeCommit":false,"messageTitle":"Added in getTaskName function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":3}}},{"hash":"7188f53999b3ffefcd0c0386162e77fc1d22cde1","isMergeCommit":false,"messageTitle":"Add getTask name for deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":4}}},{"hash":"5bcff6a3541b6f6d87e49873cd8ddaa7a0aca353","isMergeCommit":false,"messageTitle":"Add in getIndex for remove command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":4}}},{"hash":"4a128f3d79cc66ec46603cd56813f0d89be72932","isMergeCommit":false,"messageTitle":"Rename class UiFormatter to Ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"01be0b0055ba8d9056023e0c9e38d972116f2f22","isMergeCommit":false,"messageTitle":"Remove unused variables","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"1d6e13df250200e2ddf55aa9f338bceac51ce774","isMergeCommit":false,"messageTitle":"Remove unused variables and added in isInputThere function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}}]},{"date":"2023-08-31","commitResults":[{"hash":"30bd3d7a44eff74e25409f5a25ae3841ff59f3c5","isMergeCommit":false,"messageTitle":"Change TaskList to be the main array for storing tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}},{"hash":"71e2efa0d6657523bd080cd4abb3c1aee80cc19f","isMergeCommit":false,"messageTitle":"Change Storage class to handle tasklist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"aa108eda1e195da71c572621dc86266918b6b104","isMergeCommit":false,"messageTitle":"Change taskList to be of type TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"3a9c099fd39053832ada868e4223c4c98dcf3736","isMergeCommit":false,"messageTitle":"Code refactor for main function","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":7}}},{"hash":"fa1ab0e59cb651b46cea113dfaad4b8d62aa59ec","isMergeCommit":true,"messageTitle":"Merge pull request #4 from SynapseProgramming/devel","messageBody":"Completed more OOP part. ","fileTypesAndContributionMap":{}}]},{"date":"2023-09-02","commitResults":[{"hash":"f6705ed98b28f1a46f9dad4dfa6998e2a049f905","isMergeCommit":false,"messageTitle":"Move all task related classes to tasks package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":14}}},{"hash":"2309f470fabae1595144ec85eca5afb9e33c9cda","isMergeCommit":false,"messageTitle":"change import to get task related stuff from task package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"ad2fe54155287debe70696bff272777fe3fc7f3b","isMergeCommit":false,"messageTitle":"Move storage class to storage package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"a07be856e12d4c437fb07c44e0858f0d8be80ade","isMergeCommit":false,"messageTitle":"Move parser and ui class to io folder","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"a4e7879c6857e98a46cc5f2728b39a34cd7d66a1","isMergeCommit":false,"messageTitle":"update main duke class to import classes from the new packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"c12182c7ba714c38c984bab411aeef083e1093bd","isMergeCommit":true,"messageTitle":"Merge pull request #5 from SynapseProgramming/devel","messageBody":"Organised code into packages","fileTypesAndContributionMap":{}},{"hash":"8320b341347136090649c49b0a88b298b9254848","isMergeCommit":false,"messageTitle":"add in parseDeadline function, which handles parsing for deadline command.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}},{"hash":"345646bf4b6eff362895be5a7a7bc562782f9535","isMergeCommit":false,"messageTitle":"Add in custom exception for Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"2fb7cecc46cf5b931e1d36a1df96e5e0859f8880","isMergeCommit":false,"messageTitle":"Integrate parser exception for parseDeadline function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":23}}},{"hash":"89d4f03a182a763c2ec530118691af30d91d66b7","isMergeCommit":false,"messageTitle":"Add in parseEvent function and modified duke run function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":16}}},{"hash":"91413a691b7b0624e76b68545338011226ef2bb4","isMergeCommit":false,"messageTitle":"Remove unused headers","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":5}}},{"hash":"467b51b3e234158d71d374ef83e6619945377c6d","isMergeCommit":false,"messageTitle":"Add in display greetings function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":5}}},{"hash":"9c5bec3db52e0ed11fd5c7848c63c5b13a388b85","isMergeCommit":false,"messageTitle":"Add in display action function to ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"d7b2d951c06f4f69f673e489e967d2dd1a478cb2","isMergeCommit":false,"messageTitle":"Change print + action statements to use displayAction function.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":7}}},{"hash":"670c19e4d82476a4c820f8fc404725b5d5afa023","isMergeCommit":false,"messageTitle":"Add in displayGoodbye function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":2}}},{"hash":"0b39d9f2a086d95d4a1cbc7cb53729464aa3c40c","isMergeCommit":false,"messageTitle":"Add listTasks function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":14}}},{"hash":"498cd6094626414d8c859d6c9beab03286a89153","isMergeCommit":false,"messageTitle":"Add markTaskAsDone function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":9}}},{"hash":"f3cd9c5aad1815d7ab8b3df43a0846b35b62e562","isMergeCommit":false,"messageTitle":"Add unmarkTask function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":11}}},{"hash":"58fb305dc4e76b9bf28dbf12b1a1a40d5c18cb13","isMergeCommit":false,"messageTitle":"Add in addTodo function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":9}}},{"hash":"889a7fba03e370471325bfd55b9b06df25cc0279","isMergeCommit":false,"messageTitle":"Add in addDeadline function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":9}}},{"hash":"d1b027f36f7aae60ab81929a53622e75c2d1bb2e","isMergeCommit":false,"messageTitle":"Add in addEvent function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":7}}},{"hash":"2bca407321382cb38efc66688d9840d0243a7a91","isMergeCommit":false,"messageTitle":"Add in deleteTask function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":14}}},{"hash":"431cdc261810c43551c6c0241aa43f3b6047bc81","isMergeCommit":true,"messageTitle":"Merge pull request #6 from SynapseProgramming/devel","messageBody":"Code Refactoring and custom exceptions","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SynapseProgramming":{"java":599,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":3,"txt":9}},"authorContributionVariance":{"SynapseProgramming":12483.557},"authorDisplayNameMap":{"SynapseProgramming":"CS2103T-W10-3 ONG ..OALD"}} +{"authorDailyContributionsMap":{"SynapseProgramming":[{"date":"2023-08-21","commitResults":[{"hash":"734a66800a1df6236875b7d340187a4d5e918bfe","isMergeCommit":false,"messageTitle":"Added in initial greetings","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":8}}},{"hash":"906971659ddfe81607794f4e89bd46692972f870","isMergeCommit":false,"messageTitle":"Added in echo function","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"e5e7fb40ea3aeb4902e5d65d2aad7d7b058d7e88","isMergeCommit":false,"messageTitle":"Completed level-2 feature","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":1}}}]},{"date":"2023-08-22","commitResults":[{"hash":"e9d07fa464a9267f944bb1254313e40713c7cad8","isMergeCommit":false,"messageTitle":"Added in mark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"65fd77b4402c45ec1529d4b55ef40bd9e999c1c5","isMergeCommit":false,"messageTitle":"Modified input string parsing","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":5}}},{"hash":"9d65caaa1d0ab01b17b1b023e7d60477dd74c249","isMergeCommit":false,"messageTitle":"Added in Task class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":24,"deletions":0}}},{"hash":"91ac6f7cac3abec473eecb9f8c38d15212f305c1","isMergeCommit":false,"messageTitle":"Renamed userInputs array as taskList. Added in task marking","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":5}}},{"hash":"9cd8e335d38bf156320db24a0f7e23bfb7398f35","isMergeCommit":false,"messageTitle":"Added in unmark function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":0}}},{"hash":"e351321deeb8f26d7602e6fc3020bbdf207ff41f","isMergeCommit":false,"messageTitle":"Converted if-else chain to switch statement","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":30}}},{"hash":"620b1af2da7c57936d317d3a5d3f0318e0631722","isMergeCommit":false,"messageTitle":"Added in todo command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"83be3198a5ffd93689fa4eb487c57265548744f2","isMergeCommit":false,"messageTitle":"Added in Todo class to represent Todo event","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":0}}},{"hash":"92dec94f9625383f281bbb87a6c4522ba8b9b34f","isMergeCommit":false,"messageTitle":"Added in UiFormatter class for formatting objects of type Task","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":0}}},{"hash":"1ddf9793afc436d1e886522bae0ac4095eb9cb7d","isMergeCommit":false,"messageTitle":"completed \"todo\" command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":2}}},{"hash":"8ab10ba94c203b040a848338a9cb5c97e2c25a62","isMergeCommit":false,"messageTitle":"removed default add task, and changed print statements to use UiFormatter","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":8}}},{"hash":"aa02ffab6a8fc825b0fe43957b88d18a9e27f79f","isMergeCommit":false,"messageTitle":"Added in Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":0}}},{"hash":"5fd772a81b82f76f518667a986b44cc116ed49da","isMergeCommit":false,"messageTitle":"Added in formatting for Deadline objects","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"b293421d5f689a97effefd3e5193e4f0fa0106b6","isMergeCommit":false,"messageTitle":"Added in deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}}]},{"date":"2023-08-23","commitResults":[{"hash":"9f639de3829c1e5d8daa94b76289f53fd8bb8827","isMergeCommit":false,"messageTitle":"Added in Event class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":0}}},{"hash":"16cb6b6ff32d7ee3a8fb214014345da0b3ac0f42","isMergeCommit":false,"messageTitle":"Added in Event class to displayTask function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":6,"deletions":0}}},{"hash":"b4af2cfbc1a3798dc7b61b99305ba167214ffff2","isMergeCommit":false,"messageTitle":"Added in Event command","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":0}}},{"hash":"f7fc11bccf2470470153ead65edf3e1bb13ffabf","isMergeCommit":false,"messageTitle":"Added in input testing","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":9,"deletions":0},"sh":{"insertions":1,"deletions":1}}},{"hash":"3dfb3a8d2af0b759fd94f36cd45c3a6f542fe518","isMergeCommit":false,"messageTitle":"Added in exception handling for mark and unmark commands","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":15}}},{"hash":"b7384cda1177eb094be86459b0dafe6c8dd29a64","isMergeCommit":false,"messageTitle":"Added in exception handling for end of line","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":2}}},{"hash":"83f297976e48dc683d69a7eb4316b1d58866e41e","isMergeCommit":false,"messageTitle":"Added in empty list check for list command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":0}}},{"hash":"510c9eb7cc9b6597ecfde7ee57cd757b2ac5521a","isMergeCommit":false,"messageTitle":"Added in exception handling for todo command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":5}}},{"hash":"4ffd55777519714e535bf0dbc71fbc2edbda4a52","isMergeCommit":false,"messageTitle":"Added in exception handling for deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":8}}},{"hash":"4f50adf72971fe54e1d8bc70e552839dd0bbcbdd","isMergeCommit":false,"messageTitle":"Added in exception handling for event command","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":13}}}]},{"date":"2023-08-24","commitResults":[{"hash":"1036360dc848b827a9715eb065dd553142e91bd3","isMergeCommit":false,"messageTitle":"Added in case for deleting entries from the list","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":1}}},{"hash":"752aa3b6d4346be95f552c85d0f819f2e197a538","isMergeCommit":true,"messageTitle":"Merge pull request #1 from SynapseProgramming/devel","messageBody":"Completed week 2 tasks","fileTypesAndContributionMap":{}}]},{"date":"2023-08-27","commitResults":[{"hash":"2d7c02079abf478b3a10917dfb40497639bbcdfc","isMergeCommit":true,"messageTitle":"Merge branch \u0027add-gradle-support\u0027 into branch-Level-7","messageBody":"* add-gradle-support:\n Bump gradle and lib version\n Add Gradle support\n","fileTypesAndContributionMap":{}},{"hash":"1266a00de68a2ebbf6eed26d0c113898ffc185a0","isMergeCommit":false,"messageTitle":"Add json library as a dependency","messageBody":"","tags":["A-Gradle"],"fileTypesAndContributionMap":{"gradle":{"insertions":3,"deletions":0}}}]},{"date":"2023-08-28","commitResults":[{"hash":"0fff40c39e33eda6cb5128e0fbaeca0bb7ac383c","isMergeCommit":false,"messageTitle":"Add in Tasklistloader class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":0}}},{"hash":"70d745c2f027557ec2b2be6c48e7489a76e5e04f","isMergeCommit":false,"messageTitle":"Add in test json file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"c6fc339d09b52a1d052298b0661cac1287a9b470","isMergeCommit":false,"messageTitle":"Enable polymorphism for json Task parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"f377b3ee66bf57e0d94469c0635e8431f37d4f0d","isMergeCommit":false,"messageTitle":"Modify description field of Task class to private","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"2eb3e1fc0a4795485cb56b7ae643a4dd7b7d21d2","isMergeCommit":false,"messageTitle":"Fix missing fields in json file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":15,"deletions":10}}},{"hash":"b398d003fe7df0da2741936c0457209da5a806ef","isMergeCommit":false,"messageTitle":"Modify access of description class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"b20bd5f86f411316f1ad75b80fa165a683db7249","isMergeCommit":false,"messageTitle":"Add in first working json serializing/ deserializing attempt","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":79,"deletions":6}}}]},{"date":"2023-08-29","commitResults":[{"hash":"e08b009480795a21fe0823f50d2d829cae7799d1","isMergeCommit":false,"messageTitle":"Remove commented code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":6}}},{"hash":"2a1935e939be676b75fc53ce23cfa9df0738f3ab","isMergeCommit":false,"messageTitle":"Code linting","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":2}}},{"hash":"92394c7d2fced822bd88623fd5207ab11945ef07","isMergeCommit":false,"messageTitle":"Add in empty constructor required by Jackson library","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"69676dee55f0afd869e5f3f2aedbbfd505f9497d","isMergeCommit":false,"messageTitle":"Remove unused headers and comments","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":6}}},{"hash":"d95bb5c643b50464caa5007ea04d5740e4fa3299","isMergeCommit":false,"messageTitle":"Fix class field visibility for Jackon. \u0026 Save previous data to arraylist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":6}}},{"hash":"f3a868d0274eb1decbfae1f6fa5bb35112e0369b","isMergeCommit":false,"messageTitle":"change done to boolean object type","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"324ebe865d995928cf332233a26a509abd06aa4d","isMergeCommit":false,"messageTitle":"Remove print test statements and commented code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":8}}},{"hash":"4a80709181364571e0168a46829b97533a129229","isMergeCommit":false,"messageTitle":"Place save tasks function to end of main function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":2}}},{"hash":"3698ca926892b8285891af0b7e0dc828aeaf320f","isMergeCommit":false,"messageTitle":"Add in more verbose warning for ( tasks.json not found)","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"ba398b9a123f7884d851e863d362c81eb4713df4","isMergeCommit":true,"messageTitle":"Merge pull request #2 from SynapseProgramming/branch-Level-7","messageBody":"Add task save to json file","tags":["Level-7"],"fileTypesAndContributionMap":{}},{"hash":"3ba4a4eab3258662c2252648cecc66bd0dce231e","isMergeCommit":false,"messageTitle":"Add DeadTime support for parser","messageBody":"","fileTypesAndContributionMap":{"gradle":{"insertions":1,"deletions":1},"java":{"insertions":2,"deletions":0}}},{"hash":"b897a1d62d667622cb8b1d25d2f1aa59dde31d5b","isMergeCommit":false,"messageTitle":"Change date field to LocalDate type for Deadline class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":3}}},{"hash":"3e9087a23fbcd5d43065d4fffda87f9eec0c5534","isMergeCommit":false,"messageTitle":"Add in string formatting to Localdate type for deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":1}}},{"hash":"9f48ef4302046558dbbcc9158205b9df671b12e5","isMergeCommit":false,"messageTitle":"Remove toto and test print statements","messageBody":"","tags":["Level-8"],"fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":3}}}]},{"date":"2023-08-30","commitResults":[{"hash":"6b5795d7bec7377c450d7fe598e725cad8f81365","isMergeCommit":true,"messageTitle":"Merge pull request #3 from SynapseProgramming/branch-Level-8","messageBody":"Change deaddate field from string type to Date type","fileTypesAndContributionMap":{}},{"hash":"9b52c284edf6ef1cd0d20f61ce765ecfbcea8676","isMergeCommit":false,"messageTitle":"Rename ReceivedTasks to TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":4,"deletions":4}}},{"hash":"2f6b44637381a727654f17c896dde388c8a524a3","isMergeCommit":false,"messageTitle":"Rename Tasklistloader to Storage","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":5}}},{"hash":"da38f669d42ab65d7285369fa46c06d15689776e","isMergeCommit":false,"messageTitle":"Add in initial parser class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":38,"deletions":3}}},{"hash":"dd800a99683fe8befd595700ff1519f066c29212","isMergeCommit":false,"messageTitle":"Remove commented code","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":3}}},{"hash":"a18874ba037f99f786701e76b5986c65ddfc7b63","isMergeCommit":false,"messageTitle":"Add in getIndex function into parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":3}}},{"hash":"464bef9d7c370ad376e29c090f339ed8aa22029d","isMergeCommit":false,"messageTitle":"Add in getIndex function call for unmark command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":4}}},{"hash":"4046fa9ff61272777cee50af8afd21ff1aa8526b","isMergeCommit":false,"messageTitle":"Add in getCommandString function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":3}}},{"hash":"35180aace669e8020de7bbb32d9ad7c3c968faab","isMergeCommit":false,"messageTitle":"Added in getTaskName function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":3}}},{"hash":"7188f53999b3ffefcd0c0386162e77fc1d22cde1","isMergeCommit":false,"messageTitle":"Add getTask name for deadline command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":4}}},{"hash":"5bcff6a3541b6f6d87e49873cd8ddaa7a0aca353","isMergeCommit":false,"messageTitle":"Add in getIndex for remove command","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":2,"deletions":4}}},{"hash":"4a128f3d79cc66ec46603cd56813f0d89be72932","isMergeCommit":false,"messageTitle":"Rename class UiFormatter to Ui","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"01be0b0055ba8d9056023e0c9e38d972116f2f22","isMergeCommit":false,"messageTitle":"Remove unused variables","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":4}}},{"hash":"1d6e13df250200e2ddf55aa9f338bceac51ce774","isMergeCommit":false,"messageTitle":"Remove unused variables and added in isInputThere function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":4}}}]},{"date":"2023-08-31","commitResults":[{"hash":"30bd3d7a44eff74e25409f5a25ae3841ff59f3c5","isMergeCommit":false,"messageTitle":"Change TaskList to be the main array for storing tasks","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":31,"deletions":1}}},{"hash":"71e2efa0d6657523bd080cd4abb3c1aee80cc19f","isMergeCommit":false,"messageTitle":"Change Storage class to handle tasklist","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":10}}},{"hash":"aa108eda1e195da71c572621dc86266918b6b104","isMergeCommit":false,"messageTitle":"Change taskList to be of type TaskList","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":1}}},{"hash":"3a9c099fd39053832ada868e4223c4c98dcf3736","isMergeCommit":false,"messageTitle":"Code refactor for main function","messageBody":"","tags":["A-MoreOOP"],"fileTypesAndContributionMap":{"java":{"insertions":21,"deletions":7}}},{"hash":"fa1ab0e59cb651b46cea113dfaad4b8d62aa59ec","isMergeCommit":true,"messageTitle":"Merge pull request #4 from SynapseProgramming/devel","messageBody":"Completed more OOP part. ","fileTypesAndContributionMap":{}}]},{"date":"2023-09-02","commitResults":[{"hash":"f6705ed98b28f1a46f9dad4dfa6998e2a049f905","isMergeCommit":false,"messageTitle":"Move all task related classes to tasks package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":14}}},{"hash":"2309f470fabae1595144ec85eca5afb9e33c9cda","isMergeCommit":false,"messageTitle":"change import to get task related stuff from task package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":2}}},{"hash":"ad2fe54155287debe70696bff272777fe3fc7f3b","isMergeCommit":false,"messageTitle":"Move storage class to storage package","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":1,"deletions":0}}},{"hash":"a07be856e12d4c437fb07c44e0858f0d8be80ade","isMergeCommit":false,"messageTitle":"Move parser and ui class to io folder","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":5,"deletions":1}}},{"hash":"a4e7879c6857e98a46cc5f2728b39a34cd7d66a1","isMergeCommit":false,"messageTitle":"update main duke class to import classes from the new packages","messageBody":"","tags":["A-Packages"],"fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":0}}},{"hash":"c12182c7ba714c38c984bab411aeef083e1093bd","isMergeCommit":true,"messageTitle":"Merge pull request #5 from SynapseProgramming/devel","messageBody":"Organised code into packages","fileTypesAndContributionMap":{}},{"hash":"8320b341347136090649c49b0a88b298b9254848","isMergeCommit":false,"messageTitle":"add in parseDeadline function, which handles parsing for deadline command.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":36,"deletions":0}}},{"hash":"345646bf4b6eff362895be5a7a7bc562782f9535","isMergeCommit":false,"messageTitle":"Add in custom exception for Parser","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"2fb7cecc46cf5b931e1d36a1df96e5e0859f8880","isMergeCommit":false,"messageTitle":"Integrate parser exception for parseDeadline function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":10,"deletions":23}}},{"hash":"89d4f03a182a763c2ec530118691af30d91d66b7","isMergeCommit":false,"messageTitle":"Add in parseEvent function and modified duke run function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":25,"deletions":16}}},{"hash":"91413a691b7b0624e76b68545338011226ef2bb4","isMergeCommit":false,"messageTitle":"Remove unused headers","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":0,"deletions":5}}},{"hash":"467b51b3e234158d71d374ef83e6619945377c6d","isMergeCommit":false,"messageTitle":"Add in display greetings function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":9,"deletions":5}}},{"hash":"9c5bec3db52e0ed11fd5c7848c63c5b13a388b85","isMergeCommit":false,"messageTitle":"Add in display action function to ui class","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":0}}},{"hash":"d7b2d951c06f4f69f673e489e967d2dd1a478cb2","isMergeCommit":false,"messageTitle":"Change print + action statements to use displayAction function.","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":3,"deletions":7}}},{"hash":"670c19e4d82476a4c820f8fc404725b5d5afa023","isMergeCommit":false,"messageTitle":"Add in displayGoodbye function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":2}}},{"hash":"0b39d9f2a086d95d4a1cbc7cb53729464aa3c40c","isMergeCommit":false,"messageTitle":"Add listTasks function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":19,"deletions":14}}},{"hash":"498cd6094626414d8c859d6c9beab03286a89153","isMergeCommit":false,"messageTitle":"Add markTaskAsDone function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":9}}},{"hash":"f3cd9c5aad1815d7ab8b3df43a0846b35b62e562","isMergeCommit":false,"messageTitle":"Add unmarkTask function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":11}}},{"hash":"58fb305dc4e76b9bf28dbf12b1a1a40d5c18cb13","isMergeCommit":false,"messageTitle":"Add in addTodo function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":12,"deletions":9}}},{"hash":"889a7fba03e370471325bfd55b9b06df25cc0279","isMergeCommit":false,"messageTitle":"Add in addDeadline function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":9}}},{"hash":"d1b027f36f7aae60ab81929a53622e75c2d1bb2e","isMergeCommit":false,"messageTitle":"Add in addEvent function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":11,"deletions":7}}},{"hash":"2bca407321382cb38efc66688d9840d0243a7a91","isMergeCommit":false,"messageTitle":"Add in deleteTask function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":16,"deletions":14}}},{"hash":"431cdc261810c43551c6c0241aa43f3b6047bc81","isMergeCommit":true,"messageTitle":"Merge pull request #6 from SynapseProgramming/devel","messageBody":"Code Refactoring and custom exceptions","fileTypesAndContributionMap":{}},{"hash":"470a2dd4ff32d59b48f72826d6d2be87597b0707","isMergeCommit":false,"messageTitle":"Add in J-unit test case for parseEvent function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":35,"deletions":0}}}]},{"date":"2023-09-03","commitResults":[{"hash":"8c7ade6fce485cea34abb51ac261d8f0748e3d48","isMergeCommit":false,"messageTitle":"Add in additional tests for parseDeadline function","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":47,"deletions":2}}},{"hash":"cdc1181daac42f76d05adb37913359f658f643a0","isMergeCommit":false,"messageTitle":"Add in UiTest test file","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":27,"deletions":0}}},{"hash":"094a8fb32b8b68a1cbb2ea0ed62bdde94a3ea48b","isMergeCommit":false,"messageTitle":"Add in additional tests for displayTask function","messageBody":"","tags":["A-JUnit"],"fileTypesAndContributionMap":{"java":{"insertions":22,"deletions":0}}},{"hash":"6db809212d4e3d7c9510c8ba4b9966ce3c4e19a1","isMergeCommit":true,"messageTitle":"Merge pull request #7 from SynapseProgramming/devel","messageBody":"Add in J-unit tests","fileTypesAndContributionMap":{}}]}]},"authorFileTypeContributionMap":{"SynapseProgramming":{"java":728,"md":0,"fxml":0,"sh":1,"bat":0,"gradle":3,"txt":9}},"authorContributionVariance":{"SynapseProgramming":13122.968},"authorDisplayNameMap":{"SynapseProgramming":"CS2103T-W10-3 ONG ..OALD"}} diff --git a/andytoh1_ip_master/authorship.json b/andytoh1_ip_master/authorship.json index a32c7daf..f398f017 100644 --- a/andytoh1_ip_master/authorship.json +++ b/andytoh1_ip_master/authorship.json @@ -1 +1 @@ -[{"path":"src/main/java/Chatbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"public class Chatbot {","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-08-24"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":" String[] messageList \u003d new String[100];","lastModifiedDate":"2023-08-24"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":" boolean[] messageDone \u003d new boolean[100];","lastModifiedDate":"2023-08-24"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":" char[] messageType \u003d new char[100];","lastModifiedDate":"2023-08-24"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":" int messageCount \u003d 0;","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Hello! I\u0027m Chatbot!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" while (true) {","lastModifiedDate":"2023-08-24"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" String userMessage \u003d userInput.nextLine();","lastModifiedDate":"2023-08-24"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":" if (userMessage.equalsIgnoreCase(\"bye\")) break;","lastModifiedDate":"2023-08-24"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" if (userMessage.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" for (int i \u003d 0; i \u003c messageCount; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" int listNumber \u003d i + 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":" System.out.print(listNumber + \". \");","lastModifiedDate":"2023-08-24"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[\" + messageType[i] + \"]\");","lastModifiedDate":"2023-08-24"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" if (messageDone[i]) System.out.print(\"[X] \");","lastModifiedDate":"2023-08-24"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" else System.out.print(\"[ ] \");","lastModifiedDate":"2023-08-24"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":" System.out.println(messageList[i]);","lastModifiedDate":"2023-08-24"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" if (userMessage.substring(0, 6).equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" int removeTask \u003d Integer.parseInt(userMessage.substring(7)) - 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"This task will be removed!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[\" + messageType[removeTask] + \"]\" + \"[\");","lastModifiedDate":"2023-08-24"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" if (messageDone[removeTask]) System.out.print(\"[X] \");","lastModifiedDate":"2023-08-24"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":" else System.out.print(\"[ ] \");","lastModifiedDate":"2023-08-24"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" System.out.println(messageList[removeTask]);","lastModifiedDate":"2023-08-24"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":" for (int i \u003d removeTask; i \u003c messageCount - 1; i++) {","lastModifiedDate":"2023-08-24"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" messageList[i] \u003d messageList[i + 1];","lastModifiedDate":"2023-08-24"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":" messageDone[i] \u003d messageDone[i + 1];","lastModifiedDate":"2023-08-24"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":" messageType[i] \u003d messageType[i + 1];","lastModifiedDate":"2023-08-24"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":" messageCount--;","lastModifiedDate":"2023-08-24"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"delete \u003ctask number\u003e\\\"!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 4).equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":" int doneTask \u003d Integer.parseInt(userMessage.substring(5));","lastModifiedDate":"2023-08-24"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Well done! This task has been marked as done.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":51,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"[\" + messageType[doneTask] + \"]\" + \"[X] \" + messageList[doneTask - 1]);","lastModifiedDate":"2023-08-24"},{"lineNumber":52,"author":{"gitId":"andytoh1"},"content":" messageDone[doneTask - 1] \u003d true;","lastModifiedDate":"2023-08-24"},{"lineNumber":53,"author":{"gitId":"andytoh1"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":54,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":55,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"mark \u003ctask number\u003e\\\"!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":56,"author":{"gitId":"andytoh1"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":57,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":58,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 4).equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":59,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":60,"author":{"gitId":"andytoh1"},"content":" userMessage \u003d userMessage.substring(5);","lastModifiedDate":"2023-08-24"},{"lineNumber":61,"author":{"gitId":"andytoh1"},"content":" messageType[messageCount] \u003d \u0027T\u0027;","lastModifiedDate":"2023-08-24"},{"lineNumber":62,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":63,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"todo \u003ctask description\u003e\\\"!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":64,"author":{"gitId":"andytoh1"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":65,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":66,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 8).equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":67,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":68,"author":{"gitId":"andytoh1"},"content":" int index \u003d userMessage.indexOf(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":69,"author":{"gitId":"andytoh1"},"content":" userMessage \u003d userMessage.substring(9, index) + \"(by: \" + userMessage.substring(index + 4) + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":70,"author":{"gitId":"andytoh1"},"content":" messageType[messageCount] \u003d \u0027D\u0027;","lastModifiedDate":"2023-08-24"},{"lineNumber":71,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":72,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"deadline \u003ctask description\u003e /by \u003ctime\u003e\\\"!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":73,"author":{"gitId":"andytoh1"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":74,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":75,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 5).equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":76,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":77,"author":{"gitId":"andytoh1"},"content":" int index \u003d userMessage.indexOf(\"/from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":78,"author":{"gitId":"andytoh1"},"content":" int index2 \u003d userMessage.indexOf(\"/to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":79,"author":{"gitId":"andytoh1"},"content":" userMessage \u003d userMessage.substring(6, index) + \"(from: \" + userMessage.substring(index + 6, index2)","lastModifiedDate":"2023-08-24"},{"lineNumber":80,"author":{"gitId":"andytoh1"},"content":" + \"to: \" + userMessage.substring(index2 + 4) + \")\";","lastModifiedDate":"2023-08-24"},{"lineNumber":81,"author":{"gitId":"andytoh1"},"content":" messageType[messageCount] \u003d \u0027E\u0027;","lastModifiedDate":"2023-08-24"},{"lineNumber":82,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":83,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"event \u003ctask description\u003e /from \u003ctime\u003e /to \u003ctime\u003e\\\"!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":84,"author":{"gitId":"andytoh1"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":85,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":86,"author":{"gitId":"andytoh1"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":87,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"I\u0027m sorry, but I don\u0027t know what that means!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":88,"author":{"gitId":"andytoh1"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":89,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":90,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":91,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"I\u0027m sorry, but I don\u0027t know what that means!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":92,"author":{"gitId":"andytoh1"},"content":" continue;","lastModifiedDate":"2023-08-24"},{"lineNumber":93,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":94,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Added this task: \" + \"[\" + messageType[messageCount] + \"] \" + userMessage);","lastModifiedDate":"2023-08-24"},{"lineNumber":95,"author":{"gitId":"andytoh1"},"content":" messageList[messageCount] \u003d userMessage;","lastModifiedDate":"2023-08-24"},{"lineNumber":96,"author":{"gitId":"andytoh1"},"content":" messageCount++;","lastModifiedDate":"2023-08-24"},{"lineNumber":97,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":98,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":99,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":100,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"andytoh1":100}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"adkpqweqwdpaskda","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"todo abc","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"deadline abc by sunday","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"deadline abc /by sunday","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"andytoh1":4}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"java -classpath ..\\bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"andytoh1":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":"java -classpath ../bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"andytoh1":1,"-":37}}] +[{"path":"src/main/java/Chatbot.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"import java.io.FileNotFoundException;","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"import java.time.LocalDateTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"import java.util.Scanner;","lastModifiedDate":"2023-08-24"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"import java.io.File;","lastModifiedDate":"2023-09-03"},{"lineNumber":5,"author":{"gitId":"andytoh1"},"content":"import java.io.FileWriter;","lastModifiedDate":"2023-09-03"},{"lineNumber":6,"author":{"gitId":"andytoh1"},"content":"import java.io.IOException;","lastModifiedDate":"2023-09-03"},{"lineNumber":7,"author":{"gitId":"andytoh1"},"content":"import java.time.format.DateTimeFormatter;","lastModifiedDate":"2023-09-03"},{"lineNumber":8,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-08-24"},{"lineNumber":9,"author":{"gitId":"andytoh1"},"content":"public class Chatbot {","lastModifiedDate":"2023-08-24"},{"lineNumber":10,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":11,"author":{"gitId":"andytoh1"},"content":" public static class Task {","lastModifiedDate":"2023-09-03"},{"lineNumber":12,"author":{"gitId":"andytoh1"},"content":" private String description;","lastModifiedDate":"2023-09-03"},{"lineNumber":13,"author":{"gitId":"andytoh1"},"content":" private boolean done;","lastModifiedDate":"2023-09-03"},{"lineNumber":14,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":15,"author":{"gitId":"andytoh1"},"content":" public Task(String description) {","lastModifiedDate":"2023-09-03"},{"lineNumber":16,"author":{"gitId":"andytoh1"},"content":" this.description \u003d description;","lastModifiedDate":"2023-09-03"},{"lineNumber":17,"author":{"gitId":"andytoh1"},"content":" this.done \u003d false;","lastModifiedDate":"2023-09-03"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":19,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":20,"author":{"gitId":"andytoh1"},"content":" public void markAsDone() {","lastModifiedDate":"2023-09-03"},{"lineNumber":21,"author":{"gitId":"andytoh1"},"content":" this.done \u003d true;","lastModifiedDate":"2023-09-03"},{"lineNumber":22,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":24,"author":{"gitId":"andytoh1"},"content":" public void markAsNotDone() {","lastModifiedDate":"2023-09-03"},{"lineNumber":25,"author":{"gitId":"andytoh1"},"content":" this.done \u003d false;","lastModifiedDate":"2023-09-03"},{"lineNumber":26,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":27,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":28,"author":{"gitId":"andytoh1"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-03"},{"lineNumber":29,"author":{"gitId":"andytoh1"},"content":" return description;","lastModifiedDate":"2023-09-03"},{"lineNumber":30,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":31,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":32,"author":{"gitId":"andytoh1"},"content":" public boolean isDone() {","lastModifiedDate":"2023-09-03"},{"lineNumber":33,"author":{"gitId":"andytoh1"},"content":" return done;","lastModifiedDate":"2023-09-03"},{"lineNumber":34,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":35,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":36,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":37,"author":{"gitId":"andytoh1"},"content":" public static class Todo extends Task {","lastModifiedDate":"2023-09-03"},{"lineNumber":38,"author":{"gitId":"andytoh1"},"content":" public Todo(String description) {","lastModifiedDate":"2023-09-03"},{"lineNumber":39,"author":{"gitId":"andytoh1"},"content":" super(description);","lastModifiedDate":"2023-09-03"},{"lineNumber":40,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":41,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":42,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":43,"author":{"gitId":"andytoh1"},"content":" public static class Deadline extends Task {","lastModifiedDate":"2023-09-03"},{"lineNumber":44,"author":{"gitId":"andytoh1"},"content":" private LocalDateTime deadline;","lastModifiedDate":"2023-09-03"},{"lineNumber":45,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":46,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-03"},{"lineNumber":47,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-03"},{"lineNumber":48,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":49,"author":{"gitId":"andytoh1"},"content":" public Deadline(String description, LocalDateTime deadline) {","lastModifiedDate":"2023-09-03"},{"lineNumber":50,"author":{"gitId":"andytoh1"},"content":" super(description);","lastModifiedDate":"2023-09-03"},{"lineNumber":51,"author":{"gitId":"andytoh1"},"content":" this.deadline \u003d deadline;","lastModifiedDate":"2023-09-03"},{"lineNumber":52,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":53,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":54,"author":{"gitId":"andytoh1"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-03"},{"lineNumber":55,"author":{"gitId":"andytoh1"},"content":" return super.description + \" (by: \" + deadline.format(formatter) + \")\";","lastModifiedDate":"2023-09-03"},{"lineNumber":56,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":57,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":58,"author":{"gitId":"andytoh1"},"content":" public String getDeadline() {","lastModifiedDate":"2023-09-03"},{"lineNumber":59,"author":{"gitId":"andytoh1"},"content":" return deadline.format(formatter);","lastModifiedDate":"2023-09-03"},{"lineNumber":60,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":61,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":62,"author":{"gitId":"andytoh1"},"content":" public String getDescriptionWithoutTime() {","lastModifiedDate":"2023-09-03"},{"lineNumber":63,"author":{"gitId":"andytoh1"},"content":" return super.description;","lastModifiedDate":"2023-09-03"},{"lineNumber":64,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":65,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":66,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":67,"author":{"gitId":"andytoh1"},"content":" public static class Event extends Task {","lastModifiedDate":"2023-09-03"},{"lineNumber":68,"author":{"gitId":"andytoh1"},"content":" private LocalDateTime startTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":69,"author":{"gitId":"andytoh1"},"content":" private LocalDateTime endTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":70,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":71,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-03"},{"lineNumber":72,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-03"},{"lineNumber":73,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":74,"author":{"gitId":"andytoh1"},"content":" public Event(String description, LocalDateTime startTime, LocalDateTime endTime) {","lastModifiedDate":"2023-09-03"},{"lineNumber":75,"author":{"gitId":"andytoh1"},"content":" super(description);","lastModifiedDate":"2023-09-03"},{"lineNumber":76,"author":{"gitId":"andytoh1"},"content":" this.startTime \u003d startTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":77,"author":{"gitId":"andytoh1"},"content":" this.endTime \u003d endTime;","lastModifiedDate":"2023-09-03"},{"lineNumber":78,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":79,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":80,"author":{"gitId":"andytoh1"},"content":" public String getDescription() {","lastModifiedDate":"2023-09-03"},{"lineNumber":81,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-03"},{"lineNumber":82,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-03"},{"lineNumber":83,"author":{"gitId":"andytoh1"},"content":" return super.description + \" (from: \" + startTime.format(formatter) + \" to: \"","lastModifiedDate":"2023-09-03"},{"lineNumber":84,"author":{"gitId":"andytoh1"},"content":" + endTime.format(formatter) + \")\";","lastModifiedDate":"2023-09-03"},{"lineNumber":85,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":86,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":87,"author":{"gitId":"andytoh1"},"content":" public String getStartTime() {","lastModifiedDate":"2023-09-03"},{"lineNumber":88,"author":{"gitId":"andytoh1"},"content":" return startTime.format(formatter);","lastModifiedDate":"2023-09-03"},{"lineNumber":89,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":90,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":91,"author":{"gitId":"andytoh1"},"content":" public String getEndTime() {","lastModifiedDate":"2023-09-03"},{"lineNumber":92,"author":{"gitId":"andytoh1"},"content":" return endTime.format(formatter);","lastModifiedDate":"2023-09-03"},{"lineNumber":93,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":94,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":95,"author":{"gitId":"andytoh1"},"content":" public String getDescriptionWithoutTime() {","lastModifiedDate":"2023-09-03"},{"lineNumber":96,"author":{"gitId":"andytoh1"},"content":" return super.description;","lastModifiedDate":"2023-09-03"},{"lineNumber":97,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":98,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":99,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":100,"author":{"gitId":"andytoh1"},"content":" public static class Ui {","lastModifiedDate":"2023-09-03"},{"lineNumber":101,"author":{"gitId":"andytoh1"},"content":" public static void startMessage() {","lastModifiedDate":"2023-09-03"},{"lineNumber":102,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Hello! I\u0027m Chatbot!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":103,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"What can I do for you?\");","lastModifiedDate":"2023-08-24"},{"lineNumber":104,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":105,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":106,"author":{"gitId":"andytoh1"},"content":" public static void endMessage() {","lastModifiedDate":"2023-09-03"},{"lineNumber":107,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Bye. Hope to see you again soon!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":108,"author":{"gitId":"andytoh1"},"content":" System.exit(0);","lastModifiedDate":"2023-09-03"},{"lineNumber":109,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":110,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":111,"author":{"gitId":"andytoh1"},"content":" public static void inputErrorMessage() {","lastModifiedDate":"2023-09-03"},{"lineNumber":112,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"I\u0027m sorry, but I don\u0027t know what that means!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":113,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":114,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":115,"author":{"gitId":"andytoh1"},"content":" public static void formatErrorMessage(String type) {","lastModifiedDate":"2023-09-03"},{"lineNumber":116,"author":{"gitId":"andytoh1"},"content":" switch(type) {","lastModifiedDate":"2023-09-03"},{"lineNumber":117,"author":{"gitId":"andytoh1"},"content":" case \"todo\":","lastModifiedDate":"2023-09-03"},{"lineNumber":118,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"todo \u003ctask description\u003e\\\"!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":119,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":120,"author":{"gitId":"andytoh1"},"content":" case \"mark\":","lastModifiedDate":"2023-09-03"},{"lineNumber":121,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"mark \u003ctask number\u003e\\\"!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":122,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":123,"author":{"gitId":"andytoh1"},"content":" case \"delete\":","lastModifiedDate":"2023-09-03"},{"lineNumber":124,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"delete \u003ctask number\u003e\\\"!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":125,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":126,"author":{"gitId":"andytoh1"},"content":" case \"deadline\":","lastModifiedDate":"2023-09-03"},{"lineNumber":127,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"deadline \u003ctask description\u003e /by DD-MM-YYYY HH:MM\\\"!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":128,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":129,"author":{"gitId":"andytoh1"},"content":" case \"event\":","lastModifiedDate":"2023-09-03"},{"lineNumber":130,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Please use the format \\\"event \u003ctask description\u003e /from DD-MM-YYYY HH:MM \" + \"/to DD-MM-YYYY HH:MM\\\"!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":131,"author":{"gitId":"andytoh1"},"content":" break;","lastModifiedDate":"2023-09-03"},{"lineNumber":132,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":133,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":134,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":135,"author":{"gitId":"andytoh1"},"content":" public static void listTasks(TaskList taskList) {","lastModifiedDate":"2023-09-03"},{"lineNumber":136,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Here are the tasks in your list:\");","lastModifiedDate":"2023-08-24"},{"lineNumber":137,"author":{"gitId":"andytoh1"},"content":" for (int i \u003d 0; i \u003c taskList.getCount(); i++) {","lastModifiedDate":"2023-09-03"},{"lineNumber":138,"author":{"gitId":"andytoh1"},"content":" int listNumber \u003d i + 1;","lastModifiedDate":"2023-08-24"},{"lineNumber":139,"author":{"gitId":"andytoh1"},"content":" System.out.print(listNumber + \". \");","lastModifiedDate":"2023-08-24"},{"lineNumber":140,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(i) instanceof Todo) {","lastModifiedDate":"2023-09-03"},{"lineNumber":141,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[T]\");","lastModifiedDate":"2023-09-03"},{"lineNumber":142,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(i) instanceof Deadline) {","lastModifiedDate":"2023-09-03"},{"lineNumber":143,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[D]\");","lastModifiedDate":"2023-09-03"},{"lineNumber":144,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(i) instanceof Event) {","lastModifiedDate":"2023-09-03"},{"lineNumber":145,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[E]\");","lastModifiedDate":"2023-09-03"},{"lineNumber":146,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":147,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(i).isDone()) System.out.print(\"[X] \");","lastModifiedDate":"2023-09-03"},{"lineNumber":148,"author":{"gitId":"andytoh1"},"content":" else System.out.print(\"[ ] \");","lastModifiedDate":"2023-08-24"},{"lineNumber":149,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(i).getDescription());","lastModifiedDate":"2023-09-03"},{"lineNumber":150,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":151,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":152,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":153,"author":{"gitId":"andytoh1"},"content":" public static void deleteMessage(int removeTask, TaskList taskList) {","lastModifiedDate":"2023-09-03"},{"lineNumber":154,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":155,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"This task will be removed!\");","lastModifiedDate":"2023-08-24"},{"lineNumber":156,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(removeTask) instanceof Todo) {","lastModifiedDate":"2023-09-03"},{"lineNumber":157,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[T]\");","lastModifiedDate":"2023-09-03"},{"lineNumber":158,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(removeTask) instanceof Deadline) {","lastModifiedDate":"2023-09-03"},{"lineNumber":159,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[D]\");","lastModifiedDate":"2023-09-03"},{"lineNumber":160,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(removeTask) instanceof Event) {","lastModifiedDate":"2023-09-03"},{"lineNumber":161,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[E]\");","lastModifiedDate":"2023-09-03"},{"lineNumber":162,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":163,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(removeTask).isDone()) System.out.print(\"[X] \");","lastModifiedDate":"2023-09-03"},{"lineNumber":164,"author":{"gitId":"andytoh1"},"content":" else System.out.print(\"[ ] \");","lastModifiedDate":"2023-08-24"},{"lineNumber":165,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(removeTask).getDescription());","lastModifiedDate":"2023-09-03"},{"lineNumber":166,"author":{"gitId":"andytoh1"},"content":" taskList.deleteTask(removeTask);","lastModifiedDate":"2023-09-03"},{"lineNumber":167,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":168,"author":{"gitId":"andytoh1"},"content":" Ui.formatErrorMessage(\"delete\");","lastModifiedDate":"2023-09-03"},{"lineNumber":169,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":170,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":171,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":172,"author":{"gitId":"andytoh1"},"content":" public static void markMessage(int doneTask, TaskList taskList) {","lastModifiedDate":"2023-09-03"},{"lineNumber":173,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":174,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Well done! This task has been marked as done.\");","lastModifiedDate":"2023-08-24"},{"lineNumber":175,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(doneTask) instanceof Todo) {","lastModifiedDate":"2023-09-03"},{"lineNumber":176,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[T]\");","lastModifiedDate":"2023-09-03"},{"lineNumber":177,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(doneTask) instanceof Deadline) {","lastModifiedDate":"2023-09-03"},{"lineNumber":178,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[D]\");","lastModifiedDate":"2023-09-03"},{"lineNumber":179,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(doneTask) instanceof Event) {","lastModifiedDate":"2023-09-03"},{"lineNumber":180,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[E]\");","lastModifiedDate":"2023-09-03"},{"lineNumber":181,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":182,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"[X] \");","lastModifiedDate":"2023-09-03"},{"lineNumber":183,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(doneTask).getDescription());","lastModifiedDate":"2023-09-03"},{"lineNumber":184,"author":{"gitId":"andytoh1"},"content":" taskList.getTask(doneTask).markAsDone();","lastModifiedDate":"2023-09-03"},{"lineNumber":185,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":186,"author":{"gitId":"andytoh1"},"content":" Ui.formatErrorMessage(\"mark\");","lastModifiedDate":"2023-09-03"},{"lineNumber":187,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":188,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":189,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":190,"author":{"gitId":"andytoh1"},"content":" public static void todoMessage(Todo todo, TaskList taskList) {","lastModifiedDate":"2023-09-03"},{"lineNumber":191,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-09-03"},{"lineNumber":192,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"Added this task: [T] \");","lastModifiedDate":"2023-09-03"},{"lineNumber":193,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(taskList.getCount() - 1).getDescription());","lastModifiedDate":"2023-09-03"},{"lineNumber":194,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":195,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":196,"author":{"gitId":"andytoh1"},"content":" public static void deadlineMessage(Deadline deadline, TaskList taskList) {","lastModifiedDate":"2023-09-03"},{"lineNumber":197,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2023-09-03"},{"lineNumber":198,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"Added this task: [D] \");","lastModifiedDate":"2023-09-03"},{"lineNumber":199,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(taskList.getCount() - 1).getDescription());","lastModifiedDate":"2023-09-03"},{"lineNumber":200,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":201,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":202,"author":{"gitId":"andytoh1"},"content":" public static void eventMessage(Event event, TaskList taskList) {","lastModifiedDate":"2023-09-03"},{"lineNumber":203,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(event);","lastModifiedDate":"2023-09-03"},{"lineNumber":204,"author":{"gitId":"andytoh1"},"content":" System.out.print(\"Added this task: [E] \");","lastModifiedDate":"2023-09-03"},{"lineNumber":205,"author":{"gitId":"andytoh1"},"content":" System.out.println(taskList.getTask(taskList.getCount() - 1).getDescription());","lastModifiedDate":"2023-09-03"},{"lineNumber":206,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":207,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":208,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":209,"author":{"gitId":"andytoh1"},"content":" public static class Parser {","lastModifiedDate":"2023-09-03"},{"lineNumber":210,"author":{"gitId":"andytoh1"},"content":" public static void parse (String userMessage, TaskList taskList) {","lastModifiedDate":"2023-09-03"},{"lineNumber":211,"author":{"gitId":"andytoh1"},"content":" String datePattern \u003d \"dd-MM-yyyy HH:mm\";","lastModifiedDate":"2023-09-03"},{"lineNumber":212,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter \u003d DateTimeFormatter.ofPattern(datePattern);","lastModifiedDate":"2023-09-03"},{"lineNumber":213,"author":{"gitId":"andytoh1"},"content":" if (userMessage.equalsIgnoreCase(\"bye\")) {","lastModifiedDate":"2023-09-03"},{"lineNumber":214,"author":{"gitId":"andytoh1"},"content":" Ui.endMessage();","lastModifiedDate":"2023-09-03"},{"lineNumber":215,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":216,"author":{"gitId":"andytoh1"},"content":" if (userMessage.equalsIgnoreCase(\"list\")) {","lastModifiedDate":"2023-09-03"},{"lineNumber":217,"author":{"gitId":"andytoh1"},"content":" Ui.listTasks(taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":218,"author":{"gitId":"andytoh1"},"content":" return;","lastModifiedDate":"2023-09-03"},{"lineNumber":219,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":220,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":221,"author":{"gitId":"andytoh1"},"content":" if (userMessage.substring(0, 6).equalsIgnoreCase(\"delete\")) {","lastModifiedDate":"2023-09-03"},{"lineNumber":222,"author":{"gitId":"andytoh1"},"content":" int removeTask \u003d Integer.parseInt(userMessage.substring(7)) - 1;","lastModifiedDate":"2023-09-03"},{"lineNumber":223,"author":{"gitId":"andytoh1"},"content":" Ui.deleteMessage(removeTask, taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":224,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 4).equalsIgnoreCase(\"mark\")) {","lastModifiedDate":"2023-09-03"},{"lineNumber":225,"author":{"gitId":"andytoh1"},"content":" int doneTask \u003d Integer.parseInt(userMessage.substring(5)) - 1;","lastModifiedDate":"2023-09-03"},{"lineNumber":226,"author":{"gitId":"andytoh1"},"content":" Ui.markMessage(doneTask, taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":227,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 4).equalsIgnoreCase(\"todo\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":228,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":229,"author":{"gitId":"andytoh1"},"content":" Todo todo \u003d new Todo(userMessage.substring(5));","lastModifiedDate":"2023-09-03"},{"lineNumber":230,"author":{"gitId":"andytoh1"},"content":" Ui.todoMessage(todo, taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":231,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":232,"author":{"gitId":"andytoh1"},"content":" Ui.formatErrorMessage(\"todo\");","lastModifiedDate":"2023-09-03"},{"lineNumber":233,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":234,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 8).equalsIgnoreCase(\"deadline\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":235,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":236,"author":{"gitId":"andytoh1"},"content":" int index \u003d userMessage.indexOf(\"/by\");","lastModifiedDate":"2023-08-24"},{"lineNumber":237,"author":{"gitId":"andytoh1"},"content":" String description \u003d userMessage.substring(9, index - 1);","lastModifiedDate":"2023-09-03"},{"lineNumber":238,"author":{"gitId":"andytoh1"},"content":" LocalDateTime taskDeadline \u003d LocalDateTime.parse(userMessage.substring(index + 4), formatter);","lastModifiedDate":"2023-09-03"},{"lineNumber":239,"author":{"gitId":"andytoh1"},"content":" Deadline deadline \u003d new Deadline(description, taskDeadline);","lastModifiedDate":"2023-09-03"},{"lineNumber":240,"author":{"gitId":"andytoh1"},"content":" Ui.deadlineMessage(deadline, taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":241,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":242,"author":{"gitId":"andytoh1"},"content":" Ui.formatErrorMessage(\"deadline\");","lastModifiedDate":"2023-09-03"},{"lineNumber":243,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":244,"author":{"gitId":"andytoh1"},"content":" } else if (userMessage.substring(0, 5).equalsIgnoreCase(\"event\")) {","lastModifiedDate":"2023-08-24"},{"lineNumber":245,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-08-24"},{"lineNumber":246,"author":{"gitId":"andytoh1"},"content":" int index \u003d userMessage.indexOf(\"/from\");","lastModifiedDate":"2023-08-24"},{"lineNumber":247,"author":{"gitId":"andytoh1"},"content":" int index2 \u003d userMessage.indexOf(\"/to\");","lastModifiedDate":"2023-08-24"},{"lineNumber":248,"author":{"gitId":"andytoh1"},"content":" String description \u003d userMessage.substring(6, index - 1);","lastModifiedDate":"2023-09-03"},{"lineNumber":249,"author":{"gitId":"andytoh1"},"content":" String start \u003d userMessage.substring(index + 6, index2 - 1);","lastModifiedDate":"2023-09-03"},{"lineNumber":250,"author":{"gitId":"andytoh1"},"content":" String end \u003d userMessage.substring(index2 + 4);","lastModifiedDate":"2023-09-03"},{"lineNumber":251,"author":{"gitId":"andytoh1"},"content":" LocalDateTime startTime \u003d LocalDateTime.parse(start, formatter);","lastModifiedDate":"2023-09-03"},{"lineNumber":252,"author":{"gitId":"andytoh1"},"content":" LocalDateTime endTime \u003d LocalDateTime.parse(end, formatter);","lastModifiedDate":"2023-09-03"},{"lineNumber":253,"author":{"gitId":"andytoh1"},"content":" Event event \u003d new Event(description, startTime, endTime);","lastModifiedDate":"2023-09-03"},{"lineNumber":254,"author":{"gitId":"andytoh1"},"content":" Ui.eventMessage(event, taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":255,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":256,"author":{"gitId":"andytoh1"},"content":" Ui.formatErrorMessage(\"event\");","lastModifiedDate":"2023-09-03"},{"lineNumber":257,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":258,"author":{"gitId":"andytoh1"},"content":" } else {","lastModifiedDate":"2023-08-24"},{"lineNumber":259,"author":{"gitId":"andytoh1"},"content":" Ui.inputErrorMessage();","lastModifiedDate":"2023-09-03"},{"lineNumber":260,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":261,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-08-24"},{"lineNumber":262,"author":{"gitId":"andytoh1"},"content":" Ui.inputErrorMessage();","lastModifiedDate":"2023-09-03"},{"lineNumber":263,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":264,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":265,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":266,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":267,"author":{"gitId":"andytoh1"},"content":" public static class TaskList {","lastModifiedDate":"2023-09-03"},{"lineNumber":268,"author":{"gitId":"andytoh1"},"content":" private Task[] tasks;","lastModifiedDate":"2023-09-03"},{"lineNumber":269,"author":{"gitId":"andytoh1"},"content":" private int taskCount;","lastModifiedDate":"2023-09-03"},{"lineNumber":270,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":271,"author":{"gitId":"andytoh1"},"content":" public TaskList() {","lastModifiedDate":"2023-09-03"},{"lineNumber":272,"author":{"gitId":"andytoh1"},"content":" tasks \u003d new Task[100];","lastModifiedDate":"2023-09-03"},{"lineNumber":273,"author":{"gitId":"andytoh1"},"content":" taskCount \u003d 0;","lastModifiedDate":"2023-09-03"},{"lineNumber":274,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":275,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":276,"author":{"gitId":"andytoh1"},"content":" public void addTask(Task task) {","lastModifiedDate":"2023-09-03"},{"lineNumber":277,"author":{"gitId":"andytoh1"},"content":" tasks[taskCount] \u003d task;","lastModifiedDate":"2023-09-03"},{"lineNumber":278,"author":{"gitId":"andytoh1"},"content":" taskCount++;","lastModifiedDate":"2023-09-03"},{"lineNumber":279,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":280,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":281,"author":{"gitId":"andytoh1"},"content":" public void deleteTask(int task) {","lastModifiedDate":"2023-09-03"},{"lineNumber":282,"author":{"gitId":"andytoh1"},"content":" Task[] newTasks \u003d new Task[100];","lastModifiedDate":"2023-09-03"},{"lineNumber":283,"author":{"gitId":"andytoh1"},"content":" for (int i \u003d 0; i \u003c taskCount - 1; i++) {","lastModifiedDate":"2023-09-03"},{"lineNumber":284,"author":{"gitId":"andytoh1"},"content":" int j \u003d i;","lastModifiedDate":"2023-09-03"},{"lineNumber":285,"author":{"gitId":"andytoh1"},"content":" if (i \u003e\u003d task) j \u003d i + 1;","lastModifiedDate":"2023-09-03"},{"lineNumber":286,"author":{"gitId":"andytoh1"},"content":" newTasks[i] \u003d tasks[j];","lastModifiedDate":"2023-09-03"},{"lineNumber":287,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":288,"author":{"gitId":"andytoh1"},"content":" tasks \u003d newTasks;","lastModifiedDate":"2023-09-03"},{"lineNumber":289,"author":{"gitId":"andytoh1"},"content":" taskCount--;","lastModifiedDate":"2023-09-03"},{"lineNumber":290,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":291,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":292,"author":{"gitId":"andytoh1"},"content":" public void markTask(int task) {","lastModifiedDate":"2023-09-03"},{"lineNumber":293,"author":{"gitId":"andytoh1"},"content":" tasks[task].markAsDone();","lastModifiedDate":"2023-09-03"},{"lineNumber":294,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":295,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":296,"author":{"gitId":"andytoh1"},"content":" public int getCount() {","lastModifiedDate":"2023-09-03"},{"lineNumber":297,"author":{"gitId":"andytoh1"},"content":" return taskCount;","lastModifiedDate":"2023-09-03"},{"lineNumber":298,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":299,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":300,"author":{"gitId":"andytoh1"},"content":" public Task getTask(int i) {","lastModifiedDate":"2023-09-03"},{"lineNumber":301,"author":{"gitId":"andytoh1"},"content":" return tasks[i];","lastModifiedDate":"2023-09-03"},{"lineNumber":302,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":303,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":304,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":305,"author":{"gitId":"andytoh1"},"content":" public static class Storage {","lastModifiedDate":"2023-09-03"},{"lineNumber":306,"author":{"gitId":"andytoh1"},"content":" public static void load(TaskList taskList) {","lastModifiedDate":"2023-09-03"},{"lineNumber":307,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":308,"author":{"gitId":"andytoh1"},"content":" String datePattern2 \u003d \"MMM-dd-yyyy HH:mm\";","lastModifiedDate":"2023-09-03"},{"lineNumber":309,"author":{"gitId":"andytoh1"},"content":" DateTimeFormatter formatter2 \u003d DateTimeFormatter.ofPattern(datePattern2);","lastModifiedDate":"2023-09-03"},{"lineNumber":310,"author":{"gitId":"andytoh1"},"content":" File taskFile \u003d new File(\"./tasks.txt\");","lastModifiedDate":"2023-09-03"},{"lineNumber":311,"author":{"gitId":"andytoh1"},"content":" Scanner taskReader \u003d new Scanner(taskFile);","lastModifiedDate":"2023-09-03"},{"lineNumber":312,"author":{"gitId":"andytoh1"},"content":" while (taskReader.hasNextLine()) {","lastModifiedDate":"2023-09-03"},{"lineNumber":313,"author":{"gitId":"andytoh1"},"content":" String taskFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-03"},{"lineNumber":314,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(0) \u003d\u003d \u0027T\u0027) {","lastModifiedDate":"2023-09-03"},{"lineNumber":315,"author":{"gitId":"andytoh1"},"content":" Todo todo \u003d new Todo(taskFromFile.substring(3));","lastModifiedDate":"2023-09-03"},{"lineNumber":316,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(1) \u003d\u003d \u0027t\u0027) {","lastModifiedDate":"2023-09-03"},{"lineNumber":317,"author":{"gitId":"andytoh1"},"content":" todo.markAsDone();","lastModifiedDate":"2023-09-03"},{"lineNumber":318,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":319,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(todo);","lastModifiedDate":"2023-09-03"},{"lineNumber":320,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":321,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(0) \u003d\u003d \u0027D\u0027) {","lastModifiedDate":"2023-09-03"},{"lineNumber":322,"author":{"gitId":"andytoh1"},"content":" String deadlineFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-03"},{"lineNumber":323,"author":{"gitId":"andytoh1"},"content":" LocalDateTime taskDeadline \u003d LocalDateTime.parse(deadlineFromFile, formatter2);","lastModifiedDate":"2023-09-03"},{"lineNumber":324,"author":{"gitId":"andytoh1"},"content":" Deadline deadline \u003d new Deadline(taskFromFile.substring(3), taskDeadline);","lastModifiedDate":"2023-09-03"},{"lineNumber":325,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(1) \u003d\u003d \u0027t\u0027) {","lastModifiedDate":"2023-09-03"},{"lineNumber":326,"author":{"gitId":"andytoh1"},"content":" deadline.markAsDone();","lastModifiedDate":"2023-09-03"},{"lineNumber":327,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":328,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(deadline);","lastModifiedDate":"2023-09-03"},{"lineNumber":329,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":330,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(0) \u003d\u003d \u0027E\u0027) {","lastModifiedDate":"2023-09-03"},{"lineNumber":331,"author":{"gitId":"andytoh1"},"content":" String startFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-03"},{"lineNumber":332,"author":{"gitId":"andytoh1"},"content":" LocalDateTime start \u003d LocalDateTime.parse(startFromFile, formatter2);","lastModifiedDate":"2023-09-03"},{"lineNumber":333,"author":{"gitId":"andytoh1"},"content":" String endFromFile \u003d taskReader.nextLine();","lastModifiedDate":"2023-09-03"},{"lineNumber":334,"author":{"gitId":"andytoh1"},"content":" LocalDateTime end \u003d LocalDateTime.parse(endFromFile, formatter2);","lastModifiedDate":"2023-09-03"},{"lineNumber":335,"author":{"gitId":"andytoh1"},"content":" Event event \u003d new Event(taskFromFile.substring(3), start, end);","lastModifiedDate":"2023-09-03"},{"lineNumber":336,"author":{"gitId":"andytoh1"},"content":" if (taskFromFile.charAt(1) \u003d\u003d \u0027t\u0027) {","lastModifiedDate":"2023-09-03"},{"lineNumber":337,"author":{"gitId":"andytoh1"},"content":" event.markAsDone();","lastModifiedDate":"2023-09-03"},{"lineNumber":338,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":339,"author":{"gitId":"andytoh1"},"content":" taskList.addTask(event);","lastModifiedDate":"2023-09-03"},{"lineNumber":340,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":341,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":342,"author":{"gitId":"andytoh1"},"content":" } catch (FileNotFoundException e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":343,"author":{"gitId":"andytoh1"},"content":" File taskFile \u003d new File(\"./tasks.txt\");","lastModifiedDate":"2023-09-03"},{"lineNumber":344,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":345,"author":{"gitId":"andytoh1"},"content":" taskFile.createNewFile();","lastModifiedDate":"2023-09-03"},{"lineNumber":346,"author":{"gitId":"andytoh1"},"content":" } catch (IOException e2) {","lastModifiedDate":"2023-09-03"},{"lineNumber":347,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Error!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":348,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":349,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":350,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":351,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":352,"author":{"gitId":"andytoh1"},"content":" public static void saveTasks(TaskList taskList) {","lastModifiedDate":"2023-09-03"},{"lineNumber":353,"author":{"gitId":"andytoh1"},"content":" try {","lastModifiedDate":"2023-09-03"},{"lineNumber":354,"author":{"gitId":"andytoh1"},"content":" FileWriter taskWriter \u003d new FileWriter(\"./tasks.txt\", false);","lastModifiedDate":"2023-09-03"},{"lineNumber":355,"author":{"gitId":"andytoh1"},"content":" for (int taskNumber \u003d 0; taskNumber \u003c\u003d taskList.getCount(); taskNumber++) {","lastModifiedDate":"2023-09-03"},{"lineNumber":356,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(taskNumber) instanceof Todo) {","lastModifiedDate":"2023-09-03"},{"lineNumber":357,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(\"T\");","lastModifiedDate":"2023-09-03"},{"lineNumber":358,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).isDone() ? \"t \" : \"f \");","lastModifiedDate":"2023-09-03"},{"lineNumber":359,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).getDescription() + \"\\n\");","lastModifiedDate":"2023-09-03"},{"lineNumber":360,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(taskNumber) instanceof Deadline) {","lastModifiedDate":"2023-09-03"},{"lineNumber":361,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(\"D\");","lastModifiedDate":"2023-09-03"},{"lineNumber":362,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).isDone() ? \"t \" : \"f \");","lastModifiedDate":"2023-09-03"},{"lineNumber":363,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Deadline)taskList.getTask(taskNumber)).getDescriptionWithoutTime() + \"\\n\");","lastModifiedDate":"2023-09-03"},{"lineNumber":364,"author":{"gitId":"andytoh1"},"content":" } else if (taskList.getTask(taskNumber) instanceof Event) {","lastModifiedDate":"2023-09-03"},{"lineNumber":365,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(\"E\");","lastModifiedDate":"2023-09-03"},{"lineNumber":366,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(taskList.getTask(taskNumber).isDone() ? \"t \" : \"f \");","lastModifiedDate":"2023-09-03"},{"lineNumber":367,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Event)taskList.getTask(taskNumber)).getDescriptionWithoutTime() + \"\\n\");","lastModifiedDate":"2023-09-03"},{"lineNumber":368,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":369,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(taskNumber) instanceof Deadline) {","lastModifiedDate":"2023-09-03"},{"lineNumber":370,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Deadline) taskList.getTask(taskNumber)).getDeadline() + \"\\n\");","lastModifiedDate":"2023-09-03"},{"lineNumber":371,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":372,"author":{"gitId":"andytoh1"},"content":" if (taskList.getTask(taskNumber) instanceof Event) {","lastModifiedDate":"2023-09-03"},{"lineNumber":373,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Event) taskList.getTask(taskNumber)).getStartTime() + \"\\n\");","lastModifiedDate":"2023-09-03"},{"lineNumber":374,"author":{"gitId":"andytoh1"},"content":" taskWriter.write(((Event) taskList.getTask(taskNumber)).getEndTime() + \"\\n\");","lastModifiedDate":"2023-09-03"},{"lineNumber":375,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":376,"author":{"gitId":"andytoh1"},"content":" taskWriter.flush();","lastModifiedDate":"2023-09-03"},{"lineNumber":377,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":378,"author":{"gitId":"andytoh1"},"content":" } catch (Exception e) {","lastModifiedDate":"2023-09-03"},{"lineNumber":379,"author":{"gitId":"andytoh1"},"content":" System.out.println(\"Error!\");","lastModifiedDate":"2023-09-03"},{"lineNumber":380,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":381,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":382,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":383,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":384,"author":{"gitId":"andytoh1"},"content":" public static void main(String[] args) {","lastModifiedDate":"2023-09-03"},{"lineNumber":385,"author":{"gitId":"andytoh1"},"content":" TaskList taskList \u003d new TaskList();","lastModifiedDate":"2023-09-03"},{"lineNumber":386,"author":{"gitId":"andytoh1"},"content":" Ui ui \u003d new Ui();","lastModifiedDate":"2023-09-03"},{"lineNumber":387,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":388,"author":{"gitId":"andytoh1"},"content":" Storage.load(taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":389,"author":{"gitId":"andytoh1"},"content":" Ui.startMessage();","lastModifiedDate":"2023-09-03"},{"lineNumber":390,"author":{"gitId":"andytoh1"},"content":" Scanner userInput \u003d new Scanner(System.in);","lastModifiedDate":"2023-09-03"},{"lineNumber":391,"author":{"gitId":"andytoh1"},"content":"","lastModifiedDate":"2023-09-03"},{"lineNumber":392,"author":{"gitId":"andytoh1"},"content":" while (true) {","lastModifiedDate":"2023-09-03"},{"lineNumber":393,"author":{"gitId":"andytoh1"},"content":" String userMessage \u003d userInput.nextLine();","lastModifiedDate":"2023-09-03"},{"lineNumber":394,"author":{"gitId":"andytoh1"},"content":" Parser.parse(userMessage, taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":395,"author":{"gitId":"andytoh1"},"content":" Storage.saveTasks(taskList);","lastModifiedDate":"2023-09-03"},{"lineNumber":396,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-09-03"},{"lineNumber":397,"author":{"gitId":"andytoh1"},"content":" }","lastModifiedDate":"2023-08-24"},{"lineNumber":398,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-08-24"}],"authorContributionMap":{"andytoh1":398}},{"path":"src/test/java/ChatbotTest.java","fileType":"java","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"public class ChatbotTest {","lastModifiedDate":"2023-09-03"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"}","lastModifiedDate":"2023-09-03"}],"authorContributionMap":{"andytoh1":2}},{"path":"text-ui-test/input.txt","fileType":"txt","lines":[{"lineNumber":1,"author":{"gitId":"andytoh1"},"content":"adkpqweqwdpaskda","lastModifiedDate":"2023-08-27"},{"lineNumber":2,"author":{"gitId":"andytoh1"},"content":"todo abc","lastModifiedDate":"2023-08-27"},{"lineNumber":3,"author":{"gitId":"andytoh1"},"content":"deadline abc by sunday","lastModifiedDate":"2023-08-27"},{"lineNumber":4,"author":{"gitId":"andytoh1"},"content":"deadline abc /by sunday","lastModifiedDate":"2023-08-27"}],"authorContributionMap":{"andytoh1":4}},{"path":"text-ui-test/runtest.bat","fileType":"bat","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"@ECHO OFF","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"REM create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if not exist ..\\bin mkdir ..\\bin","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":"REM delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"if exist ACTUAL.TXT del ACTUAL.TXT","lastModifiedDate":"2020-08-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"REM compile the code into the bin folder","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"javac -cp ..\\src\\main\\java -Xlint:none -d ..\\bin ..\\src\\main\\java\\*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"IF ERRORLEVEL 1 (","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" echo ********** BUILD FAILURE **********","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":" exit /b 1","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":")","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"REM no error here, errorlevel \u003d\u003d 0","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"REM run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"andytoh1"},"content":"java -classpath ..\\bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-27"},{"lineNumber":19,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"REM compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"FC ACTUAL.TXT EXPECTED.TXT","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"andytoh1":1,"-":20}},{"path":"text-ui-test/runtest.sh","fileType":"sh","lines":[{"lineNumber":1,"author":{"gitId":"-"},"content":"#!/usr/bin/env bash","lastModifiedDate":"2020-05-25"},{"lineNumber":2,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":3,"author":{"gitId":"-"},"content":"# create bin directory if it doesn\u0027t exist","lastModifiedDate":"2020-05-25"},{"lineNumber":4,"author":{"gitId":"-"},"content":"if [ ! -d \"../bin\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":5,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":6,"author":{"gitId":"-"},"content":" mkdir ../bin","lastModifiedDate":"2020-05-25"},{"lineNumber":7,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":8,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":9,"author":{"gitId":"-"},"content":"# delete output from previous run","lastModifiedDate":"2020-05-25"},{"lineNumber":10,"author":{"gitId":"-"},"content":"if [ -e \"./ACTUAL.TXT\" ]","lastModifiedDate":"2020-05-25"},{"lineNumber":11,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":12,"author":{"gitId":"-"},"content":" rm ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":13,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":14,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":15,"author":{"gitId":"-"},"content":"# compile the code into the bin folder, terminates if error occurred","lastModifiedDate":"2020-05-25"},{"lineNumber":16,"author":{"gitId":"-"},"content":"if ! javac -cp ../src/main/java -Xlint:none -d ../bin ../src/main/java/*.java","lastModifiedDate":"2020-08-25"},{"lineNumber":17,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":18,"author":{"gitId":"-"},"content":" echo \"********** BUILD FAILURE **********\"","lastModifiedDate":"2020-05-25"},{"lineNumber":19,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":20,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"},{"lineNumber":21,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":22,"author":{"gitId":"-"},"content":"# run the program, feed commands from input.txt file and redirect the output to the ACTUAL.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":23,"author":{"gitId":"andytoh1"},"content":"java -classpath ../bin Chatbot \u003c input.txt \u003e ACTUAL.TXT","lastModifiedDate":"2023-08-27"},{"lineNumber":24,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":25,"author":{"gitId":"-"},"content":"# convert to UNIX format","lastModifiedDate":"2020-05-25"},{"lineNumber":26,"author":{"gitId":"-"},"content":"cp EXPECTED.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":27,"author":{"gitId":"-"},"content":"dos2unix ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":28,"author":{"gitId":"-"},"content":"","lastModifiedDate":"2020-05-25"},{"lineNumber":29,"author":{"gitId":"-"},"content":"# compare the output to the expected output","lastModifiedDate":"2020-05-25"},{"lineNumber":30,"author":{"gitId":"-"},"content":"diff ACTUAL.TXT EXPECTED-UNIX.TXT","lastModifiedDate":"2020-05-25"},{"lineNumber":31,"author":{"gitId":"-"},"content":"if [ $? -eq 0 ]","lastModifiedDate":"2020-05-25"},{"lineNumber":32,"author":{"gitId":"-"},"content":"then","lastModifiedDate":"2020-05-25"},{"lineNumber":33,"author":{"gitId":"-"},"content":" echo \"Test result: PASSED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":34,"author":{"gitId":"-"},"content":" exit 0","lastModifiedDate":"2020-05-25"},{"lineNumber":35,"author":{"gitId":"-"},"content":"else","lastModifiedDate":"2020-05-25"},{"lineNumber":36,"author":{"gitId":"-"},"content":" echo \"Test result: FAILED\"","lastModifiedDate":"2020-05-25"},{"lineNumber":37,"author":{"gitId":"-"},"content":" exit 1","lastModifiedDate":"2020-05-25"},{"lineNumber":38,"author":{"gitId":"-"},"content":"fi","lastModifiedDate":"2020-05-25"}],"authorContributionMap":{"andytoh1":1,"-":37}}] diff --git a/andytoh1_ip_master/commits.json b/andytoh1_ip_master/commits.json index 24efbfa6..e7e8db84 100644 --- a/andytoh1_ip_master/commits.json +++ b/andytoh1_ip_master/commits.json @@ -1 +1 @@ -{"authorDailyContributionsMap":{"andytoh1":[{"date":"2023-08-24","commitResults":[{"hash":"be54eb62370c7bf4c5f42ebaa63560004397b72e","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"8c01edb381794a18a37bbc7fbe27ad976b28bc33","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"2952594b5ffc710a1ab7b015866ceeae49538a2d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"4afb4e8ac6cd143c44911523f54a1f2cf296c0df","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"f2860d0fd739b4f6e36b813d08ae352e8294aaa0","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"7ff37d08406c0a99195331a4d853bf95e745c133","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":16}}},{"hash":"1cab9410d9a7a0145ed46617b8868386c2c8b7d8","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"537844575b5f68eb31dcd0052598ac599e883bc8","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]}]},"authorFileTypeContributionMap":{"andytoh1":{"java":100,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":4}},"authorContributionVariance":{"andytoh1":2060.8},"authorDisplayNameMap":{"andytoh1":"CS2103T-F11-3 TOH ..ANDY"}} +{"authorDailyContributionsMap":{"andytoh1":[{"date":"2023-08-24","commitResults":[{"hash":"be54eb62370c7bf4c5f42ebaa63560004397b72e","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-0"],"fileTypesAndContributionMap":{"java":{"insertions":7,"deletions":10}}},{"hash":"8c01edb381794a18a37bbc7fbe27ad976b28bc33","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-1"],"fileTypesAndContributionMap":{"java":{"insertions":8,"deletions":0}}},{"hash":"2952594b5ffc710a1ab7b015866ceeae49538a2d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-2"],"fileTypesAndContributionMap":{"java":{"insertions":14,"deletions":2}}},{"hash":"4afb4e8ac6cd143c44911523f54a1f2cf296c0df","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-3"],"fileTypesAndContributionMap":{"java":{"insertions":13,"deletions":0}}},{"hash":"f2860d0fd739b4f6e36b813d08ae352e8294aaa0","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-4"],"fileTypesAndContributionMap":{"java":{"insertions":17,"deletions":2}}},{"hash":"7ff37d08406c0a99195331a4d853bf95e745c133","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-5"],"fileTypesAndContributionMap":{"java":{"insertions":39,"deletions":16}}},{"hash":"1cab9410d9a7a0145ed46617b8868386c2c8b7d8","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["Level-6"],"fileTypesAndContributionMap":{"java":{"insertions":23,"deletions":1}}}]},{"date":"2023-08-27","commitResults":[{"hash":"537844575b5f68eb31dcd0052598ac599e883bc8","isMergeCommit":false,"messageTitle":"no message","messageBody":"","tags":["A-TextUiTesting"],"fileTypesAndContributionMap":{"txt":{"insertions":4,"deletions":0},"bat":{"insertions":1,"deletions":1},"sh":{"insertions":1,"deletions":1}}}]},{"date":"2023-09-03","commitResults":[{"hash":"276add239f554cdee0d2894af190d30b2699107d","isMergeCommit":false,"messageTitle":"no message","messageBody":"","fileTypesAndContributionMap":{"java":{"insertions":370,"deletions":70}}}]}]},"authorFileTypeContributionMap":{"andytoh1":{"java":400,"md":0,"fxml":0,"sh":1,"bat":1,"gradle":0,"txt":4}},"authorContributionVariance":{"andytoh1":11505.383},"authorDisplayNameMap":{"andytoh1":"CS2103T-F11-3 TOH ..ANDY"}} diff --git a/archive.zip b/archive.zip index 9528b32bbbe88db441731ca50cb1db05119ea969..b570aa9b7832fd96419dd11a18d458e1879a0329 100644 GIT binary patch delta 134983 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 pquYis`Q#HFR09oV74bbWng^PLmKS;biC6 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 F(EpbLTxS3P delta 125773 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 z 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